Commit 98275283 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit '5e6ee38b'

* commit '5e6ee38b':
  FATE: add cavs test
  cavsdec: export picture type in the output frame

Conflicts:
	tests/fate/video.mak
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents ca95d1b3 5e6ee38b
...@@ -172,7 +172,6 @@ typedef struct AVSContext { ...@@ -172,7 +172,6 @@ typedef struct AVSContext {
int aspect_ratio; int aspect_ratio;
int mb_width, mb_height; int mb_width, mb_height;
int width, height; int width, height;
int pic_type;
int stream_revision; ///<0 for samples from 2006, 1 for rm52j encoder int stream_revision; ///<0 for samples from 2006, 1 for rm52j encoder
int progressive; int progressive;
int pic_structure; int pic_structure;
......
...@@ -634,7 +634,7 @@ static inline void set_mv_intra(AVSContext *h) ...@@ -634,7 +634,7 @@ static inline void set_mv_intra(AVSContext *h)
set_mvs(&h->mv[MV_FWD_X0], BLK_16X16); set_mvs(&h->mv[MV_FWD_X0], BLK_16X16);
h->mv[MV_BWD_X0] = ff_cavs_intra_mv; h->mv[MV_BWD_X0] = ff_cavs_intra_mv;
set_mvs(&h->mv[MV_BWD_X0], BLK_16X16); 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; h->col_type_base[h->mbidx] = I_8X8;
} }
...@@ -673,7 +673,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code) ...@@ -673,7 +673,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code)
ff_cavs_modify_mb_i(h, &pred_mode_uv); ff_cavs_modify_mb_i(h, &pred_mode_uv);
/* get coded block pattern */ /* 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); cbp_code = get_ue_golomb(gb);
if (cbp_code > 63U) { if (cbp_code > 63U) {
av_log(h->avctx, AV_LOG_ERROR, "illegal intra cbp\n"); 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) ...@@ -901,7 +901,7 @@ static inline int decode_slice_header(AVSContext *h, GetBitContext *gb)
h->qp = get_bits(gb, 6); h->qp = get_bits(gb, 6);
} }
/* inter frame or second slice can have weighting params */ /* 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)) (!h->pic_structure && h->mby >= h->mb_width / 2))
if (get_bits1(gb)) { //slice_weighting_flag if (get_bits1(gb)) { //slice_weighting_flag
av_log(h->avctx, AV_LOG_ERROR, av_log(h->avctx, AV_LOG_ERROR,
...@@ -946,17 +946,17 @@ static int decode_pic(AVSContext *h) ...@@ -946,17 +946,17 @@ static int decode_pic(AVSContext *h)
skip_bits(&h->gb, 16);//bbv_dwlay skip_bits(&h->gb, 16);//bbv_dwlay
if (h->stc == PIC_PB_START_CODE) { if (h->stc == PIC_PB_START_CODE) {
h->pic_type = get_bits(&h->gb, 2) + AV_PICTURE_TYPE_I; h->cur.f->pict_type = get_bits(&h->gb, 2) + AV_PICTURE_TYPE_I;
if (h->pic_type > AV_PICTURE_TYPE_B) { if (h->cur.f->pict_type > AV_PICTURE_TYPE_B) {
av_log(h->avctx, AV_LOG_ERROR, "illegal picture type\n"); av_log(h->avctx, AV_LOG_ERROR, "illegal picture type\n");
return -1; return -1;
} }
/* make sure we have the reference frames we need */ /* make sure we have the reference frames we need */
if (!h->DPB[0].f->data[0] || 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; return -1;
} else { } else {
h->pic_type = AV_PICTURE_TYPE_I; h->cur.f->pict_type = AV_PICTURE_TYPE_I;
if (get_bits1(&h->gb)) if (get_bits1(&h->gb))
skip_bits(&h->gb, 24);//time_code skip_bits(&h->gb, 24);//time_code
/* old sample clips were all progressive and no low_delay, /* old sample clips were all progressive and no low_delay,
...@@ -988,7 +988,7 @@ static int decode_pic(AVSContext *h) ...@@ -988,7 +988,7 @@ static int decode_pic(AVSContext *h)
h->cur.poc = get_bits(&h->gb, 8) * 2; h->cur.poc = get_bits(&h->gb, 8) * 2;
/* get temporal distances and MV scaling factors */ /* 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; h->dist[0] = (h->cur.poc - h->DPB[0].poc + 512) % 512;
} else { } else {
h->dist[0] = (h->DPB[0].poc - h->cur.poc + 512) % 512; h->dist[0] = (h->DPB[0].poc - h->cur.poc + 512) % 512;
...@@ -996,7 +996,7 @@ static int decode_pic(AVSContext *h) ...@@ -996,7 +996,7 @@ static int decode_pic(AVSContext *h)
h->dist[1] = (h->cur.poc - h->DPB[1].poc + 512) % 512; 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[0] = h->dist[0] ? 512/h->dist[0] : 0;
h->scale_den[1] = h->dist[1] ? 512/h->dist[1] : 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]; h->sym_factor = h->dist[0] * h->scale_den[1];
} else { } else {
h->direct_den[0] = h->dist[0] ? 16384 / h->dist[0] : 0; h->direct_den[0] = h->dist[0] ? 16384 / h->dist[0] : 0;
...@@ -1015,12 +1015,12 @@ static int decode_pic(AVSContext *h) ...@@ -1015,12 +1015,12 @@ static int decode_pic(AVSContext *h)
skip_bits1(&h->gb); //repeat_first_field skip_bits1(&h->gb); //repeat_first_field
h->qp_fixed = get_bits1(&h->gb); h->qp_fixed = get_bits1(&h->gb);
h->qp = get_bits(&h->gb, 6); 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) if (!h->progressive && !h->pic_structure)
skip_bits1(&h->gb);//what is this? skip_bits1(&h->gb);//what is this?
skip_bits(&h->gb, 4); //reserved bits skip_bits(&h->gb, 4); //reserved bits
} else { } 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); h->ref_flag = get_bits1(&h->gb);
skip_bits(&h->gb, 4); //reserved bits skip_bits(&h->gb, 4); //reserved bits
h->skip_mode_flag = get_bits1(&h->gb); h->skip_mode_flag = get_bits1(&h->gb);
...@@ -1032,12 +1032,12 @@ static int decode_pic(AVSContext *h) ...@@ -1032,12 +1032,12 @@ static int decode_pic(AVSContext *h)
} else { } else {
h->alpha_offset = h->beta_offset = 0; 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 { do {
check_for_slice(h); check_for_slice(h);
decode_mb_i(h, 0); decode_mb_i(h, 0);
} while (ff_cavs_next_mb(h)); } 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 { do {
if (check_for_slice(h)) if (check_for_slice(h))
skip_count = -1; skip_count = -1;
...@@ -1070,7 +1070,7 @@ static int decode_pic(AVSContext *h) ...@@ -1070,7 +1070,7 @@ static int decode_pic(AVSContext *h)
} }
} while (ff_cavs_next_mb(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]) if (h->DPB[1].f->data[0])
h->avctx->release_buffer(h->avctx, h->DPB[1].f); h->avctx->release_buffer(h->avctx, h->DPB[1].f);
FFSWAP(AVSFrame, h->cur, h->DPB[1]); FFSWAP(AVSFrame, h->cur, h->DPB[1]);
...@@ -1186,7 +1186,7 @@ static int cavs_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, ...@@ -1186,7 +1186,7 @@ static int cavs_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
if (decode_pic(h)) if (decode_pic(h))
break; break;
*got_frame = 1; *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]) { if (h->DPB[1].f->data[0]) {
*picture = *h->DPB[1].f; *picture = *h->DPB[1].f;
} else { } else {
......
...@@ -51,6 +51,9 @@ FATE_VIDEO-$(call DEMDEC, BINK, BINK) += $(FATE_BINK_VIDEO) ...@@ -51,6 +51,9 @@ FATE_VIDEO-$(call DEMDEC, BINK, BINK) += $(FATE_BINK_VIDEO)
FATE_VIDEO-$(call DEMDEC, BMV, BMV_VIDEO) += fate-bmv-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-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_VIDEO-$(call DEMDEC, CDG, CDGRAPHICS) += fate-cdgraphics
fate-cdgraphics: CMD = framecrc -i $(SAMPLES)/cdgraphics/BrotherJohn.cdg -pix_fmt rgb24 -t 1 fate-cdgraphics: CMD = framecrc -i $(SAMPLES)/cdgraphics/BrotherJohn.cdg -pix_fmt rgb24 -t 1
......
#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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment