Firefox doesn't play MP4 video files

VERIFIED FIXED in Firefox 52

Status

()

defect
VERIFIED FIXED
3 years ago
Last year

People

(Reporter: arni2033, Assigned: jya)

Tracking

({regression})

Trunk
mozilla53
Unspecified
All
Points:
---

Firefox Tracking Flags

(firefox50 wontfix, firefox51 wontfix, firefox52 verified, firefox53 verified)

Details

Attachments

(1 attachment)

Reporter

Description

3 years ago
str
>>>   My Info:   Win7_64, Nightly 49, 32bit, ID 20160526082509
STR_1:
1. Open video attachment 8526807 [details] , wait until it's loaded
2. Click play button

AR:  Step 1, Step 2 - playback immediately jumps to the end of the video
ER:  Either X or Y
 X) Browser should play the video normally
 Y) Browser should indicate that either it can't decode the video, or the video itself is broken.

Notes:
1) Nightly 2014-01-02 is unaffected: it says "Video corrupt" and doesn't show timeline or anything
2) I don't know if old behavior is UX intended by developers, so regression range is useless so far
3) The same happens with attachment 8709406 [details]
Reporter

Updated

3 years ago
No longer blocks: 1277113
Reporter

Updated

3 years ago
Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core
Assignee

Comment 1

3 years ago
WFM on Linux with FF 50 and Nightly.
Doesn't work on Windows 10 with Nightly 53
Assignee

Comment 2

3 years ago
This is an issue of the Windows H264 decoder; it only ever returns MF_E_TRANSFORM_NEED_MORE_INPUT for every input.
So the file is entirely read until it reaches the end.

The behaviour is the same as with Microsoft Edge.

I don't believe there's anyway we can play this file on windows, however need to find a way to detect those and mark them as broken instead.
Assignee

Comment 3

3 years ago
Oh, this is a 4:4:4 YUV video, not supported by WMF.

Those should be refused already...
Assignee

Updated

3 years ago
Assignee: nobody → jyavenard
Comment hidden (mozreview-request)

Comment 5

3 years ago
mozreview-review
Comment on attachment 8823131 [details]
Bug 1328038: Refuse to play High 4:4:4 Predictive Profile.

https://reviewboard.mozilla.org/r/101712/#review102166
Attachment #8823131 - Flags: review?(jacheng) → review+

Comment 6

3 years ago
mozreview-review
Comment on attachment 8823131 [details]
Bug 1328038: Refuse to play High 4:4:4 Predictive Profile.

https://reviewboard.mozilla.org/r/101712/#review102168

