mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/magicyuv : use gradient_pred dsp func for 8 bits gradient mode
This commit is contained in:
parent
f2e9156eb6
commit
c76cf303ce
@ -345,7 +345,7 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata,
|
|||||||
MagicYUVContext *s = avctx->priv_data;
|
MagicYUVContext *s = avctx->priv_data;
|
||||||
int interlaced = s->interlaced;
|
int interlaced = s->interlaced;
|
||||||
AVFrame *p = s->p;
|
AVFrame *p = s->p;
|
||||||
int i, k, x;
|
int i, k, x, min_width;
|
||||||
GetBitContext gb;
|
GetBitContext gb;
|
||||||
uint8_t *dst;
|
uint8_t *dst;
|
||||||
|
|
||||||
@ -413,16 +413,19 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata,
|
|||||||
s->llviddsp.add_left_pred(dst, dst, width, 0);
|
s->llviddsp.add_left_pred(dst, dst, width, 0);
|
||||||
dst += stride;
|
dst += stride;
|
||||||
}
|
}
|
||||||
|
min_width = FFMIN(width, 32);
|
||||||
for (k = 1 + interlaced; k < height; k++) {
|
for (k = 1 + interlaced; k < height; k++) {
|
||||||
top = dst[-fake_stride];
|
top = dst[-fake_stride];
|
||||||
left = top + dst[0];
|
left = top + dst[0];
|
||||||
dst[0] = left;
|
dst[0] = left;
|
||||||
for (x = 1; x < width; x++) {
|
for (x = 1; x < min_width; x++) { /* dsp need aligned 32 */
|
||||||
top = dst[x - fake_stride];
|
top = dst[x - fake_stride];
|
||||||
lefttop = dst[x - (fake_stride + 1)];
|
lefttop = dst[x - (fake_stride + 1)];
|
||||||
left += top - lefttop + dst[x];
|
left += top - lefttop + dst[x];
|
||||||
dst[x] = left;
|
dst[x] = left;
|
||||||
}
|
}
|
||||||
|
if (width > 32)
|
||||||
|
s->llviddsp.add_gradient_pred(dst + 32, fake_stride, width - 32);
|
||||||
dst += stride;
|
dst += stride;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user