From: Yukinori Yamazoe <[email protected]>

Signed-off-by: Luca Barbato <[email protected]>
---

Looks fine.

 libavcodec/qsv.c      |  2 +-
 libavcodec/qsv.h      |  1 +
 libavcodec/qsv_h264.c | 15 +++++++++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
index d014f96..0f526eb 100644
--- a/libavcodec/qsv.c
+++ b/libavcodec/qsv.c
@@ -155,7 +155,7 @@ int ff_qsv_init(AVCodecContext *c, QSVContext *q)
                "Unknown Intel QuickSync implementation %d.\n", impl);

     q->param.IOPattern  = MFX_IOPATTERN_OUT_SYSTEM_MEMORY;
-    q->param.AsyncDepth = ASYNC_DEPTH_DEFAULT;
+    q->param.AsyncDepth = q->async_depth;

     q->bs.DataFlag = MFX_BITSTREAM_COMPLETE_FRAME;

diff --git a/libavcodec/qsv.h b/libavcodec/qsv.h
index 078b918..7aabc74 100644
--- a/libavcodec/qsv.h
+++ b/libavcodec/qsv.h
@@ -61,6 +61,7 @@ typedef struct QSVContext {
     mfxBitstream bs;
     int last_decode_status;
     int need_postinit;
+    int async_depth;
     AVPacketList *pending, *pending_end;
 } QSVContext;

diff --git a/libavcodec/qsv_h264.c b/libavcodec/qsv_h264.c
index c10a456..6b11ba6 100644
--- a/libavcodec/qsv_h264.c
+++ b/libavcodec/qsv_h264.c
@@ -111,6 +111,20 @@ static void qsv_dec_flush(AVCodecContext *avctx)
     ff_qsv_flush(&q->qsv);
 }

+#define OFFSET(x) offsetof(QSVH264Context, x)
+#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
+static const AVOption options[] = {
+    { "async_depth",         "Number of parallel processing", 
OFFSET(qsv.async_depth), AV_OPT_TYPE_INT, { .i64 = ASYNC_DEPTH_DEFAULT }, 0, 
INT_MAX, VD },
+    { NULL },
+};
+
+static const AVClass class = {
+    .class_name = "h264_qsv",
+    .item_name  = av_default_item_name,
+    .option     = options,
+    .version    = LIBAVUTIL_VERSION_INT,
+};
+
 AVCodec ff_h264_qsv_decoder = {
     .name           = "h264_qsv",
     .long_name      = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 
part 10 (Intel Quick Sync Video acceleration)"),
@@ -122,4 +136,5 @@ AVCodec ff_h264_qsv_decoder = {
     .flush          = qsv_dec_flush,
     .close          = qsv_dec_close,
     .capabilities   = CODEC_CAP_DELAY | CODEC_CAP_PKT_TS | CODEC_CAP_DR1,
+    .priv_class     = &class,
 };
--
1.8.3.2

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to