Как обработать данные RTP для Microsoft DirectShow MPEG1 декодер
Начиная с проекта видеообработки, я пытаюсь создать фильтр DirectShow, который подключается к RTSP-серверу, который становится исходным фильтром для декодера Windows MPEG1 (я не могу использовать другие форматы или декодеры, имеющие WinCE в качестве цели ОС).
Мой фильтр объявляет MediaType
- MEDIATYPE_Video type
- FORMAT_MPEG Видео подтип
- MEDIASUBTYPE_MPEG1Payload formatType
В настоящее время, когда я подключаю свой фильтр rtspSource к декодеру CLSID_CMpegVideoCodec, я рендеринг черного видео.
Однако если я заменим Windows-декодер на CLSID_LAV_VideoDecoderFilter, предоставленный проектом LAVFilters, видео будет правильно отображено.
После прочтения " Как обрабатывать необработанные пакеты UDP, чтобы их можно было декодировать с помощью фильтра декодера в фильтре источника DirectShow ", имея дело с той же проблемой для H264 и MPEG-4, я также прочитал RFC2250, а затем распаковал данные но результат тот же.
Сейчас я отправляю пакеты декодера, начиная с кода запуска видеопотока
000001 00 (фото)
или целые пакеты, начинающиеся с
000001 B3 (заголовок последовательности)
и которые содержат в себе также startCode
000001 B2 (Данные пользователя)
000001 B8 (группа изображений)
000001 00 (фото)
000001 01 (срез)
Все еще ссылаясь на предыдущую ссылку, которая касается случаев H264 и MPEG-4, мы говорим о " Обработка данных для декодера ", но мне не совсем ясно, что ожидает фильтр CLSID_CMpegVideoCodec после согласования типа формата MEDIASUBTYPE_MPEG1Payload. Однако, добавляя в начале каждой выборки три байта 000001 или 4 байта 00000100, видео воспроизводится с изображениями, обновляемыми примерно каждые 2 секунды, и теряет промежуточные изображения.
Я выполнил оба теста, установив IMediaSample с помощью
SetTime(NULL, NULL)
эта настройка
SetTime(start, start+1)
с:
start = (rtp_timestamp - rtp_timestamp_first_packet) + 300ms
после ответа на вопрос " Написание пользовательского push-фильтра RTSP/RTP Source DirectShow - отметка времени данных, поступающих из живых источников "
но результаты не меняются.
Любые предложения будут ценны.
Заранее спасибо.