gecko/content/media
Robert O'Callahan 4ec5ce6398 Bug 880601. Emulate a form of keyframe skipping by allowing MediaOmxReader::DecodeVideoFrame to decode more than one video frame if video decoding is falling behind. r=cpearce
If we don't support this in any way, then we get into trouble when there is
plenty of compressed data buffered but for some reason video decoding falls
behind (maybe there was a short period where the video data wasn't available).
Audio playback continues normally, but MediaOmxReader keeps making one call
to ReadAudio and one to ReadVideo, and if each call to ReadAudio decodes at
least as much as the calls to ReadVideo, video decoding can never catch up
to the current audio playback position. So video never plays. And when the
video decoding point gets far enough away from the audio decoding point,
horrible things start to happen, such as video and audio reading completely
different parts of the media cache and interfering with the caching mechanism
(which assumes audio and video reads are close together).

This patch approximates keyframe skipping, and is basically just a way for
MediaOmxReader::DecodeVideoFrame to decode more than one frame at a time
if we need video decoding to catch up.

To prevent pathological situations, we cap both the maximum number of frames
decoded per DecodeVideoFrame and the amount of time we spend in the method
(excluding the time for the last frame).

--HG--
extra : rebase_source : cba95c537fe97df5b696581be8233b6e9cffb70b
2013-06-15 23:51:56 +12:00
..
dash Bug 864774 - Part 2: Move CPPSRCS to moz.build as CPP_SOURCES; r=joey CLOSED TREE 2013-04-23 17:54:15 -04:00
encoder Bug 842243 - Part 5: Add MediaEncoder.h/.cpp; The main part of this media encoding framework. r=roc 2013-06-05 14:29:12 +08:00
gstreamer Bug 876305 - Pass the media mimetype on to the gstreamer backend r=alessandro.d 2013-06-11 14:13:10 +12:00
ogg Bug 842243 - Part 2: Add OggWriter.h/.cpp; Implementation of Ogg container. r=roc, r=tterribe 2013-05-17 19:13:01 +08:00
omx Bug 880601. Emulate a form of keyframe skipping by allowing MediaOmxReader::DecodeVideoFrame to decode more than one video frame if video decoding is falling behind. r=cpearce 2013-06-15 23:51:56 +12:00
plugins Fix build bustage for bug 877461 2013-06-07 20:16:17 +12:00
raw Bug 864774 - Part 2: Move CPPSRCS to moz.build as CPP_SOURCES; r=joey CLOSED TREE 2013-04-23 17:54:15 -04:00
test Bug 868439 - Convert some uses of nsIPrefBranch to SpecialPowers. r=jmaher 2013-06-15 00:13:44 +02:00
wave Bug 879924 - Don't shorten zero-length strings. r=derf 2013-06-10 17:10:09 -07:00
webaudio Bug 881558 - Re-introduce try-locking in the reverb implementation; r=roc 2013-06-12 20:57:17 -04:00
webm Bug 864774 - Part 2: Move CPPSRCS to moz.build as CPP_SOURCES; r=joey CLOSED TREE 2013-04-23 17:54:15 -04:00
webrtc Bug 864774 - Part 2: Move CPPSRCS to moz.build as CPP_SOURCES; r=joey CLOSED TREE 2013-04-23 17:54:15 -04:00
webspeech Bug 883094 - Fix some test files that don't unset their prefs correctly. r=jgriffin 2013-06-15 00:33:47 +02:00
wmf Bug 881954 - Set the thread limit to the idle limit for WMFByteStream's thread pool. This stops the pool from constantly creating and destroying threads when under load, freeing up virtual address space and reducing our thread count. r=padenot 2013-06-14 09:07:59 +12:00
AbstractMediaDecoder.h Backed out changeset a966aadd9ae3 (bug 856822) for Windows bustage on a CLOSED TREE. 2013-05-29 17:56:10 -04:00
AudioAvailableEventManager.cpp
AudioAvailableEventManager.h
AudioChannelFormat.cpp Bug 875529 - Correctly reserve some extra junk at the end of the down-mixing buffer; r=roc 2013-05-23 23:29:25 -04:00
AudioChannelFormat.h
AudioEventTimeline.h Bug 875596 - Properly handle AudioParam SetCurve automation events with a 0 duration; r=roc 2013-05-24 13:19:47 -04:00
AudioNodeEngine.cpp Bug 815643 - Part 4: Add the Convolution processing implementation to the build system; r=roc 2013-06-10 16:09:01 -04:00
AudioNodeEngine.h Bug 815643 - Part 4: Add the Convolution processing implementation to the build system; r=roc 2013-06-10 16:09:01 -04:00
AudioNodeStream.cpp Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup 2013-05-30 16:44:43 +12:00
AudioNodeStream.h Bug 873553 - Part 2: Teach each AudioNodeStream about its sampling rate, and store the value inside AudioContext; r=roc 2013-05-24 13:09:29 -04:00
AudioSampleFormat.h
AudioSegment.cpp Bug 882956 - Fix WebAudio stack-buffer-overflow crash. r=ehsan. 2013-06-14 15:16:41 +08:00
AudioSegment.h Bug 882956 - Fix WebAudio stack-buffer-overflow crash. r=ehsan. 2013-06-14 15:16:41 +08:00
AudioStream.cpp Bug 579517 follow-up: Remove NSPR types that crept in 2013-06-12 21:26:59 -04:00
AudioStream.h Bug 865244 - Expose the maximum channel count in the AudioStream. r=kinetik 2013-06-10 19:32:28 +02:00
AudioStreamTrack.cpp Bug 864727 part 5. Make all the WrapObject methods take a handle for the scope object. r=ms2ger 2013-04-25 12:29:54 -04:00
AudioStreamTrack.h Bug 864727 part 5. Make all the WrapObject methods take a handle for the scope object. r=ms2ger 2013-04-25 12:29:54 -04:00
BufferMediaResource.h Bug 862182. r=roc,doublec 2013-05-03 10:59:18 +12:00
DecoderTraits.cpp Bug 876099 - re-enable 3gp support in web content r=roc, a=gal 2013-05-30 10:52:58 -07:00
DecoderTraits.h Bug 834172 - Don't export codec functions from DecoderTraits. r=cpearce 2013-03-05 09:56:35 -05:00
DOMMediaStream.cpp Bug 868405. Part 1: Add a few MOZ_OVERRIDES. r=jesup 2013-05-30 16:44:40 +12:00
DOMMediaStream.h Bug 866514. Part 2: Delay delivering getUserMedia stream result until the DOM object has asynchronously acquired the desired tracks. r=jesup 2013-05-03 17:07:37 +12:00
FileBlockCache.cpp
FileBlockCache.h Backed out changeset a966aadd9ae3 (bug 856822) for Windows bustage on a CLOSED TREE. 2013-05-29 17:56:10 -04:00
Makefile.in Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
MediaCache.cpp Fix bustage on a CLOSED TREE for bug 877461 2013-06-05 14:44:20 +12:00
MediaCache.h Bug 862182. r=roc,doublec 2013-05-03 10:59:18 +12:00
MediaDecoder.cpp Bug 882027. Route all calls to GetNextFrameStatus for determining the readyState through MediaDecoder::UpdateReadyStateForData on the main thread. r=cpearce 2013-06-15 23:50:44 +12:00
MediaDecoder.h Bug 882027. Route all calls to GetNextFrameStatus for determining the readyState through MediaDecoder::UpdateReadyStateForData on the main thread. r=cpearce 2013-06-15 23:50:44 +12:00
MediaDecoderOwner.h Bug 850587. Part 1: Refactor NotifyAutoplayDataReady to CheckAutoplayDataReady and allow autoplay to start on HAVE_CURRENT_DATA if the source is a stream. r=cpearce 2013-03-21 00:11:48 +13:00
MediaDecoderReader.cpp Bug 869251 - Disable omx decoder and camera on gonk-JB, r=doublec,glandium 2013-05-02 17:21:22 -04:00
MediaDecoderReader.h Bug 871485 - Share hw codec between applications/tasks. r=mwu, r=doublec, r=roc 2013-06-10 08:22:05 -04:00
MediaDecoderStateMachine.cpp Bug 871485 - Share hw codec between applications/tasks. r=mwu, r=doublec, r=roc 2013-06-10 08:22:05 -04:00
MediaDecoderStateMachine.h Bug 871485 - Share hw codec between applications/tasks. r=mwu, r=doublec, r=roc 2013-06-10 08:22:05 -04:00
MediaMetadataManager.h
MediaResource.cpp Bug 872866 - Set length of MediaResource earlier in load. r=roc 2013-05-16 15:22:34 +12:00
MediaResource.h Bug 831998 - Make the media canplaythrough estimation less conservative. r=cpearce 2013-05-05 17:02:25 -07:00
MediaSegment.h Bug 842243 - Part 0: Modify MediaSegment and AudioSegment for use by MediaEncoder. r=roc 2013-06-03 17:59:50 +08:00
MediaStreamGraph.cpp Bug 879478 - fix regressions when starting camera (crash and de-virtualized functions -- see also bug 880780), r=roc 2013-06-10 15:01:19 -04:00
MediaStreamGraph.h Bug 879478 - fix regressions when starting camera (crash and de-virtualized functions -- see also bug 880780), r=roc 2013-06-10 15:01:19 -04:00
MediaStreamGraphImpl.h Bug 873553 - Part 2: Teach each AudioNodeStream about its sampling rate, and store the value inside AudioContext; r=roc 2013-05-24 13:09:29 -04:00
MediaStreamTrack.cpp Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup 2013-05-30 16:44:43 +12:00
MediaStreamTrack.h Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup 2013-05-30 16:44:43 +12:00
moz.build Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
SharedBuffer.h
StreamBuffer.cpp #include prlog.h inside StreamBuffer.cpp, no bug 2013-03-18 23:29:51 -04:00
StreamBuffer.h Bug 839650: Add debugs to MediaStreamGraph to ease investigation of issues in the future r=roc 2013-03-07 03:53:45 -05:00
TextTrack.cpp Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TextTrack.h Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TextTrackCue.cpp Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TextTrackCue.h Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TextTrackCueList.cpp Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TextTrackCueList.h Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TextTrackList.cpp Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TextTrackList.h Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
TimeVarying.h Bug 852011 - Reserve 5 elements in MediaStream::mBlocked in order to avoid excessive cost when dealing with removals from it; r=roc 2013-03-17 23:27:14 -04:00
TrackUnionStream.h Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup 2013-05-30 16:44:43 +12:00
VideoFrameContainer.cpp Bug 841493 - Rename nsHTMLMediaElement to HTMLMediaElement, r=Ms2ger 2013-03-19 13:23:54 +01:00
VideoFrameContainer.h Bug 841493 - Rename nsHTMLMediaElement to HTMLMediaElement, r=Ms2ger 2013-03-19 13:23:54 +01:00
VideoSegment.cpp Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup 2013-05-30 16:44:43 +12:00
VideoSegment.h Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup 2013-05-30 16:44:43 +12:00
VideoStreamTrack.cpp Bug 864727 part 5. Make all the WrapObject methods take a handle for the scope object. r=ms2ger 2013-04-25 12:29:54 -04:00
VideoStreamTrack.h Bug 864727 part 5. Make all the WrapObject methods take a handle for the scope object. r=ms2ger 2013-04-25 12:29:54 -04:00
VideoUtils.cpp Bug 841014 - Rename nsTimeRanges.h to TimeRanges.h. r=Ms2ger 2013-03-02 14:14:44 -05:00
VideoUtils.h Bug 833382 - Implement WebVTTLoadListener r=cpearce,bz 2013-06-10 08:30:00 -07:00
VorbisUtils.h
WebVTTLoadListener.cpp Bug 882535 - Set HTMLTrackElement Readiness State during WebVTT Parsing. r=rillian 2013-06-12 22:26:14 -04:00
WebVTTLoadListener.h Bug 881978 - Make WebVTTLoadListener callbacks private. r=rillian 2013-06-11 21:12:39 -04:00