]> git.sesse.net Git - vlc/blobdiff - src/input/es_out.c
i've modified the following functions to properly skip data (read buffer is nil)...
[vlc] / src / input / es_out.c
index 46da448b070b0de142c8162963eecfc2c045050c..a5f60ab55f44455fad56efb67b939abbf4e33ed2 100644 (file)
@@ -995,9 +995,9 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args )
         {
             /* This ain't pretty but is need by some demuxers (eg. Ogg )
              * to update the p_extra data */
-            es_format_t *p_fmt = (es_format_t*) va_arg( args, es_format_t * );
             es = (es_out_id_t*) va_arg( args, es_out_id_t * );
-            if( es == NULL || !es->p_dec ) return VLC_EGENERIC;
+            es_format_t *p_fmt = (es_format_t*) va_arg( args, es_format_t * );
+            if( es == NULL ) return VLC_EGENERIC;
 
             if( p_fmt->i_extra )
             {
@@ -1005,6 +1005,8 @@ static int EsOutControl( es_out_t *out, int i_query, va_list args )
                 es->fmt.p_extra = realloc( es->fmt.p_extra, p_fmt->i_extra );
                 memcpy( es->fmt.p_extra, p_fmt->p_extra, p_fmt->i_extra );
 
+                if( !es->p_dec ) return VLC_SUCCESS;
+
                 es->p_dec->fmt_in.i_extra = p_fmt->i_extra;
                 es->p_dec->fmt_in.p_extra =
                     realloc( es->p_dec->fmt_in.p_extra, p_fmt->i_extra );