Есть проект реализующий элемент ActiveX воспроизводящий mp3 файл используя DirectShow.
Необходимо добавить управляемый элемент для корректирования уровня Тона (treble).
Не могу подобрать подходящий интерфейс DirectShow для решения этой задачи.
Вначале хотел использовать IAMAudioInputMixer, но вроде он работает только с входным потоком — микрофон и line-in.
Существует интерфейс TAPI 3.1 ITAudioSettings позволяющий упралять параметрами выходного потока Bass, Trebleb т.д.
Управляющая структура typedef enum tagAudioSettingsProperty
{
AudioSettings_SignalLevel, // Read-Only
AudioSettings_SilenceThreshold,
AudioSettings_Volume,
AudioSettings_Balance,
AudioSettings_Loudness,
AudioSettings_Treble,
AudioSettings_Bass,
AudioSettings_Mono
} AudioSettingsProperty;
однако не могу его вставить в существующий проект, так как не понимаю принципов соединения TAPI и DirectShow
Может есть другой способ изменить treble у звукового потока?
открываю файл для воспроизведения
CStringW sFile = m_bstrFilename;
m_spGB->RenderFile(sFile, NULL);
потом копирую хэндлы:
m_spMC = m_spGB;
m_spME = m_spGB;
m_spMS = m_spGB;
m_spMP = m_spGB;
m_spBA = m_spGB;
здесь все копируется нормально, но при копировании в объект интерфейса TAPI копируется NULL
m_spAS = m_spGB;
не помогает и прямое использование QueryInterface
m_spGB->QueryInterface(IID_ITAudioSettings, (void **)&m_spAS);
Помогите решить эту проблему. может нужно инициализировать объект TAPI и как-то регистрировать
его в карте COM и наследованых классах:
COM_INTERFACE_ENTRY(ITAudioSettings)