mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
avcodec/utvideodec : use dsp add_median_pred for second line
process start of the line in scalar, before call dsp (dsp need align 16)
This commit is contained in:
parent
179a2f04eb
commit
9e1c9633cc
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user