aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/dv.c
diff options
context:
space:
mode:
authorArpi <arpi@thot.banki.hu>2002-10-07 21:28:33 +0000
committerArpi <arpi@thot.banki.hu>2002-10-07 21:28:33 +0000
commite9feea594a2c555836f14039f745c821b24c299b (patch)
treec9030c8e9b1a1a4bc21484865e55514702b81e21 /libavcodec/dv.c
parentacd2e05c47880593e6551bd5da0485e0caaee584 (diff)
downloadffmpeg-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.c20
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)