::: dom/media/platforms/wrappers/H264Converter.cpp:175
(Diff revision 1)
>  
>    mp4_demuxer::SPSData spsdata;
>    if (mp4_demuxer::H264::DecodeSPSFromExtraData(mCurrentConfig.mExtraData, spsdata)) {
>      // Do some format check here.
>      // WMF H.264 Video Decoder and Apple ATDecoder do not support YUV444 format.
> -    if (spsdata.chroma_format_idc == 3 /*YUV444*/) {
> +    if (spsdata.profile_idc == 244 /* Hi444PP */ ||

Shall we do the same check here?
http://searchfox.org/mozilla-central/rev/22be34bcc4d5c56b62482a537bba77a6cdce117b/dom/media/platforms/PDMFactory.cpp#132
Hi jya, 

For this video from comment0, 

the value of chroma_format_idc equals to "1" which means YUV420 but the profile_idc equals to "244"...

Which value should represent the source data is YUV444 or both could be?

Should these two values be the same ideally(chroma_format_idc =3 and profile_idc=244)?

Thank you.
Assignee

Comment 8

3 years ago
mozreview-review-reply
Comment on attachment 8823131 [details]
Bug 1328038: Refuse to play High 4:4:4 Predictive Profile.

https://reviewboard.mozilla.org/r/101712/#review102168

> Shall we do the same check here?
> http://searchfox.org/mozilla-central/rev/22be34bcc4d5c56b62482a537bba77a6cdce117b/dom/media/platforms/PDMFactory.cpp#132

we should indeed...
Comment hidden (mozreview-request)
Reporter

Comment 10

3 years ago
Just in case, GoogleChrome plays the video fine.
I don't remember if I have some codecs installed - probably GoogleChrome uses them and Firefox doesn't
Either way I'll provide any data if somebody is interested. Honestly, I don't even know whether I should expect Firefox to "reliably play MP4 video", probably not. But I expect that from GoogleChrome.
Assignee

Comment 11

3 years ago
(In reply to James Cheng[:JamesCheng] from comment #7)
> Hi jya, 
> 
> For this video from comment0, 
> 
> the value of chroma_format_idc equals to "1" which means YUV420 but the
> profile_idc equals to "244"...
> 
> Which value should represent the source data is YUV444 or both could be?
> 
> Should these two values be the same ideally(chroma_format_idc =3 and
> profile_idc=244)?
> 
> Thank you.

https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles

you'll find that really, there's nothing much about chrome_format_idc defined.
Assignee

Comment 12

3 years ago
(In reply to arni2033 [Please stop 'improving' Firefox] from comment #10)
> Just in case, GoogleChrome plays the video fine.
> I don't remember if I have some codecs installed - probably GoogleChrome
> uses them and Firefox doesn't
> Either way I'll provide any data if somebody is interested. Honestly, I
> don't even know whether I should expect Firefox to "reliably play MP4
> video", probably not. But I expect that from GoogleChrome.

Chrome uses FFmpeg for those.

Which is why you find that Firefox on Linux will play the video just fine.
The issue is with the system H264 decoder shipping with Windows OS. It doesn't support those files, and likely never will.
Hence why Edge, IE or Firefox on Windows do not play this file.
Comment hidden (mozreview-request)

Comment 14

3 years ago
Pushed by jyavenard@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8f1754f39538
Refuse to play High 4:4:4 Predictive Profile. r=JamesCheng

Comment 15

3 years ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/8f1754f39538
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Do we want to backport this to Aurora for the next ESR?
Flags: needinfo?(jyavenard)
Assignee

Comment 17

3 years ago
would be nice.
Flags: needinfo?(jyavenard)
Assignee

Comment 18

3 years ago
Comment on attachment 8823131 [details]
Bug 1328038: Refuse to play High 4:4:4 Predictive Profile.

Approval Request Comment
[Feature/Bug causing the regression]: always been like that
[User impact if declined]: We attempt (incorrectly) to play some files, it results in an invalid behaviour
[Is this code covered by automated tests?]: no
[Has the fix been verified in Nightly?]: not, except by myself
[Needs manual test from QE? If yes, steps to reproduce]: in bug description
[List of other uplifts needed for the feature/fix]: none
[Is the change risky?]: no
[Why is the change risky/not risky?]: we error on a defined pixel format that we can't decode on windows. It's blocked on all platforms to achieve consistency
[String changes made/needed]: none
Attachment #8823131 - Flags: approval-mozilla-aurora?
Comment on attachment 8823131 [details]
Bug 1328038: Refuse to play High 4:4:4 Predictive Profile.

don't try playing videos we can't decode, aurora52+
Attachment #8823131 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Flags: qe-verify+
Reproduced on 51.0.1.
Verified fixed Fx 52.0-build1, 53.0a2 (2017-02-28) Win 10 x64.
Status: RESOLVED → VERIFIED
Flags: qe-verify+
OS: Unspecified → Windows
(In reply to Jean-Yves Avenard [:jya] from comment #12)
> (In reply to arni2033 [Please stop 'improving' Firefox] from comment #10)
> > Just in case, GoogleChrome plays the video fine.
> > I don't remember if I have some codecs installed - probably GoogleChrome
> > uses them and Firefox doesn't
> > Either way I'll provide any data if somebody is interested. Honestly, I
> > don't even know whether I should expect Firefox to "reliably play MP4
> > video", probably not. But I expect that from GoogleChrome.
> 
> Chrome uses FFmpeg for those.
> 
> Which is why you find that Firefox on Linux will play the video just fine.
> The issue is with the system H264 decoder shipping with Windows OS. It
> doesn't support those files, and likely never will.
> Hence why Edge, IE or Firefox on Windows do not play this file.

It seems that it is not applicable anymore, because starting with 2017-01-13 the attached type of .mp4 file is not played on Ubuntu and neither on Mac. Is it possible that this bug to be occurred across platforms, not only in Windows? Is it expected?
Flags: needinfo?(jyavenard)
Assignee

Comment 23

Last year
it should not play anywhere no...
Flags: needinfo?(jyavenard)
Assignee

Comment 24

Last year
(In reply to Iulia Cristescu, QA [:JuliaC] from comment #22)
> It seems that it is not applicable anymore, because starting with 2017-01-13
> the attached type of .mp4 file is not played on Ubuntu and neither on Mac.
> Is it possible that this bug to be occurred across platforms, not only in
> Windows? Is it expected?

I mean, that's what this patch was about, prevent the file to play on all platforms. So if you find that it doesn't play on ubuntu or mac, what is surprising you?
(In reply to Jean-Yves Avenard [:jya] from comment #24)
> 
> I mean, that's what this patch was about, prevent the file to play on all
> platforms. So if you find that it doesn't play on ubuntu or mac, what is
> surprising you?

The Platform field was outdated, indicating just the Windows platform as being affected and also comment 12 was confusing in the same way. That's why I wanted to clarify this thing. And thank you for that!
You need to log in before you can comment on or make changes to this bug.