Skip to content

Commit

Permalink
Обновление: ffmpeg git-n7.1-dev-1050-g2c38ca3d37.
Browse files Browse the repository at this point in the history
  • Loading branch information
v0lt committed Jun 2, 2024
1 parent 0754afe commit ca05bdf
Show file tree
Hide file tree
Showing 18 changed files with 301 additions and 237 deletions.
2 changes: 1 addition & 1 deletion docs/Changelog.Rus.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MPCVideoDec
Декодирование VVC сделано с помощью vvdec (https://github.com/fraunhoferhhi/vvdec).

Обновлены библиотеки:
ffmpeg git-n7.1-dev-1020-ge0db1f51d6;
ffmpeg git-n7.1-dev-1050-g2c38ca3d37;
vvdec git-v2.3.0-5-gffe3010.


Expand Down
2 changes: 1 addition & 1 deletion docs/Changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MPCVideoDec
VVC decoding is done using vvdec (https://github.com/fraunhoferhhi/vvdec).

Updated libraries:
ffmpeg git-n7.1-dev-1020-ge0db1f51d6;
ffmpeg git-n7.1-dev-1050-g2c38ca3d37;
vvdec git-v2.3.0-5-gffe3010.


Expand Down
44 changes: 22 additions & 22 deletions src/ExtLib/ffmpeg/libavcodec/dxva2_hevc.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,16 @@ void ff_dxva2_hevc_fill_picture_parameters(const AVCodecContext *avctx, AVDXVACo
pp->PicHeightInMinCbsY = sps->min_cb_height;

// ==> Start patch MPC
if (sps->sps_range_extension_flag) {
ppext->dwRangeExtensionFlags |= (sps->transform_skip_rotation_enabled_flag << 0) |
(sps->transform_skip_context_enabled_flag << 1) |
(sps->implicit_rdpcm_enabled_flag << 2) |
(sps->explicit_rdpcm_enabled_flag << 3) |
(sps->extended_precision_processing_flag << 4) |
(sps->intra_smoothing_disabled_flag << 5) |
(sps->high_precision_offsets_enabled_flag << 6) |
(sps->persistent_rice_adaptation_enabled_flag << 7) |
(sps->cabac_bypass_alignment_enabled_flag << 8);
if (sps->range_extension) {
ppext->dwRangeExtensionFlags |= (sps->transform_skip_rotation_enabled << 0) |
(sps->transform_skip_context_enabled << 1) |
(sps->implicit_rdpcm_enabled << 2) |
(sps->explicit_rdpcm_enabled << 3) |
(sps->extended_precision_processing << 4) |
(sps->intra_smoothing_disabled << 5) |
(sps->high_precision_offsets_enabled << 6) |
(sps->persistent_rice_adaptation_enabled << 7) |
(sps->cabac_bypass_alignment_enabled << 8);
}
if (pps->pps_range_extensions_flag) {
ppext->dwRangeExtensionFlags |= (pps->cross_component_prediction_enabled_flag << 9) |
Expand All @@ -113,7 +113,7 @@ void ff_dxva2_hevc_fill_picture_parameters(const AVCodecContext *avctx, AVDXVACo
// ==> End patch MPC

pp->wFormatAndSequenceInfoFlags = (sps->chroma_format_idc << 0) |
(sps->separate_colour_plane_flag << 2) |
(sps->separate_colour_plane << 2) |
((sps->bit_depth - 8) << 3) |
((sps->bit_depth - 8) << 6) |
((sps->log2_max_poc_lsb - 4) << 9) |
Expand All @@ -140,18 +140,18 @@ void ff_dxva2_hevc_fill_picture_parameters(const AVCodecContext *avctx, AVDXVACo
pp->wNumBitsForShortTermRPSInSlice = h->sh.short_term_ref_pic_set_size;
}

pp->dwCodingParamToolFlags = (sps->scaling_list_enable_flag << 0) |
(sps->amp_enabled_flag << 1) |
pp->dwCodingParamToolFlags = (sps->scaling_list_enabled << 0) |
(sps->amp_enabled << 1) |
(sps->sao_enabled << 2) |
(sps->pcm_enabled_flag << 3) |
((sps->pcm_enabled_flag ? (sps->pcm.bit_depth - 1) : 0) << 4) |
((sps->pcm_enabled_flag ? (sps->pcm.bit_depth_chroma - 1) : 0) << 8) |
((sps->pcm_enabled_flag ? (sps->pcm.log2_min_pcm_cb_size - 3) : 0) << 12) |
((sps->pcm_enabled_flag ? (sps->pcm.log2_max_pcm_cb_size - sps->pcm.log2_min_pcm_cb_size) : 0) << 14) |
(sps->pcm.loop_filter_disable_flag << 16) |
(sps->long_term_ref_pics_present_flag << 17) |
(sps->sps_temporal_mvp_enabled_flag << 18) |
(sps->sps_strong_intra_smoothing_enable_flag << 19) |
(sps->pcm_enabled << 3) |
((sps->pcm_enabled ? (sps->pcm.bit_depth - 1) : 0) << 4) |
((sps->pcm_enabled ? (sps->pcm.bit_depth_chroma - 1) : 0) << 8) |
((sps->pcm_enabled ? (sps->pcm.log2_min_pcm_cb_size - 3) : 0) << 12) |
((sps->pcm_enabled ? (sps->pcm.log2_max_pcm_cb_size - sps->pcm.log2_min_pcm_cb_size) : 0) << 14) |
(sps->pcm_loop_filter_disabled << 16) |
(sps->long_term_ref_pics_present << 17) |
(sps->temporal_mvp_enabled << 18) |
(sps->strong_intra_smoothing_enabled << 19) |
(pps->dependent_slice_segments_enabled_flag << 20) |
(pps->output_flag_present_flag << 21) |
(pps->num_extra_slice_header_bits << 22) |
Expand Down
36 changes: 18 additions & 18 deletions src/ExtLib/ffmpeg/libavcodec/hevc_cabac.c
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,7 @@ void ff_hevc_save_states(HEVCLocalContext *lc, int ctb_addr_ts)
(s->ps.sps->ctb_width == 2 &&
ctb_addr_ts % s->ps.sps->ctb_width == 0))) {
memcpy(lc->common_cabac_state->state, lc->cabac_state, HEVC_CONTEXTS);
if (s->ps.sps->persistent_rice_adaptation_enabled_flag) {
if (s->ps.sps->persistent_rice_adaptation_enabled) {
memcpy(lc->common_cabac_state->stat_coeff, lc->stat_coeff, HEVC_STAT_COEFFS);
}
}
Expand All @@ -417,7 +417,7 @@ void ff_hevc_save_states(HEVCLocalContext *lc, int ctb_addr_ts)
static void load_states(HEVCLocalContext *lc, const HEVCContext *s)
{
memcpy(lc->cabac_state, lc->common_cabac_state->state, HEVC_CONTEXTS);
if (s->ps.sps->persistent_rice_adaptation_enabled_flag) {
if (s->ps.sps->persistent_rice_adaptation_enabled) {
memcpy(lc->stat_coeff, lc->common_cabac_state->stat_coeff, HEVC_STAT_COEFFS);
}
}
Expand Down Expand Up @@ -683,7 +683,7 @@ int ff_hevc_part_mode_decode(HEVCLocalContext *lc, int log2_cb_size)
return PART_NxN; // 000
}

if (!lc->parent->ps.sps->amp_enabled_flag) {
if (!lc->parent->ps.sps->amp_enabled) {
if (GET_CABAC(PART_MODE_OFFSET + 1)) // 01
return PART_2NxN;
return PART_Nx2N;
Expand Down Expand Up @@ -1091,7 +1091,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
scale_m = 16; // default when no custom scaling lists.
dc_scale = 16;

if (s->ps.sps->scaling_list_enable_flag && !(transform_skip_flag && log2_trafo_size > 2)) {
if (s->ps.sps->scaling_list_enabled && !(transform_skip_flag && log2_trafo_size > 2)) {
const ScalingList *sl = s->ps.pps->scaling_list_data_present_flag ?
&s->ps.pps->scaling_list : &s->ps.sps->scaling_list;
int matrix_id = lc->cu.pred_mode != MODE_INTRA;
Expand All @@ -1109,7 +1109,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
dc_scale = 0;
}

if (lc->cu.pred_mode == MODE_INTER && s->ps.sps->explicit_rdpcm_enabled_flag &&
if (lc->cu.pred_mode == MODE_INTER && s->ps.sps->explicit_rdpcm_enabled &&
(transform_skip_flag || lc->cu.cu_transquant_bypass_flag)) {
explicit_rdpcm_flag = explicit_rdpcm_flag_decode(lc, c_idx);
if (explicit_rdpcm_flag) {
Expand Down Expand Up @@ -1240,7 +1240,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
};
const uint8_t *ctx_idx_map_p;
int scf_offset = 0;
if (s->ps.sps->transform_skip_context_enabled_flag &&
if (s->ps.sps->transform_skip_context_enabled &&
(transform_skip_flag || lc->cu.cu_transquant_bypass_flag)) {
ctx_idx_map_p = &ctx_idx_map[4 * 16];
if (c_idx == 0) {
Expand Down Expand Up @@ -1281,7 +1281,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
}
}
if (implicit_non_zero_coeff == 0) {
if (s->ps.sps->transform_skip_context_enabled_flag &&
if (s->ps.sps->transform_skip_context_enabled &&
(transform_skip_flag || lc->cu.cu_transquant_bypass_flag)) {
if (c_idx == 0) {
scf_offset = 42;
Expand Down Expand Up @@ -1326,7 +1326,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
// initialize first elem of coeff_bas_level_greater1_flag
int ctx_set = (i > 0 && c_idx == 0) ? 2 : 0;

if (s->ps.sps->persistent_rice_adaptation_enabled_flag) {
if (s->ps.sps->persistent_rice_adaptation_enabled) {
if (!transform_skip_flag && !lc->cu.cu_transquant_bypass_flag)
sb_type = 2 * (c_idx == 0 ? 1 : 0);
else
Expand Down Expand Up @@ -1355,7 +1355,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,

if (lc->cu.cu_transquant_bypass_flag ||
(lc->cu.pred_mode == MODE_INTRA &&
s->ps.sps->implicit_rdpcm_enabled_flag && transform_skip_flag &&
s->ps.sps->implicit_rdpcm_enabled && transform_skip_flag &&
(pred_mode_intra == 10 || pred_mode_intra == 26 )) ||
explicit_rdpcm_flag)
sign_hidden = 0;
Expand All @@ -1381,8 +1381,8 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,

trans_coeff_level += last_coeff_abs_level_remaining;
if (trans_coeff_level > (3 << c_rice_param))
c_rice_param = s->ps.sps->persistent_rice_adaptation_enabled_flag ? c_rice_param + 1 : FFMIN(c_rice_param + 1, 4);
if (s->ps.sps->persistent_rice_adaptation_enabled_flag && !rice_init) {
c_rice_param = s->ps.sps->persistent_rice_adaptation_enabled ? c_rice_param + 1 : FFMIN(c_rice_param + 1, 4);
if (s->ps.sps->persistent_rice_adaptation_enabled && !rice_init) {
int c_rice_p_init = lc->stat_coeff[sb_type] / 4;
if (last_coeff_abs_level_remaining >= (3 << c_rice_p_init))
lc->stat_coeff[sb_type]++;
Expand All @@ -1397,8 +1397,8 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,

trans_coeff_level = 1 + last_coeff_abs_level_remaining;
if (trans_coeff_level > (3 << c_rice_param))
c_rice_param = s->ps.sps->persistent_rice_adaptation_enabled_flag ? c_rice_param + 1 : FFMIN(c_rice_param + 1, 4);
if (s->ps.sps->persistent_rice_adaptation_enabled_flag && !rice_init) {
c_rice_param = s->ps.sps->persistent_rice_adaptation_enabled ? c_rice_param + 1 : FFMIN(c_rice_param + 1, 4);
if (s->ps.sps->persistent_rice_adaptation_enabled && !rice_init) {
int c_rice_p_init = lc->stat_coeff[sb_type] / 4;
if (last_coeff_abs_level_remaining >= (3 << c_rice_p_init))
lc->stat_coeff[sb_type]++;
Expand All @@ -1417,7 +1417,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
trans_coeff_level = -trans_coeff_level;
coeff_sign_flag <<= 1;
if(!lc->cu.cu_transquant_bypass_flag) {
if (s->ps.sps->scaling_list_enable_flag && !(transform_skip_flag && log2_trafo_size > 2)) {
if (s->ps.sps->scaling_list_enabled && !(transform_skip_flag && log2_trafo_size > 2)) {
if(y_c || x_c || log2_trafo_size < 4) {
switch(log2_trafo_size) {
case 3: pos = (y_c << 3) + x_c; break;
Expand Down Expand Up @@ -1445,15 +1445,15 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
}

if (lc->cu.cu_transquant_bypass_flag) {
if (explicit_rdpcm_flag || (s->ps.sps->implicit_rdpcm_enabled_flag &&
if (explicit_rdpcm_flag || (s->ps.sps->implicit_rdpcm_enabled &&
(pred_mode_intra == 10 || pred_mode_intra == 26))) {
int mode = s->ps.sps->implicit_rdpcm_enabled_flag ? (pred_mode_intra == 26) : explicit_rdpcm_dir_flag;
int mode = s->ps.sps->implicit_rdpcm_enabled ? (pred_mode_intra == 26) : explicit_rdpcm_dir_flag;

s->hevcdsp.transform_rdpcm(coeffs, log2_trafo_size, mode);
}
} else {
if (transform_skip_flag) {
int rot = s->ps.sps->transform_skip_rotation_enabled_flag &&
int rot = s->ps.sps->transform_skip_rotation_enabled &&
log2_trafo_size == 2 &&
lc->cu.pred_mode == MODE_INTRA;
if (rot) {
Expand All @@ -1463,7 +1463,7 @@ void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,

s->hevcdsp.dequant(coeffs, log2_trafo_size);

if (explicit_rdpcm_flag || (s->ps.sps->implicit_rdpcm_enabled_flag &&
if (explicit_rdpcm_flag || (s->ps.sps->implicit_rdpcm_enabled &&
lc->cu.pred_mode == MODE_INTRA &&
(pred_mode_intra == 10 || pred_mode_intra == 26))) {
int mode = explicit_rdpcm_flag ? explicit_rdpcm_dir_flag : (pred_mode_intra == 26);
Expand Down
8 changes: 4 additions & 4 deletions src/ExtLib/ffmpeg/libavcodec/hevc_filter.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ static void restore_tqb_pixels(const HEVCContext *s,
int x0, int y0, int width, int height, int c_idx)
{
if ( s->ps.pps->transquant_bypass_enable_flag ||
(s->ps.sps->pcm.loop_filter_disable_flag && s->ps.sps->pcm_enabled_flag)) {
(s->ps.sps->pcm_loop_filter_disabled && s->ps.sps->pcm_enabled)) {
int x, y;
int min_pu_size = 1 << s->ps.sps->log2_min_pu_size;
int hshift = s->ps.sps->hshift[c_idx];
Expand Down Expand Up @@ -330,7 +330,7 @@ static void sao_filter_CTB(HEVCLocalContext *lc, const HEVCContext *s, int x, in
copy_CTB_to_hv(s, src, stride_src, x0, y0, width, height, c_idx,
x_ctb, y_ctb);
if (s->ps.pps->transquant_bypass_enable_flag ||
(s->ps.sps->pcm.loop_filter_disable_flag && s->ps.sps->pcm_enabled_flag)) {
(s->ps.sps->pcm_loop_filter_disabled && s->ps.sps->pcm_enabled)) {
dst = lc->edge_emu_buffer;
stride_dst = 2*MAX_PB_SIZE;
copy_CTB(dst, src, width << s->ps.sps->pixel_shift, height, stride_dst, stride_src);
Expand Down Expand Up @@ -500,8 +500,8 @@ static void deblocking_filter_CTB(const HEVCContext *s, int x0, int y0)
int cur_beta_offset = s->deblock[ctb].beta_offset;
int left_tc_offset, left_beta_offset;
int tc_offset, beta_offset;
int pcmf = (s->ps.sps->pcm_enabled_flag &&
s->ps.sps->pcm.loop_filter_disable_flag) ||
int pcmf = (s->ps.sps->pcm_enabled &&
s->ps.sps->pcm_loop_filter_disabled) ||
s->ps.pps->transquant_bypass_enable_flag;

if (x0) {
Expand Down
2 changes: 1 addition & 1 deletion src/ExtLib/ffmpeg/libavcodec/hevc_parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ static int hevc_parse_slice_header(AVCodecParserContext *s, H2645NAL *nal,
if (ps->pps->output_flag_present_flag)
skip_bits1(gb); // pic_output_flag

if (ps->sps->separate_colour_plane_flag)
if (ps->sps->separate_colour_plane)
skip_bits(gb, 2); // colour_plane_id

if (!IS_IDR_NAL(nal)) {
Expand Down
Loading

0 comments on commit ca05bdf

Please sign in to comment.