cuvid硬件解码器的一些貌似不合理的设计
作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音
1,cuvid 解码器内部有不少重复,冗余的字段。

上图中,AVCodecContext::hw_device_ctx 与 AVCodecContext::priv_data::hwdevice 重复,CuvidContext::cudl 与 AVCUDADeviceContext::cuda_dl 重复。
补充:这个设计不算不合理,因为 FFmpeg 的设计里有两个概念,一个是硬件解码器,一个是硬件加速器。
AVCodecContext::hw_device_ctx 字段就是给硬件加速器用的,而 AVCodecContext::priv_data::hwdevice 字段是给硬件解码器用的。
2,cuda_device_init() 被重复调用。
