Commit Graph

95 Commits

Author SHA1 Message Date
Jean-Yves Avenard
c15474a997 Bug 1205911: P1. Cancel pending demux request when searching for next keyframe. r=edwin 2015-09-18 16:03:58 +10:00
Jean-Yves Avenard
023ff53978 Bug 1204757: P1. Update MediaDataDemuxer::Init() behavior. r=cpearce
A MediaDataDemuxer is now not to resolve the init promise until it has all the metadata.
Except MediaSource, all demuxers would be doing blocking read to scan for the metadata, and having partial metadata would be an error.
For MediaSource, we pass the NotifyDataArrived message which will cause the MediaSourceDemuxer to re-attempt to search for the metadata.

When used within MediaSource's TrackBuffersManager, a demuxer will never be created until we have received a complete init segment (this task is performed by the various ContainerParsers)
2015-09-16 18:14:17 +10:00
Jean-Yves Avenard
9e0e052d65 Bug 1193670: P1. Remove use of SharedDecoderManager. r=cpearce 2015-09-16 18:14:15 +10:00
Jean-Yves Avenard
1de1d09411 Bug 1204407: P1. Remove no longer used mainthread object. r=cpearce 2015-09-16 18:14:14 +10:00
Jean-Yves Avenard
82279827e6 Bug 1204419: P3. Remove now unused MediaDecoderReader functions. r=cpearce 2015-09-16 18:14:12 +10:00
Jean-Yves Avenard
fa4c46c19b Bug 1199904: Only start decoding ahead after explicitly requesting data. r=gerald
Decode ahead will be stopped when seeking or when switching resolution.
2015-08-30 20:48:09 +10:00
Jean-Yves Avenard
192f716dfb Bug 1197075: P4. Reject skip promise on cancellation or shutdown. r=edwin
Also remove redundant code.
2015-08-26 15:36:54 +10:00
Jean-Yves Avenard
c27fc37432 Bug 1197075: P3. Decode frames ahead of MDSM requesting them. r=edwin
This makes the media.*-decode-ahead pref performs more according to its name.
We decode audio and video in advance so a MediaDataPromise can be resolved almost instantly.
Default is 2.
2015-08-26 15:36:54 +10:00
Jean-Yves Avenard
3bca678d28 Bug 1197075: P2. Revert "Bug 1171257 - Add force decode ahead to MediaFormatReader r=jya,bholley". r=edwin 2015-08-26 15:36:53 +10:00
Jean-Yves Avenard
e08e634d4f Bug 1196696: Always check that track demuxer was successfully created. r=jwwang 2015-08-26 12:50:06 +10:00
Jean-Yves Avenard
60b4f11a68 Bug 1197664: Report the total number of decoded frames. CLOSED TREE r=kentuckyfriedtakahe 2015-08-24 23:46:35 +10:00
Matt Woodrow
ec61d0727e Bug 1196417 - Make video software fallback only affect the current video instead of the entire browser. r=cpearce 2015-08-20 11:43:36 -04:00
Benjamin Chen
0af807cd51 Bug 1192733: fix the MediaFormatReader can not back from dormant state. r=jya
--HG--
extra : rebase_source : 185e32c16727be0a5138b936e56c72b20fa03f19
2015-08-14 12:02:15 +08:00
Jean-Yves Avenard
3f43144aaf Bug 1195071: Check for MediaDataDecoder::Input error. r=cpearce 2015-08-17 10:28:43 +10:00
Matt Woodrow
169ab22517 Bug 1178098 - Report why DXVA initialization failed to about:support. r=cpearce
--HG--
extra : rebase_source : 976baee04db89d0808b8fc494108e01aa163d402
2015-07-13 16:12:23 -04:00
Jean-Yves Avenard
c6fcd44f2d Bug 1188871: P1. Don't drain decoders when an error is encountered. r=cpearce
This is a partial revert of bug 1173657 (commit 80f9da7f0806). Not all decoders will properly handle draining when they have encountered an error and will never call DrainComplete().
The Gonk and Android decoder do not. So we just get around this.
2015-08-14 10:20:31 +10:00
Jean-Yves Avenard
ce57a50527 Bug 1180935: P3. Fixed MediaFormatReader::Update logging. r=gerald 2015-08-12 21:46:06 +10:00
Jean-Yves Avenard
398014c093 Bug 1180935: P1. Do not drain decoders when waiting for data. r=cpearce
We made the design decision that it was preferable to decode as much of what we had, even if that meant we couldn't decode some frames upon resume.
This can cause significant apparent stalls with some YouTube videos where keyframes are up to 4.2s appart (128 frames).
2015-08-12 21:46:05 +10:00
Birunthan Mohanathas
2b4a52cf2e Bug 1185763 - Part 3: Rename nsTArray::MoveElementsFrom to AppendElements. r=froydnj 2015-08-11 08:29:46 -07:00
Birunthan Mohanathas
edbcd5e014 Bug 1185763 - Part 1: Always use mozilla::Move with nsTArray::MoveElementsFrom. r=froydnj 2015-08-11 08:29:46 -07:00
Jean-Yves Avenard
10659dafdb Bug 1188313: P1. Attempt to seek audio near video. r=cpearce
Do not only rely on the MediaDecoderState machine to keep A/V sync after a seek as should we seeked in fast mode ; it wouldn't
2015-08-11 14:18:49 +10:00
Alfredo Yang
8c59fda383 Bug 1146086: use promise to Init() in PlatformDecoderModule. r=jya,r=cpearce 2015-08-11 14:09:12 +10:00
Kilik Kuo
ad5c5e6495 Bug 1188812 - Obtain CDM can render capability and store into MediaInfo r=cpearce. 2015-08-06 14:24:00 +08:00
Jean-Yves Avenard
616e6d2dd6 Bug 1188131: Don't rely on MediaResource type to detect media format. r=cpearce
This information is often wrong and non-existent with MSE. Let the PDM decides later based on the metadata.
This prevent hardware acceleration to be turned on leading to extremely high CPU usage on high definition videos.
2015-08-07 12:19:49 +10:00
Bobby Holley
c4645a718b Bug 1190496 - Namespace the SharedThreadPool.h include. r=cpearce 2015-08-04 14:00:25 -07:00
Alfredo Yang
1885ed42a2 Bug 1189173 - Drop frames aggressively during internal seek. r=jya
--HG--
extra : rebase_source : 2db2cf4908c764df2273a0c6f2fb572a6310b0e8
2015-07-30 00:53:00 +02:00
Jean-Yves Avenard
024aff6746 Bug 1189138: P2. Add useful debugging information to logs. r=cpearce 2015-07-30 15:20:19 +10:00
Jean-Yves Avenard
b29bbb6f28 Bug 1188233: Ensure drainComplete flag is set upon failure to create decoder. r=cpearce 2015-07-28 23:28:24 +10:00
Jean-Yves Avenard
c203925f63 Revert "Bug 1188233: Ensure drainComplete flag is set upon failure to create decoder. r=cpearce"
This reverts commit 9c48bac3e0d3
2015-07-28 16:37:53 +10:00
Jean-Yves Avenard
c7b835ce08 Bug 1188233: Ensure drainComplete flag is set upon failure to create decoder. r=cpearce 2015-07-28 14:23:29 +10:00
Jean-Yves Avenard
bec365db4b Bug 1188220: Allow disabling HW acceleration even when SharedDecoderManager isn't used. r=cpearce
The SharedDecoderManager is being obsoleted.
2015-07-28 14:11:06 +10:00
Jean-Yves Avenard
0259a11e37 Bug 1185886: P2. Don't unnecessarily drain decoders when there's no frames pending. r=cpearce 2015-07-27 14:52:11 +10:00
Jean-Yves Avenard
d614b68bdf Bug 1183888: Report empty buffered ranges unless we have a start time. r=bholley 2015-07-24 23:02:20 +10:00
Jean-Yves Avenard
f77f5f6283 Bug 1185431: Immediately resolve WaitingForDataPromise if we're not waiting for data. r=cpearce 2015-07-22 14:22:46 +10:00
Jean-Yves Avenard
5d0c759bca Bug 1181204 - Prevent use of the decoder outside the reader's taskqueue. r=cpearce
This fix a potential race when the decoder could be shutting down on the reader's taskqueue while the MediaDecoderStateMachine thread attempts to read it.

--HG--
extra : amend_source : d8a7ac55539c22f69d965299010a20b34c8a4c58
extra : transplant_source : %F6%D2z%A2%40%D1%CE%8BX%FB%9E%CA%2B%ABa%7D%F9%7Fl%BF
2015-07-20 15:14:37 -04:00
Jan Gerber
7bed9a2be5 Bug 1148102: P7. Hookup WebMDemuxer. r=jya 2015-07-20 17:27:08 +10:00
Bobby Holley
997543e6ba Bug 1184634 - Rename MediaTaskQueue to TaskQueue. r=gerald 2015-07-16 22:23:06 -07:00
Bobby Holley
78001ffc43 Bug 1184634 - Rename "TaskQueue()" accessor to "OwnerThread()". r=gerald
Otherwise this name will collide with the rename of MediaTaskQueue to TaskQueue.
It's also a better naming convention, because it generalizes to things that are
owned by an AbstractThread that is not a Task Queue.

We rename to Queue() in TestMozPromise, because that's more accurate.
2015-07-16 22:22:07 -07:00
Jean-Yves Avenard
2017f9a033 Bug 1183519: P2. Reject promise if decoder couldn't be created. r=me
Follow-up fix.
2015-07-16 16:05:27 +10:00
Jean-Yves Avenard
8c024dd743 Bug 1183653: MediaFormatReader: returns error if no tracks are usable. r=cpearce 2015-07-16 14:31:56 +10:00
Jean-Yves Avenard
15fbc88e95 Bug 1183482: Fix shutdown hang. r=cpearce
The MediaFormatReader destructor is only called once all media task queues have shutdown.
However, the main thread demuxer always owned a reference to trackbuffer task queue.
2015-07-16 14:31:55 +10:00
Jean-Yves Avenard
71f0c200c2 Bug 1183519: Wait until current drain completes before decoding new data. r=cpearce 2015-07-16 14:31:54 +10:00
Jean-Yves Avenard
d709da531a Bug 1182985: Drain decoder when changing resolution. r=cpearce 2015-07-16 14:31:53 +10:00
Jean-Yves Avenard
8ca249040e Bug 1173657: Drain decoder when discontinuity encountered. r=cpearce
A discontinuity can be when waiting for data, decoding error or reaching end of stream.
2015-07-16 14:31:53 +10:00
Jean-Yves Avenard
3b7482b6f2 Bug 1182967: Reject metadata promise on shutdown. r=bholley 2015-07-16 14:31:52 +10:00
Jean-Yves Avenard
9e0b01d33a Bug 1181894: Always create a PlatformDecoderModule in CDMWrapper. r=cpearce
Not all tracks may be encrypted, as such we need a default PDM in order to decode non-encrypted data.
2015-07-09 16:18:05 +10:00
Jean-Yves Avenard
ea747682af Bug 1180403: P2. Prevent crash when shutting down. r=cpearce 2015-07-09 11:06:07 +10:00
Sotaro Ikeda
05e6073126 Bug 1171257 - Add force decode ahead to MediaFormatReader r=jya,bholley 2015-07-05 09:39:30 -07:00
Bobby Holley
f15bd05ef7 Bug 1179110 - Use a Maybe<> to store start time, rather than using -1 as a sentinel. r=jya
This allows us to properly support videos with a negative start time, which
is happening here.
2015-07-02 12:05:17 -07:00
Jean-Yves Avenard
442d53fa88 Bug 1179569: Remove use of decoder's monitor in ResetDecode(). r=bholley
Doesn't appear to ever have been required.
2015-07-02 11:55:33 +10:00