Quoting wm4 (2017-05-13 12:44:01) > On Sat, 13 May 2017 12:09:45 +0200 > Anton Khirnov <[email protected]> wrote: > > > Generally looks good, though I'm not very familiar with this hwaccel. > > Are you planning to deprecate the old-style hwaccels? > > I would, but that's not up to me, but to important API users like VLC > and lavfilters. > > > > + unsigned guid_count, i; > > > + GUID decoder_guid; > > > + DXGI_FORMAT surface_format = avctx->sw_pix_fmt == > > > AV_PIX_FMT_YUV420P10 ? > > > + DXGI_FORMAT_P010 : DXGI_FORMAT_NV12; > > > + D3D11_VIDEO_DECODER_DESC desc = { 0 }; > > > + D3D11_VIDEO_DECODER_CONFIG config; > > > + AVHWFramesContext *frames_ctx = (AVHWFramesContext > > > *)avctx->hw_frames_ctx->data; > > > + AVD3D11VADeviceContext *device_hwctx = frames_ctx->device_ctx->hwctx; > > > + AVD3D11VAFramesContext *frames_hwctx = frames_ctx->hwctx; > > > + D3D11_TEXTURE2D_DESC texdesc; > > > + HRESULT hr; > > > + int ret; > > > + > > > + if (!frames_hwctx->texture) { > > > + av_log(avctx, AV_LOG_ERROR, "AVD3D11VAFramesContext.texture not > > > set.\n"); > > > + return AVERROR(EINVAL); > > > + } > > > + ID3D11Texture2D_GetDesc(frames_hwctx->texture, &texdesc); > > > + > > > + guid_count = > > > ID3D11VideoDevice_GetVideoDecoderProfileCount(device_hwctx->video_device); > > > + guid_list = av_malloc(sizeof(*guid_list) * guid_count); > > > > I'd expect that you need to check that guid_count is positive. > > No, the API actually returns an UINT.
It can be zero. > > > > + av_buffer_unref(&avctx->hw_frames_ctx); > > > > Why? This should already be done at the higher level, no? > > > > Probably. This code could be run on init failure too, at which point > reasoning about whether the generic code unrefs this correctly and soon > enough becomes hard. That would be a problem in the generic code and should be fixed there. I'd rather not have random hwaccels messing with fields that don't belong to them. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
