[vlc-commits] omxil: bcm: h264: Don't wait for error free frame.

Julian Scheel git at videolan.org
Thu Sep 26 10:50:24 CEST 2013


vlc | branch: master | Julian Scheel <julian at jusst.de> | Thu Sep 12 10:14:13 2013 +0200| [18cbe9639c57d5d3cc676909c64acd89997bcac3] | committer: Martin Storsjö

omxil: bcm: h264: Don't wait for error free frame.

The bcm h264 decoder is not able to detect when the first error free frame has
been decoded for certain h264 streams. To avoid not getting any frames out of
the decoder, disable the StartWithValidFrame flag until that is fixed at bcm.
See https://github.com/huceke/omxplayer/issues/96 for details.

Signed-off-by: Julian Scheel <julian at jusst.de>
Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=18cbe9639c57d5d3cc676909c64acd89997bcac3
---

 modules/codec/omxil/omxil.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/modules/codec/omxil/omxil.c b/modules/codec/omxil/omxil.c
index 0fafedf..da86e23 100644
--- a/modules/codec/omxil/omxil.c
+++ b/modules/codec/omxil/omxil.c
@@ -50,6 +50,7 @@
 /* Defined in the broadcom version of OMX_Index.h */
 #define OMX_IndexConfigRequestCallback 0x7f000063
 #define OMX_IndexParamBrcmPixelAspectRatio 0x7f00004d
+#define OMX_IndexParamBrcmVideoDecodeErrorConcealment 0x7f000080
 
 /* Defined in the broadcom version of OMX_Core.h */
 #define OMX_EventParamOrConfigChanged 0x7F000001
@@ -745,6 +746,21 @@ static OMX_ERRORTYPE InitialiseComponent(decoder_t *p_dec,
         if(omx_error != OMX_ErrorNone) goto error;
     }
 
+    if(!strncmp(p_sys->psz_component, "OMX.broadcom.", 13) &&
+        p_sys->in.p_fmt->i_codec == VLC_CODEC_H264)
+    {
+        OMX_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE concanParam;
+        OMX_INIT_STRUCTURE(concanParam);
+        concanParam.bStartWithValidFrame = OMX_FALSE;
+
+        omx_error = OMX_SetParameter(omx_handle,
+                OMX_IndexParamBrcmVideoDecodeErrorConcealment, &concanParam);
+        if (omx_error == OMX_ErrorNone)
+            msg_Dbg(p_dec, "StartWithValidFrame disabled.");
+        else
+            msg_Dbg(p_dec, "Could not disable StartWithValidFrame.");
+    }
+
     /* Allocate our array for the omx buffers and enable ports */
     for(i = 0; i < p_sys->ports; i++)
     {



More information about the vlc-commits mailing list