mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Support decoding fourcc YVYU.
Based on work by ami_stuff. Fixes ticket #1352
This commit is contained in:
parent
5c3f79198c
commit
ab7d6cb8f7
@ -157,6 +157,7 @@ const PixelFormatTag ff_raw_pix_fmt_tags[] = {
|
||||
/* special */
|
||||
{ PIX_FMT_RGB565LE,MKTAG( 3 , 0 , 0 , 0 ) }, /* flipped RGB565LE */
|
||||
{ PIX_FMT_YUV444P, MKTAG('Y', 'V', '2', '4') }, /* YUV444P, swapped UV */
|
||||
{ PIX_FMT_YUYV422, MKTAG('Y', 'V', 'Y', 'U') }, /* YUYV, swapped UV */
|
||||
|
||||
{ PIX_FMT_NONE, 0 },
|
||||
};
|
||||
|
@ -235,6 +235,16 @@ static int raw_decode(AVCodecContext *avctx,
|
||||
line += picture->linesize[0];
|
||||
}
|
||||
}
|
||||
if(avctx->codec_tag == AV_RL32("YVYU") &&
|
||||
avctx->pix_fmt == PIX_FMT_YUYV422) {
|
||||
int x, y;
|
||||
uint8_t *line = picture->data[0];
|
||||
for(y = 0; y < avctx->height; y++) {
|
||||
for(x = 0; x < avctx->width - 1; x += 2)
|
||||
FFSWAP(uint8_t, line[2*x + 1], line[2*x + 3]);
|
||||
line += picture->linesize[0];
|
||||
}
|
||||
}
|
||||
|
||||
*data_size = sizeof(AVPicture);
|
||||
return buf_size;
|
||||
|
@ -199,6 +199,7 @@ const AVCodecTag ff_codec_bmp_tags[] = {
|
||||
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'V', '9') },
|
||||
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'U', '9') },
|
||||
{ CODEC_ID_RAWVIDEO, MKTAG('a', 'u', 'v', '2') },
|
||||
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'Y', 'U') },
|
||||
{ CODEC_ID_FRWU, MKTAG('F', 'R', 'W', 'U') },
|
||||
{ CODEC_ID_R10K, MKTAG('R', '1', '0', 'k') },
|
||||
{ CODEC_ID_R210, MKTAG('r', '2', '1', '0') },
|
||||
|
Loading…
Reference in New Issue
Block a user