Как обработать данные 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 - отметка времени данных, поступающих из живых источников "

но результаты не меняются.

Любые предложения будут ценны.

Заранее спасибо.

0 ответов

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