Audio Level

From AVObjects Knowledge Base
(Difference between revisions)
Jump to: navigation, search
Line 27: Line 27:
 
{|
 
{|
 
|'''Filter Interfaces:'''
 
|'''Filter Interfaces:'''
|IBaseFilter, IAudioLevel, ISpecifyPropertyPages, IPersist
+
|IAudioLevel, IBaseFilter, ISpecifyPropertyPages, IPersist
 
|-
 
|-
 
|'''Input stream:'''
 
|'''Input stream:'''

Revision as of 15:29, 31 July 2007

Provides support for level processing of audio stream. Supports VU meter, audio amplifier, event triggers, auto gain and volume controls.

Contents

Overview

{{{name}}}

Type: DirectShow filter
Status: Beta
Redistributables: {{{deliverables}}}
Setup Directory {{{setup}}}
Pricing: {{{pricing}}}
Download: {{{download}}}

The Audio Level filter is used for various manipulation techniques on audio stream. It accepts audio data in PCM format transforms it into its audio data stream for further processing and/or rendering. The Audio Level filter able to setup transform functions for each audio channel.

Features

  • VU meter
  • Audio amplifier
  • Auto gain and volume controls
  • Audio trigger

Supported Standards

  • The E.B.U. standart peak-programme meter for the control of international transmissions

Basic specs

Filter Interfaces: IAudioLevel, IBaseFilter, ISpecifyPropertyPages, IPersist
Input stream: PCM Audio
Input Pin Media Types: MEDIATYPE_Audio

MEDIASUBTYPE_PCM
FORMAT_WaveFormatEx

Input Pin Interfaces: IPin, IQualityControl, IMemInputPin
Output streams: PCM Audio
Output Pin Media Types: MEDIATYPE_Audio

MEDIASUBTYPE_PCM
FORMAT_WaveFormatEx

Output Pin Interfaces: IPin, IQualityControl, IMediaSeeking
Filter Name: MediaLooks Audio Level
Filter CLSID: 380949BC-AD26-4862-BF30-1F709075DF5B
Executable: ALevel.dll
Merit: MERIT_DO_NOT_USE
Filter categories: DirectShow filters: CLSID_LegacyAmFilterCategory {083863F1-70DE-11d0-BD40-00A0C911CE86}

MediaLooks filters: CLSID_MediaLooksCategory {1D0D0809-3513-244F-4B3D-2A0A1D131B17}

Usage in GraphEdit

Filter can be found in the following categories:

  • DirectShow filters
  • MediaLooks filters

Remarks

Audio trigger is used for gets amplitude level of audio stream. По достижению амплитуды сигнала заданного значения приложению посылаются сообщения. Порог срабатывания может работать на два фронта, верхний и нижний. Верхний фронт работает на превышения амплитуды сигнала заданного значения, нижний на пренижение. Например, стандартная задача определения тишины в звуковом канале с помощью аудио триггера решается следующим образом.

Первое, необходимо выбрать тип сообщений посылаемых триггером. В настоящий момент поддерживается 3 типа: интерфейс нотификации триггера (IAudioLevelNotify), handles to event objects, DirectShow event notifications. В соответствии с 3 типами сообщений в интерфейсе предусмотрено 3 ф-ий: AdviseNotify, AdviseEvent and AdviseDSEvent.

Второе, необходимо выбрать фронт работы триггера. В случае определения тишины в канале, нужен нижний фронт.

Третье. Триггер работает след образом - по достижению уровня звукового сигнала порога срабатывания, приложению послылается сообщение OnLevelReachedBegin. Как только уровень сигнала выходит за границу порога срабатывания, в зависимости от фронта работы, приложению посылается OnLevelReachedEnd. Порог срабатывания можно задавать в двух системах измерения: в децибеллах и в процентах. В случае процентов значение порога колеблится между 0 и 1. Например для определения тишины можно установить порог, равный 0.17.

Четвертое. Необходимо установить задержку срабатывания порога триггера в милисекундах. Достигнув определенного порога срабатывания сигнал должен оставатся в заданной области, в зависимости от фронта работы, определенное кол-во милисекунд. По прошествию заданного кол-ва милисекунд приложению будет послано сообщение OnLevelReachedBegin. Если в течении этого промежутка времени сигнал выйдет за границу, сообщение OnLevelReachedBegin не будет послано. В случае определния тишины в канале, нормальным значением является 500ms. При заданном нижнем фронте и пороге срабатывания 0.17, сигнал должен оставтся еще 500ms ниже порога, чтоб приложение получило сообщение OnLevelReachedBegin - началась тишина в канале. При превышении сигнала порога 0.17, приложение получит OnLevelReachedEnd - закончилась тишина.

Пятое. Остальные параметры и способ обработки сообщений зависят от типа. В случае интерфейса нотификации, приложению необходимо передать указатель на интерфейс событий. В случае стандартный виндовых сообщений, нужно передать handles на event objectes. Ф-ия CreateEvent создает handles. А в случае DirectShow нотификаций, обработка сообщений производится с помощью интерфейсов DirectShow. Константы сообщений EC_LEVEL_REACHED_BEGIN/EC_LEVEL_REACHED_END.

Дополнительную информацию можно получить из описания интерфейса в IDL файле.

Downloads

See also