Skip to content
Permalink
Browse files

hevc: fix RAP_B_Bossen

  • Loading branch information
mraulet committed Jul 25, 2014
1 parent f1e1ab7 commit 903236292f066bc321080e3e2192b64f8943d960
Showing with 20 additions and 35 deletions.
  1. +6 −19 libavcodec/hevc.c
  2. +1 −0 tests/fate/hevc.mak
  3. +13 −16 tests/ref/fate/hevc-conformance-RAP_B_Bossen_1
@@ -362,17 +362,6 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps)
return ret;
}

static int is_sps_exist(HEVCContext *s, const HEVCSPS* last_sps)
{
int i;

for( i = 0; i < MAX_SPS_COUNT; i++)
if(s->sps_list[i])
if (last_sps == (HEVCSPS*)s->sps_list[i]->data)
return 1;
return 0;
}

static int hls_slice_header(HEVCContext *s)
{
GetBitContext *gb = &s->HEVClc->gb;
@@ -390,8 +379,6 @@ static int hls_slice_header(HEVCContext *s)
sh->no_output_of_prior_pics_flag = 0;
if (IS_IRAP(s))
sh->no_output_of_prior_pics_flag = get_bits1(gb);
if (s->nal_unit_type == NAL_CRA_NUT && s->last_eos == 1)
sh->no_output_of_prior_pics_flag = 1;

sh->pps_id = get_ue_golomb_long(gb);
if (sh->pps_id >= MAX_PPS_COUNT || !s->pps_list[sh->pps_id]) {
@@ -404,16 +391,16 @@ static int hls_slice_header(HEVCContext *s)
return AVERROR_INVALIDDATA;
}
s->pps = (HEVCPPS*)s->pps_list[sh->pps_id]->data;
if (s->nal_unit_type == NAL_CRA_NUT && s->last_eos == 1)
sh->no_output_of_prior_pics_flag = 1;

if (s->sps != (HEVCSPS*)s->sps_list[s->pps->sps_id]->data) {
const HEVCSPS* last_sps = s->sps;
s->sps = (HEVCSPS*)s->sps_list[s->pps->sps_id]->data;
if (last_sps) {
if (is_sps_exist(s, last_sps)) {
if (s->sps->width != last_sps->width || s->sps->height != last_sps->height ||
s->sps->temporal_layer[s->sps->max_sub_layers - 1].max_dec_pic_buffering != last_sps->temporal_layer[last_sps->max_sub_layers - 1].max_dec_pic_buffering)
sh->no_output_of_prior_pics_flag = 0;
} else
if (last_sps && IS_IRAP(s) && s->nal_unit_type != NAL_CRA_NUT) {
if (s->sps->width != last_sps->width || s->sps->height != last_sps->height ||
s->sps->temporal_layer[s->sps->max_sub_layers - 1].max_dec_pic_buffering !=
last_sps->temporal_layer[last_sps->max_sub_layers - 1].max_dec_pic_buffering)
sh->no_output_of_prior_pics_flag = 0;
}
ff_hevc_clear_refs(s);
@@ -165,6 +165,7 @@ HEVC_SAMPLES_444_12BIT = \
# AMP_E_Hisilicon_3 -- AMP_E_Hisilicon
# MVDL1ZERO_A_docomo_4 -- MVDL1ZERO_A_docomo_3
# RAP_A_docomo_5 -- RAP_A_docomo_4
# RAP_B_bossen_2 -- RAP_B_bossen_1
# RPS_A_docomo_5 -- RPS_A_docomo_4
# RPS_F_docomo_2 -- RPS_F_docomo_1

@@ -66,19 +66,16 @@
0, 64, 64, 1, 149760, 0x3362678b
0, 65, 65, 1, 149760, 0x6e7fc851
0, 66, 66, 1, 149760, 0x33f96449
0, 67, 67, 1, 149760, 0xd9d05007
0, 68, 68, 1, 149760, 0x477f2cf2
0, 69, 69, 1, 149760, 0xe1f9ccd0
0, 70, 70, 1, 149760, 0xb3ba8cfb
0, 71, 71, 1, 149760, 0x64787995
0, 72, 72, 1, 149760, 0xc10de4c4
0, 73, 73, 1, 149760, 0x18dd343f
0, 74, 74, 1, 149760, 0xa1c51358
0, 75, 75, 1, 149760, 0x91fe6361
0, 76, 76, 1, 149760, 0xeec85f94
0, 77, 77, 1, 149760, 0x00a57402
0, 78, 78, 1, 149760, 0x4e88cc16
0, 79, 79, 1, 149760, 0xdbd51976
0, 80, 80, 1, 149760, 0xfebf6b1a
0, 81, 81, 1, 149760, 0x052546d2
0, 82, 82, 1, 149760, 0x046cd73b
0, 67, 67, 1, 149760, 0xb3ba8cfb
0, 68, 68, 1, 149760, 0x64787995
0, 69, 69, 1, 149760, 0xc10de4c4
0, 70, 70, 1, 149760, 0x18dd343f
0, 71, 71, 1, 149760, 0xa1c51358
0, 72, 72, 1, 149760, 0x91fe6361
0, 73, 73, 1, 149760, 0xeec85f94
0, 74, 74, 1, 149760, 0x00a57402
0, 75, 75, 1, 149760, 0x4e88cc16
0, 76, 76, 1, 149760, 0xdbd51976
0, 77, 77, 1, 149760, 0xfebf6b1a
0, 78, 78, 1, 149760, 0x052546d2
0, 79, 79, 1, 149760, 0x046cd73b

0 comments on commit 9032362

Please sign in to comment.