Mercurial > libavcodec.hg
changeset 738:044307862b4b libavcodec
support buffers containing more than one frame
author | bellard |
---|---|
date | Wed, 09 Oct 2002 12:35:22 +0000 |
parents | 248a752a4c0e |
children | f40723ee806d |
files | dv.c |
diffstat | 1 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/dv.c Tue Oct 08 17:54:02 2002 +0000 +++ b/dv.c Wed Oct 09 12:35:22 2002 +0000 @@ -494,7 +494,7 @@ UINT8 *buf, int buf_size) { DVVideoDecodeContext *s = avctx->priv_data; - int sct, dsf, apt, ds, nb_dif_segs, vs, size, width, height, i; + int sct, dsf, apt, ds, nb_dif_segs, vs, size, width, height, i, packet_size; UINT8 *buf_ptr; const UINT16 *mb_pos_ptr; AVPicture *picture; @@ -531,17 +531,18 @@ /* init size */ width = 720; if (dsf) { - if (buf_size != PAL_FRAME_SIZE) - return -1; + packet_size = PAL_FRAME_SIZE; height = 576; nb_dif_segs = 12; } else { - if (buf_size != NTSC_FRAME_SIZE) - return -1; + packet_size = NTSC_FRAME_SIZE; height = 480; nb_dif_segs = 10; } - + /* NOTE: we only accept several full frames */ + if (buf_size < packet_size) + return -1; + /* XXX: is it correct to assume that 420 is always used in PAL mode ? */ s->sampling_411 = !dsf; @@ -604,8 +605,7 @@ picture->data[i] = s->current_picture[i]; picture->linesize[i] = s->linesize[i]; } - - return buf_size; + return packet_size; } static int dvvideo_decode_end(AVCodecContext *avctx)