Mercurial > libavcodec.hg
changeset 2366:270666128b07 libavcodec
YUV420P to UYVY422 conversion patch by (Luca Abeni <lucabe72 >< email >< it>)
author | michael |
---|---|
date | Wed, 24 Nov 2004 22:54:16 +0000 |
parents | b76a4977447a |
children | c353719836af |
files | imgconvert.c |
diffstat | 1 files changed, 36 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/imgconvert.c Wed Nov 24 22:50:49 2004 +0000 +++ b/imgconvert.c Wed Nov 24 22:54:16 2004 +0000 @@ -955,6 +955,39 @@ } } +static void yuv420p_to_uyvy422(AVPicture *dst, const AVPicture *src, + int width, int height) +{ + int w, h; + uint8_t *line1, *line2, *linesrc = dst->data[0]; + uint8_t *lum1, *lum2, *lumsrc = src->data[0]; + uint8_t *cb1, *cb2 = src->data[1]; + uint8_t *cr1, *cr2 = src->data[2]; + + for(h = height / 2; h--;) { + line1 = linesrc; + line2 = linesrc + dst->linesize[0]; + + lum1 = lumsrc; + lum2 = lumsrc + src->linesize[0]; + + cb1 = cb2; + cr1 = cr2; + + for(w = width / 2; w--;) { + *line1++ = *line2++ = *cb1++; + *line1++ = *lum1++; *line2++ = *lum2++; + *line1++ = *line2++ = *cr1++; + *line1++ = *lum1++; *line2++ = *lum2++; + } + + linesrc += dst->linesize[0] * 2; + lumsrc += src->linesize[0] * 2; + cb2 += src->linesize[1]; + cr2 += src->linesize[2]; + } +} + #define SCALEBITS 10 #define ONE_HALF (1 << (SCALEBITS - 1)) #define FIX(x) ((int) ((x) * (1<<SCALEBITS) + 0.5)) @@ -1682,6 +1715,9 @@ [PIX_FMT_RGBA32] = { .convert = yuv420p_to_rgba32 }, + [PIX_FMT_UYVY422] = { + .convert = yuv420p_to_uyvy422, + }, }, [PIX_FMT_YUV422P] = { [PIX_FMT_YUV422] = {