ffmpeg | branch: master | Timo Rothenpieler <t...@rothenpieler.org> | Thu Sep 29 18:58:49 2016 +0200| [49511501aa06ac98e41f0aa30c75ec2868a7dbd2] | committer: Timo Rothenpieler
avcodec/cuvid: support a pre-initialized hw_frames_ctx > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=49511501aa06ac98e41f0aa30c75ec2868a7dbd2 --- libavcodec/cuvid.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/libavcodec/cuvid.c b/libavcodec/cuvid.c index faef711..ffe449f 100644 --- a/libavcodec/cuvid.c +++ b/libavcodec/cuvid.c @@ -52,7 +52,6 @@ typedef struct CuvidContext int64_t prev_pts; int internal_error; - int ever_flushed; int decoder_flushing; cudaVideoCodec codec_type; @@ -145,8 +144,12 @@ static int CUDAAPI cuvid_handle_video_sequence(void *opaque, CUVIDEOFORMAT* form return 0; } - if (hwframe_ctx->pool && !ctx->ever_flushed) { - av_log(avctx, AV_LOG_ERROR, "AVHWFramesContext is already initialized\n"); + if (hwframe_ctx->pool && ( + hwframe_ctx->width < avctx->width || + hwframe_ctx->height < avctx->height || + hwframe_ctx->format != AV_PIX_FMT_CUDA || + hwframe_ctx->sw_format != AV_PIX_FMT_NV12)) { + av_log(avctx, AV_LOG_ERROR, "AVHWFramesContext is already initialized with incompatible parameters\n"); ctx->internal_error = AVERROR(EINVAL); return 0; } @@ -805,8 +808,6 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx) if (ret < 0) goto error; - ctx->ever_flushed = 0; - ctx->prev_pts = INT64_MIN; if (!avctx->pkt_timebase.num || !avctx->pkt_timebase.den) @@ -828,8 +829,6 @@ static void cuvid_flush(AVCodecContext *avctx) CUVIDSOURCEDATAPACKET seq_pkt = { 0 }; int ret; - ctx->ever_flushed = 1; - ret = CHECK_CU(cuCtxPushCurrent(cuda_ctx)); if (ret < 0) goto error; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog