[vlc-commits] avcodec: transmit palette to libavcodec >= 54
Rafaël Carré
git at videolan.org
Fri Oct 18 23:34:27 CEST 2013
vlc/vlc-2.1 | branch: master | Rafaël Carré <funman at videolan.org> | Fri Oct 18 21:17:29 2013 +0200| [3baa05d86aff601c44125140e81dfdaf55ea51d4] | committer: Jean-Baptiste Kempf
avcodec: transmit palette to libavcodec >= 54
(cherry picked from commit 5784645841b78dc7f5bcb799db4ed66c519e0ec9)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.1.git/?a=commit;h=3baa05d86aff601c44125140e81dfdaf55ea51d4
---
modules/codec/avcodec/video.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index 9e1bc21..a4b6490 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -78,7 +78,7 @@ struct decoder_sys_t
#if LIBAVCODEC_VERSION_MAJOR < 54
AVPaletteControl palette;
#else
-# warning FIXME
+ bool palette_sent;
#endif
/* */
@@ -415,7 +415,13 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
p_sys->p_context->palctrl = &p_sys->palette;
}
#else
-# warning FIXME
+ if( p_dec->fmt_in.video.p_palette ) {
+ p_sys->palette_sent = false;
+ p_dec->fmt_out.video.p_palette = malloc( sizeof(video_palette_t) );
+ if( p_dec->fmt_out.video.p_palette )
+ *p_dec->fmt_out.video.p_palette = *p_dec->fmt_in.video.p_palette;
+ } else
+ p_sys->palette_sent = true;
#endif
/* ***** init this codec with special data ***** */
@@ -581,6 +587,17 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
pkt.pts = p_block->i_pts;
pkt.dts = p_block->i_dts;
+#if LIBAVCODEC_VERSION_MAJOR >= 54
+ if( !p_sys->palette_sent )
+ {
+ uint8_t *pal = av_packet_new_side_data(&pkt, AV_PKT_DATA_PALETTE, AVPALETTE_SIZE);
+ if (pal) {
+ memcpy(pal, p_dec->fmt_in.video.p_palette->palette, AVPALETTE_SIZE);
+ p_sys->palette_sent = true;
+ }
+ }
+#endif
+
/* Make sure we don't reuse the same timestamps twice */
p_block->i_pts =
p_block->i_dts = VLC_TS_INVALID;
More information about the vlc-commits
mailing list