Closed
Bug 1498440
Opened 6 years ago
Closed 6 years ago
Refactor the logic of seamless looping audio
Categories
(Core :: Audio/Video: Playback, enhancement, P2)
Core
Audio/Video: Playback
Tracking
()
RESOLVED
FIXED
mozilla65
Tracking | Status | |
---|---|---|
firefox65 | --- | fixed |
People
(Reporter: alwu, Assigned: alwu)
References
(Blocks 1 open bug)
Details
Attachments
(6 files, 5 obsolete files)
The purpose of this bug is to move out the codes for seamless audio from DecodingState::Step().
Updated•6 years ago
|
Blocks: seamless-looping
Assignee | ||
Comment 1•6 years ago
|
||
If we're in seamless looping, ReaderProxy will not tell MDSM about EOS error which reader returned, so MDSM will stay at `decoding state` all the time.
We can say that the ReaderProxy hides EOS in this case.
When canceling seamless looping, if the playback position does not reach the EOS position yet and we had already hidden EOS, we need to create another
EOS to notify MDSM the demuxing has ended.
playback hidden fake
position EOS EOS
----|---------|---------|-------> (Increasing timeline)
Assignee | ||
Comment 2•6 years ago
|
||
When we cancel seamless looping, we should discard the audio data whose time are later than the last
audio frame's time in the audio track.
Assignee | ||
Comment 3•6 years ago
|
||
No need to check whether we need to dispatch looping event everytime when entering the DecodingState::Step().
Assignee | ||
Comment 4•6 years ago
|
||
We only have a interest in the data which is popped out from the front side of the queue.
Updated•6 years ago
|
Priority: -- → P2
Updated•6 years ago
|
Attachment #9016876 -
Attachment is obsolete: true
Updated•6 years ago
|
Attachment #9016877 -
Attachment is obsolete: true
Updated•6 years ago
|
Attachment #9016878 -
Attachment is obsolete: true
Updated•6 years ago
|
Attachment #9016879 -
Attachment is obsolete: true
Assignee | ||
Comment 5•6 years ago
|
||
This state is used to handle decoding when the media is in seamless looping.
It will be responsible for
(1) time adjustment
(2) handle EOS and seek to the first sample
Assignee | ||
Comment 6•6 years ago
|
||
Assignee | ||
Comment 7•6 years ago
|
||
Assignee | ||
Comment 8•6 years ago
|
||
When we cancel seamless looping, we should discard audio data whose time are later than the last
audio frame's time in the audio track.
Assignee | ||
Comment 9•6 years ago
|
||
We only have a interest in the data which is popped out from the front side of the queue.
Assignee | ||
Comment 10•6 years ago
|
||
We don't have any implementation for video seamless looping yet, so we only use 'loopingDecodingState' for
audio for now.
Assignee | ||
Comment 11•6 years ago
|
||
Ensure we disconnect all Then() before exit the state.
Updated•6 years ago
|
Attachment #9018766 -
Attachment is obsolete: true
Assignee | ||
Comment 12•6 years ago
|
||
Comment 13•6 years ago
|
||
Pushed by alwu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8937fe137441
part1 : implement MDSM's 'LoopingDecodingState'. r=jya
https://hg.mozilla.org/integration/autoland/rev/f47b8fef7cc7
part2 : implement state transition. r=jya
https://hg.mozilla.org/integration/autoland/rev/c67e483b4ab4
part3 : remove time-adjustment related codes in ReaderProxy. r=jya
https://hg.mozilla.org/integration/autoland/rev/2e61ba5a50f2
part4 : discard redudant looping data when cancel looping. r=jya
https://hg.mozilla.org/integration/autoland/rev/1cd5c63b4182
part5 : rename PopEvent() to PopFrontEvent(). r=jya
https://hg.mozilla.org/integration/autoland/rev/93cfc552f067
part6 : only enable 'loopingDecodingState' for audio seamless looping r=jya
Comment 14•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/8937fe137441
https://hg.mozilla.org/mozilla-central/rev/f47b8fef7cc7
https://hg.mozilla.org/mozilla-central/rev/c67e483b4ab4
https://hg.mozilla.org/mozilla-central/rev/2e61ba5a50f2
https://hg.mozilla.org/mozilla-central/rev/1cd5c63b4182
https://hg.mozilla.org/mozilla-central/rev/93cfc552f067
Status: NEW → RESOLVED
Closed: 6 years ago
status-firefox65:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla65
You need to log in
before you can comment on or make changes to this bug.
Description
•