- /*
- * LAME MP3 encoder for DirectShow
- * Interface definition
- *
- * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
- // A custom interface to allow the user to modify audio
- // encoder properties
- #ifndef __IAUDIOPROPERTIES__
- #define __IAUDIOPROPERTIES__
- #ifdef __cplusplus
- extern "C" {
- #endif
- // {ca7e9ef0-1cbe-11d3-8d29-00a0c94bbfee}
- DEFINE_GUID(IID_IAudioEncoderProperties,
- 0xca7e9ef0, 0x1cbe, 0x11d3, 0x8d, 0x29, 0x00, 0xa0, 0xc9, 0x4b, 0xbf, 0xee);
- //
- // Configuring MPEG audio encoder parameters with unspecified
- // input stream type may lead to misbehaviour and confusing
- // results. In most cases the specified parameters will be
- // overridden by defaults for the input media type.
- // To archive proper results use this interface on the
- // audio encoder filter with input pin connected to the valid
- // source.
- //
- DECLARE_INTERFACE_(IAudioEncoderProperties, IUnknown)
- {
- // Is PES output enabled? Return TRUE or FALSE
- STDMETHOD(get_PESOutputEnabled) (THIS_
- DWORD *dwEnabled
- ) PURE;
- // Enable/disable PES output
- STDMETHOD(set_PESOutputEnabled) (THIS_
- DWORD dwEnabled
- ) PURE;
- // Get target compression bitrate in Kbits/s
- STDMETHOD(get_Bitrate) (THIS_
- DWORD *dwBitrate
- ) PURE;
- // Set target compression bitrate in Kbits/s
- // Not all numbers available! See spec for details!
- STDMETHOD(set_Bitrate) (THIS_
- DWORD dwBitrate
- ) PURE;
- // Get variable bitrate flag
- STDMETHOD(get_Variable) (THIS_
- DWORD *dwVariable
- ) PURE;
- // Set variable bitrate flag
- STDMETHOD(set_Variable) (THIS_
- DWORD dwVariable
- ) PURE;
- // Get variable bitrate in Kbits/s
- STDMETHOD(get_VariableMin) (THIS_
- DWORD *dwmin
- ) PURE;
- // Set variable bitrate in Kbits/s
- // Not all numbers available! See spec for details!
- STDMETHOD(set_VariableMin) (THIS_
- DWORD dwmin
- ) PURE;
- // Get variable bitrate in Kbits/s
- STDMETHOD(get_VariableMax) (THIS_
- DWORD *dwmax
- ) PURE;
- // Set variable bitrate in Kbits/s
- // Not all numbers available! See spec for details!
- STDMETHOD(set_VariableMax) (THIS_
- DWORD dwmax
- ) PURE;
- // Get compression quality
- STDMETHOD(get_Quality) (THIS_
- DWORD *dwQuality
- ) PURE;
- // Set compression quality
- // Not all numbers available! See spec for details!
- STDMETHOD(set_Quality) (THIS_
- DWORD dwQuality
- ) PURE;
- // Get VBR quality
- STDMETHOD(get_VariableQ) (THIS_
- DWORD *dwVBRq
- ) PURE;
- // Set VBR quality
- // Not all numbers available! See spec for details!
- STDMETHOD(set_VariableQ) (THIS_
- DWORD dwVBRq
- ) PURE;
- // Get source sample rate. Return E_FAIL if input pin
- // in not connected.
- STDMETHOD(get_SourceSampleRate) (THIS_
- DWORD *dwSampleRate
- ) PURE;
- // Get source number of channels. Return E_FAIL if
- // input pin is not connected.
- STDMETHOD(get_SourceChannels) (THIS_
- DWORD *dwChannels
- ) PURE;
- // Get sample rate for compressed audio bitstream
- STDMETHOD(get_SampleRate) (THIS_
- DWORD *dwSampleRate
- ) PURE;
- // Set sample rate. See genaudio spec for details
- STDMETHOD(set_SampleRate) (THIS_
- DWORD dwSampleRate
- ) PURE;
- // Get channel mode. See genaudio.h for details
- STDMETHOD(get_ChannelMode) (THIS_
- DWORD *dwChannelMode
- ) PURE;
- // Set channel mode
- STDMETHOD(set_ChannelMode) (THIS_
- DWORD dwChannelMode
- ) PURE;
- // Is CRC enabled?
- STDMETHOD(get_CRCFlag) (THIS_
- DWORD *dwFlag
- ) PURE;
- // Enable/disable CRC
- STDMETHOD(set_CRCFlag) (THIS_
- DWORD dwFlag
- ) PURE;
- // Force mono
- STDMETHOD(get_ForceMono) (THIS_
- DWORD *dwFlag
- ) PURE;
- // Force mono
- STDMETHOD(set_ForceMono) (THIS_
- DWORD dwFlag
- ) PURE;
- // Set duration
- STDMETHOD(get_SetDuration) (THIS_
- DWORD *dwFlag
- ) PURE;
- // Set duration
- STDMETHOD(set_SetDuration) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'original' flag
- STDMETHOD(get_OriginalFlag) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_OriginalFlag) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'copyright' flag
- STDMETHOD(get_CopyrightFlag) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_CopyrightFlag) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'Enforce VBR Minimum bitrate' flag
- STDMETHOD(get_EnforceVBRmin) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_EnforceVBRmin) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'Voice' flag
- STDMETHOD(get_VoiceMode) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_VoiceMode) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'Keep All Frequencies' flag
- STDMETHOD(get_KeepAllFreq) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_KeepAllFreq) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'Strict ISO complience' flag
- STDMETHOD(get_StrictISO) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_StrictISO) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'Disable short block' flag
- STDMETHOD(get_NoShortBlock) (THIS_
- DWORD *dwDisable
- ) PURE;
- STDMETHOD(set_NoShortBlock) (THIS_
- DWORD dwDisable
- ) PURE;
- // Control 'Xing VBR Tag' flag
- STDMETHOD(get_XingTag) (THIS_
- DWORD *dwXingTag
- ) PURE;
- STDMETHOD(set_XingTag) (THIS_
- DWORD dwXingTag
- ) PURE;
- // Control 'Forced mid/ side stereo' flag
- STDMETHOD(get_ForceMS) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_ForceMS) (THIS_
- DWORD dwFlag
- ) PURE;
- // Control 'ModeFixed' flag
- STDMETHOD(get_ModeFixed) (THIS_
- DWORD *dwFlag
- ) PURE;
- STDMETHOD(set_ModeFixed) (THIS_
- DWORD dwFlag
- ) PURE;
-
- //Receive the block of encoder
- //configuration parametres
- STDMETHOD(get_ParameterBlockSize) (THIS_
- BYTE *pcBlock, DWORD *pdwSize
- ) PURE;
- // Set encoder configuration parametres
- STDMETHOD(set_ParameterBlockSize) (THIS_
- BYTE *pcBlock, DWORD dwSize
- ) PURE;
- // Set default audio encoder parameters depending
- // on current input stream type
- STDMETHOD(DefaultAudioEncoderProperties) (THIS_
- ) PURE;
- // By default the modified properties are not saved to
- // registry immediately, so the filter needs to be
- // forced to do this. Omitting this steps may lead to
- // misbehavior and confusing results.
- STDMETHOD(LoadAudioEncoderPropertiesFromRegistry) (THIS_
- ) PURE;
- STDMETHOD(SaveAudioEncoderPropertiesToRegistry) (THIS_
- ) PURE;
- // Determine, whether the filter can be configured. If this
- // functions returs E_FAIL, input format hasn't been
- // specified and filter behavior unpredicated. If S_OK,
- // the filter could be configured with correct values.
- STDMETHOD(InputTypeDefined) (THIS_
- ) PURE;
- // Reconnects output pin (crucial for Fraunhofer MPEG Layer-3 Decoder)
- STDMETHOD(ApplyChanges) (THIS_
- ) PURE;
- };
- #ifdef __cplusplus
- }
- #endif
- #endif // __IAUDIOPROPERTIES__
-
-
-