Написал компрессор MJPEG DirectShow filter, работает без проблем для цветных изображений. Но когда я пытаюсь поддерживать 8-битные изображения в оттенках серого, я не могу подключить свой фильтр к фильтру мультиплексора Microsoft AVI. Это всегда будет терпеть неудачу в ReceiveConnection. Я в основном копирую BITMAPINFOHEADER входного изображения и меняю biCompression на MJPG и уменьшаю biSizeImage.
Есть ли у Microsoft AVI Muxer какие-либо требования к своему распределителю? Я использую размер выходного BITMAPINFOHEADER и в настоящее время не забочусь о префиксе или выравнивании.
BITMAPINFHEADER выглядит следующим образом: biSize 1064 biWidth 640 biHeight -480 biPlanes 1 biBitCount 8 biCompression 1196444237 biSizeImage 184320 biXPelsPerMeter 0 biYPelsPerMeter 0 biClrUsed 0 biClrImportant 0
Изменение высоты на положительное значение не имеет никакого эффекта. BiSize больше обычного, так как мы используем заголовок, поэтому сохраните дополнительную информацию для кодировки. В цветовом режиме у нас тот же BITMAPINFOHEADER, за исключением того, что значение biBitCount равно 24.
VIDEOINFOHEADER
? То, как вы видите это в отладчике как можно позже, до появления ошибки. - person Roman R.   schedule 15.02.2018VIDEOINFOHEADER
не подходит для MJPG. - person Roman R.   schedule 19.02.2018