[vlc-devel] [PATCH] avi: Tidy the palette handling bit.
Frode Tennebø
frode at tennebo.com
Mon Jun 18 23:35:40 CEST 2012
---
modules/demux/avi/avi.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c
index cd1a5bc..81ec46c 100644
--- a/modules/demux/avi/avi.c
+++ b/modules/demux/avi/avi.c
@@ -543,15 +543,6 @@ static int Open( vlc_object_t * p_this )
fmt.video.i_sar_num = ((i_frame_aspect_ratio >> 16) & 0xffff) * fmt.video.i_height;
fmt.video.i_sar_den = ((i_frame_aspect_ratio >> 0) & 0xffff) * fmt.video.i_width;
}
- fmt.i_extra =
- __MAX( p_vids->p_bih->biSize - sizeof( VLC_BITMAPINFOHEADER ),
- p_vids->i_chunk_size - sizeof(VLC_BITMAPINFOHEADER) );
- if( fmt.i_extra > 0 )
- {
- fmt.p_extra = malloc( fmt.i_extra );
- if( !fmt.p_extra ) goto error;
- memcpy( fmt.p_extra, &p_vids->p_bih[1], fmt.i_extra );
- }
msg_Dbg( p_demux, "stream[%d] video(%4.4s) %"PRIu32"x%"PRIu32" %dbpp %ffps",
i, (char*)&p_vids->p_bih->biCompression,
@@ -572,10 +563,15 @@ static int Open( vlc_object_t * p_this )
* to be true for all palettized codecs we support) */
if( fmt.video.i_bits_per_pixel > 0 && fmt.video.i_bits_per_pixel <= 8 )
{
- /* The palette is not always included in biSize */
+ /* The palette should not be included in biSize, but come
+ * directly after BITMAPINFORHEADER in the BITMAPINFO structure */
fmt.i_extra = p_vids->i_chunk_size - sizeof(VLC_BITMAPINFOHEADER);
- if( fmt.i_extra > 0 && fmt.p_extra )
+ if( fmt.i_extra > 0 )
{
+ fmt.p_extra = malloc( fmt.i_extra );
+ if( !fmt.p_extra ) goto error;
+ memcpy( fmt.p_extra, &p_vids->p_bih[1], fmt.i_extra );
+
const uint8_t *p_pal = fmt.p_extra;
fmt.video.p_palette = calloc( 1, sizeof(video_palette_t) );
--
1.7.9.5
More information about the vlc-devel
mailing list