Skip to content
Permalink
Browse files

swscale: add unscaled copy from yuv420p10 t p010

  • Loading branch information
BtbN committed Sep 1, 2016
1 parent 499e8b0 commit f546ebd6db6f47934cde69eedb619dd57bb89d7c
Showing with 41 additions and 0 deletions.
  1. +41 −0 libswscale/swscale_unscaled.c
@@ -197,6 +197,42 @@ static int nv12ToPlanarWrapper(SwsContext *c, const uint8_t *src[],
return srcSliceH;
}

static int planarToP010Wrapper(SwsContext *c, const uint8_t *src8[],
int srcStride[], int srcSliceY,
int srcSliceH, uint8_t *dstParam8[],
int dstStride[])
{
uint16_t *src[] = {
(uint16_t*)(src8[0] + srcStride[0] * srcSliceY),
(uint16_t*)(src8[1] + srcStride[1] * srcSliceY),
(uint16_t*)(src8[2] + srcStride[2] * srcSliceY)
};
uint16_t *dstY = (uint16_t*)(dstParam8[0] + dstStride[0] * srcSliceY);
uint16_t *dstUV = (uint16_t*)(dstParam8[1] + dstStride[1] * srcSliceY / 2);
int x, y;

av_log(c, AV_LOG_ERROR, "USING FAST P010\n");

for (y = srcSliceY; y < srcSliceY + srcSliceH; y++) {
if (y % 2 == 0) {
for (x = 0; x < c->srcW / 2; x++) {
dstUV[x*2 ] = src[1][x] << 6;
dstUV[x*2+1] = src[2][x] << 6;
}
src[1] += srcStride[1] / 2;
src[2] += srcStride[2] / 2;
dstUV += dstStride[1] / 2;
}
for (x = 0; x < c->srcW; x++) {
dstY[x] = src[0][x] << 6;
}
src[0] += srcStride[0] / 2;
dstY += dstStride[0] / 2;
}

return srcSliceH;
}

static int planarToYuy2Wrapper(SwsContext *c, const uint8_t *src[],
int srcStride[], int srcSliceY, int srcSliceH,
uint8_t *dstParam[], int dstStride[])
@@ -1600,6 +1636,11 @@ void ff_get_unscaled_swscale(SwsContext *c)
!(flags & SWS_ACCURATE_RND) && (c->dither == SWS_DITHER_BAYER || c->dither == SWS_DITHER_AUTO) && !(dstH & 1)) {
c->swscale = ff_yuv2rgb_get_func_ptr(c);
}
/* yuv420p10le_to_p010le */
if ((srcFormat == AV_PIX_FMT_YUV420P10 || srcFormat == AV_PIX_FMT_YUVA420P10) &&
dstFormat == AV_PIX_FMT_P010) {
c->swscale = planarToP010Wrapper;
}

if (srcFormat == AV_PIX_FMT_YUV410P && !(dstH & 3) &&
(dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P) &&

0 comments on commit f546ebd

Please sign in to comment.