mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-23 11:19:55 +00:00
hevc: reuse edge emu buffer for coefficients
Kind of hackish but... Reviewed-by: Mickael Raulet <Mickael.Raulet@insa-rennes.fr> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
79551d2c7a
commit
9a3653c9ec
@ -972,8 +972,8 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0,
|
||||
ptrdiff_t stride = s->frame->linesize[1];
|
||||
int hshift = s->sps->hshift[1];
|
||||
int vshift = s->sps->vshift[1];
|
||||
int16_t *coeffs_y = lc->tu.coeffs[0];
|
||||
int16_t *coeffs = lc->tu.coeffs[1];
|
||||
int16_t *coeffs_y = (int16_t*)lc->edge_emu_buffer;
|
||||
int16_t *coeffs = (int16_t*)lc->edge_emu_buffer2;
|
||||
int size = 1 << log2_trafo_size_c;
|
||||
|
||||
uint8_t *dst = &s->frame->data[1][(y0 >> vshift) * stride +
|
||||
@ -1001,8 +1001,8 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0,
|
||||
ptrdiff_t stride = s->frame->linesize[2];
|
||||
int hshift = s->sps->hshift[2];
|
||||
int vshift = s->sps->vshift[2];
|
||||
int16_t *coeffs_y = lc->tu.coeffs[0];
|
||||
int16_t *coeffs = lc->tu.coeffs[1];
|
||||
int16_t *coeffs_y = (int16_t*)lc->edge_emu_buffer;
|
||||
int16_t *coeffs = (int16_t*)lc->edge_emu_buffer2;
|
||||
int size = 1 << log2_trafo_size_c;
|
||||
|
||||
uint8_t *dst = &s->frame->data[2][(y0 >> vshift) * stride +
|
||||
|
@ -679,7 +679,6 @@ typedef struct PredictionUnit {
|
||||
} PredictionUnit;
|
||||
|
||||
typedef struct TransformUnit {
|
||||
DECLARE_ALIGNED(32, int16_t, coeffs[2][MAX_TB_SIZE * MAX_TB_SIZE]);
|
||||
int cu_qp_delta;
|
||||
|
||||
int res_scale_val;
|
||||
|
@ -1079,7 +1079,7 @@ void ff_hevc_hls_residual_coding(HEVCContext *s, int x0, int y0,
|
||||
int vshift = s->sps->vshift[c_idx];
|
||||
uint8_t *dst = &s->frame->data[c_idx][(y0 >> vshift) * stride +
|
||||
((x0 >> hshift) << s->sps->pixel_shift)];
|
||||
int16_t *coeffs = lc->tu.coeffs[c_idx > 0];
|
||||
int16_t *coeffs = (int16_t*)(c_idx ? lc->edge_emu_buffer2 : lc->edge_emu_buffer);
|
||||
uint8_t significant_coeff_group_flag[8][8] = {{0}};
|
||||
int explicit_rdpcm_flag = 0;
|
||||
int explicit_rdpcm_dir_flag;
|
||||
@ -1552,7 +1552,7 @@ void ff_hevc_hls_residual_coding(HEVCContext *s, int x0, int y0,
|
||||
}
|
||||
}
|
||||
if (lc->tu.cross_pf) {
|
||||
int16_t *coeffs_y = lc->tu.coeffs[0];
|
||||
int16_t *coeffs_y = (int16_t*)lc->edge_emu_buffer;
|
||||
|
||||
for (i = 0; i < (trafo_size * trafo_size); i++) {
|
||||
coeffs[i] = coeffs[i] + ((lc->tu.res_scale_val * coeffs_y[i]) >> 3);
|
||||
|
Loading…
Reference in New Issue
Block a user