Свойство kVTCompressionPropertyKey_DataRateLimits не соблюдается аппаратным кодировщиком, macOS - PullRequest
0 голосов
/ 14 июня 2019

Я работаю над проектом macOS, использующим аппаратное ускорение для кодирования видео, используя VideoToolbox.Я пытался управлять битрейтом, используя kVTCompressionPropertyKey_AverageBitRate и kVTCompressionPropertyKey_DataRateLimits, но после многих попыток он все еще часто превышает целевой битрейт.

Соблюдается ли kVTCompressionPropertyKey_DataRateLimits в macOS?

Когда я использую VTSessionCopySupportedPropertyDictionary для получения поддерживаемых свойств в моем сеансе сжатия, DataRateLimits отображается в словаре, иЯ установил его на сеанс сжатия без ошибок.Но затем, если я пытаюсь получить его значение, используя

CFTypeRef value = nullptr;
result = VTSessionCopyProperty(m_compressionSessionRef, (__bridge CFStringRef)key, kCFAllocatorDefault, &value);

, где key - это DataRateLimits, как взято из словаря, он возвращает ошибку о том, что свойство не поддерживается. Но на iOS он возвращается успешно .

Это кажется довольно серьезным и не ограничивается моей машиной.Если это действительно не поддерживается, это поможет объяснить изменчивость моего битрейта кодирования.Однако за месяцы работы над этим проектом и исследования VideoToolbox я не видел ничего, что бы не поддерживалось аппаратным кодировщиком в macOS.Я думаю, что такой дефект будет большой проблемой.У кого-нибудь есть понимание здесь?Спасибо!

...