No H.264 video is displayed - unknown video color format: 0x7fa30c04/QOMX_VIDEO_CodingVp

VERIFIED FIXED in Firefox 28

Status

()

defect
VERIFIED FIXED
6 years ago
5 years ago

People

(Reporter: jan.manthay, Assigned: eflores)

Tracking

({reproducible, testcase})

Trunk
mozilla29
ARM
Android
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox27 wontfix, firefox28 fixed, firefox29 verified)

Details

()

Attachments

(5 attachments)

User Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 (Beta/Release)
Build ID: 20131205075310

Steps to reproduce:

Open
http://www.tagesschau.de/ausland/mexiko508.html
with my MotoG

Klick the Play Button


Actual results:

The video starts, but I can only hear the sound, the sreen is white.
This happens on all videos on tagesschau.de



Expected results:

The video should play with picture and sound

(And, if possible Firefox shouldn’t crash while doing :-) , as it does on my Asus Memopad HD 7 )
OS: Windows 8.1 → Android
Hardware: x86_64 → ARM
Thanks for the report. I see this on Nightly (12/29) as well on my LG Nexus 5 (Android 4.4.2)

I/OMXClient( 8041): Using client-side OMX mux.
E/OMX-VDEC-1080P(  184): In OMX vdec Constructor
E/OMX-VDEC-1080P(  184): vidc.dec.debug.ts value is 0
E/OMX-VDEC-1080P(  184): vidc.dec.debug.concealedmb value is 0
E/OMX-VDEC-1080P(  184): vidc.dec.profile.check value is 0
E/OMX-VDEC-1080P(  184): vidc.dec.debug.extradata value is 0
W/GeckoGlobalHistory( 8041): Rebuilding visited link set...
D/ConnectivityService(  754): handleInetConditionHoldEnd: net=1, condition=100, published condition=100
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  omx_vdec::component_init(): Open returned fd 22, errno 2
E/OMX-VDEC-1080P(  184): Capabilities: driver_name = msm_vidc_driver, card = msm_vdec_8974, bus_info = , version = 1, capabilities = 4003000
E/OMX-VDEC-1080P(  184): fmt: description: Y/CbCr 4:2:0, fmt: 3231564e, flags = 0
E/OMX-VDEC-1080P(  184): fmt: description: Mpeg4 compressed format, fmt: 3447504d, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: Mpeg2 compressed format, fmt: 3247504d, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: H263 compressed format, fmt: 33363248, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: VC-1 compressed format, fmt: 47314356, flags = 1
E/OMX-VDEC-1080P(  184): omx_vdec: Async thread start
E/OMX-VDEC-1080P(  184): fmt: description: VC-1 compressed format G, fmt: 4c314356, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: H264 compressed format, fmt: 34363248, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: HEVC compressed format, fmt: 43564548, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: VP8 compressed format, fmt: 30385056, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: DIVX 311 compressed format, fmt: 33564944, flags = 1
E/OMX-VDEC-1080P(  184): fmt: description: DIVX 4/5/6 compressed format, fmt: 58564944, flags = 1
E/OMX-VDEC-1080P(  184): NOTE_CIF: W/H 320 (0), 240 (0)
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  Set Format was successful 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  Set Format was successful 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): NOTE: enable_extradata: actual[0] requested[131072] enable[1], is_internal: 1
E/OMX-VDEC-1080P(  184): Count = 18 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): Buffer Size = 147584 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  video session supported
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): Count = 4 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): Buffer Size = 11059200 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  video session supported
E/OMX-VDEC-1080P(  184): Input Buffer Size =11059200 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): Count = 18 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): Buffer Size = 147584 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  video session supported
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  omx_vdec::component_init() success
I/OMXCodec( 8041): [OMX.qcom.video.decoder.avc] AVC profile = 77 (Main), level = 21
E/OMX-VDEC-1080P(  184): omx_vdec: message thread start
E/OMX-VDEC-1080P(  184): Count = 18 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): Buffer Size = 147584 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  video session supported
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): update_portdef Width = 320 Height = 240 Stride = 384 SliceHeight = 256 
E/OMX-VDEC-1080P(  184): NOTE_CIF: W/H 512 (320), 288 (240)
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  video session supported
E/OMX-VDEC-1080P(  184): Count = 18 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): Buffer Size = 221440 
E/OMX-VDEC-1080P(  184):  
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  video session supported
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): update_portdef Width = 512 Height = 288 Stride = 512 SliceHeight = 288 
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): update_portdef Width = 512 Height = 288 Stride = 512 SliceHeight = 288 
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): update_portdef Width = 512 Height = 288 Stride = 512 SliceHeight = 288 
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  No color conversion required
E/OMX-VDEC-1080P(  184): update_portdef Width = 512 Height = 288 Stride = 512 SliceHeight = 288 
I/OMXCodec( 8041): [OMX.qcom.video.decoder.avc] video dimensions are 512 x 288
I/OMXCodec( 8041): [OMX.qcom.video.decoder.avc] Crop rect is 512 x 288 @ (0, 0)
I/        ( 8041): I420ColorConverter: libI420colorconvert.so loaded
I/OmxPlugin( 8041): Unknown video color format: 0x7fa30c04
I/OmxPlugin( 8041): Falling back to software decoder
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  Playback Ended - PASSED
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  ALL output buffers are freed/released
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  Close the driver instance
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  omx_vdec::component_deinit() complete
E/OMX-VDEC-1080P(  184): In OMX vdec Destructor
E/OMX-VDEC-1080P(  184): Waiting on OMX Msg Thread exit
E/OMX-VDEC-1080P(  184): omx_vdec: message thread stop
E/OMX-VDEC-1080P(  184): Waiting on OMX Async Thread exit
E/OMX-VDEC-1080P(  184): 
E/OMX-VDEC-1080P(  184):  VIDC Close Done Recieved and async_message_thread Exited 
E/OMX-VDEC-1080P(  184): omx_vdec: Async thread stop
D/dalvikvm( 7178): GC_EXPLICIT freed 1205K, 22% free 21002K/26616K, paused 3ms+3ms, total 27ms
E/OMX-VDEC-1080P(  184): Exit OMX vdec Destructor
E/        (  184): 
E/        (  184):  Destroy C2D instance
E/        (  184): 
E/        (  184):  Destroy C2D instance
E/OMXMaster( 8041): A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
I/OMXCodec( 8041): [OMX.google.h264.decoder] AVC profile = 77 (Main), level = 21
I/OMXCodec( 8041): [OMX.google.h264.decoder] video dimensions are 320 x 240
I/OMXCodec( 8041): [OMX.google.h264.decoder] Crop rect is 320 x 240 @ (0, 0)
I/Gmail   ( 7178): MainSyncRequestProto: lowestBkwdConvoId: 0, highestHandledServerOp: 13466248, normalSync: true
I/OmxPlugin( 8041): rotation not available, assuming 0
I/OmxPlugin( 8041): width: 320 height: 240 component: OMX.google.h264.decoder format: 0x13 stride: 320 sliceHeight: 240 rotation: 0 crop: 0,0-319,239
I/SoftAAC2( 8041): Reconfiguring decoder: 0->48000 Hz, 0->2 channels
I/Gmail   ( 7178): lowestBackward conversation id 0
I/OmxPlugin( 8041): channelCount: 2 sampleRate: 48000
E/SoftAVC ( 8041): Decoder failed: -2
E/OMXCodec( 8041): [OMX.google.h264.decoder] ERROR(0x80001001, -1007)
I/OmxPlugin( 8041): mVideoSource ERROR 0x80000000
I/OmxPlugin( 8041): mVideoSource ERROR 0x80000000


QOMX_VIDEO_CodingVp/HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS = 0x7fa30c04
Status: UNCONFIRMED → NEW
Component: General → Video/Audio
Ever confirmed: true
Product: Firefox for Android → Core
Summary: No picture on the videos on tagesschau.de with MotoG → No H.264 video is displayed - unknown video color format: 0x7fa30c04/QOMX_VIDEO_CodingVp
Version: Firefox 27 → Trunk
Assignee: nobody → edwin
QA Contact: edwin
Comment on attachment 8356424 [details] [diff] [review]
953394.patch

Review of attachment 8356424 [details] [diff] [review]:
-----------------------------------------------------------------

::: content/media/plugins/MediaPluginHost.cpp
@@ +181,5 @@
>    }
> +  else if (version < 19) {
> +    // Ice Cream Sandwich and Jellybean
> +    return "libomxplugin.so";
> +  }

The versions checks are currently in numerical order. Can you refactor so that the base case is libmoxplugin.so and the version check is for kitkat as the first check (since whatever version kitkat is is the highest).

::: media/omx-plugin/OmxPlugin.cpp
@@ +293,5 @@
> + * Look for a decoder that supports a colour format that we support.
> + */
> +static bool
> +FindPreferredDecoderAndColorFormat(const sp<IOMX>& aOmx,
> +                                   char *decoderName,

I would prefer this take a 'length' parameter as well which is the size of the decoderName array. Then in the strncpy use that argument instead of MAX_DECODER_NAME_LEN. When calling this function pass in sizeof(decoderName) as that argument value.

@@ +318,5 @@
> +      ColorFormatSupport supported = IsColorFormatSupported(color);
> +
> +      if (supported) {
> +        strncpy(decoderName, caps.mComponentName.string(), MAX_DECODER_NAME_LEN);
> +        *colorFormat = (OMX_COLOR_FORMATTYPE)color;

Why is this cast needed?
Attachment #8356424 - Flags: review?(chris.double) → review+
Attachment #8356425 - Flags: review?(chris.double) → review+
Is this safe for uplift?
Status: RESOLVED → VERIFIED
(In reply to Aaron Train [:aaronmt] from comment #8)
> Is this safe for uplift?

This has been tested on exactly one device. We should probably let it simmer for a few days on Nightly before uplifting.
I do dumb things sometimes. This is one of those things.
Attachment #8360772 - Flags: review?(chris.double)
Attachment #8360772 - Flags: review?(chris.double) → review+
Comment on attachment 8356424 [details] [diff] [review]
953394.patch

[Approval Request Comment]
Bug caused by (feature/regressing bug #): Android
User impact if declined: No h264 playback on many high end KitKat devices.
Testing completed (on m-c, etc.): Has been on m-c for a week
Risk to taking this patch (and alternatives if risky): Small risk of breaking h.264 on other KitKat devices.
String or IDL/UUID changes made by this patch: None
Attachment #8356424 - Flags: approval-mozilla-beta?
Attachment #8356424 - Flags: approval-mozilla-aurora?
(In reply to Edwin Flores [:eflores] [:edwin] from comment #13)
> Comment on attachment 8356424 [details] [diff] [review]
> 953394.patch
> 
> [Approval Request Comment]
> Bug caused by (feature/regressing bug #): Android
> User impact if declined: No h264 playback on many high end KitKat devices.
> Testing completed (on m-c, etc.): Has been on m-c for a week
> Risk to taking this patch (and alternatives if risky): Small risk of
> breaking h.264 on other KitKat devices.
> String or IDL/UUID changes made by this patch: None

Is this a new regression or did we have support of h264 in Firefox 26 and this is Fx27 regression ? Its too late in Fx27 cycle given we only have our final beta left, not convinced it is a good candidate since we usually only low risk very well tested patches on beta.

Approving for aurora though.
Attachment #8356424 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Part 3 has conflicts with Aurora that I can't resolve. Please post a branch-specific patch or request approval on any other bugs this depends on.
Flags: needinfo?(edwin)
Lets maintain the status quo for Fx 27, given we are close to wrapping up Fx27 and this has not gotten any beta testing resolve this in Firefox 28.
Attachment #8356424 - Flags: approval-mozilla-beta? → approval-mozilla-beta-
Comment on attachment 8366211 [details] [diff] [review]
953394.patch rebased to Aurora

Not sure revision of Aurora what this was rebased on because I'm still hitting the same failed hunks as before.

patching file media/omx-plugin/OmxPlugin.cpp
Hunk #2 FAILED at 236
Hunk #3 FAILED at 734
2 out of 3 hunks FAILED -- saving rejects to file media/omx-plugin/OmxPlugin.cpp.rej
Flags: needinfo?(edwin)
(In reply to Ryan VanderMeulen [:RyanVM UTC-5] from comment #19)
> Not sure revision of Aurora what this was rebased on because I'm still
> hitting the same failed hunks as before.

Seems to work for me. Is this on top of the patch from bug 866080, above?
Flags: needinfo?(edwin)
Nope, but that doesn't have approval to land either, so I guess we'll wait :)
Depends on: 984230
No longer depends on: 984230
removing branch-patch-needed as this landed in comment 22
You need to log in before you can comment on or make changes to this bug.