X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fnvdec_h264.c;h=25b30329d0eff3a536bf0b5dcb92896d4ad42b4b;hb=ed5680f37ed30a01933c0158b21e3bb3c8acfe4a;hp=35f54f2ed5f2a07316f8cdf2f8e742124efa7099;hpb=c00579ab32aa620116c97dbc52c4c31418bc7fbb;p=ffmpeg diff --git a/libavcodec/nvdec_h264.c b/libavcodec/nvdec_h264.c index 35f54f2ed5f..25b30329d0e 100644 --- a/libavcodec/nvdec_h264.c +++ b/libavcodec/nvdec_h264.c @@ -74,7 +74,7 @@ static int nvdec_h264_start_frame(AVCodecContext *avctx, .bottom_field_flag = h->picture_structure == PICT_BOTTOM_FIELD, .second_field = FIELD_PICTURE(h) && !h->first_field, .ref_pic_flag = h->nal_ref_idc != 0, - .intra_pic_flag = 0, + .intra_pic_flag = 1, .CodecSpecific.h264 = { .log2_max_frame_num_minus4 = sps->log2_max_frame_num - 4, @@ -132,6 +132,9 @@ static int nvdec_h264_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) { NVDECContext *ctx = avctx->internal->hwaccel_priv_data; + CUVIDPICPARAMS *pp = &ctx->pic_params; + const H264Context *h = avctx->priv_data; + const H264SliceContext *sl = &h->slice_ctx[0]; void *tmp; tmp = av_fast_realloc(ctx->bitstream, &ctx->bitstream_allocated, @@ -152,6 +155,9 @@ static int nvdec_h264_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, ctx->bitstream_len += size + 3; ctx->nb_slices++; + if (sl->slice_type != AV_PICTURE_TYPE_I && sl->slice_type != AV_PICTURE_TYPE_SI) + pp->intra_pic_flag = 0; + return 0; }