diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 344cee59ab..03d70b7d78 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -7494,6 +7494,10 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){ && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=FF_B_TYPE) && (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==FF_I_TYPE) && avctx->skip_frame < AVDISCARD_ALL){ + if(avctx->hwaccel) { + if (avctx->hwaccel->decode_slice(avctx, &buf[buf_index - consumed], consumed) < 0) + return -1; + }else if(CONFIG_H264_VDPAU_DECODER && s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU){ static const uint8_t start_code[] = {0x00, 0x00, 0x01}; ff_vdpau_add_data_chunk(s, start_code, sizeof(start_code));