Closed
Bug 986947
Opened 11 years ago
Closed 11 years ago
mp3 will not play if mp3 is in mp4 container format
Categories
(Core :: Audio/Video, defect)
Tracking
()
RESOLVED
FIXED
mozilla31
People
(Reporter: zitrobugs, Assigned: cpearce)
References
Details
(Whiteboard: [qa-] )
Attachments
(2 files)
231.44 KB,
video/mp4
|
Details | |
16.38 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 (Beta/Release)
Build ID: 20140314220517
Steps to reproduce:
Take a fresh Firefox Profile with Firefox 28. If you will play a mp3 in a mp4 container format i get an error from corrupt file. For example http://mozhelp.square7.ch/firefox-28-html5-bug/index.php or direct file http://mozhelp.square7.ch/firefox-28-html5-bug/ff-28-sound.mp4
Bevore Firefox 28 there was no error and video/audio play (for example in Firefox 27.0.1)
Actual results:
Firefox says: corrupt file
Expected results:
hear the .mp3 sound of .mp4 file
Assignee | ||
Comment 1•11 years ago
|
||
* Report that we can play MP3 inside MP4 on Windows Vista and later in HTMLMediaElement.canPlayType. Chrome and IE on Windows match this behaviour.
* Add a test file with MP3 contained inside MP4. Note the B2G emulator can't play this file, so I added a codecs parameter to the file's mime type so that decoder backends have to opt-in to testing with it.
* Enable playback of MP3 inside MP4 in WMFReader.
* Change from reporting the IMFSourceReader's duration inside WMFReader, to instead report the IMFSourceReader's duration as the media "end time". This is needed because the MP3-contained-in-MP4 file's first sample output by the IMFSourceReader has a non-zero timestamp, and the MediaDecoderStateMachine assumes that the media samples will be in the range [$firstSampleStartTime, $firstSampleStartTime+$reportedDuration]. But that's not the case here, the IMFSourceReader seems to output samples in the range [0,$reportedDuration]. This assumption mismatch means on the MP3-contained-in-MP4 file we end up trying to seek after what the IMFSourceReader assumes is the end of the file, which fails and causes test failures.
Assignee: nobody → cpearce
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Attachment #8400215 -
Flags: review?(paul)
Updated•11 years ago
|
Attachment #8400215 -
Flags: review?(paul) → review+
Comment 2•11 years ago
|
||
(In reply to Chris Pearce (:cpearce) from comment #1)
> * Change from reporting the IMFSourceReader's duration inside WMFReader, to
> instead report the IMFSourceReader's duration as the media "end time". This
> is needed because the MP3-contained-in-MP4 file's first sample output by the
> IMFSourceReader has a non-zero timestamp, and the MediaDecoderStateMachine
> assumes that the media samples will be in the range [$firstSampleStartTime,
> $firstSampleStartTime+$reportedDuration]. But that's not the case here, the
> IMFSourceReader seems to output samples in the range [0,$reportedDuration].
> This assumption mismatch means on the MP3-contained-in-MP4 file we end up
> trying to seek after what the IMFSourceReader assumes is the end of the
> file, which fails and causes test failures.
Will that affect the value returned by MediaDecoderStateMachine::GetDuration() which is |mEndTime - mStartTime|?
Assignee | ||
Comment 3•11 years ago
|
||
(In reply to JW Wang (PTO ~4/9) [:jwwang] from comment #2)
> (In reply to Chris Pearce (:cpearce) from comment #1)
> > * Change from reporting the IMFSourceReader's duration inside WMFReader, to
> > instead report the IMFSourceReader's duration as the media "end time". This
> > is needed because the MP3-contained-in-MP4 file's first sample output by the
> > IMFSourceReader has a non-zero timestamp, and the MediaDecoderStateMachine
> > assumes that the media samples will be in the range [$firstSampleStartTime,
> > $firstSampleStartTime+$reportedDuration]. But that's not the case here, the
> > IMFSourceReader seems to output samples in the range [0,$reportedDuration].
> > This assumption mismatch means on the MP3-contained-in-MP4 file we end up
> > trying to seek after what the IMFSourceReader assumes is the end of the
> > file, which fails and causes test failures.
>
> Will that affect the value returned by
> MediaDecoderStateMachine::GetDuration() which is |mEndTime - mStartTime|?
Yes. This will make it return $reportedDuration - $firstSampleStartTime, which is actually how much audio the IMFSourceReader outputs.
Assignee | ||
Comment 4•11 years ago
|
||
Landed for Gecko 31:
https://hg.mozilla.org/integration/mozilla-inbound/rev/904297de3d1e
Comment 6•11 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
Updated•11 years ago
|
Whiteboard: [qa-]
You need to log in
before you can comment on or make changes to this bug.
Description
•