|
|
@@ -350,6 +350,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, |
|
|
uint8_t *buf = avpkt->data; |
|
|
uint8_t *buf = avpkt->data; |
|
|
int buf_size = avpkt->size; |
|
|
int buf_size = avpkt->size; |
|
|
DVVideoContext *s = avctx->priv_data; |
|
|
DVVideoContext *s = avctx->priv_data; |
|
|
|
|
|
AVFrame *frame = data; |
|
|
const uint8_t *vsc_pack; |
|
|
const uint8_t *vsc_pack; |
|
|
int apt, is16_9, ret; |
|
|
int apt, is16_9, ret; |
|
|
const AVDVProfile *sys; |
|
|
const AVDVProfile *sys; |
|
|
@@ -369,9 +370,9 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, |
|
|
s->sys = sys; |
|
|
s->sys = sys; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
s->frame = data; |
|
|
|
|
|
s->frame->key_frame = 1; |
|
|
|
|
|
s->frame->pict_type = AV_PICTURE_TYPE_I; |
|
|
|
|
|
|
|
|
s->frame = frame; |
|
|
|
|
|
frame->key_frame = 1; |
|
|
|
|
|
frame->pict_type = AV_PICTURE_TYPE_I; |
|
|
avctx->pix_fmt = s->sys->pix_fmt; |
|
|
avctx->pix_fmt = s->sys->pix_fmt; |
|
|
avctx->framerate = av_inv_q(s->sys->time_base); |
|
|
avctx->framerate = av_inv_q(s->sys->time_base); |
|
|
|
|
|
|
|
|
@@ -388,12 +389,12 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, |
|
|
ff_set_sar(avctx, s->sys->sar[is16_9]); |
|
|
ff_set_sar(avctx, s->sys->sar[is16_9]); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (ff_get_buffer(avctx, s->frame, 0) < 0) { |
|
|
|
|
|
|
|
|
if (ff_get_buffer(avctx, frame, 0) < 0) { |
|
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); |
|
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); |
|
|
return -1; |
|
|
return -1; |
|
|
} |
|
|
} |
|
|
s->frame->interlaced_frame = 1; |
|
|
|
|
|
s->frame->top_field_first = 0; |
|
|
|
|
|
|
|
|
frame->interlaced_frame = 1; |
|
|
|
|
|
frame->top_field_first = 0; |
|
|
|
|
|
|
|
|
s->buf = buf; |
|
|
s->buf = buf; |
|
|
avctx->execute(avctx, dv_decode_video_segment, s->work_chunks, NULL, |
|
|
avctx->execute(avctx, dv_decode_video_segment, s->work_chunks, NULL, |
|
|
|