mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
minimum support for YUV411P (new combined scaler/converter will handle that better...)
Originally committed as revision 1013 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
47fa9c203a
commit
789587d595
@ -399,6 +399,31 @@ static void grow22(UINT8 *dst, int dst_wrap,
|
||||
}
|
||||
}
|
||||
|
||||
/* 1x2 -> 2x1. width and height are given for the source picture */
|
||||
static void conv411(UINT8 *dst, int dst_wrap,
|
||||
UINT8 *src, int src_wrap,
|
||||
int width, int height)
|
||||
{
|
||||
int w, c;
|
||||
UINT8 *s1, *s2, *d;
|
||||
|
||||
for(;height > 0; height -= 2) {
|
||||
s1 = src;
|
||||
s2 = src + src_wrap;
|
||||
d = dst;
|
||||
for(w = width;w > 0; w--) {
|
||||
c = (s1[0] + s2[0]) >> 1;
|
||||
d[0] = c;
|
||||
d[1] = c;
|
||||
s1++;
|
||||
s2++;
|
||||
d += 2;
|
||||
}
|
||||
src += src_wrap * 2;
|
||||
dst += dst_wrap;
|
||||
}
|
||||
}
|
||||
|
||||
static void img_copy(UINT8 *dst, int dst_wrap,
|
||||
UINT8 *src, int src_wrap,
|
||||
int width, int height)
|
||||
@ -628,6 +653,17 @@ int img_convert(AVPicture *dst, int dst_pix_fmt,
|
||||
} else if (dst_pix_fmt == PIX_FMT_YUV420P) {
|
||||
|
||||
switch(pix_fmt) {
|
||||
case PIX_FMT_YUV411P:
|
||||
img_copy(dst->data[0], dst->linesize[0],
|
||||
src->data[0], src->linesize[0],
|
||||
width, height);
|
||||
conv411(dst->data[1], dst->linesize[1],
|
||||
src->data[1], src->linesize[1],
|
||||
width / 4, height);
|
||||
conv411(dst->data[2], dst->linesize[2],
|
||||
src->data[2], src->linesize[2],
|
||||
width / 4, height);
|
||||
break;
|
||||
case PIX_FMT_YUV410P:
|
||||
img_copy(dst->data[0], dst->linesize[0],
|
||||
src->data[0], src->linesize[0],
|
||||
|
Loading…
Reference in New Issue
Block a user