On Tue, 17 Jan 2017 22:31:10 +0000 Mark Thompson <s...@jkqxz.net> wrote:
> --- > libavcodec/qsvenc.c | 15 +++++++++++++++ > libavcodec/qsvenc.h | 2 ++ > 2 files changed, 17 insertions(+) > > diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c > index ac443c1..7a46979 100644 > --- a/libavcodec/qsvenc.c > +++ b/libavcodec/qsvenc.c > @@ -672,6 +672,19 @@ static int qsvenc_init_session(AVCodecContext *avctx, > QSVEncContext *q) > } > > q->session = q->internal_session; > + } else if (avctx->hw_device_ctx) { > + q->hw_device_ctx = av_buffer_ref(avctx->hw_device_ctx); > + if (!q->hw_device_ctx) > + return AVERROR(ENOMEM); > + > + ret = ff_qsv_init_session_device(avctx, &q->internal_session, > + q->hw_device_ctx, q->load_plugins); > + if (ret < 0) { > + av_buffer_unref(&q->hw_device_ctx); > + return ret; > + } > + > + q->session = q->internal_session; > } else { > ret = ff_qsv_init_internal_session(avctx, &q->internal_session, > q->load_plugins); > @@ -1121,5 +1134,7 @@ int ff_qsv_enc_close(AVCodecContext *avctx, > QSVEncContext *q) > > av_freep(&q->extparam); > > + av_buffer_unref(&q->hw_device_ctx); > + > return 0; > } > diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h > index 361d933..a2187ad 100644 > --- a/libavcodec/qsvenc.h > +++ b/libavcodec/qsvenc.h > @@ -104,6 +104,8 @@ typedef struct QSVEncContext { > > AVFifoBuffer *async_fifo; > > + AVBufferRef *hw_device_ctx; > + > QSVFramesContext frames_ctx; > > // options set by the caller Also seems fine. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel