Support FLIC in MOV.
Fixes trac issue #626. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
This commit is contained in:
parent
5afd9a80db
commit
fca62f0500
@ -83,7 +83,8 @@ static av_cold int flic_decode_init(AVCodecContext *avctx)
|
||||
unsigned char *fli_header = (unsigned char *)avctx->extradata;
|
||||
int depth;
|
||||
|
||||
if (avctx->extradata_size != 12 &&
|
||||
if (avctx->extradata_size != 0 &&
|
||||
avctx->extradata_size != 12 &&
|
||||
avctx->extradata_size != 128) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Expected extradata of 12 or 128 bytes\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
@ -91,13 +92,16 @@ static av_cold int flic_decode_init(AVCodecContext *avctx)
|
||||
|
||||
s->avctx = avctx;
|
||||
|
||||
s->fli_type = AV_RL16(&fli_header[4]); /* Might be overridden if a Magic Carpet FLC */
|
||||
|
||||
if (s->avctx->extradata_size == 12) {
|
||||
/* special case for magic carpet FLIs */
|
||||
s->fli_type = FLC_MAGIC_CARPET_SYNTHETIC_TYPE_CODE;
|
||||
depth = 8;
|
||||
} else if (avctx->extradata_size == 0) {
|
||||
/* FLI in MOV, see e.g. FFmpeg trac issue #626 */
|
||||
s->fli_type = FLI_TYPE_CODE;
|
||||
depth = 8;
|
||||
} else {
|
||||
s->fli_type = AV_RL16(&fli_header[4]);
|
||||
depth = AV_RL16(&fli_header[12]);
|
||||
}
|
||||
|
||||
|
@ -231,6 +231,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
|
||||
{ CODEC_ID_PRORES, MKTAG('a', 'p', 'c', 's') }, /* Apple ProRes 422 LT */
|
||||
{ CODEC_ID_PRORES, MKTAG('a', 'p', 'c', 'o') }, /* Apple ProRes 422 Proxy */
|
||||
{ CODEC_ID_PRORES, MKTAG('a', 'p', '4', 'h') }, /* Apple ProRes 4444 */
|
||||
{ CODEC_ID_FLIC, MKTAG('f', 'l', 'i', 'c') },
|
||||
|
||||
{ CODEC_ID_NONE, 0 },
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user