ff_set_sar(avctx, s->sys->sar[is16_9]);
}
- if ((ret = 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");
- return -1;
- }
++ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
+ return ret;
- s->frame->interlaced_frame = 1;
- s->frame->top_field_first = 0;
+ frame->interlaced_frame = 1;
+ frame->top_field_first = 0;
- s->frame->top_field_first = !(vsc_pack[3] & 0x40);
+ /* Determine the codec's field order from the packet */
+ if ( *vsc_pack == dv_video_control ) {
++ frame->top_field_first = !(vsc_pack[3] & 0x40);
+ }
+
s->buf = buf;
avctx->execute(avctx, dv_decode_video_segment, s->work_chunks, NULL,
dv_work_pool_size(s->sys), sizeof(DVwork_chunk));