summaryrefslogtreecommitdiff
path: root/libavcodec/hevc_cabac.c
diff options
context:
space:
mode:
authorMickaƫl Raulet <mraulet@insa-rennes.fr>2014-07-14 21:17:33 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-07-15 13:37:27 +0200
commit250430bf28118cf843df887e8c8b345f1c60c82d (patch)
tree36906b3a30cadbaffe28cf554d5dacd9cb99d7f4 /libavcodec/hevc_cabac.c
parent255086a7e06417d98417cea192053b8a8531eb24 (diff)
hevc: separate residu and prediction (needed for Range Extension)
(cherry picked from commit 6b3856ef57d66f2e59ee61fd2eb5f83b6d0d7d4a) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/hevc_cabac.c')
-rw-r--r--libavcodec/hevc_cabac.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/libavcodec/hevc_cabac.c b/libavcodec/hevc_cabac.c
index 2647388dd3..3da2bf0617 100644
--- a/libavcodec/hevc_cabac.c
+++ b/libavcodec/hevc_cabac.c
@@ -1383,17 +1383,15 @@ void ff_hevc_hls_residual_coding(HEVCContext *s, int x0, int y0,
}
}
- if (lc->cu.cu_transquant_bypass_flag) {
- s->hevcdsp.transquant_bypass[log2_trafo_size-2](dst, coeffs, stride);
- } else {
+ if (!lc->cu.cu_transquant_bypass_flag) {
if (transform_skip_flag)
- s->hevcdsp.transform_skip(dst, coeffs, stride);
+ s->hevcdsp.transform_skip(coeffs, log2_trafo_size);
else if (lc->cu.pred_mode == MODE_INTRA && c_idx == 0 && log2_trafo_size == 2)
- s->hevcdsp.transform_4x4_luma_add(dst, coeffs, stride);
+ s->hevcdsp.idct_4x4_luma(coeffs);
else {
int max_xy = FFMAX(last_significant_coeff_x, last_significant_coeff_y);
if (max_xy == 0)
- s->hevcdsp.transform_dc_add[log2_trafo_size-2](dst, coeffs, stride);
+ s->hevcdsp.idct_dc[log2_trafo_size-2](coeffs);
else {
int col_limit = last_significant_coeff_x + last_significant_coeff_y + 4;
if (max_xy < 4)
@@ -1402,10 +1400,11 @@ void ff_hevc_hls_residual_coding(HEVCContext *s, int x0, int y0,
col_limit = FFMIN(8, col_limit);
else if (max_xy < 12)
col_limit = FFMIN(24, col_limit);
- s->hevcdsp.transform_add[log2_trafo_size-2](dst, coeffs, stride, col_limit);
+ s->hevcdsp.idct[log2_trafo_size-2](coeffs, col_limit);
}
}
}
+ s->hevcdsp.transform_add[log2_trafo_size-2](dst, coeffs, stride);
}
void ff_hevc_hls_mvd_coding(HEVCContext *s, int x0, int y0, int log2_cb_size)