Open Bug 1421505 Opened 2 years ago Updated 1 year ago

The AudioEndTime() returns wrong value once media starts seamlessly looping

Categories

(Core :: Audio/Video: Playback, defect, P3)

defect

Tracking

()

People

(Reporter: chunmin, Assigned: chunmin)

References

Details

Attachments

(1 file)

The AudioEndTime()[0] will return a time that is over the end of the track after the media is looped seamlessly. Looping or not, it should return the correct end time.

[0] https://searchfox.org/mozilla-central/rev/9f3bd430c2b132c86c46126a0548661de876799a/dom/media/MediaDecoderStateMachine.cpp#3625
Assignee: nobody → cchang
Blocks: 654787
Comment on attachment 8941752 [details]
Bug 1421505 - Return the correct duration while seamless looping is on;

https://reviewboard.mozilla.org/r/211974/#review217732

::: dom/media/MediaDecoderStateMachine.cpp:3691
(Diff revision 1)
>  
>  TimeUnit
>  MediaDecoderStateMachine::AudioEndTime() const
>  {
>    MOZ_ASSERT(OnTaskQueue());
> +  if (mReader->GetDuration().IsValid()) {

https://searchfox.org/mozilla-central/rev/88439dc6c5b02e167032374071cdc697a056efa1/dom/media/MediaDecoderStateMachine.h#571-574

AudioEndTime() is not the duration. It is the end time of the last audio frame that's been pushed onto the media sink which changes constantly as we push more frames to the audio sink.
Attachment #8941752 - Flags: review?(jwwang) → review-
This should be fixed in MediaSink, but MediaSink doesn't know the seamless-looping is on or not. This will be fixed when we figure out how to pass the seamless-looping info to MediaSink.
See Also: → 1487797
You need to log in before you can comment on or make changes to this bug.