Commit 117c8f88 authored by Laurent Aimar's avatar Laurent Aimar Committed by Rémi Denis-Courmont

Fixed segfault when doing rendering without respecting ffmpeg requirements.

It fixes at least SVQ1 segfaults.
(cherry picked from commit 07c44496)

References:
https://bugs.gentoo.org/show_bug.cgi?id=261628

Samples:
http://bad-candy.com/candies/fizzymilk/images/badfizz.mov
http://samples.mplayerhq.hu/V-codecs/SVQ1/blue_earth.movSigned-off-by: default avatarAlexis Ballier <aballier@gentoo.org>
Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
parent 8f8d7e70
...@@ -816,9 +816,16 @@ static int ffmpeg_GetFrameBuf( struct AVCodecContext *p_context, ...@@ -816,9 +816,16 @@ static int ffmpeg_GetFrameBuf( struct AVCodecContext *p_context,
} }
/* Some codecs set pix_fmt only after the 1st frame has been decoded, /* Some codecs set pix_fmt only after the 1st frame has been decoded,
* so this check is necessary. */ * so we need to check for direct rendering again. */
int i_width = p_sys->p_context->width;
int i_height = p_sys->p_context->height;
avcodec_align_dimensions( p_sys->p_context, &i_width, &i_height );
if( GetVlcChroma( &p_dec->fmt_out.video, p_context->pix_fmt ) != VLC_SUCCESS || if( GetVlcChroma( &p_dec->fmt_out.video, p_context->pix_fmt ) != VLC_SUCCESS ||
p_sys->p_context->width % 16 || p_sys->p_context->height % 16 ) p_sys->p_context->width % 16 || p_sys->p_context->height % 16 ||
/* We only pad picture up to 16 */
PAD(p_sys->p_context->width,16) < i_width || PAD(p_sys->p_context->height,16) < i_height )
{ {
msg_Dbg( p_dec, "disabling direct rendering" ); msg_Dbg( p_dec, "disabling direct rendering" );
p_sys->b_direct_rendering = 0; p_sys->b_direct_rendering = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment