diff options
author | Arpi <arpi@thot.banki.hu> | 2002-10-07 21:28:33 +0000 |
---|---|---|
committer | Arpi <arpi@thot.banki.hu> | 2002-10-07 21:28:33 +0000 |
commit | e9feea594a2c555836f14039f745c821b24c299b (patch) | |
tree | c9030c8e9b1a1a4bc21484865e55514702b81e21 /libavcodec/dv.c | |
parent | acd2e05c47880593e6551bd5da0485e0caaee584 (diff) | |
download | ffmpeg-e9feea594a2c555836f14039f745c821b24c299b.tar.gz |
DV ntsc support, 411P colorspace added
Originally committed as revision 1010 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/dv.c')
-rw-r--r-- | libavcodec/dv.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/libavcodec/dv.c b/libavcodec/dv.c index 02478cae36..1834740c3a 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -521,6 +521,14 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, nb_dif_segs = 10; } + /* XXX: is it correct to assume that 420 is always used in PAL + mode ? */ + s->sampling_411 = !dsf; + if (s->sampling_411) + mb_pos_ptr = dv_place_411; + else + mb_pos_ptr = dv_place_420; + /* (re)alloc picture if needed */ if (s->width != width || s->height != height) { for(i=0;i<3;i++) @@ -530,7 +538,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, s->linesize[i] = width; if (i >= 1) { size >>= 2; - s->linesize[i] >>= 1; + s->linesize[i] >>= s->sampling_411 ? 2 : 1; } s->current_picture[i] = av_malloc(size); if (!s->current_picture[i]) @@ -540,14 +548,6 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, s->height = height; } - /* XXX: is it correct to assume that 420 is always used in PAL - mode ? */ - s->sampling_411 = !dsf; - if (s->sampling_411) - mb_pos_ptr = dv_place_411; - else - mb_pos_ptr = dv_place_420; - /* for each DIF segment */ buf_ptr = buf; for (ds = 0; ds < nb_dif_segs; ds++) { @@ -568,7 +568,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, avctx->width = width; avctx->height = height; if (s->sampling_411) - avctx->pix_fmt = PIX_FMT_YUV420P; /* XXX: incorrect, add PIX_FMT_YUV411P */ + avctx->pix_fmt = PIX_FMT_YUV411P; else avctx->pix_fmt = PIX_FMT_YUV420P; if (dsf) |