summaryrefslogtreecommitdiff
path: root/libavcodec/utvideodec.c
diff options
context:
space:
mode:
authorMartin Vignali <martin.vignali@gmail.com>2017-11-26 19:18:48 +0100
committerMartin Vignali <martin.vignali@gmail.com>2017-12-09 15:11:12 +0100
commit9e1c9633cc7b025f6b04e39fdd7f9983a73b5bfa (patch)
treebdbd941463ad751a1bf3d20b253798f0cbfc4221 /libavcodec/utvideodec.c
parent179a2f04eb2bd6df7221883a92dc4e00cf94394b (diff)
downloadffmpeg-9e1c9633cc7b025f6b04e39fdd7f9983a73b5bfa.tar.gz
avcodec/utvideodec : use dsp add_median_pred for second line
process start of the line in scalar, before call dsp (dsp need align 16)
Diffstat (limited to 'libavcodec/utvideodec.c')
-rw-r--r--libavcodec/utvideodec.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libavcodec/utvideodec.c b/libavcodec/utvideodec.c
index 83dbae99b1..d2da825fbf 100644
--- a/libavcodec/utvideodec.c
+++ b/libavcodec/utvideodec.c
@@ -373,12 +373,16 @@ static void restore_median_planar(UtvideoContext *c, uint8_t *src, ptrdiff_t str
C = bsrc[-stride];
bsrc[0] += C;
A = bsrc[0];
- for (i = 1; i < width; i++) {
+ for (i = 1; i < FFMIN(width, 16); i++) { /* scalar loop (DSP need align 16) */
B = bsrc[i - stride];
bsrc[i] += mid_pred(A, B, (uint8_t)(A + B - C));
C = B;
A = bsrc[i];
}
+ if (width > 16)
+ c->llviddsp.add_median_pred(bsrc + 16, bsrc - stride + 16,
+ bsrc + 16, width - 16, &A, &B);
+
bsrc += stride;
// the rest of lines use continuous median prediction
for (j = 2; j < slice_height; j++) {
@@ -424,12 +428,16 @@ static void restore_median_planar_il(UtvideoContext *c, uint8_t *src, ptrdiff_t
C = bsrc[-stride2];
bsrc[0] += C;
A = bsrc[0];
- for (i = 1; i < width; i++) {
+ for (i = 1; i < FFMIN(width, 16); i++) { /* scalar loop (DSP need align 16) */
B = bsrc[i - stride2];
bsrc[i] += mid_pred(A, B, (uint8_t)(A + B - C));
C = B;
A = bsrc[i];
}
+ if (width > 16)
+ c->llviddsp.add_median_pred(bsrc + 16, bsrc - stride2 + 16,
+ bsrc + 16, width - 16, &A, &B);
+
c->llviddsp.add_median_pred(bsrc + stride, bsrc - stride,
bsrc + stride, width, &A, &B);
bsrc += stride2;