Граф коммитов

673 Коммитов

Автор SHA1 Сообщение Дата
Jean-Yves Avenard c5c63d35fc Bug 1245463: [MSE] P5. Remove no longer working Dump() commands. r=gerald
MozReview-Commit-ID: 71hgJ63ksPU
2016-02-12 23:45:48 +11:00
Jean-Yves Avenard 96e96d9ebc Bug 1245463: [MSE] P4. Remove dead code. r=gerald
MozReview-Commit-ID: Elnm0WPuqHC
2016-02-12 23:45:47 +11:00
Jean-Yves Avenard 30db7c749e Bug 1245463: [MSE] P3. When abort() is called, wait until the current appendBuffer completes. r=gerald
The W3C spec indicates that while everything in MSE is asynchronous, the abort() command is to interrupt the current segment parser loop and have the reset parser loop synchronously completes the frames present in the input buffer.
This causes a fundamental issue that abort() will never result in a deterministic outcome as the segment parser loop may be in different condition.

We used to really attempt to abort the current operation, however there could have been a race in the order in which tasks were queued. As such, we now simply wait for the current appendBuffer to complete.

This also simplifies the code greatly, as we don't need to worry about pending concurrent appendBuffer.

The actually happens to be similar to the Chromium behavior.

Similar to bug 1239983, we strongly assert should a segment parser loop be running when it must have completed.

MozReview-Commit-ID: 9772PLQEozf
2016-02-12 23:45:47 +11:00
Jean-Yves Avenard 9d45d60388 Bug 1245463: [MSE] P2. Remove MediaSource's duration mirror. r=gerald
It served no purpose other than implementing the MSE spec by the letter. The spirit is preserved.
This allows to disable tail dispatching on the MediaSourceDemuxer's TaskQueue which prevents us from performing synchronous operation on the main thread.

MozReview-Commit-ID: G7aqfvGsf1e
2016-02-12 23:45:46 +11:00
Jean-Yves Avenard aceca098dd Bug 1245463: [MSE] P1. Do not attempt to retrieve the buffered range if the mediasource is in closed state. r=gerald
The changes that follow may cause the active sourcebuffer list to be modified; which will trigger an assertion if the mediasource object is closed.

MozReview-Commit-ID: 8A1CMKAUyTq
2016-02-12 23:45:46 +11:00
Phil Ringnalda 6111439998 Back out 6 changesets (bug 1245463) for !mAppendRunning (Append is running) assertion failures
CLOSED TREE

Backed out changeset 75d96e417aaf (bug 1245463)
Backed out changeset dca0577d741c (bug 1245463)
Backed out changeset 17ffbe7ca24e (bug 1245463)
Backed out changeset 83a2de2fcf02 (bug 1245463)
Backed out changeset e8bb35ea72e4 (bug 1245463)
Backed out changeset 48364b868055 (bug 1245463)
2016-02-11 23:39:36 -08:00
Jean-Yves Avenard 656801b3a7 Bug 1245463: [MSE] P6. Fix incorrect assertions. r=me
mAppendRunning is set prior the append task being queued; so it is possible that the segment parser loop hasn't yet been started, yet mAppendRunning is true.

Separate this diagnostic with a new flag ON A CLOSED TREE.

MozReview-Commit-ID: GgTyyltKOJr
2016-02-12 15:18:43 +11:00
Jean-Yves Avenard 184fb6b1d4 Bug 1245463: [MSE] P5. Remove dead code. r=gerald
MozReview-Commit-ID: Elnm0WPuqHC
2016-02-12 15:18:41 +11:00
Jean-Yves Avenard a6a8d0565d Bug 1245463: [MSE] P4. Remove no longer working Dump() commands. r=gerald
MozReview-Commit-ID: 71hgJ63ksPU
2016-02-12 10:30:16 +11:00
Jean-Yves Avenard dda61422b8 Bug 1245463: [MSE] P3. When abort() is called, wait until the current appendBuffer completes. r=gerald
The W3C spec indicates that while everything in MSE is asynchronous, the abort() command is to interrupt the current segment parser loop and have the reset parser loop synchronously completes the frames present in the input buffer.
This causes a fundamental issue that abort() will never result in a deterministic outcome as the segment parser loop may be in different condition.

