Test only, not to commit in this form.
---
 avtools/avconv_hw.c | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/avtools/avconv_hw.c b/avtools/avconv_hw.c
index fd1618389..71a3c2772 100644
--- a/avtools/avconv_hw.c
+++ b/avtools/avconv_hw.c
@@ -376,8 +376,35 @@ fail:
 int hwaccel_decode_init(AVCodecContext *avctx)
 {
     InputStream *ist = avctx->opaque;
+    AVBufferRef *hw_frames_ref;
+    AVHWFramesContext *hw_frames;
+    int err;
+
+    if (!avctx->hw_device_ctx)
+        return AVERROR(ENOSYS);
+
+    hw_frames_ref = av_hwframe_ctx_alloc(avctx->hw_device_ctx);
+    if (!hw_frames_ref)
+        return AVERROR(ENOMEM);
+    hw_frames = (AVHWFramesContext*)hw_frames_ref->data;
+
+    err = avcodec_probe_hw(avctx, hw_frames_ref);
+    if (err < 0) {
+        av_log(avctx, AV_LOG_ERROR, "Decode with %s not supported: %d.\n",
+               av_hwdevice_get_type_name(hw_frames->device_ctx->type), err);
+        goto fail;
+    }
+
+    av_log(avctx, AV_LOG_ERROR, "Decode with %s supported; %d frames "
+           "of type %d/%d and size %dx%d are required.\n",
+           av_hwdevice_get_type_name(hw_frames->device_ctx->type),
+           hw_frames->initial_pool_size, hw_frames->format, 
hw_frames->sw_format,
+           hw_frames->width, hw_frames->height);
 
     ist->hwaccel_retrieve_data = &hwaccel_retrieve_data;
 
-    return 0;
+    err = 0;
+fail:
+    av_buffer_unref(&hw_frames_ref);
+    return err;
 }
-- 
2.11.0

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to