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
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel