mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-04 06:08:26 +02:00
swscale: fix 16-bit scaling when output is 8-bits.
We would use the second half of the U plane buffer, rather than the V plane buffer, to output the V plane pixels.
This commit is contained in:
parent
08b57574c6
commit
ac9ac45aca
@ -83,7 +83,7 @@ static void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter,
|
||||
*aDest = CONFIG_SWSCALE_ALPHA ? dest[3] : NULL;
|
||||
|
||||
if (uDest) {
|
||||
x86_reg uv_off = c->uv_off;
|
||||
x86_reg uv_off = c->uv_offx2 >> 1;
|
||||
for(i=0; i<8; i++) c->dither16[i] = chrDither[i]>>4;
|
||||
YSCALEYUV2YV12X(CHR_MMX_FILTER_OFFSET, uDest, chrDstW, 0)
|
||||
for(i=0; i<8; i++) c->dither16[i] = chrDither[(i+3)&7]>>4;
|
||||
@ -170,7 +170,7 @@ static void RENAME(yuv2yuvX_ar)(SwsContext *c, const int16_t *lumFilter,
|
||||
*aDest = CONFIG_SWSCALE_ALPHA ? dest[3] : NULL;
|
||||
|
||||
if (uDest) {
|
||||
x86_reg uv_off = c->uv_off;
|
||||
x86_reg uv_off = c->uv_offx2 >> 1;
|
||||
for(i=0; i<8; i++) c->dither32[i] = chrDither[i]<<12;
|
||||
YSCALEYUV2YV12X_ACCURATE(CHR_MMX_FILTER_OFFSET, uDest, chrDstW, 0)
|
||||
for(i=0; i<8; i++) c->dither32[i] = chrDither[(i+3)&7]<<12;
|
||||
@ -485,7 +485,7 @@ static void RENAME(yuv2rgb32_X_ar)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {
|
||||
YSCALEYUV2PACKEDX_ACCURATE
|
||||
@ -518,7 +518,7 @@ static void RENAME(yuv2rgb32_X)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {
|
||||
YSCALEYUV2PACKEDX
|
||||
@ -575,7 +575,7 @@ static void RENAME(yuv2rgb565_X_ar)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX_ACCURATE
|
||||
YSCALEYUV2RGBX
|
||||
@ -599,7 +599,7 @@ static void RENAME(yuv2rgb565_X)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX
|
||||
YSCALEYUV2RGBX
|
||||
@ -652,7 +652,7 @@ static void RENAME(yuv2rgb555_X_ar)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX_ACCURATE
|
||||
YSCALEYUV2RGBX
|
||||
@ -676,7 +676,7 @@ static void RENAME(yuv2rgb555_X)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX
|
||||
YSCALEYUV2RGBX
|
||||
@ -809,7 +809,7 @@ static void RENAME(yuv2bgr24_X_ar)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX_ACCURATE
|
||||
YSCALEYUV2RGBX
|
||||
@ -833,7 +833,7 @@ static void RENAME(yuv2bgr24_X)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX
|
||||
YSCALEYUV2RGBX
|
||||
@ -874,7 +874,7 @@ static void RENAME(yuv2yuyv422_X_ar)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX_ACCURATE
|
||||
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
|
||||
@ -895,7 +895,7 @@ static void RENAME(yuv2yuyv422_X)(SwsContext *c, const int16_t *lumFilter,
|
||||
{
|
||||
x86_reg dummy=0;
|
||||
x86_reg dstW_reg = dstW;
|
||||
x86_reg uv_off = c->uv_off << 1;
|
||||
x86_reg uv_off = c->uv_offx2;
|
||||
|
||||
YSCALEYUV2PACKEDX
|
||||
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user