mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
hwaccel: mpeg2: decode first field, if requested.
If user opted to present fields as they come, then the first field picture needs to be submitted to the HW for decoding. In particular, this fixes MPEG-2 decoding of interlaced streams. Tested on Intel Cedar Trail, Sandy Bridge and Ivy Bridge platforms. Someone reported on the ffmpeg-devel@ list this also works on DXVA (Windows) and other Linux platforms (NVIDIA, through the VA wrapper). This also means a similar patch to non-hwaccel VDPAU may be necessary. Note: I believe the SLICE_FLAG_ALLOW_FIELD is useless since the first field shall always be submitted to the HW anyway. Nobody uses HW accels (dxva, vaapi, vdpau, etc.) without that flag though. Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
2ce7f4d4e6
commit
9cb150c9ab
@ -1590,6 +1590,12 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (s->avctx->hwaccel &&
|
||||
(s->avctx->slice_flags & SLICE_FLAG_ALLOW_FIELD)) {
|
||||
if (s->avctx->hwaccel->end_frame(s->avctx) < 0)
|
||||
av_log(avctx, AV_LOG_ERROR, "hardware accelerator failed to decode first field\n");
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
s->current_picture.f.data[i] = s->current_picture_ptr->f.data[i];
|
||||
if (s->picture_structure == PICT_BOTTOM_FIELD) {
|
||||
|
Loading…
Reference in New Issue
Block a user