[vlc-devel] [PATCH] avcodec: encoder: Fix rounding issue
Hugo Beauzée-Luyssen
hugo at beauzee.fr
Wed Jun 11 00:34:27 CEST 2014
Hi,
This patch fixes an issue when using avcodec encoder with a bpp not being an exact multiple of 8.
Best regards,
---
modules/codec/avcodec/encoder.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
index 04e6230..65ce285 100644
--- a/modules/codec/avcodec/encoder.c
+++ b/modules/codec/avcodec/encoder.c
@@ -1021,13 +1021,12 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict )
* This is done here instead of OpenEncoder() because we need the actual
* 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 :
+ const int bitsPerPixel = p_enc->fmt_out.video.i_bits_per_pixel ?
+ p_enc->fmt_out.video.i_bits_per_pixel :
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 );
+ p_sys->p_context->bits_per_coded_sample :
+ 24;
+ const int blocksize = __MAX( FF_MIN_BUFFER_SIZE, ( bitsPerPixel * p_sys->p_context->height * p_sys->p_context->width ) / 8 + 200 );
block_t *p_block = block_Alloc( blocksize );
if( unlikely(p_block == NULL) )
return NULL;
--
2.0.0
More information about the vlc-devel
mailing list