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

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

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

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

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

2 ответа

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

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

Другие вопросы по тегам