Есть проект реализующий элемент 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)
Заранее признателен!
Re: Как изменить уровень Тон (treble) при воспроизведении mp
От:
Аноним
Дата:
16.06.06 11:50
Оценка:
DW>при копировании в объект интерфейса TAPI копируется NULL
DW>m_spAS = m_spGB; DW>не помогает и прямое использование QueryInterface DW>m_spGB->QueryInterface(IID_ITAudioSettings, (void **)&m_spAS);
А почему вы думаете что от DirectShow графа можно получить TAPI-шный интерфейс? Мысль неординарная, прямо скажем.
DW>Помогите решить эту проблему. может нужно инициализировать объект TAPI и как-то регистрировать DW>его в карте COM и наследованых классах: DW>COM_INTERFACE_ENTRY(ITAudioSettings)
Делаете свою имплементацию DirectShow графа, имплементируете на нём ITAudioSettings. "как?" — пяток поучится, годик поработать — может чего и выйдет.
Забудьте про TAPI в DirectShow. Ищите подходящий DirectShow Filter.