/* * audio.h: Frontend Status Monitor plugin for the AUDIO Disk Recorder * * See the README file for copyright information and how to reach the author. * */ #ifndef __FEMON_AUDIO_H #define __FEMON_AUDIO_H enum eAudioCodec { AUDIO_CODEC_INVALID = -1, AUDIO_CODEC_UNKNOWN, AUDIO_CODEC_MPEG1_I, AUDIO_CODEC_MPEG1_II, AUDIO_CODEC_MPEG1_III, AUDIO_CODEC_MPEG2_I, AUDIO_CODEC_MPEG2_II, AUDIO_CODEC_MPEG2_III, AUDIO_CODEC_HEAAC, AUDIO_CODEC_LATM }; enum eAudioChannelMode { AUDIO_CHANNEL_MODE_INVALID = -1, AUDIO_CHANNEL_MODE_STEREO, AUDIO_CHANNEL_MODE_JOINT_STEREO, AUDIO_CHANNEL_MODE_DUAL, AUDIO_CHANNEL_MODE_SINGLE }; enum eAudioBitrate { AUDIO_BITRATE_RESERVED = -3, AUDIO_BITRATE_FREE = -2, AUDIO_BITRATE_INVALID = -1 }; enum eAudioSamplingFrequency { AUDIO_SAMPLING_FREQUENCY_RESERVED = -2, AUDIO_SAMPLING_FREQUENCY_INVALID = -1 }; enum eAudioCenterMixLevel { AUDIO_CENTER_MIX_LEVEL_INVALID = -1, AUDIO_CENTER_MIX_LEVEL_MINUS_3dB, AUDIO_CENTER_MIX_LEVEL_MINUS_4_5dB, AUDIO_CENTER_MIX_LEVEL_MINUS_6dB, AUDIO_CENTER_MIX_LEVEL_RESERVED }; enum eAudioSurroundMixLevel { AUDIO_SURROUND_MIX_LEVEL_INVALID = -1, AUDIO_SURROUND_MIX_LEVEL_MINUS_3dB, AUDIO_SURROUND_MIX_LEVEL_MINUS_6dB, AUDIO_SURROUND_MIX_LEVEL_0_dB, AUDIO_SURROUND_MIX_LEVEL_RESERVED }; enum eAudioDolbySurroundMode { AUDIO_DOLBY_SURROUND_MODE_INVALID = -1, AUDIO_DOLBY_SURROUND_MODE_NOT_INDICATED, AUDIO_DOLBY_SURROUND_MODE_NOT_DOLBYSURROUND, AUDIO_DOLBY_SURROUND_MODE_DOLBYSURROUND, AUDIO_DOLBY_SURROUND_MODE_RESERVED }; enum eAudioBitstreamMode { AUDIO_BITSTREAM_MODE_INVALID = -1, AUDIO_BITSTREAM_MODE_CM, AUDIO_BITSTREAM_MODE_ME, AUDIO_BITSTREAM_MODE_VI, AUDIO_BITSTREAM_MODE_HI, AUDIO_BITSTREAM_MODE_D, AUDIO_BITSTREAM_MODE_C, AUDIO_BITSTREAM_MODE_E, AUDIO_BITSTREAM_MODE_VO_KAR }; enum eAudioCodingMode { AUDIO_CODING_MODE_INVALID = -1, AUDIO_CODING_MODE_1_1, AUDIO_CODING_MODE_1_0, AUDIO_CODING_MODE_2_0, AUDIO_CODING_MODE_3_0, AUDIO_CODING_MODE_2_1, AUDIO_CODING_MODE_3_1, AUDIO_CODING_MODE_2_2, AUDIO_CODING_MODE_3_2, }; typedef struct audio_info { eAudioCodec codec; // enum double bitrate; // bit/s or eAudioBitrate int samplingFrequency; // Hz or eAudioSamplingFrequency int channelMode; // eAudioChannelMode } audio_info_t; typedef struct ac3_info { int bitrate; // bit/s or eAudioBitrate int samplingFrequency; // Hz or eAudioSamplingFrequency int bitstreamMode; // 0..7 or eAudioBitstreamMode int audioCodingMode; // 0..7 or eAudioCodingMode int dolbySurroundMode; // eAudioDolbySurroundMode int centerMixLevel; // eAudioCenterMixLevel int surroundMixLevel; // eAudioSurroundMixLevel int dialogLevel; // -dB bool lfe; // boolean } ac3_info_t; class cFemonAudioIf { public: cFemonAudioIf() {} virtual ~cFemonAudioIf() {} // enum virtual void SetAudioCodec(eAudioCodec codecP) = 0; // kbit/s or eAudioBitrate virtual void SetAudioBitrate(double bitRateP) = 0; // Hz or eAudioSamplingFrequency virtual void SetAudioSamplingFrequency(int samplingP) = 0; // eAudioChannelMode virtual void SetAudioChannel(eAudioChannelMode modeP) = 0; }; class cFemonAC3If { public: cFemonAC3If() {} virtual ~cFemonAC3If() {} // bit/s or eAudioBitrate virtual void SetAC3Bitrate(int bitRateP) = 0; // Hz or eAudioSamplingFrequency virtual void SetAC3SamplingFrequency(int samplingP) = 0; // 0..7 or eAudioBitstreamMode virtual void SetAC3Bitstream(int modeP) = 0; // 0..7 or eAudioCodingMode virtual void SetAC3AudioCoding(int modeP) = 0; // eAudioDolbySurroundMode virtual void SetAC3DolbySurround(int modeP) = 0; // eAudioCenterMixLevel virtual void SetAC3CenterMix(int levelP) = 0; // eAudioSurroundMixLevel virtual void SetAC3SurroundMix(int levelP) = 0; // -dB virtual void SetAC3Dialog(int levelP) = 0; // boolean virtual void SetAC3LFE(bool onoffP) = 0; }; #endif //__FEMON_AUDIO_H