Commit graph

1462 commits

Author SHA1 Message Date
alwu
1418b654fb Bug 1844772 - part1 : add silence audio data to fill the gap. r=padenot
As the audio clock would only move forward when it consumes real sample,
if we don't keep sending data when there is a gap between audio and
video, then the audio clock would stall.

Therefore, we need to create fake audio data to cover the gap between
audio and video if the audio track is shorter. But we don't need to
worry about the opposite situation, where the video track is shorter
than the audio track. Because the video sink would simply display the
last video frame to cover the gap.

Differential Revision: https://phabricator.services.mozilla.com/D184272
2023-07-31 19:45:48 +00:00
Natalia Csoregi
cf366b2840 Backed out 3 changesets (bug 1693250) for causing high frequency failures on test_recreate_audio_sink_clock_time.html. CLOSED TREE
Backed out changeset 7a2f57793a3b (bug 1693250)
Backed out changeset f869096a85f2 (bug 1693250)
Backed out changeset 54b9fbe63086 (bug 1693250)
2023-07-18 06:01:09 +03:00
alwu
1a1007ed4f Bug 1693250 - part3 : add another test to check whether audio sink incorrectly inserts silence. r=media-playback-reviewers,webidl,saschanaz,padenot
Differential Revision: https://phabricator.services.mozilla.com/D183435
2023-07-17 19:54:24 +00:00
alwu
115342d93b Bug 1693250 - part2 : reset the audible state when the audio sink get shutdown. r=bryce,karlt
When the audio sink shutdown, we should also reset the audible state for
the listeners. Otherwise, MediaDecoderStateMachine would possibly rely
on the incorrect audible state that is produced by previous sink, which
would cause showing the sound indicator even if no sound is being playing.

Eg. Considering following case without the reset of the audible state

1. Sink A is audible -> MDSM set mIsAudioDataAudible=true
2. Stop sink
3. Recreate sink B and it's playing silence -> MDSM's mIsAudioDataAudible=true is still true, this is wrong!

Differential Revision: https://phabricator.services.mozilla.com/D113550
2023-07-17 19:54:24 +00:00
alwu
bca9c3708f Bug 1693250 - part1 : keep clock time being monotonically increased even if the media sink has been changed. r=bryce
This patch is used to create a consistent clock timeline among
different media sinks. Having a consistent clock timeline can help the
newly created media sink to understand audio data's "adjusted" time,
which can prevent the sink from inserting silence if the sink
incorrectly think there is a gap between data and sink start time.

However, once seeking completed, we should use the media time that
indicates to the new position, instead of using the previous clock time.

Eg. Audio duration = 10, and has seamlessly looped 5 times. Then the
start time of the sample in 2s in the 6th looping would be 2 + 5*10 = 52.

If we switch to the new sink, and use media time (which is 2s) as a
start time to start a new sink, then the new sink would think there is a gap between 2s and 52s, then push a lot of silence. [1]

[1] https://searchfox.org/mozilla-central/rev/9b430bb1a11d7152cab2af4574f451ffb906b052/dom/media/mediasink/AudioSink.cpp#390-426

Differential Revision: https://phabricator.services.mozilla.com/D113548
2023-07-17 19:54:23 +00:00
alwu
86033f7417 Bug 1840933 - part1 : no need to set playback position to zero anymore. r=padenot
The original change was introduced when implementing seamless audio
looping, and it's no longer needed. Because now we would properly
adjust the offset of the media queue when entering the looping decoding
state to make the media time and the clock time consistent.

Differential Revision: https://phabricator.services.mozilla.com/D182526
2023-07-05 17:55:50 +00:00
alwu
31927af203 Bug 1826256 - set mOriginalDecodedDuration for single track when the track duration is known. r=padenot
If we seek directly to EOS, it's possible that we still can't know the
track duration because we don't have the last decoded data. Therefore,
we remove the assertion and make it as condition.

Differential Revision: https://phabricator.services.mozilla.com/D182417
2023-07-05 17:55:50 +00:00
Gregory Pappas
c3c4d4be10 Bug 1840980 - Rename media.resume-bkgnd-video-on-tabhover, media.suspend-bkgnd-video.delay-ms, and media.suspend-bkgnd-video.enabled prefs r=alwu
These are the only prefs that shorten background to bkgnd, this makes them very hard to find.

Differential Revision: https://phabricator.services.mozilla.com/D182430
2023-07-04 11:26:35 +00:00
Karl Tomlinson
d7940eeeb5 Bug 1829068 retain the same AudioSinkWrapper when switching output devices r=padenot
This allows video playback to continue uninterrupted.

The AudioSinkWrapper now maintains the correct playback position in the media
data.  Previously the replacement AudioSinkWrapper started its clock at the
"current playback position" from the MediaDecoderStateMachine, which did not
include additional time from looping, so silence would be played until the
missing time had passed.

The AudioSinkWrapper now continues to periodically attempt to open a new
output device if not initially available.  Previously such attempts were only
performed on state changes such as seeking or unmuting.

The promise returned from MediaDecoderStateMachine::InvokeSetSink() now
resolves regardless of whether the new device can be opened successfully.
Previously the promise could be rejected if the device was necessary for audio
output at the time of the call but no check for device availability (beyond
that of device enumeration) was performed if playback was suspended or muted
or if a subsequent device change had already been queued.  Even previously the
underlying device was changed even when the promise was rejected and could be
used if a state change occurred.

Differential Revision: https://phabricator.services.mozilla.com/D181975
2023-06-27 08:53:50 +00:00
Karl Tomlinson
7fa10acf9d Bug 1829068 don't reject for setSinkId() on media element because of MediaElementAudioSourceNode r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D181974
2023-06-27 08:53:50 +00:00
Cristian Tuns
c32f4885e4 Backed out 3 changesets (bug 1829068) for causing wpt failures in setSinkId-with-MediaElementAudioSourceNode.https.html CLOSED TREE
Backed out changeset 40cf2b588396 (bug 1829068)
Backed out changeset 1a8f8cda9b25 (bug 1829068)
Backed out changeset 5eb680967020 (bug 1829068)
2023-06-27 01:25:48 -04:00
Karl Tomlinson
b43ac02876 Bug 1829068 retain the same AudioSinkWrapper when switching output devices r=padenot
This allows video playback to continue uninterrupted.

The AudioSinkWrapper now maintains the correct playback position in the media
data.  Previously the replacement AudioSinkWrapper started its clock at the
"current playback position" from the MediaDecoderStateMachine, which did not
include additional time from looping, so silence would be played until the
missing time had passed.

The AudioSinkWrapper now continues to periodically attempt to open a new
output device if not initially available.  Previously such attempts were only
performed on state changes such as seeking or unmuting.

The promise returned from MediaDecoderStateMachine::InvokeSetSink() now
resolves regardless of whether the new device can be opened successfully.
Previously the promise could be rejected if the device was necessary for audio
output at the time of the call but no check for device availability (beyond
that of device enumeration) was performed if playback was suspended or muted
or if a subsequent device change had already been queued.  Even previously the
underlying device was changed even when the promise was rejected and could be
used if a state change occurred.

Differential Revision: https://phabricator.services.mozilla.com/D181975
2023-06-27 03:22:10 +00:00
Karl Tomlinson
ea13c5f68b Bug 1829068 don't reject for setSinkId() on media element because of MediaElementAudioSourceNode r=padenot
Depends on D181973

Differential Revision: https://phabricator.services.mozilla.com/D181974
2023-06-27 02:40:46 +00:00
Andreas Pehrson
6ce8ffae02 Bug 1839889 - In media playback move some state mirroring to (main thread) canonical-initiated connections. r=alwu
This shortens the time it takes to establish the connections for canonicals
living on the main thread, from the thread hop chain:
main thread (MediaDecoderStateMachine::Init)
  -> state machine task queue (Mirror::Connect)
  -> main thread (AbstractCanonical::AddMirror)
  -> state machine task queue (AbstractMirror::UpdateValue)

to the thread hop chain:
main thread (MediaDecoderStateMachine::Init + Canonical::ConnectMirror)
  -> state machine task queue (Mirror::AbstractUpdateValue)

No races exist here as MediaDecoderStateMachine initiates its shutdown on main
thread and continues on the task queue (where the mirrors live).

