From 3d10614529b0be529e73618e4f453f74f66c791b Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 27 Apr 2013 20:54:55 +0200 Subject: [PATCH 1/2] FATE: add an additional indeo3 test It is a part of the sample that got broken by recent indeo3 changes. --- tests/fate/indeo.mak | 3 ++ tests/ref/fate/indeo3-2 | 101 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 tests/ref/fate/indeo3-2 diff --git a/tests/fate/indeo.mak b/tests/fate/indeo.mak index 5a99b46c7f..c19d282efd 100644 --- a/tests/fate/indeo.mak +++ b/tests/fate/indeo.mak @@ -4,6 +4,9 @@ fate-indeo2: CMD = framecrc -i $(SAMPLES)/rt21/VPAR0026.AVI FATE_INDEO-$(call DEMDEC, MOV, INDEO3) += fate-indeo3 fate-indeo3: CMD = framecrc -i $(SAMPLES)/iv32/cubes.mov +FATE_INDEO-$(call DEMDEC, AVI, INDEO3) += fate-indeo3-2 +fate-indeo3-2: CMD = framecrc -i $(SAMPLES)/iv32/OPENINGH.avi + FATE_INDEO-$(call DEMDEC, AVI, INDEO4) += fate-indeo4 fate-indeo4: CMD = framecrc -i $(SAMPLES)/iv41/indeo41-partial.avi -an diff --git a/tests/ref/fate/indeo3-2 b/tests/ref/fate/indeo3-2 new file mode 100644 index 0000000000..702d06b3c9 --- /dev/null +++ b/tests/ref/fate/indeo3-2 @@ -0,0 +1,101 @@ +#tb 0: 200/2997 +0, 0, 0, 1, 67680, 0x532a4c40 +0, 37, 37, 1, 67680, 0x63d2757a +0, 38, 38, 1, 67680, 0xb1dcf7d3 +0, 39, 39, 1, 67680, 0x3225ee89 +0, 40, 40, 1, 67680, 0x9a102730 +0, 41, 41, 1, 67680, 0xf266888b +0, 42, 42, 1, 67680, 0xd3b30d01 +0, 43, 43, 1, 67680, 0x7c647901 +0, 44, 44, 1, 67680, 0x0838e924 +0, 45, 45, 1, 67680, 0x2d470a56 +0, 46, 46, 1, 67680, 0x3eb99bda +0, 47, 47, 1, 67680, 0x2b89e9f7 +0, 48, 48, 1, 67680, 0xcc006f93 +0, 49, 49, 1, 67680, 0x967b33e8 +0, 50, 50, 1, 67680, 0xcebbbfd3 +0, 51, 51, 1, 67680, 0x68365b83 +0, 52, 52, 1, 67680, 0xf1b0e536 +0, 53, 53, 1, 67680, 0x292ecc68 +0, 54, 54, 1, 67680, 0x83329d20 +0, 55, 55, 1, 67680, 0xe6ea8f5a +0, 56, 56, 1, 67680, 0xcef27038 +0, 57, 57, 1, 67680, 0xa30445e4 +0, 58, 58, 1, 67680, 0x61aef9f5 +0, 59, 59, 1, 67680, 0x20abe80c +0, 60, 60, 1, 67680, 0x7182a479 +0, 61, 61, 1, 67680, 0x56db4ec8 +0, 62, 62, 1, 67680, 0x08c1c3d4 +0, 63, 63, 1, 67680, 0x0d8879ed +0, 64, 64, 1, 67680, 0x8e4eb9b9 +0, 65, 65, 1, 67680, 0x4629639e +0, 66, 66, 1, 67680, 0x990bcd94 +0, 67, 67, 1, 67680, 0x2ae85671 +0, 68, 68, 1, 67680, 0xec296417 +0, 69, 69, 1, 67680, 0x41adf8da +0, 70, 70, 1, 67680, 0xa035008f +0, 71, 71, 1, 67680, 0xf8845e14 +0, 72, 72, 1, 67680, 0x802e52c4 +0, 73, 73, 1, 67680, 0xa2582b4a +0, 74, 74, 1, 67680, 0x9ca567d7 +0, 75, 75, 1, 67680, 0x2ec69fac +0, 76, 76, 1, 67680, 0x3a6d35ea +0, 77, 77, 1, 67680, 0x9df7b7f6 +0, 78, 78, 1, 67680, 0x2d9dc502 +0, 79, 79, 1, 67680, 0x0ee16604 +0, 80, 80, 1, 67680, 0xb25d31a0 +0, 81, 81, 1, 67680, 0x52c04cb4 +0, 82, 82, 1, 67680, 0xd9ddec28 +0, 83, 83, 1, 67680, 0x1732f444 +0, 84, 84, 1, 67680, 0x19e01da5 +0, 85, 85, 1, 67680, 0x9af109df +0, 86, 86, 1, 67680, 0xc59ba581 +0, 87, 87, 1, 67680, 0x8daaa58f +0, 88, 88, 1, 67680, 0xd560a9ae +0, 89, 89, 1, 67680, 0xe3fe77b4 +0, 90, 90, 1, 67680, 0x2a0e6c20 +0, 91, 91, 1, 67680, 0x9741f744 +0, 92, 92, 1, 67680, 0x8ec827dd +0, 93, 93, 1, 67680, 0x7d90551f +0, 94, 94, 1, 67680, 0x4d8f2665 +0, 95, 95, 1, 67680, 0x21e5a86e +0, 96, 96, 1, 67680, 0x9ba3fe8f +0, 97, 97, 1, 67680, 0xc84b7e41 +0, 98, 98, 1, 67680, 0x8da743e2 +0, 99, 99, 1, 67680, 0x49c4e00e +0, 100, 100, 1, 67680, 0x90fc5dab +0, 101, 101, 1, 67680, 0x9973a011 +0, 102, 102, 1, 67680, 0xfdd58648 +0, 103, 103, 1, 67680, 0xe181e329 +0, 104, 104, 1, 67680, 0xf60065c3 +0, 105, 105, 1, 67680, 0xde9bfc23 +0, 106, 106, 1, 67680, 0x37b9f867 +0, 107, 107, 1, 67680, 0x232ce0e9 +0, 108, 108, 1, 67680, 0x3fde091d +0, 109, 109, 1, 67680, 0x3f00a465 +0, 110, 110, 1, 67680, 0x882b0042 +0, 111, 111, 1, 67680, 0x1bc3d626 +0, 112, 112, 1, 67680, 0xd15861a7 +0, 113, 113, 1, 67680, 0x056cd815 +0, 114, 114, 1, 67680, 0xe3fc887f +0, 115, 115, 1, 67680, 0xdbddd03a +0, 116, 116, 1, 67680, 0xfe6d865f +0, 117, 117, 1, 67680, 0xbea7f202 +0, 118, 118, 1, 67680, 0x6d4114b9 +0, 119, 119, 1, 67680, 0x47bc93be +0, 120, 120, 1, 67680, 0xb6136a41 +0, 121, 121, 1, 67680, 0xf0e63ecb +0, 122, 122, 1, 67680, 0xb014b2a0 +0, 123, 123, 1, 67680, 0xf85a4be5 +0, 124, 124, 1, 67680, 0x21457c25 +0, 125, 125, 1, 67680, 0x75ae6bfb +0, 126, 126, 1, 67680, 0x7ced988c +0, 127, 127, 1, 67680, 0x3bf67347 +0, 128, 128, 1, 67680, 0x43e1ace5 +0, 129, 129, 1, 67680, 0xa23f8f45 +0, 130, 130, 1, 67680, 0x29d6cd9e +0, 131, 131, 1, 67680, 0xad41bd94 +0, 132, 132, 1, 67680, 0x58e131c8 +0, 133, 133, 1, 67680, 0x617debea +0, 134, 134, 1, 67680, 0x8a9db524 +0, 135, 135, 1, 67680, 0x17264d55 From e036bb7899d0faca9159206be9bf5552e76e7633 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 24 Apr 2013 10:19:54 +0200 Subject: [PATCH 2/2] lavc: clear AVBuffers on decoded frames if refcounted_frames is not set Otherwise some code might mistakenly think it is allowed to unref those buffers, which would lead to double unref. --- libavcodec/utils.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 32ca703389..67e5165143 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1407,6 +1407,7 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi if (!avctx->refcounted_frames) { avci->to_free = *picture; avci->to_free.extended_data = avci->to_free.data; + memset(picture->buf, 0, sizeof(picture->buf)); } avctx->frame_number++; @@ -1457,6 +1458,9 @@ int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, if (!avctx->refcounted_frames) { avci->to_free = *frame; avci->to_free.extended_data = avci->to_free.data; + memset(frame->buf, 0, sizeof(frame->buf)); + frame->extended_buf = NULL; + frame->nb_extended_buf = 0; } }