From f5a53d4ee1316bd42fbf7d62721901f24a5899be Mon Sep 17 00:00:00 2001 From: Tristan Matthews Date: Wed, 2 Apr 2014 02:18:33 -0400 Subject: [PATCH] avcodec encoder: get bytes per pixel from context if needed Falling back to 3 bytes broke the buffer allocation for BMP with ffmpeg, which defaults to RGBA. Fixes #9687 --- modules/codec/avcodec/encoder.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c index df77340c0e..9bfe2385ef 100644 --- a/modules/codec/avcodec/encoder.c +++ b/modules/codec/avcodec/encoder.c @@ -1017,7 +1017,11 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict ) * bits_per_pixel value, without having to assume anything. */ const int bytesPerPixel = p_enc->fmt_out.video.i_bits_per_pixel ? - p_enc->fmt_out.video.i_bits_per_pixel / 8 : 3; + p_enc->fmt_out.video.i_bits_per_pixel / 8 : + p_sys->p_context->bits_per_coded_sample ? + p_sys->p_context->bits_per_coded_sample / 8 : + 3; + const int blocksize = __MAX( FF_MIN_BUFFER_SIZE,bytesPerPixel * p_sys->p_context->height * p_sys->p_context->width + 200 ); block_t *p_block = block_Alloc( blocksize ); if( unlikely(p_block == NULL) ) -- 2.39.5