We used to really attempt to abort the current operation, however there could have been a race in the order in which tasks were queued. As such, we now simply wait for the current appendBuffer to complete.

This also simplifies the code greatly, as we don't need to worry about pending concurrent appendBuffer.

The actually happens to be similar to the Chromium behavior.

Similar to bug 1239983, we strongly assert should a segment parser loop be running when it must have completed.

MozReview-Commit-ID: 9772PLQEozf
2016-02-12 10:30:09 +11:00
Jean-Yves Avenard e65199f63d Bug 1245463: [MSE] P2. Remove MediaSource's duration mirror. r=gerald
It served no purpose other than implementing the MSE spec by the letter. The spirit is preserved.
This allows to disable tail dispatching on the MediaSourceDemuxer's TaskQueue which prevents us from performing synchronous operation on the main thread.

MozReview-Commit-ID: G7aqfvGsf1e
2016-02-12 10:29:59 +11:00
Jean-Yves Avenard 5a49dc9392 Bug 1245463: [MSE] P1. Do not attempt to retrieve the buffered range if the mediasource is in closed state. r=gerald
The changes that follow may cause the active sourcebuffer list to be modified; which will trigger an assertion if the mediasource object is closed.

MozReview-Commit-ID: 8A1CMKAUyTq
2016-02-12 10:27:33 +11:00
Carsten "Tomcat" Book f854f0417e Backed out changeset 5b37030dbfe3 (bug 1245463) for Android m-9 crashes 2016-02-10 11:20:31 +01:00
Carsten "Tomcat" Book dc41ea5c25 Backed out changeset a9ccf315f1f2 (bug 1245463) 2016-02-10 11:20:16 +01:00
Carsten "Tomcat" Book 4626394d1c Backed out changeset 2376ec200aec (bug 1245463) 2016-02-10 11:20:15 +01:00
Carsten "Tomcat" Book 45b0b8a19f Backed out changeset 2affd4506079 (bug 1245463) 2016-02-10 11:20:13 +01:00
Carsten "Tomcat" Book 9f354ccec0 Backed out changeset 22641351f11f (bug 1245463) 2016-02-10 11:20:12 +01:00
Jean-Yves Avenard 7b7a27dd0f Bug 1245463: [MSE] P5. Remove no longer working Dump() commands. r=gerald
MozReview-Commit-ID: 71hgJ63ksPU
2016-02-10 20:07:29 +11:00
Jean-Yves Avenard 95de6fa2f8 Bug 1245463: [MSE] P4. Remove dead code. r=gerald
MozReview-Commit-ID: Elnm0WPuqHC
2016-02-10 20:07:28 +11:00
Jean-Yves Avenard 43fa8f611e Bug 1245463: [MSE] P3. Diags to ensure the Segment Parser Loop isn't running. r=gerald
This is similar to bug 1239983, we strongly assert should a segment parser loop be running when it must have completed.

MozReview-Commit-ID: CXqGoq9Opq0
2016-02-10 20:07:28 +11:00
Jean-Yves Avenard 018bf90ad7 Bug 1245463: [MSE] P2. When abort() is called, wait until the current appendBuffer completes. r=gerald
The W3C spec indicates that while everything in MSE is asynchronous, the abort() command is to interrupt the current segment parser loop and have the reset parser loop synchronously completes the frames present in the input buffer.
This causes a fundamental issue that abort() will never result in a deterministic outcome as the segment parser loop may be in different condition.

We used to really attempt to abort the current operation, however there could have been a race in the order in which tasks were queued. As such, we now simply wait for the current appendBuffer to complete.

This also simplifies the code greatly, as we don't need to worry about pending concurrent appendBuffer.

The actually happens to be similar to the Chromium behavior.

MozReview-Commit-ID: CHppUOGM1mk
2016-02-10 20:07:27 +11:00
Jean-Yves Avenard f3b37cac73 Bug 1245463: [MSE] P1. Do not attempt to retrieve the buffered range if the mediasource is in closed state. r=gerald
The changes that follow may cause the active sourcebuffer list to be modified; which will trigger an assertion if the mediasource object is closed.

MozReview-Commit-ID: 8A1CMKAUyTq
2016-02-10 20:07:27 +11:00
Bryce Van Dyk 61408b539f Bug 1246842 - Rework previous commit to not used deprecated arguments.callee r=cpearce
MozReview-Commit-ID: DFWNOGN0FyY

--HG--
extra : transplant_source : %1E%0D%0E%F7%EB%AE%10%40%D6%C2%3F%03%EC%16%98%91Z%60%D8%20
2016-02-09 20:42:56 +13:00
Jean-Yves Avenard 8fa85e0c6e Bug 1246358: [MSE] Take pre-roll time into consideration when seeking. r=gerald 2016-02-08 17:36:17 +11:00
Jean-Yves Avenard a1d2f88108 Bug 1246521: [MSE] P3. Only error during Prepare Append algorithm if the media element is in error. r=gerald 2016-02-08 16:38:45 +11:00
Jean-Yves Avenard f501a23d19 Bug 1181981: [MSE] Force TrackId for MSE tracks. r=gerald
YouTube sets the track ID at 1 for both audio and video tracks. Attempting to use mozCaptureStream would cause an assert as it always expect tracks to have a different track Id.
2016-02-04 11:07:19 +11:00
Gerald Squelart 7511beb447 Bug 1239983 - Diags around TrackBuffersMgr promises - r=jya
Added diagnostics around demuxer init/reset promises, to catch early cases
where TrackBuffersManager::mInputDemuxer is destroyed while an init/reset
promise is in flight, which would cause later issues when the 'Then' clause
assumes that mInputDemuxer still exists.