Differential Revision: https://phabricator.services.mozilla.com/D181086
2023-06-22 23:11:14 +00:00
Andreas Pehrson
9fc3480761 Bug 1837570 - Remove unused MediaDecoderStateMachine::CanonicalOutputTracks. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D181085
2023-06-22 15:00:24 +00:00
Norisz Fay
fe4144277b Backed out 9 changesets (bug 1837570) for causing failures on browser_utility_audio_shutdown.js, test_seamless_looping.html, browser_audio_telemetry_content.js CLOSED TREE
Backed out changeset 1c00f9d954b4 (bug 1837570)
Backed out changeset aeeff254fdd7 (bug 1837570)
Backed out changeset a2f55894361a (bug 1837570)
Backed out changeset e9c7a524c784 (bug 1837570)
Backed out changeset 7954e2994d72 (bug 1837570)
Backed out changeset 727f6d7e1b61 (bug 1837570)
Backed out changeset bd367313702f (bug 1837570)
Backed out changeset 462c505677cc (bug 1837570)
Backed out changeset ff50fae470fa (bug 1837570)
2023-06-22 01:14:25 +03:00
Andreas Pehrson
b482442218 Bug 1837570 - In media playback move some state mirroring to (main thread) canonical-initiated connections. r=alwu
This shortens the time it takes to establish the connections for canonicals
living on the main thread, from the thread hop chain:
main thread (MediaDecoderStateMachine::Init)
  -> state machine task queue (Mirror::Connect)
  -> main thread (AbstractCanonical::AddMirror)
  -> state machine task queue (AbstractMirror::UpdateValue)

to the thread hop chain:
main thread (MediaDecoderStateMachine::Init + Canonical::ConnectMirror)
  -> state machine task queue (Mirror::AbstractUpdateValue)

No races exist here as MediaDecoderStateMachine initiates its shutdown on main
thread and continues on the task queue (where the mirrors live).

Differential Revision: https://phabricator.services.mozilla.com/D181086
2023-06-21 20:38:42 +00:00
Andreas Pehrson
0c5f697557 Bug 1837570 - Remove unused MediaDecoderStateMachine::CanonicalOutputTracks. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D181085
2023-06-21 20:38:41 +00:00
Karl Tomlinson
c7bb5a4869 Bug 1829054 store new AudioSink in a UniquePtr immediately r=padenot
to remove risk of leak.

Depends on D180651

Differential Revision: https://phabricator.services.mozilla.com/D180652
2023-06-13 04:22:21 +00:00
Karl Tomlinson
121fecf564 Bug 1829054 use std::function to reduce templating and indirection of AudioSink creation r=padenot
Depends on D180650

Differential Revision: https://phabricator.services.mozilla.com/D180651
2023-06-13 04:22:21 +00:00
Sandor Molnar
205dc0d0e6 Backed out 4 changesets (bug 1829054) for causing mda failures. CLOSED TREE
Backed out changeset 2fbfefb8c6cf (bug 1829054)
Backed out changeset b7125a21f04f (bug 1829054)
Backed out changeset 1cce87bd67c5 (bug 1829054)
Backed out changeset 1638fd63ec28 (bug 1829054)
2023-06-13 05:31:29 +03:00
Karl Tomlinson
27643a8443 Bug 1829054 store new AudioSink in a UniquePtr immediately r=padenot
to remove risk of leak.

Depends on D180651

Differential Revision: https://phabricator.services.mozilla.com/D180652
2023-06-13 01:13:37 +00:00
Karl Tomlinson
8c09a2586d Bug 1829054 use std::function to reduce templating and indirection of AudioSink creation r=padenot
Depends on D180650

