Интерфейс для объема интенсивности в FMLE - PullRequest
0 голосов
/ 29 марта 2011

FMLE = Flash Live Media Encoder 3.0

Я разместил этот вопрос на Adobe Forum , но не уверен, есть ли на этом форуме люди с опытом программирования.

Я разработчик, пишущий устройства захвата видео и аудио. Устройства уже работают в других кодировщиках. Устройства написаны в директ-шоу. Я интегрируюсь с FMLE и столкнулся с этой проблемой.

Звуковое устройство не имеет пригодной для использования полосы громкости в FMLE. Ошибка FMLE: «Выбранное аудиоустройство« цензурировано (секрет компании) »не позволяет устанавливать интенсивность громкости. Отключение регулятора громкости».

мое аудиоустройство реализует эти интерфейсы вместе со стандартными интерфейсами фильтра DirectShow

  • IBasicAudio
  • IAMAudioInputMixer

Я поместил точки трассировки в интерфейс запроса и нашел запрос FMLE для (мои комментарии в строке комментария)

  • {IID_IPersistPropertyBag}
  • {IID_IBaseFilter}
  • {IID_IAMOpenProgress}
  • {IID_IAMDeviceRemoval}
  • {IID_IMediaFilter}
  • {IID_IAMBufferNegotiation}
  • {IID_IAMStreamConfig}
  • {IID_IPin}
  • {IID_IReferenceClock}
  • {IID_IMediaSeeking}
  • {IID_IMediaPosition}
  • {IID_IVideoWindow} // WTF ?? окно видео запроса?
  • {IID_IBasicAudio}
  • {2DD74950-A890-11D1-ABE8-00A0C905F375} // я думаю, что это асинхронный поток,

Что мне не хватает? FMLE не использует IAMAudioInputMixer? Кто-нибудь знает точный интерфейс, который FMLE использует для интенсивности объема? , .Я предположил, что это IBasicAudio, но он, похоже, не вызывает никаких методов там.

1 Ответ

0 голосов
/ 01 апреля 2011

Ответ предоставлен Рамом Гуптой из Adobe Forum.

"FMLE не запрашивает интерфейс CLSID_AudioInputMixerProperties. FMLE перечисляет все выводы фильтра источника звука (используя EnumPins), а затем извлекает информацию о каждом выводе, используя функцию QueryPinInfo..

FMLE ищет контакт аудиофильтра, направление которого равно PINDIR_INPUT (с использованием QueryPinInfo), а затем запрашивает интерфейс IAMAudioInputMixer для установки уровня громкости.

Не могли бы вы указать, если следующие функцииправильно реализовано -> get_enable: для его параметра должно быть установлено значение true. -> put_MixLevel -> QueryPinInfo: "

Это решение сработало.Моя проблема заключалась в том, что я никогда не объявлял входной контакт (поскольку у меня нет входных данных, связанных с DirectShow).

...