mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
bfi: store palette data in the context
Store palette data in the codec context, do not assume that the frame allocated the first time by avctx->get_buffer will be returned again. This requires to store the palette which comes with the first frame in the context, and copy it to the following frames. Fix trac issue #84. Signed-off-by: Stefano Sabatini <stefano.sabatini-lala@poste.it>
This commit is contained in:
parent
3788a3c0c0
commit
ff558d7b01
@ -34,6 +34,7 @@ typedef struct BFIContext {
|
||||
AVCodecContext *avctx;
|
||||
AVFrame frame;
|
||||
uint8_t *dst;
|
||||
uint32_t pal[256];
|
||||
} BFIContext;
|
||||
|
||||
static av_cold int bfi_decode_init(AVCodecContext * avctx)
|
||||
@ -85,10 +86,13 @@ static int bfi_decode_frame(AVCodecContext * avctx, void *data,
|
||||
(avctx->extradata[i * 3 + j] >> 4)) << shift;
|
||||
pal++;
|
||||
}
|
||||
memcpy(bfi->pal, bfi->frame.data[1], sizeof(bfi->pal));
|
||||
bfi->frame.palette_has_changed = 1;
|
||||
} else {
|
||||
bfi->frame.pict_type = FF_P_TYPE;
|
||||
bfi->frame.key_frame = 0;
|
||||
bfi->frame.palette_has_changed = 0;
|
||||
memcpy(bfi->frame.data[1], bfi->pal, sizeof(bfi->pal));
|
||||
}
|
||||
|
||||
buf += 4; //Unpacked size, not required.
|
||||
|
Loading…
Reference in New Issue
Block a user