W3C home > Mailing lists > Public > public-media-capture@w3.org > December 2012

Re: pausing and resuming

From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
Date: Sun, 16 Dec 2012 07:47:36 +0100
Message-ID: <50CD6E88.3090206@ericsson.com>
To: Jim Barnett <Jim.Barnett@genesyslab.com>
CC: "public-media-capture@w3.org" <public-media-capture@w3.org>
On 2012-12-14 23:18, Jim Barnett wrote:
> Stefan, Using the definitions you give below, would you want to be
> able to pause a single track while the other tracks are still being
> recorded?


  That would make synchronization of the playback quite
> difficult.  Using your terminology, I was thinking that the API would
> allow you to pause recording the whole stream, and mute individual
> tracks.  (If you want the effect of muting the entire stream, you can
> mute each track individually.)

Exactly, the this is what I meant. And perhaps the pause/resume of a 
whole recording can be solved by stopping the current one at pause, and 
start a new one at resume, and let the app handle the two blobs.

> - Jim
> -----Original Message----- From: Stefan Hakansson LK
> [mailto:stefan.lk.hakansson@ericsson.com] Sent: Friday, December 14,
> 2012 4:32 PM To: public-media-capture@w3.org Subject: Re: pausing and
> resuming
> On 12/14/2012 07:43 PM, Jim Barnett wrote:
>> I think we need a somewhat broader discussion on what sorts of
>> objects can be paused and resumed.  In particular, do we need an
>> API surface to pause/mute and resume Streams or Tracks?  Right now,
>> a track can have readyState=muted, but that is a read-only
>> attribute, so it looks like the muting happens on the underlying
>> device (or at the remote end).
> That is right, muted is meant to mean that the source is not
> delivering data right now, and it is readonly.
> But the app can use the "enabled" attribute, just set it to false,
> and the track becomes effectively muted (zero amplitude audio
> samples/blackness in the uncoded domain).
> I've been arguing that we should remove that attribute and instead
> have the opportunity to disable at the sink. The reason for this
> proposal is that the way the media element is currently specced [1];
> this control is already there ("enabled" for audio, "selected" for
> video). This can be confusing IMO; e.g. if you enable a
> MediaStreamTrack (kind = audio), but it is disabled at the sink, and
> vice versa.
> But what I really wanted to say is: in the case of recording there is
> a big difference between disable/mute and pause. I'm thinking of a
> tape recorded. If you disable/mute the input, the tape continues
> rolling (but silence/blackness is captured). If you pause the tape
> stops rolling until you "resume" recording. I think these are two
> different concepts, and we should support both.
> [1]
> http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#media-resources-with-multiple-media-tracks
>  ...
>> 1.Are we going to want pause/resume functionality on Track?
> I think we need a method to disable/mute tracks (the previous
> example was to exclude one specific audio track from a part of a
> recording for privacy even if the recording of the other tracks
> continue). I think we should do disable at the sink, but that is
> another discussion.
> For recording we also need pause/resume, but that is not per track,
> it is for the entire recorder.
>> 2.If yes, do we also need it for recording?
>> As for point 2, I think that there are use cases for pausing
>> recording without pausing the underlying Track, but those could be
>> handled by cloning the MediaStream. I find that a bit clunky, but
>> it would keep the recording API smaller and simpler.
>> -Jim
>> *From:*Travis Leithead [mailto:travis.leithead@microsoft.com]
>> *Sent:* Friday, December 14, 2012 12:47 PM *To:* Jim Barnett;
>> robert@ocallahan.org *Cc:* public-media-capture@w3.org *Subject:*
>> RE: pausing and resuming recording
>> To try another approach to this scenario, we could instead try a
>> "stitch" API. It would take a previously handed-out blob, and
>> start recording into a new Blob which will be initialized with a
>> copy/pointer to the data in the first blob (since its immutable).
>> In short it just "resumes" from previously recorded content. This
>> is probably easier speced than implemented, but might be worth
>> considering given the complexity of what you're proposing with a
>> new fundamental state.
>> *From:*Jim Barnett [mailto:Jim.Barnett@genesyslab.com] *Sent:*
>> Friday, December 14, 2012 6:15 AM *To:* robert@ocallahan.org
>> <mailto:robert@ocallahan.org> *Cc:* public-media-capture@w3.org
>> <mailto:public-media-capture@w3.org> *Subject:* RE: pausing and
>> resuming recording
>> It’s certainly simpler for the recording doc to assume that pause
>> and resume are on the MediaStreams/Tracks themselves.   However,
>> I’m sure that people will ask for the ability to pause the
>> recording without pausing the stream.  One use case would involve a
>> PeerConnection.  You are talking to someone and recording the
>> conversation.  You reach a point where you’re going to give them
>> your credit card info or some other sensitive information.  You
>> want to keep talking but pause the recording so that it doesn’t
>> capture the sensitive information.  (This sort of use case is very
>> common in call centers.)
>> You can presumably handle this case by cloning the MediaStream and
>> using one copy for the PeerConnection and the other for recording,
>> but for most people it will seem simpler to have a single
>> MediaStream and then pause recording on it.
>> -Jim
>> *From:*rocallahan@gmail.com <mailto:rocallahan@gmail.com>
>> [mailto:rocallahan@gmail.com] *On Behalf Of *Robert O'Callahan
>> *Sent:* Thursday, December 13, 2012 11:51 PM *To:* Jim Barnett
>> *Cc:* public-media-capture@w3.org
>> <mailto:public-media-capture@w3.org> *Subject:* Re: pausing and
>> resuming recording
>> On Fri, Dec 14, 2012 at 8:43 AM, Jim Barnett
>> <Jim.Barnett@genesyslab.com <mailto:Jim.Barnett@genesyslab.com>>
>> wrote:
>> It makes sense to add pause and resume functionality to recording.
>> The question is what the exact semantics should be.  First of all,
>> we currently say that it a Track is muted, the record function
>> should fill in with silence or black frames.  (I think that this
>> would be necessary so that playback could be synchronized).
>> Now, if the entire record() operation is paused, I assume that it
>> would simply stop gathering data while it is paused.  (So that if
>> you pause and resume recording, there will be a sudden skip during
>> the playback.)
>> I don't think this functionality should be in the recorder. Instead
>> I think we should be able to pause and resume MediaStreams
>> themselves. Then we can do things like have a media element which
>> is playing a MediaStream apply its pause/resume controls directly
>> to the MediaStream.
>> However, I can imagine cases where someone might want to pause
>> recording a specific track, without muting the underlying track
>> (for example, the user would still be speaking, but it would be
>> left out of the recording).
>> I don't understand this scenario. Can you explain it in more
>> detail?
>> Rob
>> -- Jesus called them together and said, “You know that the rulers
>> of the Gentiles lord it over them, and their high officials
>> exercise authority over them. Not so with you. Instead, whoever
>> wants to become great among you must be your servant, and whoever
>> wants to be first must be your slave — just as the Son of Man did
>> not come to be served, but to serve, and to give his life as a
>> ransom for many.” [Matthew 20:25-28]
Received on Sunday, 16 December 2012 07:03:26 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:26:13 UTC