Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2012-03-24 23:28:43 +0400
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2012-03-26 22:03:56 +0400
commitfca62f05005567514b5daaea230ba9365e202201 (patch)
tree5c0539c6e500b5aff2a2e09618ecd57560fd0efe /libavcodec/flicvideo.c
parent5afd9a80dbf020847625fc84d1e837f6372de4ca (diff)
Support FLIC in MOV.
Fixes trac issue #626. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Diffstat (limited to 'libavcodec/flicvideo.c')
-rw-r--r--libavcodec/flicvideo.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/flicvideo.c b/libavcodec/flicvideo.c
index 0434261f10..c5df949b31 100644
--- a/libavcodec/flicvideo.c
+++ b/libavcodec/flicvideo.c
@@ -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]);
}