greyscale decoding (option to skip u,v planes) support
Originally committed as revision 3487 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6cb38650e8
commit
f970a8e682
@ -223,6 +223,9 @@ static unsigned long iv_decode_frame(Indeo3DecodeContext *s,
|
|||||||
hdr_height, buf_pos + offs * 2, fflags2, hdr_pos, buf_pos,
|
hdr_height, buf_pos + offs * 2, fflags2, hdr_pos, buf_pos,
|
||||||
min(hdr_width, 160));
|
min(hdr_width, 160));
|
||||||
|
|
||||||
|
if (!(s->avctx->flags & CODEC_FLAG_GRAY))
|
||||||
|
{
|
||||||
|
|
||||||
buf_pos = buf + 16 + offs2;
|
buf_pos = buf + 16 + offs2;
|
||||||
offs = le2me_32(*(uint32_t *)buf_pos);
|
offs = le2me_32(*(uint32_t *)buf_pos);
|
||||||
buf_pos += 4;
|
buf_pos += 4;
|
||||||
@ -239,6 +242,8 @@ static unsigned long iv_decode_frame(Indeo3DecodeContext *s,
|
|||||||
chroma_height, buf_pos + offs * 2, fflags2, hdr_pos, buf_pos,
|
chroma_height, buf_pos + offs * 2, fflags2, hdr_pos, buf_pos,
|
||||||
min(chroma_width, 40));
|
min(chroma_width, 40));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1080,6 +1085,8 @@ static int indeo3_decode_frame(AVCodecContext *avctx,
|
|||||||
dest += s->frame.linesize[0];
|
dest += s->frame.linesize[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(s->avctx->flags & CODEC_FLAG_GRAY))
|
||||||
|
{
|
||||||
src = s->cur_frame->Ubuf;
|
src = s->cur_frame->Ubuf;
|
||||||
dest = s->frame.data[1];
|
dest = s->frame.data[1];
|
||||||
for (y = 0; y < s->height / 4; y++) {
|
for (y = 0; y < s->height / 4; y++) {
|
||||||
@ -1095,6 +1102,7 @@ static int indeo3_decode_frame(AVCodecContext *avctx,
|
|||||||
src += s->cur_frame->uv_w;
|
src += s->cur_frame->uv_w;
|
||||||
dest += s->frame.linesize[2];
|
dest += s->frame.linesize[2];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*data_size=sizeof(AVFrame);
|
*data_size=sizeof(AVFrame);
|
||||||
*(AVFrame*)data= s->frame;
|
*(AVFrame*)data= s->frame;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user