Differential Revision: https://phabricator.services.mozilla.com/D180651
2023-06-13 01:13:37 +00:00
Paul Adenot
45502ddf4c Bug 1817997 - When checking if a media has been seeked to the end, take into account the resolution of time values. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D173529
2023-05-24 13:18:42 +00:00
Cosmin Sabou
5fd965f028 Backed out 80 changesets (bug 1821362, bug 1703812, bug 1817997) for causing media crashes as in Bug 1833890. a=backout
Backed out changeset f2113c9b661f (bug 1817997)
Backed out changeset f1ecfbba7ed2 (bug 1703812)
Backed out changeset 011cece33b0d (bug 1817997)
Backed out changeset 4b42659090f3 (bug 1817997)
Backed out changeset 2d92f903dd66 (bug 1817997)
Backed out changeset 0ef13d357ee3 (bug 1817997)
Backed out changeset 7353f869efd2 (bug 1703812)
Backed out changeset 14b061d0f595 (bug 1817997)
Backed out changeset d29bc29397c8 (bug 1703812)
Backed out changeset 54c3294f0839 (bug 1817997)
Backed out changeset b9f2e1155bd7 (bug 1817997)
Backed out changeset d5d5d390dcbf (bug 1817997)
Backed out changeset 8fca27bd0f6b (bug 1817997)
Backed out changeset 670c599a3b99 (bug 1817997)
Backed out changeset deea3077f762 (bug 1817997)
Backed out changeset 25ecea0f3d49 (bug 1817997)
Backed out changeset 35ab3ed5e3fc (bug 1817997)
Backed out changeset f516a428ba32 (bug 1817997)
Backed out changeset e589b4d30995 (bug 1817997)
Backed out changeset d096b9cc905d (bug 1817997)
Backed out changeset 2952a6fa06e5 (bug 1817997)
Backed out changeset c1ac4c31ad9a (bug 1817997)
Backed out changeset 04c60cd83c5f (bug 1821362)
Backed out changeset 6dd80575e551 (bug 1821362)
Backed out changeset b86b569ecd46 (bug 1817997)
Backed out changeset 412e0a9ec4e8 (bug 1817997)
Backed out changeset 8e0dcf163138 (bug 1817997)
Backed out changeset 7af506896930 (bug 1817997)
Backed out changeset 29f7cd2b341c (bug 1817997)
Backed out changeset 7f64e65d9497 (bug 1817997)
Backed out changeset 89c241451a32 (bug 1817997)
Backed out changeset 66e4a26e1ebe (bug 1817997)
Backed out changeset ea1aebd4e245 (bug 1817997)
Backed out changeset 2d88a5915db9 (bug 1817997)
Backed out changeset 697ec1928f9c (bug 1817997)
Backed out changeset 41c0bd1133c5 (bug 1817997)
Backed out changeset b20cc750c020 (bug 1817997)
Backed out changeset dc5fd84a3a4c (bug 1703812)
Backed out changeset efa6d130d4eb (bug 1703812)
Backed out changeset 20d9b7cf0ddc (bug 1703812)
Backed out changeset e77c61e8fad2 (bug 1703812)
Backed out changeset 582d5c680e5a (bug 1703812)
Backed out changeset 96c9aacc6811 (bug 1703812)
Backed out changeset 56ec4a57a6a6 (bug 1703812)
Backed out changeset 8f96c8811675 (bug 1703812)
Backed out changeset a79a2f1b2b51 (bug 1703812)
Backed out changeset 07eb8b2c5b9f (bug 1703812)
Backed out changeset bae2b2fb9759 (bug 1703812)
Backed out changeset 38b0416538f3 (bug 1703812)
Backed out changeset b27b54c95cf2 (bug 1703812)
Backed out changeset cab00065d83d (bug 1703812)
Backed out changeset ab44727b2e1a (bug 1703812)
Backed out changeset b7fdcb494670 (bug 1703812)
Backed out changeset 73db43d49c6d (bug 1703812)
Backed out changeset ce754dbfb862 (bug 1703812)
Backed out changeset d694726a3ee6 (bug 1703812)
Backed out changeset 6acede55acbb (bug 1703812)
Backed out changeset 86e7d4784a20 (bug 1703812)
Backed out changeset 6b2e055d9314 (bug 1703812)
Backed out changeset b08695e5728a (bug 1703812)
Backed out changeset 3b8a0081fd10 (bug 1703812)
Backed out changeset 3a163596f982 (bug 1703812)
Backed out changeset 5be1d4b282ab (bug 1703812)
Backed out changeset 1ce012d7509e (bug 1703812)
Backed out changeset ee2fab5881c7 (bug 1703812)
Backed out changeset 62941a522893 (bug 1703812)
Backed out changeset d4f11dc33eed (bug 1703812)
Backed out changeset 781bb4c3cc02 (bug 1703812)
Backed out changeset f070e0de0566 (bug 1703812)
Backed out changeset 9f65c67ba2a6 (bug 1703812)
Backed out changeset 1e76eecb85e2 (bug 1703812)
Backed out changeset 953432408a83 (bug 1703812)
Backed out changeset fd1dc92d3911 (bug 1703812)
Backed out changeset 34d56948c6b6 (bug 1703812)
Backed out changeset 2ba7ca61ecc3 (bug 1703812)
Backed out changeset 545253c469e6 (bug 1703812)
Backed out changeset fb4a61ab1300 (bug 1703812)
Backed out changeset bf07b3cfd3d5 (bug 1703812)
Backed out changeset eaff51e7754b (bug 1703812)
Backed out changeset f5c485c41d13 (bug 1703812)
2023-05-19 14:49:57 +03:00
alwu
31afcd8587 Bug 1833266 - part1 : check whether MDSM supports given CDM proxy. r=jolin
Differential Revision: https://phabricator.services.mozilla.com/D178124
2023-05-18 23:58:20 +00:00
Paul Adenot
7cec06d1fe Bug 1817997 - When checking if a media has been seeked to the end, take into account the resolution of time values. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D173529
2023-05-17 15:47:06 +00:00
alwu
cca694c2ac Bug 1829086 - part9 : prevent non-looping state from incorrectly adjust clock time, resulting in incorrect events. r=padenot
The reason of adjusting the clock time is because the playback keeps
running during seamless looping, so we usually normalize the clock
time into [0, duration].

That assumes the duration is X s, but in the end the clock goes X+1 s,
which could be due to using the system clock for either muted audio
track or a video-only track. That X+1 won't acctually be reflected on
the media timetime because we would trim it before setting the media
time [1].

However, If we've set the `mOriginalDecodedDuration` before, and somehow
now we're not in the seamless looping state (it could be either canceling
the looping, or fallbacking to the non-seamless looping), then the clock
time would incorrectly become 1 if we use modulo to adjust the time.

That incorrect time change would trigger the seeking/seeked event [2]
which volates the spec.

[1]
https://searchfox.org/mozilla-central/rev/4a5c56f4aca291802ce27320cd9a752dd5dd955e/dom/media/MediaDecoderStateMachine.cpp#4233-4236

[2]
https://searchfox.org/mozilla-central/rev/4a5c56f4aca291802ce27320cd9a752dd5dd955e/dom/media/MediaDecoder.cpp#972-974,998-1006

Differential Revision: https://phabricator.services.mozilla.com/D177573
2023-05-15 16:49:14 +00:00
alwu
fdca39b406 Bug 1829086 - part5 : cancel waiting data if the track has reached to EOS when leaving seamless looping state. r=padenot
If we are not going to loop, then there is no need to keep waiting the
data from the start position if we have had all data for the track.

Differential Revision: https://phabricator.services.mozilla.com/D177440
2023-05-15 16:49:14 +00:00
alwu
6ead499d84 Bug 1829086 - part4 : update the condition for stop preroll in order to fix intermittent failure. r=padenot
If one of the track reaches EOS before starting the playback, playback
would never start due to the those condition checks. That causes
`test_NoAudioLoopBackData.html` failed on the try server as well.

But those checks should only be used for the situation where the media
queue has been closed before entering the looping state. Therefore,
update them in order to fix the failure.

Differential Revision: https://phabricator.services.mozilla.com/D176706
2023-05-15 16:49:14 +00:00
alwu
19f2397290 Bug 1829086 - part2 : allow audio sink to treat underrun as silent frames r=padenot
In MSE seamless looping, it's possible that the data from the start
position isn't available because website won't append them until the
media time has seeked back to the start position.

In this situation, if the audio track is shorter, when all queued audio
get consumed already, the audio underrun would happen. As we still need
the audio clock to be driven in order to play remaining video frames, we
need to treat audio underrun as slient frames. Otherwise, audio clock
would stall, resulting in whole playback stall as well.

Differential Revision: https://phabricator.services.mozilla.com/D176591
2023-05-15 16:49:13 +00:00
alwu
cf76e205d0 Bug 1829086 - part1 : do not go to the buffering state if any track has reached EOS. r=padenot
During MSE seamless looping, if we can't get the data from the start
position, those data might not be appended yet. Entering buffering
state won't help on this situation, because accessing data from the
start position is our internal implementation.

Therefore, we should fallback to the normal looping state, which would
trigger seeking to the start position. That is visible to the website so
that they can start appending data again.

