Декодировать видеопоток из сокета с помощью декодера CUVID
В примере декодирования CUVID (cudaDecodeD3D9) есть VideSource
класс, который берет адрес файла видео и получает CUvideosource
как это:
cuvidCreateVideoSource(&hVideoSource_, sFileName.c_str(),
&oVideoSourceParameters); //hVideoSource_ is the CUvideosource param
Затем нам нужно создать экземпляр VideoDecoder
класс, который занимает CUVIDEOFORMAT
Мы можем иметь это CUVIDEOFORMAT
от CUvideosource
как это:
//oFormat is the CUVIDEOFORMAT we want to get
cuvidGetSourceVideoFormat(hVideoSource_, &oFormat, 0);
Здесь проблема у меня есть CUvideosource
из входного файла, но на самом деле мне нужно получить это из кадров, которые я получаю из сокета.
Также я могу заполнить CUVIDEOFORMAT
поля вручную, так как я знаю тип кодека, который мне нужен, но я не знаю, как я могу заполнить codec_width
а также codec_height
поля. ранее я использовал ffmpeg
avcodec_decode_video2
Функция, чтобы получить эти размеры, но я думаю, что должен быть другой путь.
Я прочитал эту тему, и она объясняет, как я могу получить парсер (CUvideoparser
) из пакетов, но до сих пор не могу получить CUVIDEOFORMAT
,
Так что вопрос в том, есть ли эквивалент для cuvidCreateVideoSource
использовать с пакетами не путь к файлу? Или функция, чтобы получить codec_width
а также codec_height
из пакета?