Closed Bug 1271517 Opened 8 years ago Closed 8 years ago

Remove use of FlushableTaskQueue::Flush() from FFmpegDataDecoder::Flush()

Categories

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

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla49
Tracking Status
firefox49 --- fixed

People

(Reporter: jwwang, Assigned: jwwang)

References

Details

Attachments

(2 files)

As step forward to get rid of FlushableTaskQueue.

We will borrow the code pattern from WMFMediaDataDecoder::mIsFlushing so FFmpegDataDecoder::Decode can bail out early when seeing mIsFlushing is true. Then we won't need FlushableTaskQueue::Flush() to clean decoding jobs.
Assignee: nobody → jwwang
Blocks: 1270039
Depends on: 1271508
(In reply to JW Wang [:jwwang] from comment #0)
> As step forward to get rid of FlushableTaskQueue.
> 
> We will borrow the code pattern from WMFMediaDataDecoder::mIsFlushing so
> FFmpegDataDecoder::Decode can bail out early when seeing mIsFlushing is
> true. Then we won't need FlushableTaskQueue::Flush() to clean decoding jobs.

I don't think this will be sufficient.

After a Flush() we don't expect any callback at all from the MediaDataDecoder, that includes calls to InputExhausted or DrainComplete()..

The MediaFormatReader will have to be adjusted accordingly.
(In reply to Jean-Yves Avenard [:jya] from comment #2)
> After a Flush() we don't expect any callback at all from the
> MediaDataDecoder, that includes calls to InputExhausted or DrainComplete()..

This behavior is preserved without this bug. And early bail out from FFmpegDataDecoder::Decode() will not change this behavior. So this bug will not break the behavior, right?
(In reply to JW Wang [:jwwang] from comment #3)
> (In reply to Jean-Yves Avenard [:jya] from comment #2)
> > After a Flush() we don't expect any callback at all from the
> > MediaDataDecoder, that includes calls to InputExhausted or DrainComplete()..
> 
> This behavior is preserved without this bug. And early bail out from
> FFmpegDataDecoder::Decode() will not change this behavior. So this bug will
> not break the behavior, right?

What about: mDecoder->Drain(); immediately followed by mDecoder->Flush();
Actually never mind, the MFR already checks that flush() wasn't called and ignore any following calls to DrainComplete().
Comment on attachment 8751057 [details]
MozReview Request: Bug 1271517. Part 1 - remove use of FlushableTaskQueue::Flush() from FFmpegDataDecoder::Flush(). r=jya.

https://reviewboard.mozilla.org/r/51787/#review48697
Attachment #8751057 - Flags: review?(jyavenard) → review+
Comment on attachment 8751058 [details]
MozReview Request: Bug 1271517. Part 2 - remove use of FlushableTaskQueue. r=jya.

https://reviewboard.mozilla.org/r/51789/#review48699
Attachment #8751058 - Flags: review?(jyavenard) → review+
Thanks!
https://hg.mozilla.org/mozilla-central/rev/fef82e636b41
https://hg.mozilla.org/mozilla-central/rev/1db715403fbe
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla49
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: