Изменение размера SampleGrabber BufferLen в C# и VB.NET

Есть ли причина, по которой размер BufferLen в ISampleGrabberCB.BufferCB с неустановленным подтипом мультимедиа должен различаться при вызове из разных языков программирования?

У меня есть приложение C# и приложение VB.NET, которые максимально быстро запускают график с выключенными часами и без установленного подтипа мультимедиа в SampleGrabber. Код идентичен. В приложении C# размер BufferLen меняется каждый раз, когда образец проходит через граббер (как и следовало ожидать). В приложении VB.NET BufferLen является постоянным фиксированным значением.

Например, при просмотре видео с разрешением 1280 x 720 через график размер BufferLen в коде VB всегда составляет 1 382 400 (что имеет смысл, поскольку выходной контакт видеодекодера показывает 12 -битный формат NV12). В коде C# размер BufferLen сильно варьируется между низкими и высокими значениями.

кто-нибудь знает, почему это произошло?


person Mark Raishbrook    schedule 21.03.2013    source источник
comment
Какие значения в C#? Также просмотрите граф, может так случиться, что топология не такая, как вы ожидаете.   -  person Roman R.    schedule 22.03.2013


Ответы (2)


Переменная длина буфера указывает на то, что вы получаете сжатое видео. Я не могу объяснить, почему это может быть, хотя. Одна версия работает от имени администратора? Или в 64 бит?

person Geraint Davies    schedule 22.03.2013

Проблема решена. На самом деле графики не идентичны: в приложении C# разделитель AVI подключен непосредственно к SampleGrabber; в приложении VB между ними находится неожиданный видеодекодер. Оказывается, код VB рендерит граф перед тем, как разорвать его и перестроить, а это значит, что подтип носителя уже установлен. Спасибо вам обоим за вашу помощь.

person Mark Raishbrook    schedule 22.03.2013