summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-12-31 13:40:15 +0100
committerMichael Niedermayer <michaelni@gmx.at>2012-12-31 13:53:21 +0100
commit98275283d52622c16a6d59f508de7d40216e8b63 (patch)
tree873811e2460409fc82e7936b2137f86d7884a1b7
parentca95d1b32df1a059be48404a3f1f598725a64d03 (diff)
parent5e6ee38bd3cef0dd05f1dd7977c71f3479eb6d01 (diff)
Merge commit '5e6ee38bd3cef0dd05f1dd7977c71f3479eb6d01'
* commit '5e6ee38bd3cef0dd05f1dd7977c71f3479eb6d01': FATE: add cavs test cavsdec: export picture type in the output frame Conflicts: tests/fate/video.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/cavs.h1
-rw-r--r--libavcodec/cavsdec.c30
-rw-r--r--tests/fate/video.mak3
-rw-r--r--tests/ref/fate/cavs172
4 files changed, 190 insertions, 16 deletions
diff --git a/libavcodec/cavs.h b/libavcodec/cavs.h
index 2f033212dd..649a567b41 100644
--- a/libavcodec/cavs.h
+++ b/libavcodec/cavs.h
@@ -172,7 +172,6 @@ typedef struct AVSContext {
int aspect_ratio;
int mb_width, mb_height;
int width, height;
- int pic_type;
int stream_revision; ///<0 for samples from 2006, 1 for rm52j encoder
int progressive;
int pic_structure;
diff --git a/libavcodec/cavsdec.c b/libavcodec/cavsdec.c
index ed2ed28ec9..0074c4cf6d 100644
--- a/libavcodec/cavsdec.c
+++ b/libavcodec/cavsdec.c
@@ -634,7 +634,7 @@ static inline void set_mv_intra(AVSContext *h)
set_mvs(&h->mv[MV_FWD_X0], BLK_16X16);
h->mv[MV_BWD_X0] = ff_cavs_intra_mv;
set_mvs(&h->mv[MV_BWD_X0], BLK_16X16);
- if (h->pic_type != AV_PICTURE_TYPE_B)
+ if (h->cur.f->pict_type != AV_PICTURE_TYPE_B)
h->col_type_base[h->mbidx] = I_8X8;
}
@@ -673,7 +673,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code)
ff_cavs_modify_mb_i(h, &pred_mode_uv);
/* get coded block pattern */
- if (h->pic_type == AV_PICTURE_TYPE_I)
+ if (h->cur.f->pict_type == AV_PICTURE_TYPE_I)
cbp_code = get_ue_golomb(gb);
if (cbp_code > 63U) {
av_log(h->avctx, AV_LOG_ERROR, "illegal intra cbp\n");
@@ -901,7 +901,7 @@ static inline int decode_slice_header(AVSContext *h, GetBitContext *gb)
h->qp = get_bits(gb, 6);
}
/* inter frame or second slice can have weighting params */
- if ((h->pic_type != AV_PICTURE_TYPE_I) ||
+ if ((h->cur.f->pict_type != AV_PICTURE_TYPE_I) ||
(!h->pic_structure && h->mby >= h->mb_width / 2))
if (get_bits1(gb)) { //slice_weighting_flag
av_log(h->avctx, AV_LOG_ERROR,
@@ -946,17 +946,17 @@ static int decode_pic(AVSContext *h)
skip_bits(&h->gb, 16);//bbv_dwlay
if (h->stc == PIC_PB_START_CODE) {
- h->pic_type = get_bits(&h->gb, 2) + AV_PICTURE_TYPE_I;
- if (h->pic_type > AV_PICTURE_TYPE_B) {
+ h->cur.f->pict_type = get_bits(&h->gb, 2) + AV_PICTURE_TYPE_I;
+ if (h->cur.f->pict_type > AV_PICTURE_TYPE_B) {
av_log(h->avctx, AV_LOG_ERROR, "illegal picture type\n");
return -1;
}
/* make sure we have the reference frames we need */
if (!h->DPB[0].f->data[0] ||
- (!h->DPB[1].f->data[0] && h->pic_type == AV_PICTURE_TYPE_B))
+ (!h->DPB[1].f->data[0] && h->cur.f->pict_type == AV_PICTURE_TYPE_B))
return -1;
} else {
- h->pic_type = AV_PICTURE_TYPE_I;
+ h->cur.f->pict_type = AV_PICTURE_TYPE_I;
if (get_bits1(&h->gb))
skip_bits(&h->gb, 24);//time_code
/* old sample clips were all progressive and no low_delay,
@@ -988,7 +988,7 @@ static int decode_pic(AVSContext *h)
h->cur.poc = get_bits(&h->gb, 8) * 2;
/* get temporal distances and MV scaling factors */
- if (h->pic_type != AV_PICTURE_TYPE_B) {
+ if (h->cur.f->pict_type != AV_PICTURE_TYPE_B) {
h->dist[0] = (h->cur.poc - h->DPB[0].poc + 512) % 512;
} else {
h->dist[0] = (h->DPB[0].poc - h->cur.poc + 512) % 512;
@@ -996,7 +996,7 @@ static int decode_pic(AVSContext *h)
h->dist[1] = (h->cur.poc - h->DPB[1].poc + 512) % 512;
h->scale_den[0] = h->dist[0] ? 512/h->dist[0] : 0;
h->scale_den[1] = h->dist[1] ? 512/h->dist[1] : 0;
- if (h->pic_type == AV_PICTURE_TYPE_B) {
+ if (h->cur.f->pict_type == AV_PICTURE_TYPE_B) {
h->sym_factor = h->dist[0] * h->scale_den[1];
} else {
h->direct_den[0] = h->dist[0] ? 16384 / h->dist[0] : 0;
@@ -1015,12 +1015,12 @@ static int decode_pic(AVSContext *h)
skip_bits1(&h->gb); //repeat_first_field
h->qp_fixed = get_bits1(&h->gb);
h->qp = get_bits(&h->gb, 6);
- if (h->pic_type == AV_PICTURE_TYPE_I) {
+ if (h->cur.f->pict_type == AV_PICTURE_TYPE_I) {
if (!h->progressive && !h->pic_structure)
skip_bits1(&h->gb);//what is this?
skip_bits(&h->gb, 4); //reserved bits
} else {
- if (!(h->pic_type == AV_PICTURE_TYPE_B && h->pic_structure == 1))
+ if (!(h->cur.f->pict_type == AV_PICTURE_TYPE_B && h->pic_structure == 1))
h->ref_flag = get_bits1(&h->gb);
skip_bits(&h->gb, 4); //reserved bits
h->skip_mode_flag = get_bits1(&h->gb);
@@ -1032,12 +1032,12 @@ static int decode_pic(AVSContext *h)
} else {
h->alpha_offset = h->beta_offset = 0;
}
- if (h->pic_type == AV_PICTURE_TYPE_I) {
+ if (h->cur.f->pict_type == AV_PICTURE_TYPE_I) {
do {
check_for_slice(h);
decode_mb_i(h, 0);
} while (ff_cavs_next_mb(h));
- } else if (h->pic_type == AV_PICTURE_TYPE_P) {
+ } else if (h->cur.f->pict_type == AV_PICTURE_TYPE_P) {
do {
if (check_for_slice(h))
skip_count = -1;
@@ -1070,7 +1070,7 @@ static int decode_pic(AVSContext *h)
}
} while (ff_cavs_next_mb(h));
}
- if (h->pic_type != AV_PICTURE_TYPE_B) {
+ if (h->cur.f->pict_type != AV_PICTURE_TYPE_B) {
if (h->DPB[1].f->data[0])
h->avctx->release_buffer(h->avctx, h->DPB[1].f);
FFSWAP(AVSFrame, h->cur, h->DPB[1]);
@@ -1186,7 +1186,7 @@ static int cavs_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
if (decode_pic(h))
break;
*got_frame = 1;
- if (h->pic_type != AV_PICTURE_TYPE_B) {
+ if (h->cur.f->pict_type != AV_PICTURE_TYPE_B) {
if (h->DPB[1].f->data[0]) {
*picture = *h->DPB[1].f;
} else {
diff --git a/tests/fate/video.mak b/tests/fate/video.mak
index 5689f51de9..f8725b6e3d 100644
--- a/tests/fate/video.mak
+++ b/tests/fate/video.mak
@@ -51,6 +51,9 @@ FATE_VIDEO-$(call DEMDEC, BINK, BINK) += $(FATE_BINK_VIDEO)
FATE_VIDEO-$(call DEMDEC, BMV, BMV_VIDEO) += fate-bmv-video
fate-bmv-video: CMD = framecrc -i $(SAMPLES)/bmv/SURFING-partial.BMV -pix_fmt rgb24 -an
+FATE_VIDEO-$(call DEMDEC, MPEGPS, CAVS) += fate-cavs
+fate-cavs: CMD = framecrc -i $(SAMPLES)/cavs/cavs.mpg -an
+
FATE_VIDEO-$(call DEMDEC, CDG, CDGRAPHICS) += fate-cdgraphics
fate-cdgraphics: CMD = framecrc -i $(SAMPLES)/cdgraphics/BrotherJohn.cdg -pix_fmt rgb24 -t 1
diff --git a/tests/ref/fate/cavs b/tests/ref/fate/cavs
new file mode 100644
index 0000000000..f9af8fa88a
--- /dev/null
+++ b/tests/ref/fate/cavs
@@ -0,0 +1,172 @@
+#tb 0: 1/25
+0, 0, 0, 1, 622080, 0x76183b91
+0, 1, 1, 1, 622080, 0x2ca5e808
+0, 2, 2, 1, 622080, 0xc503eda4
+0, 3, 3, 1, 622080, 0xa0dbf06c
+0, 4, 4, 1, 622080, 0xf4363cfa
+0, 5, 5, 1, 622080, 0xaa7dd9b8
+0, 6, 6, 1, 622080, 0x3ab6223b
+0, 7, 7, 1, 622080, 0xe402644b
+0, 8, 8, 1, 622080, 0xd0da3ade
+0, 9, 9, 1, 622080, 0x0aff6151
+0, 10, 10, 1, 622080, 0x02aea3d5
+0, 11, 11, 1, 622080, 0x5d8eeccd
+0, 12, 12, 1, 622080, 0x54384735
+0, 13, 13, 1, 622080, 0x890d71c2
+0, 14, 14, 1, 622080, 0xc60ae25b
+0, 15, 15, 1, 622080, 0xe589e774
+0, 16, 16, 1, 622080, 0x03471e74
+0, 17, 17, 1, 622080, 0x4e22302c
+0, 18, 18, 1, 622080, 0x00333583
+0, 19, 19, 1, 622080, 0xd6eae7d9
+0, 20, 20, 1, 622080, 0x72fe94f7
+0, 21, 21, 1, 622080, 0x3ebbad1e
+0, 22, 22, 1, 622080, 0x2fb1de4b
+0, 23, 23, 1, 622080, 0x3bfea6d2
+0, 24, 24, 1, 622080, 0x0fb551b2
+0, 25, 25, 1, 622080, 0xb203284f
+0, 26, 26, 1, 622080, 0xb3baac30
+0, 27, 27, 1, 622080, 0x15f2c1c7
+0, 28, 28, 1, 622080, 0xb2b530ce
+0, 29, 29, 1, 622080, 0xbbaaf241
+0, 30, 30, 1, 622080, 0x01bc9dfc
+0, 31, 31, 1, 622080, 0x8a449a42
+0, 32, 32, 1, 622080, 0xdc63d73f
+0, 33, 33, 1, 622080, 0xf06bc231
+0, 34, 34, 1, 622080, 0x19e04295
+0, 35, 35, 1, 622080, 0x1e7d1acd
+0, 36, 36, 1, 622080, 0x43878b48
+0, 37, 37, 1, 622080, 0xcd94b702
+0, 38, 38, 1, 622080, 0xd2706cf1
+0, 39, 39, 1, 622080, 0x47d636f3
+0, 40, 40, 1, 622080, 0x4a516acc
+0, 41, 41, 1, 622080, 0x52b7d89a
+0, 42, 42, 1, 622080, 0xc9ba03be
+0, 43, 43, 1, 622080, 0x6d17785e
+0, 44, 44, 1, 622080, 0x8264871b
+0, 45, 45, 1, 622080, 0xd59c84c0
+0, 46, 46, 1, 622080, 0x2b86d6cd
+0, 47, 47, 1, 622080, 0x9c5a5f51
+0, 48, 48, 1, 622080, 0x221f79ca
+0, 49, 49, 1, 622080, 0x98edb3ec
+0, 50, 50, 1, 622080, 0x9a31262c
+0, 51, 51, 1, 622080, 0x18f48378
+0, 52, 52, 1, 622080, 0x957c3d9c
+0, 53, 53, 1, 622080, 0x9cc6866e
+0, 54, 54, 1, 622080, 0x45613726
+0, 55, 55, 1, 622080, 0x7a6c5e65
+0, 56, 56, 1, 622080, 0x976d7a11
+0, 57, 57, 1, 622080, 0x192aea08
+0, 58, 58, 1, 622080, 0x8d4fc823
+0, 59, 59, 1, 622080, 0x1f9c55d7
+0, 60, 60, 1, 622080, 0xd4336d41
+0, 61, 61, 1, 622080, 0x7aa650cd
+0, 62, 62, 1, 622080, 0x8efaaeb1
+0, 63, 63, 1, 622080, 0x3d8c3053
+0, 64, 64, 1, 622080, 0x1e2b64b0
+0, 65, 65, 1, 622080, 0x0436b1a7
+0, 66, 66, 1, 622080, 0xc5120072
+0, 67, 67, 1, 622080, 0x0203b245
+0, 68, 68, 1, 622080, 0x9815582b
+0, 69, 69, 1, 622080, 0x3c60c359
+0, 70, 70, 1, 622080, 0x1a26b948
+0, 71, 71, 1, 622080, 0x56079812
+0, 72, 72, 1, 622080, 0x7b192a55
+0, 73, 73, 1, 622080, 0x335632ab
+0, 74, 74, 1, 622080, 0xd0c12eb8
+0, 75, 75, 1, 622080, 0x93bf46cb
+0, 76, 76, 1, 622080, 0xce67ce24
+0, 77, 77, 1, 622080, 0xff95bb26
+0, 78, 78, 1, 622080, 0x5e750705
+0, 79, 79, 1, 622080, 0x45a35725
+0, 80, 80, 1, 622080, 0xd8e93c39
+0, 81, 81, 1, 622080, 0xa9f8db50
+0, 82, 82, 1, 622080, 0xf90a862e
+0, 83, 83, 1, 622080, 0x5e5a4216
+0, 84, 84, 1, 622080, 0xaaf45ed6
+0, 85, 85, 1, 622080, 0x1933cda5
+0, 86, 86, 1, 622080, 0x7ff68d91
+0, 87, 87, 1, 622080, 0x10038fe9
+0, 88, 88, 1, 622080, 0x9b3425a6
+0, 89, 89, 1, 622080, 0x8d2a141d
+0, 90, 90, 1, 622080, 0x698a333e
+0, 91, 91, 1, 622080, 0x334685d1
+0, 92, 92, 1, 622080, 0x40317d40
+0, 93, 93, 1, 622080, 0xd3c6f519
+0, 94, 94, 1, 622080, 0xfc2210c2
+0, 95, 95, 1, 622080, 0x3761df34
+0, 96, 96, 1, 622080, 0xef25462a
+0, 97, 97, 1, 622080, 0x0fd38121
+0, 98, 98, 1, 622080, 0x184856a6
+0, 99, 99, 1, 622080, 0xc57c9f12
+0, 100, 100, 1, 622080, 0x39874291
+0, 101, 101, 1, 622080, 0x7c13cec4
+0, 102, 102, 1, 622080, 0xc4192a76
+0, 103, 103, 1, 622080, 0x2af404e3
+0, 104, 104, 1, 622080, 0x1ee18f41
+0, 105, 105, 1, 622080, 0xfb4d9ee5
+0, 106, 106, 1, 622080, 0x50aae4ff
+0, 107, 107, 1, 622080, 0x030f91fe
+0, 108, 108, 1, 622080, 0x3a3ee08c
+0, 109, 109, 1, 622080, 0x50121423
+0, 110, 110, 1, 622080, 0xda39e2d6
+0, 111, 111, 1, 622080, 0x9e13ccd6
+0, 112, 112, 1, 622080, 0xb72a22a7
+0, 113, 113, 1, 622080, 0xb76904d5
+0, 114, 114, 1, 622080, 0xcffa04a8
+0, 115, 115, 1, 622080, 0x2984bf3f
+0, 116, 116, 1, 622080, 0x274b5778
+0, 117, 117, 1, 622080, 0xf059413a
+0, 118, 118, 1, 622080, 0x969fae57
+0, 119, 119, 1, 622080, 0x75c29097
+0, 120, 120, 1, 622080, 0x2bf3b07d
+0, 121, 121, 1, 622080, 0x9f43271d
+0, 122, 122, 1, 622080, 0x67bf23f3
+0, 123, 123, 1, 622080, 0xa8edcf33
+0, 124, 124, 1, 622080, 0x17a0789e
+0, 125, 125, 1, 622080, 0x14b67cc7
+0, 126, 126, 1, 622080, 0x779215cd
+0, 127, 127, 1, 622080, 0x8b460a21
+0, 128, 128, 1, 622080, 0x0502ad7d
+0, 129, 129, 1, 622080, 0x6860678f
+0, 130, 130, 1, 622080, 0xe180469e
+0, 131, 131, 1, 622080, 0x9a992835
+0, 132, 132, 1, 622080, 0x2efafa33
+0, 133, 133, 1, 622080, 0xe24e59b2
+0, 134, 134, 1, 622080, 0xfb774d53
+0, 135, 135, 1, 622080, 0x3de4ea81
+0, 136, 136, 1, 622080, 0xaf9aa1d6
+0, 137, 137, 1, 622080, 0xa0e3722f
+0, 138, 138, 1, 622080, 0x81684492
+0, 139, 139, 1, 622080, 0xa4e971fb
+0, 140, 140, 1, 622080, 0x4a1903c8
+0, 141, 141, 1, 622080, 0x26304e4a
+0, 142, 142, 1, 622080, 0x867983a4
+0, 143, 143, 1, 622080, 0x2e7e4d13
+0, 144, 144, 1, 622080, 0x736f4682
+0, 145, 145, 1, 622080, 0x426a95fa
+0, 146, 146, 1, 622080, 0x2bc8850c
+0, 147, 147, 1, 622080, 0x047e77ab
+0, 148, 148, 1, 622080, 0x414ab77f
+0, 149, 149, 1, 622080, 0x42681090
+0, 150, 150, 1, 622080, 0x80744ccb
+0, 151, 151, 1, 622080, 0x50e2ecc0
+0, 152, 152, 1, 622080, 0x5c9fe70e
+0, 153, 153, 1, 622080, 0x016461ee
+0, 154, 154, 1, 622080, 0xd42f019a
+0, 155, 155, 1, 622080, 0x8171bf41
+0, 156, 156, 1, 622080, 0xf4d8ef7e
+0, 157, 157, 1, 622080, 0xf2d513c8
+0, 158, 158, 1, 622080, 0xb5b07704
+0, 159, 159, 1, 622080, 0x2168a07a
+0, 160, 160, 1, 622080, 0x840418f9
+0, 161, 161, 1, 622080, 0xd36f1b7c
+0, 162, 162, 1, 622080, 0x52532604
+0, 163, 163, 1, 622080, 0x0856d6eb
+0, 164, 164, 1, 622080, 0x21748734
+0, 165, 165, 1, 622080, 0xbd315c05
+0, 166, 166, 1, 622080, 0x1cea8103
+0, 167, 167, 1, 622080, 0x71f6e3cb
+0, 168, 168, 1, 622080, 0xb12d7aa7
+0, 169, 169, 1, 622080, 0x54dd2acb
+0, 170, 170, 1, 622080, 0xe8f93765