You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
DV ntsc support, 411P colorspace added
Originally committed as revision 1010 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -64,7 +64,8 @@ enum PixelFormat {
|
|||||||
PIX_FMT_YUV444P,
|
PIX_FMT_YUV444P,
|
||||||
PIX_FMT_RGBA32,
|
PIX_FMT_RGBA32,
|
||||||
PIX_FMT_BGRA32,
|
PIX_FMT_BGRA32,
|
||||||
PIX_FMT_YUV410P
|
PIX_FMT_YUV410P,
|
||||||
|
PIX_FMT_YUV411P
|
||||||
};
|
};
|
||||||
|
|
||||||
/* currently unused, may be used if 24/32 bits samples ever supported */
|
/* currently unused, may be used if 24/32 bits samples ever supported */
|
||||||
|
@@ -521,6 +521,14 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
|
|||||||
nb_dif_segs = 10;
|
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 */
|
/* (re)alloc picture if needed */
|
||||||
if (s->width != width || s->height != height) {
|
if (s->width != width || s->height != height) {
|
||||||
for(i=0;i<3;i++)
|
for(i=0;i<3;i++)
|
||||||
@@ -530,7 +538,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
|
|||||||
s->linesize[i] = width;
|
s->linesize[i] = width;
|
||||||
if (i >= 1) {
|
if (i >= 1) {
|
||||||
size >>= 2;
|
size >>= 2;
|
||||||
s->linesize[i] >>= 1;
|
s->linesize[i] >>= s->sampling_411 ? 2 : 1;
|
||||||
}
|
}
|
||||||
s->current_picture[i] = av_malloc(size);
|
s->current_picture[i] = av_malloc(size);
|
||||||
if (!s->current_picture[i])
|
if (!s->current_picture[i])
|
||||||
@@ -540,14 +548,6 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
|
|||||||
s->height = height;
|
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 */
|
/* for each DIF segment */
|
||||||
buf_ptr = buf;
|
buf_ptr = buf;
|
||||||
for (ds = 0; ds < nb_dif_segs; ds++) {
|
for (ds = 0; ds < nb_dif_segs; ds++) {
|
||||||
@@ -568,7 +568,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
|
|||||||
avctx->width = width;
|
avctx->width = width;
|
||||||
avctx->height = height;
|
avctx->height = height;
|
||||||
if (s->sampling_411)
|
if (s->sampling_411)
|
||||||
avctx->pix_fmt = PIX_FMT_YUV420P; /* XXX: incorrect, add PIX_FMT_YUV411P */
|
avctx->pix_fmt = PIX_FMT_YUV411P;
|
||||||
else
|
else
|
||||||
avctx->pix_fmt = PIX_FMT_YUV420P;
|
avctx->pix_fmt = PIX_FMT_YUV420P;
|
||||||
if (dsf)
|
if (dsf)
|
||||||
|
Reference in New Issue
Block a user