Closed Bug 1049325 Opened 10 years ago Closed 10 years ago

[Firefox OS] Last frame of video playback is not shown in PlatformDecoderModule

Categories

(Core :: Audio/Video, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED FIXED
2.1 S3 (29aug)

People

(Reporter: bwu, Assigned: bwu)

References

Details

Attachments

(2 files, 2 obsolete files)

FFOS's MP4 PlatformDecoderModule (bug 941302) doesn't handle EOS well. The Last frame of video playback is not shown. Need to notify MediaCodec when there is no input frames any more and let codec push all the rest decoded frames out. Testing contnet: http://people.mozilla.org/~cpearce/avatar.mp4 (Thanks for cpearce's info)
Assignee: nobody → bwu
Blocks: MSE-FxOS
Depends on: 1039128
Set to feat 2.1+ since it blocks 2.1 feat+ issue (bug 1027519).
feature-b2g: --- → 2.1
Codec indeed had this output(the last frame). But, it's handled in upper layer. Still working on it.
Target Milestone: --- → 2.1 S3 (29aug)
Depends on: 1055383
Notify decoder input EOS by inputting a null data and report MP4Reader output EOS (DrainComplete) when getting the last frame (EOS) from decoder.
Attachment #8475653 - Flags: review?(cpearce)
Notify MediaCodec EOS when input data is null and return EOS error when getting the EOS flag from MediaCodec.
Attachment #8475657 - Flags: review?(edwin)
Attachment #8475653 - Flags: review?(cpearce) → review+
Based on the discussion with the partner, agreed to remove the feature-b2g flag on this.
feature-b2g: 2.1 → ---
Comment on attachment 8475657 [details] [diff] [review] Bug-1049325-Part2-Notify-MediaCodec-input-EOS-and-report-EOS.patch Review of attachment 8475657 [details] [diff] [review]: ----------------------------------------------------------------- ::: content/media/omx/MediaCodecProxy.cpp @@ +479,5 @@ > metaData->setInt64(kKeyTime, timeUs); > buffer->set_range(buffer->range_offset(), size); > *aBuffer = buffer; > + if (flags & MediaCodec::BUFFER_FLAG_EOS) { > + return MediaCodec::BUFFER_FLAG_EOS; Should this be returning |ERROR_END_OF_STREAM|?
Attachment #8475657 - Flags: review?(edwin) → review+
(In reply to Edwin Flores [:eflores] [:edwin] from comment #6) > Comment on attachment 8475657 [details] [diff] [review] > Bug-1049325-Part2-Notify-MediaCodec-input-EOS-and-report-EOS.patch > > Review of attachment 8475657 [details] [diff] [review]: > ----------------------------------------------------------------- > > ::: content/media/omx/MediaCodecProxy.cpp > @@ +479,5 @@ > > metaData->setInt64(kKeyTime, timeUs); > > buffer->set_range(buffer->range_offset(), size); > > *aBuffer = buffer; > > + if (flags & MediaCodec::BUFFER_FLAG_EOS) { > > + return MediaCodec::BUFFER_FLAG_EOS; > > Should this be returning |ERROR_END_OF_STREAM|? Yes. Returning ERROR_END_OF_STREAM should be better since it is a more generic error code for EOS. I will change it. Thanks for the suggestion!
Carry r+ from cpeare and have the corresponding minor change for comment 6.
Attachment #8475653 - Attachment is obsolete: true
Attachment #8476487 - Flags: review+
Carry r+ from edwin and have a small change per comment 6.
Attachment #8475657 - Attachment is obsolete: true
Attachment #8476489 - Flags: review+
Blocks: 1060900
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: