diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-04-17 23:36:57 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-04-17 23:43:54 +0200 |
commit | c40798441f47341c310b38e8f329cfb943924faf (patch) | |
tree | c23fbec614c59bcf14c7377d1c6ff7abdfa34353 /libavcodec/8bps.c | |
parent | c96786008172f669e546ca987e7aaa3c3469be71 (diff) | |
parent | fd0c3403f611d31b944216cfa1585a2d28f7f0da (diff) | |
download | ffmpeg-c40798441f47341c310b38e8f329cfb943924faf.tar.gz |
Merge remote branch 'qatar/master'
* qatar/master:
ac3dec: fix processing of delta bit allocation information.
vc1: fix fate-vc1 after previous commit.
wmv3dec: fix playback of complex WMV3 files using simple_idct.
make av_dup_packet() more cautious on allocation failures
make containers pass palette change in AVPacket
introduce side information for AVPacket
Politic commits that have not been pulled:
Update regtest checksums after revision 6001dad.
Replace more FFmpeg references by Libav.
Replace references to ffmpeg-devel with libav-devel; fix roundup URL.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/8bps.c')
-rw-r--r-- | libavcodec/8bps.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/libavcodec/8bps.c b/libavcodec/8bps.c index 4757057876..d5f550ffd7 100644 --- a/libavcodec/8bps.c +++ b/libavcodec/8bps.c @@ -50,6 +50,8 @@ typedef struct EightBpsContext { unsigned char planes; unsigned char planemap[4]; + + uint32_t pal[256]; } EightBpsContext; @@ -129,13 +131,16 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac } } - if (avctx->palctrl) { - memcpy (c->pic.data[1], avctx->palctrl->palette, AVPALETTE_SIZE); - if (avctx->palctrl->palette_changed) { + if (avctx->bits_per_coded_sample <= 8) { + const uint8_t *pal = av_packet_get_side_data(avpkt, + AV_PKT_DATA_PALETTE, + NULL); + if (pal) { c->pic.palette_has_changed = 1; - avctx->palctrl->palette_changed = 0; - } else - c->pic.palette_has_changed = 0; + memcpy(c->pal, pal, AVPALETTE_SIZE); + } + + memcpy (c->pic.data[1], c->pal, AVPALETTE_SIZE); } *data_size = sizeof(AVFrame); @@ -164,10 +169,6 @@ static av_cold int decode_init(AVCodecContext *avctx) avctx->pix_fmt = PIX_FMT_PAL8; c->planes = 1; c->planemap[0] = 0; // 1st plane is palette indexes - if (avctx->palctrl == NULL) { - av_log(avctx, AV_LOG_ERROR, "Error: PAL8 format but no palette from demuxer.\n"); - return -1; - } break; case 24: avctx->pix_fmt = avctx->get_format(avctx, pixfmt_rgb24); |