Lines Matching defs:sps

92         if (s->sps == (const HEVCSPS*)s->sps_list[id]->data)
93 s->sps = NULL;
100 av_assert0(!(s->sps_list[id] && s->sps == (HEVCSPS*)s->sps_list[id]->data));
120 ShortTermRPS *rps, const HEVCSPS *sps, int is_slice_header)
128 if (rps != sps->st_rps && sps->nb_st_rps)
140 if (delta_idx > sps->nb_st_rps) {
143 delta_idx, sps->nb_st_rps);
146 rps_ridx = &sps->st_rps[sps->nb_st_rps - delta_idx];
149 rps_ridx = &sps->st_rps[rps - sps->st_rps - 1];
586 int apply_defdispwin, HEVCSPS *sps)
588 VUI backup_vui, *vui = &sps->vui;
616 if (vui->video_full_range_flag && sps->pix_fmt == AV_PIX_FMT_YUV420P)
617 sps->pix_fmt = AV_PIX_FMT_YUVJ420P;
631 switch (sps->pix_fmt) {
633 sps->pix_fmt = AV_PIX_FMT_GBRP;
636 sps->pix_fmt = AV_PIX_FMT_GBRP10;
639 sps->pix_fmt = AV_PIX_FMT_GBRP12;
666 int vert_mult = hevc_sub_height_c[sps->chroma_format_idc];
667 int horiz_mult = hevc_sub_width_c[sps->chroma_format_idc];
715 decode_hrd(gb, 1, sps->max_sub_layers);
780 static int scaling_list_data(GetBitContext *gb, AVCodecContext *avctx, ScalingList *sl, HEVCSPS *sps)
839 if (sps->chroma_format_idc == 3) {
856 static int map_pixel_format(AVCodecContext *avctx, HEVCSPS *sps)
859 switch (sps->bit_depth) {
861 if (sps->chroma_format_idc == 0) sps->pix_fmt = AV_PIX_FMT_GRAY8;
862 if (sps->chroma_format_idc == 1) sps->pix_fmt = AV_PIX_FMT_YUV420P;
863 if (sps->chroma_format_idc == 2) sps->pix_fmt = AV_PIX_FMT_YUV422P;
864 if (sps->chroma_format_idc == 3) sps->pix_fmt = AV_PIX_FMT_YUV444P;
867 if (sps->chroma_format_idc == 0) sps->pix_fmt = AV_PIX_FMT_GRAY9;
868 if (sps->chroma_format_idc == 1) sps->pix_fmt = AV_PIX_FMT_YUV420P9;
869 if (sps->chroma_format_idc == 2) sps->pix_fmt = AV_PIX_FMT_YUV422P9;
870 if (sps->chroma_format_idc == 3) sps->pix_fmt = AV_PIX_FMT_YUV444P9;
873 if (sps->chroma_format_idc == 0) sps->pix_fmt = AV_PIX_FMT_GRAY10;
874 if (sps->chroma_format_idc == 1) sps->pix_fmt = AV_PIX_FMT_YUV420P10;
875 if (sps->chroma_format_idc == 2) sps->pix_fmt = AV_PIX_FMT_YUV422P10;
876 if (sps->chroma_format_idc == 3) sps->pix_fmt = AV_PIX_FMT_YUV444P10;
879 if (sps->chroma_format_idc == 0) sps->pix_fmt = AV_PIX_FMT_GRAY12;
880 if (sps->chroma_format_idc == 1) sps->pix_fmt = AV_PIX_FMT_YUV420P12;
881 if (sps->chroma_format_idc == 2) sps->pix_fmt = AV_PIX_FMT_YUV422P12;
882 if (sps->chroma_format_idc == 3) sps->pix_fmt = AV_PIX_FMT_YUV444P12;
888 sps->chroma_format_idc, sps->bit_depth);
892 desc = av_pix_fmt_desc_get(sps->pix_fmt);
896 sps->hshift[0] = sps->vshift[0] = 0;
897 sps->hshift[2] = sps->hshift[1] = desc->log2_chroma_w;
898 sps->vshift[2] = sps->vshift[1] = desc->log2_chroma_h;
900 sps->pixel_shift = sps->bit_depth > 8;
905 int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id,
916 sps->vps_id = get_bits(gb, 4);
918 if (vps_list && !vps_list[sps->vps_id]) {
920 sps->vps_id);
924 sps->max_sub_layers = get_bits(gb, 3) + 1;
925 if (sps->max_sub_layers > HEVC_MAX_SUB_LAYERS) {
927 sps->max_sub_layers);
931 sps->temporal_id_nesting_flag = get_bits(gb, 1);
933 if ((ret = parse_ptl(gb, avctx, &sps->ptl, sps->max_sub_layers)) < 0)
942 sps->chroma_format_idc = get_ue_golomb_long(gb);
943 if (sps->chroma_format_idc > 3U) {
944 av_log(avctx, AV_LOG_ERROR, "chroma_format_idc %d is invalid\n", sps->chroma_format_idc);
948 if (sps->chroma_format_idc == 3)
949 sps->separate_colour_plane_flag = get_bits1(gb);
951 if (sps->separate_colour_plane_flag)
952 sps->chroma_format_idc = 0;
954 sps->width = get_ue_golomb_long(gb);
955 sps->height = get_ue_golomb_long(gb);
956 if ((ret = av_image_check_size(sps->width,
957 sps->height, 0, avctx)) < 0)
961 int vert_mult = hevc_sub_height_c[sps->chroma_format_idc];
962 int horiz_mult = hevc_sub_width_c[sps->chroma_format_idc];
963 sps->pic_conf_win.left_offset = get_ue_golomb_long(gb) * horiz_mult;
964 sps->pic_conf_win.right_offset = get_ue_golomb_long(gb) * horiz_mult;
965 sps->pic_conf_win.top_offset = get_ue_golomb_long(gb) * vert_mult;
966 sps->pic_conf_win.bottom_offset = get_ue_golomb_long(gb) * vert_mult;
970 "discarding sps conformance window, "
972 sps->pic_conf_win.left_offset,
973 sps->pic_conf_win.right_offset,
974 sps->pic_conf_win.top_offset,
975 sps->pic_conf_win.bottom_offset);
977 sps->pic_conf_win.left_offset =
978 sps->pic_conf_win.right_offset =
979 sps->pic_conf_win.top_offset =
980 sps->pic_conf_win.bottom_offset = 0;
982 sps->output_window = sps->pic_conf_win;
985 sps->bit_depth = get_ue_golomb_long(gb) + 8;
987 if (sps->chroma_format_idc && bit_depth_chroma != sps->bit_depth) {
991 sps->bit_depth, bit_depth_chroma);
994 sps->bit_depth_chroma = bit_depth_chroma;
996 ret = map_pixel_format(avctx, sps);
1000 sps->log2_max_poc_lsb = get_ue_golomb_long(gb) + 4;
1001 if (sps->log2_max_poc_lsb > 16) {
1003 sps->log2_max_poc_lsb - 4);
1008 start = sublayer_ordering_info ? 0 : sps->max_sub_layers - 1;
1009 for (i = start; i < sps->max_sub_layers; i++) {
1010 sps->temporal_layer[i].max_dec_pic_buffering = get_ue_golomb_long(gb) + 1;
1011 sps->temporal_layer[i].num_reorder_pics = get_ue_golomb_long(gb);
1012 sps->temporal_layer[i].max_latency_increase = get_ue_golomb_long(gb) - 1;
1013 if (sps->temporal_layer[i].max_dec_pic_buffering > (unsigned)HEVC_MAX_DPB_SIZE) {
1015 sps->temporal_layer[i].max_dec_pic_buffering - 1U);
1018 if (sps->temporal_layer[i].num_reorder_pics > sps->temporal_layer[i].max_dec_pic_buffering - 1) {
1020 sps->temporal_layer[i].num_reorder_pics);
1022 sps->temporal_layer[i].num_reorder_pics > HEVC_MAX_DPB_SIZE - 1) {
1025 sps->temporal_layer[i].max_dec_pic_buffering = sps->temporal_layer[i].num_reorder_pics + 1;
1031 sps->temporal_layer[i].max_dec_pic_buffering = sps->temporal_layer[start].max_dec_pic_buffering;
1032 sps->temporal_layer[i].num_reorder_pics = sps->temporal_layer[start].num_reorder_pics;
1033 sps->temporal_layer[i].max_latency_increase = sps->temporal_layer[start].max_latency_increase;
1037 sps->log2_min_cb_size = get_ue_golomb_long(gb) + 3;
1038 sps->log2_diff_max_min_coding_block_size = get_ue_golomb_long(gb);
1039 sps->log2_min_tb_size = get_ue_golomb_long(gb) + 2;
1041 sps->log2_max_trafo_size = log2_diff_max_min_transform_block_size +
1042 sps->log2_min_tb_size;
1044 if (sps->log2_min_cb_size < 3 || sps->log2_min_cb_size > 30) {
1045 av_log(avctx, AV_LOG_ERROR, "Invalid value %d for log2_min_cb_size", sps->log2_min_cb_size);
1049 if (sps->log2_diff_max_min_coding_block_size > 30) {
1050 av_log(avctx, AV_LOG_ERROR, "Invalid value %d for log2_diff_max_min_coding_block_size", sps->log2_diff_max_min_coding_block_size);
1054 if (sps->log2_min_tb_size >= sps->log2_min_cb_size || sps->log2_min_tb_size < 2) {
1064 sps->max_transform_hierarchy_depth_inter = get_ue_golomb_long(gb);
1065 sps->max_transform_hierarchy_depth_intra = get_ue_golomb_long(gb);
1067 sps->scaling_list_enable_flag = get_bits1(gb);
1068 if (sps->scaling_list_enable_flag) {
1069 set_default_scaling_list_data(&sps->scaling_list);
1072 ret = scaling_list_data(gb, avctx, &sps->scaling_list, sps);
1078 sps->amp_enabled_flag = get_bits1(gb);
1079 sps->sao_enabled = get_bits1(gb);
1081 sps->pcm_enabled_flag = get_bits1(gb);
1082 if (sps->pcm_enabled_flag) {
1083 sps->pcm.bit_depth = get_bits(gb, 4) + 1;
1084 sps->pcm.bit_depth_chroma = get_bits(gb, 4) + 1;
1085 sps->pcm.log2_min_pcm_cb_size = get_ue_golomb_long(gb) + 3;
1086 sps->pcm.log2_max_pcm_cb_size = sps->pcm.log2_min_pcm_cb_size +
1088 if (FFMAX(sps->pcm.bit_depth, sps->pcm.bit_depth_chroma) > sps->bit_depth) {
1091 sps->pcm.bit_depth, sps->pcm.bit_depth_chroma, sps->bit_depth);
1095 sps->pcm.loop_filter_disable_flag = get_bits1(gb);
1098 sps->nb_st_rps = get_ue_golomb_long(gb);
1099 if (sps->nb_st_rps > HEVC_MAX_SHORT_TERM_REF_PIC_SETS) {
1101 sps->nb_st_rps);
1104 for (i = 0; i < sps->nb_st_rps; i++) {
1105 if ((ret = ff_hevc_decode_short_term_rps(gb, avctx, &sps->st_rps[i],
1106 sps, 0)) < 0)
1110 sps->long_term_ref_pics_present_flag = get_bits1(gb);
1111 if (sps->long_term_ref_pics_present_flag) {
1112 sps->num_long_term_ref_pics_sps = get_ue_golomb_long(gb);
1113 if (sps->num_long_term_ref_pics_sps > HEVC_MAX_LONG_TERM_REF_PICS) {
1115 sps->num_long_term_ref_pics_sps);
1118 for (i = 0; i < sps->num_long_term_ref_pics_sps; i++) {
1119 sps->lt_ref_pic_poc_lsb_sps[i] = get_bits(gb, sps->log2_max_poc_lsb);
1120 sps->used_by_curr_pic_lt_sps_flag[i] = get_bits1(gb);
1124 sps->sps_temporal_mvp_enabled_flag = get_bits1(gb);
1125 sps->sps_strong_intra_smoothing_enable_flag = get_bits1(gb);
1126 sps->vui.sar = (AVRational){0, 1};
1129 decode_vui(gb, avctx, apply_defdispwin, sps);
1132 sps->sps_range_extension_flag = get_bits1(gb);
1134 if (sps->sps_range_extension_flag) {
1135 sps->transform_skip_rotation_enabled_flag = get_bits1(gb);
1136 sps->transform_skip_context_enabled_flag = get_bits1(gb);
1137 sps->implicit_rdpcm_enabled_flag = get_bits1(gb);
1139 sps->explicit_rdpcm_enabled_flag = get_bits1(gb);
1141 sps->extended_precision_processing_flag = get_bits1(gb);
1142 if (sps->extended_precision_processing_flag)
1146 sps->intra_smoothing_disabled_flag = get_bits1(gb);
1147 sps->high_precision_offsets_enabled_flag = get_bits1(gb);
1148 if (sps->high_precision_offsets_enabled_flag)
1152 sps->persistent_rice_adaptation_enabled_flag = get_bits1(gb);
1154 sps->cabac_bypass_alignment_enabled_flag = get_bits1(gb);
1155 if (sps->cabac_bypass_alignment_enabled_flag)
1161 sps->output_window.left_offset += sps->vui.def_disp_win.left_offset;
1162 sps->output_window.right_offset += sps->vui.def_disp_win.right_offset;
1163 sps->output_window.top_offset += sps->vui.def_disp_win.top_offset;
1164 sps->output_window.bottom_offset += sps->vui.def_disp_win.bottom_offset;
1167 ow = &sps->output_window;
1170 ow->left_offset + ow->right_offset >= sps->width ||
1171 ow->top_offset + ow->bottom_offset >= sps->height) {
1180 memset(&sps->pic_conf_win, 0, sizeof(sps->pic_conf_win));
1184 sps->log2_ctb_size = sps->log2_min_cb_size +
1185 sps->log2_diff_max_min_coding_block_size;
1186 sps->log2_min_pu_size = sps->log2_min_cb_size - 1;
1188 if (sps->log2_ctb_size > HEVC_MAX_LOG2_CTB_SIZE) {
1189 av_log(avctx, AV_LOG_ERROR, "CTB size out of range: 2^%d\n", sps->log2_ctb_size);
1192 if (sps->log2_ctb_size < 4) {
1196 sps->log2_ctb_size);
1197 avpriv_request_sample(avctx, "log2_ctb_size %d", sps->log2_ctb_size);
1201 sps->ctb_width = (sps->width + (1 << sps->log2_ctb_size) - 1) >> sps->log2_ctb_size;
1202 sps->ctb_height = (sps->height + (1 << sps->log2_ctb_size) - 1) >> sps->log2_ctb_size;
1203 sps->ctb_size = sps->ctb_width * sps->ctb_height;
1205 sps->min_cb_width = sps->width >> sps->log2_min_cb_size;
1206 sps->min_cb_height = sps->height >> sps->log2_min_cb_size;
1207 sps->min_tb_width = sps->width >> sps->log2_min_tb_size;
1208 sps->min_tb_height = sps->height >> sps->log2_min_tb_size;
1209 sps->min_pu_width = sps->width >> sps->log2_min_pu_size;
1210 sps->min_pu_height = sps->height >> sps->log2_min_pu_size;
1211 sps->tb_mask = (1 << (sps->log2_ctb_size - sps->log2_min_tb_size)) - 1;
1213 sps->qp_bd_offset = 6 * (sps->bit_depth - 8);
1215 if (av_mod_uintp2(sps->width, sps->log2_min_cb_size) ||
1216 av_mod_uintp2(sps->height, sps->log2_min_cb_size)) {
1221 if (sps->max_transform_hierarchy_depth_inter > sps->log2_ctb_size - sps->log2_min_tb_size) {
1223 sps->max_transform_hierarchy_depth_inter);
1226 if (sps->max_transform_hierarchy_depth_intra > sps->log2_ctb_size - sps->log2_min_tb_size) {
1228 sps->max_transform_hierarchy_depth_intra);
1231 if (sps->log2_max_trafo_size > FFMIN(sps->log2_ctb_size, 5)) {
1234 sps->log2_max_trafo_size);
1250 HEVCSPS *sps;
1251 AVBufferRef *sps_buf = av_buffer_allocz(sizeof(*sps));
1258 sps = (HEVCSPS*)sps_buf->data;
1263 if (nal_size > sizeof(sps->data)) {
1266 nal_size, sizeof(sps->data));
1267 sps->data_size = sizeof(sps->data);
1269 sps->data_size = nal_size;
1271 memcpy(sps->data, gb->buffer, sps->data_size);
1273 ret = ff_hevc_parse_sps(sps, gb, &sps_id,
1285 sps_id, sps->width, sps->height,
1286 sps->width - (sps->output_window.left_offset + sps->output_window.right_offset),
1287 sps->height - (sps->output_window.top_offset + sps->output_window.bottom_offset),
1288 av_get_pix_fmt_name(sps->pix_fmt));
1324 HEVCPPS *pps, HEVCSPS *sps) {
1356 if ( pps->log2_sao_offset_scale_luma > FFMAX(sps->bit_depth - 10, 0)
1357 || pps->log2_sao_offset_scale_chroma > FFMAX(sps->bit_depth_chroma - 10, 0)
1365 HEVCPPS *pps, HEVCSPS *sps)
1374 pps->col_idxX = av_malloc_array(sps->ctb_width, sizeof(*pps->col_idxX));
1387 pps->column_width[i] = ((i + 1) * sps->ctb_width) / pps->num_tile_columns -
1388 (i * sps->ctb_width) / pps->num_tile_columns;
1392 pps->row_height[i] = ((i + 1) * sps->ctb_height) / pps->num_tile_rows -
1393 (i * sps->ctb_height) / pps->num_tile_rows;
1405 for (i = 0, j = 0; i < sps->ctb_width; i++) {
1414 pic_area_in_ctbs = sps->ctb_width * sps->ctb_height;
1419 pps->min_tb_addr_zs_tab = av_malloc_array((sps->tb_mask+2) * (sps->tb_mask+2), sizeof(*pps->min_tb_addr_zs_tab));
1426 int tb_x = ctb_addr_rs % sps->ctb_width;
1427 int tb_y = ctb_addr_rs / sps->ctb_width;
1449 val += sps->ctb_width * pps->row_height[i];
1462 pps->tile_id[pps->ctb_addr_rs_to_ts[y * sps->ctb_width + x]] = tile_id;
1471 pps->row_bd[j] * sps->ctb_width + pps->col_bd[i];
1473 log2_diff = sps->log2_ctb_size - sps->log2_min_tb_size;
1474 pps->min_tb_addr_zs = &pps->min_tb_addr_zs_tab[1*(sps->tb_mask+2)+1];
1475 for (y = 0; y < sps->tb_mask+2; y++) {
1476 pps->min_tb_addr_zs_tab[y*(sps->tb_mask+2)] = -1;
1479 for (y = 0; y < sps->tb_mask+1; y++) {
1480 for (x = 0; x < sps->tb_mask+1; x++) {
1483 int rs = sps->ctb_width * tb_y + tb_x;
1489 pps->min_tb_addr_zs[y * (sps->tb_mask+2) + x] = val;
1499 HEVCSPS *sps = NULL;
1559 sps = (HEVCSPS *)ps->sps_list[pps->sps_id]->data;
1583 pps->diff_cu_qp_delta_depth > sps->log2_diff_max_min_coding_block_size) {
1618 num_tile_columns_minus1 >= sps->ctb_width) {
1625 num_tile_rows_minus1 >= sps->ctb_height) {
1648 if (sum >= sps->ctb_width) {
1653 pps->column_width[pps->num_tile_columns - 1] = sps->ctb_width - sum;
1660 if (sum >= sps->ctb_height) {
1665 pps->row_height[pps->num_tile_rows - 1] = sps->ctb_height - sum;
1699 ret = scaling_list_data(gb, avctx, &pps->scaling_list, sps);
1705 if (log2_parallel_merge_level_minus2 > sps->log2_ctb_size) {
1718 if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps->pps_range_extensions_flag) {
1719 if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0)
1724 ret = setup_pps(avctx, gb, pps, sps);
1755 ps->sps = NULL;
1760 int ff_hevc_compute_poc(const HEVCSPS *sps, int pocTid0, int poc_lsb, int nal_unit_type)
1762 int max_poc_lsb = 1 << sps->log2_max_poc_lsb;