Differential Revision: https://phabricator.services.mozilla.com/D176367
2023-05-15 16:49:13 +00:00
Andi-Bogdan Postelnicu
4efa1bd0ba Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-27 07:20:25 +00:00
Sandor Molnar
9db345d4c1 Backed out 2 changesets (bug 1276351) for causing build bustage in image/ClippedImage.cp CLOSED TREE
Backed out changeset e84598eb82c1 (bug 1276351)
Backed out changeset e940b0554484 (bug 1276351)
2023-03-25 14:16:43 +02:00
Andi-Bogdan Postelnicu
447f1e3358 Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-25 06:58:52 +00:00
Iulian Moraru
6d40eee997 Backed out 2 changesets (bug 1276351) for causing multiple failures.
Backed out changeset eeaf4f1e06af (bug 1276351)
Backed out changeset d44cb5704342 (bug 1276351)
2023-03-25 00:08:24 +02:00
Andi-Bogdan Postelnicu
a1b827b503 Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-24 18:55:39 +00:00
Karl Tomlinson
6e920e70cb Bug 1823586 don't reject a sink change when delaying new media sink creation for a suspended MediaDecoder r=alwu
The new sink device is already recorded on the decoder and will be used on
resume.

Depends on D173107

Differential Revision: https://phabricator.services.mozilla.com/D173108
2023-03-22 19:21:38 +00:00
alwu
9ec6ed010b Bug 1815798 - check if requesting data is finished or not. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D172740
2023-03-20 18:37:35 +00:00
alwu
3fe011d7aa Bug 1815798 - add more assertions for checking the state of the state object. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D170687
2023-02-28 18:14:46 +00:00
alwu
03c31e328f Bug 1815798 - add assertions. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D170553
2023-02-28 18:14:45 +00:00
Tom Schuster
16d1d2ed89 Bug 1813584 - Use fine grained RFP for CubebUtils::PreferredSampleRate. r=media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D168523
2023-02-15 10:55:31 +00:00
Karl Tomlinson
53efa7c27d Bug 1808871 connect mStreamName Mirror r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D166245
2023-01-09 21:45:41 +00:00
Andreas Pehrson
8143e2385f Bug 1796069 - Simplify and make more flexible the PerformanceRecorder API. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D160751
2022-12-01 09:52:44 +00:00
alwu
9fd296590d Bug 1801692 - always check other conditions before requesting data in order to ensure that we don't request data during another request or seeking. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D162790
2022-11-25 23:27:22 +00:00
alwu
14e89d0d4e Bug 1799826 - ensure no further sample request when transitioning from looping decoding state to the completed state. r=padenot
I assume one possible situation of causing crash is that the looping
state is transitioning to the completed state due to both tracks can't
get new data after reaching EOS [1].

In this case, we should also finish queue and cancal any ongoing
sample request in order not to trigger EOS again after entering
the completed state.

[1]
https://searchfox.org/mozilla-central/rev/650c19c96529eb28d081062c1ca274bc50ef3635/dom/media/MediaDecoderStateMachine.cpp#3048

Differential Revision: https://phabricator.services.mozilla.com/D162676
2022-11-22 18:26:29 +00:00
alwu
d69ddbfc5f Bug 1790146 - part1 : move mSecondaryVideoContainer to the base class and perform base members cleanup in the base class. r=jolin
Differential Revision: https://phabricator.services.mozilla.com/D162157
2022-11-21 18:23:30 +00:00
alwu
0017b58147 Bug 1800233 - part1 : only seek back to the head when all tracks reach to EOS already. r=padenot
This patch fixes the incorrect condition for the single track playback,
because the EOS flag for the nonexistent track would always be true.

Eg. for audio-only playback, `mIsReachingVideoEOS` is always true.

Differential Revision: https://phabricator.services.mozilla.com/D162025
2022-11-15 18:32:41 +00:00
alwu
051fb0e15e Bug 1799995 - correct wording for LoopingDecodingState. r=media-playback-reviewers,padenot
Differential Revision: https://phabricator.services.mozilla.com/D161742
2022-11-10 18:58:14 +00:00
alwu
df7effa1a2 Bug 1799826 - cancel any data request when leaving looping decoding state if playback has reached to the end. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D161745
2022-11-10 18:54:47 +00:00