Note: This is *not* an actual fix for crashes linked to this bug, but it should
help identify unexpected situations, or instead eliminate these patched
locations as sources of crashes.
A new bug will be needed to examine the fallout from this patch and produce a
real fix, or continue investigating.
2016-02-02 20:20:03 +11:00
Kyle Huey 91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Guang-De Lin 345a0e7d0e Bug 1229936 - Enable mse mp4 mochitests on linux. r=jya 2016-01-27 14:46:52 +08:00
Jean-Yves Avenard 58d924fab9 Bug 1236703: P2. Add methods to retrieve debugging data on plain readers. r=jwwang 2016-01-20 09:50:26 +11:00
Jean-Yves Avenard e35b5b767d Bug 1236703: P1. Add debugging information for MSE to about:media plugin. r=kentuckyfriedtakahe
Add : number of frames decoded and number of frames skipped during skip to next key frame and if hardware acceleration is currently in use.
2016-01-20 09:50:25 +11:00
Jean-Yves Avenard f079977e08 Bug 1240411: P8. Clean up MediaSource headers. r=cpearce
Remove redundant virtual keyword and add missing override if any.
2016-01-19 19:47:35 +11:00
Jean-Yves Avenard 3c25c690a7 Bug 1207220: Ensure MediaShutdownManager waits until all MediaDecoder have completed their shutdown. r=cpearce
XPCOM when shutting down expects all tasks to be run synchronously. As such, we must ensure that the remaining MediaDecoder are shut down before continuing on the next task.
In particular destroying gfxPlatforms must only ever happen after, as it is possible for the MediaDecoderReader to make use of gfx resources during shutdown.
2016-01-05 11:55:50 +11:00
Chris Peterson 88051371a9 Bug 1232223 - Part 1: Remove MOZ_WEBM #ifdefs because WebM is always supported, though not necessarily enabled. r=jya r=glandium 2015-12-12 13:49:07 -05:00
Jean-Yves Avenard 08597229bb Bug 1229987: P4. Stop pre-rolling when encountering WAITING_FOR_DATA. r=cpearce
This allows to start displaying frames even when we have less than 5 frames.
2015-12-18 19:26:54 +11:00
Jean-Yves Avenard 1e7e9a8d7c Bug 1229987: P3. Update mochitests and add new one verifying behavior. r=cpearce 2015-12-18 19:26:53 +11:00
Jean-Yves Avenard 7e9fd3bcf4 Bug 1229987: [MSE] P1. Ensure next random access point properly calculated after seek. r=gerald
When seeking, the next keyframe time would always be set to the seek time (as the next sample to be retrieved would be a keyframe). This could lead to the next key frame logic to be activated too aggressively.
2015-12-18 19:26:52 +11:00
Phil Ringnalda 45242f7699 Back out 4 changesets (bug 1229987) for ASan e10s timeout in test_playback.html, Mac timeouts in test_BufferingWait_mp4.html, and Win8 failures in test_WaitingToEndedTransition_mp4.html
Backed out changeset 707a87454058 (bug 1229987)
Backed out changeset 37003d495f20 (bug 1229987)
Backed out changeset c8f4e1eaf884 (bug 1229987)
Backed out changeset 42ca05d8546d (bug 1229987)
2015-12-10 23:10:20 -08:00
Jean-Yves Avenard ad5e2f804f Bug 1230527: P2. Add mochitest. r=jwwang
It's also another way to check for 1130237: we make sure that seeking starts after playback when we have a gap at the beginning of the data
2015-12-10 14:08:06 -05:00
Jean-Yves Avenard ce54507b17 Bug 1229987: P3. Update mochitests and add new one verifying behavior. r=cpearce 2015-12-10 12:17:26 -05:00
Jean-Yves Avenard 18c2b9cb12 Bug 1229987: [MSE] P1. Ensure next random access point properly calculated after seek. r=gerald
When seeking, the next keyframe time would always be set to the seek time (as the next sample to be retrieved would be a keyframe). This could lead to the next key frame logic to be activated too aggressively.
2015-12-10 12:17:25 -05:00
Jean-Yves Avenard e786add25c Bug 1130237: [MSE] P3. Add mochitest testing behavior. r=gerald
We load data from [2ish, 4] and ensure that playback didn't start before data [0, 2ish] is loaded.
2015-12-09 09:55:37 -05:00
Carsten "Tomcat" Book 2257530fee Backed out changeset b8a9e34748f1 (bug 1130237) for m2 test failures 2015-12-07 11:20:35 +01:00
Jean-Yves Avenard 7084f9ab9c Bug 1130237: [MSE] P3. Add mochitest testing behavior. r=gerald
We load data from [2ish, 4] and ensure that playback didn't start before data [0, 2ish] is loaded.
2015-12-05 17:28:38 +11:00
Jean-Yves Avenard a080f16503 Bug 1130237: [MSE] P1. Only ever return a frame if we have data. r=gerald
After a Reset() the definition is that the resource was seeked to 0. As such we should only return a frame if there's data at time==0.
2015-12-05 17:28:37 +11:00
Jean-Yves Avenard d6b653ae10 Bug 1229605: [MSE] Allow webm/audio independently of video. r=kentuckyfriedtakahe
This adds a media.mediasource.webm.audio.enabled preference (true by default) to disable opus or vorbis audio in webm mediasource.
2015-12-04 14:43:47 +11:00
Jean-Yves Avenard 99d86bb64e Bug 1194624: [MSE] P4. Add mochitest testing new behaviour. r=jwwang
Ensure that the canplay/canplaythrough and readyState is properly updated according to buffering condition.
2015-12-03 19:22:07 +11:00
Jean-Yves Avenard d77e4129ea Bug 1194624: [MSE] P3. Determine when canplaythrough can be fired. r=jwwang
We assume that if we have 30s of data buffered ahead of the current position or up to the element's duration that we can play ahead without interruption.
2015-12-03 19:22:06 +11:00
Jean-Yves Avenard 8e5e1f7311 Bug 1194624: [MSE] P2. Enable NextFrameBufferedStatus() for MediaSourceDecoder. r=jwwang
We require a slightly variation on the default implementation as mediasource allows for gaps of up to 125ms between samples and often videos do not start with a time of 0.
2015-12-03 19:22:05 +11:00
Jean-Yves Avenard b43e4839aa Bug 1194624: [MSE] P1. Move definition of EOS_FUZZ to be public. r=gerald 2015-12-03 19:22:05 +11:00