⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aencodeproperties.h

📁 音频编码
💻 H
字号:
/** * * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows * *  Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 * */ /*!	\author Steve Lhomme	\version \$Id: AEncodeProperties.h,v 1.5 2002/04/07 13:31:35 robux4 Exp $*/#if !defined(_AENCODEPROPERTIES_H__INCLUDED_)#define _AENCODEPROPERTIES_H__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include <windows.h>#include <string>#include "ADbg/ADbg.h"//#include "BladeMP3EncDLL.h"#include "tinyxml/tinyxml.h"//#include "AParameters/AParameters.h"typedef const struct {	UINT id;	const char *tip;} ToolTipItem;/**  \class AEncodeProperties  \brief the AEncodeProperties class is responsible for handling all the encoding properties*/class AEncodeProperties  {public:	/**		\brief default constructor		\param the windows module with which you can retrieve many informations	*/	AEncodeProperties(HMODULE hModule);	/**		\brief default destructor	*/	virtual ~AEncodeProperties() {}	/**		\enum BRMode		\brief A bitrate mode (CBR, VBR, ABR)	*/	enum BRMode { BR_CBR, BR_VBR, BR_ABR };	/**		\brief Handle all the commands that occur in the Config dialog box	*/	bool HandleDialogCommand(const HWND parentWnd, const WPARAM wParam, const LPARAM lParam);	/**		\brief check wether 2 instances are equal, ie have the same encoding parameters	*/	bool operator != (const AEncodeProperties & the_instance) const;	/**		\brief Check wether the Encode process should use the Copyright bit	*/	inline const bool GetCopyrightMode() const { return bCopyright; }	/**		\brief Check wether the Encode process should use the CRC bit	*/	inline const bool GetCRCMode() const { return bCRC; }	/**		\brief Check wether the Encode process should use the Original bit	*/	inline const bool GetOriginalMode() const { return bOriginal; }	/**		\brief Check wether the Encode process should use the Private bit	*/	inline const bool GetPrivateMode() const { return bPrivate; }	/**		\brief Check wether the Encode process should use the Smart Bitrate output	*/	inline const bool GetSmartOutputMode() const { return bSmartOutput; }	/**		\brief Check wether the Encode process should allow Average Bitrate output	*/	inline const bool GetAbrOutputMode() const { return bAbrOutput; }	/**		\brief Check wether the Encode process shouldn't use the Bit Reservoir	*/	inline const bool GetNoBiResMode() const { return bNoBitRes; }	/**		\brief Check wether the Encode process should force the channel mode (stereo or mono resampling)	*/	inline const bool GetForceChannelMode() const { return bForceChannel; }	/**		\brief Check wether the Encode process should use the VBR mode	*/	inline const BRMode GetVBRUseMode() const { return mBRmode; }	/**		\brief Check wether the Encode process should use the Xing frame in the VBR mode		\note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file.	*/	inline const bool GetXingFrameMode() const { return bXingFrame; }	/**		\brief Check wether the Encode process should resample before encoding	*/	inline const bool GetResampleMode() const { return bResample; }		/**		\brief Set wether the Encode process should use the Copyright bit	*/	inline void SetCopyrightMode(const bool bMode) { bCopyright = bMode; }	/**		\brief Set wether the Encode process should use the CRC bit	*/	inline void SetCRCMode(const bool bMode) { bCRC = bMode; }	/**		\brief Set wether the Encode process should use the Original bit	*/	inline void SetOriginalMode(const bool bMode) { bOriginal = bMode; }	/**		\brief Set wether the Encode process should use the Private bit	*/	inline void SetPrivateMode(const bool bMode) { bPrivate = bMode; }	/**		\brief Set wether the Encode process should use the Smart Bitrate output	*/	inline void SetSmartOutputMode(const bool bMode) { bSmartOutput = bMode; }	/**		\brief Set wether the Encode process should use the Average Bitrate output	*/	inline void SetAbrOutputMode(const bool bMode) { bAbrOutput = bMode; }	/**		\brief Set wether the Encode process shouldn't use the Bit Reservoir	*/	inline void SetNoBiResMode(const bool bMode) { bNoBitRes = bMode; }		/**		\brief Set wether the Encode process should force the channel mode (stereo or mono resampling)	*/	inline void SetForceChannelMode(const bool bMode) { bForceChannel = bMode; }		/**		\brief Set wether the Encode process should use the VBR mode	*/	inline void SetVBRUseMode(const BRMode mode) { mBRmode = mode; }	/**		\brief Set wether the Encode process should use the Xing frame in the VBR mode		\note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file.	*/	inline void SetXingFrameMode(const bool bMode) { bXingFrame = bMode; }	/**		\brief CBR : Get the bitrate to use         / 		       VBR : Get the minimum bitrate value	*/	const unsigned int GetBitrateValue() const;	/**		\brief Get the current (VBR:min) bitrate for the specified MPEG version		\param bitrate the data that will be filled with the bitrate		\param MPEG_Version The MPEG version (MPEG1 or MPEG2)		\return 0 if the bitrate is not found, 1 if the bitrate is found	*/	const int GetBitrateValue(DWORD & bitrate, const DWORD MPEG_Version) const;	/**		\brief Get the current (VBR:min) bitrate for MPEG I		\param bitrate the data that will be filled with the bitrate		\return 0 if the bitrate is not found, 1 if the bitrate is found	*/	const int GetBitrateValueMPEG1(DWORD & bitrate) const;	/**		\brief Get the current (VBR:min) bitrate for MPEG II		\param bitrate the data that will be filled with the bitrate		\return 0 if the bitrate is not found, 1 if the bitrate is found	*/	const int GetBitrateValueMPEG2(DWORD & bitrate) const;	/**		\brief Get the current (VBR:min) bitrate in the form of a string		\param string the string that will be filled		\param string_size the size of the string		\return -1 if the bitrate is not found, and the number of char copied otherwise	*/	inline const int GetBitrateString(char * string, int string_size) const {return GetBitrateString(string,string_size,nMinBitrateIndex); }	/**		\brief Get the (VBR:min) bitrate corresponding to the specified index in the form of a string		\param string the string that will be filled		\param string_size the size of the string		\param a_bitrateID the index in the Bitrate table		\return -1 if the bitrate is not found, and the number of char copied otherwise	*/	const int GetBitrateString(char * string, int string_size, int a_bitrateID) const;	/**		\brief Get the number of possible bitrates	*/	inline const int GetBitrateLentgh() const { return sizeof(the_Bitrates) / sizeof(unsigned int); }	/**		\brief Get the number of possible sampling frequencies	*/	inline const unsigned int GetResampleFreq() const { return the_SamplingFreqs[nSamplingFreqIndex]; }	/**		\brief Get the max compression ratio allowed (1:15 default)	*/	inline double GetSmartRatio() const { return SmartRatioMax;}	/**		\brief Get the min ABR bitrate possible	*/	inline unsigned int GetAbrBitrateMin() const { return AverageBitrate_Min;}	/**		\brief Get the max ABR bitrate possible	*/	inline unsigned int GetAbrBitrateMax() const { return AverageBitrate_Max;}	/**		\brief Get the step between ABR bitrates	*/	inline unsigned int GetAbrBitrateStep() const { return AverageBitrate_Step;}	/**		\brief Get the VBR attributes for a specified MPEG version		\param MaxBitrate receive the maximum bitrate possible in the VBR mode		\param Quality receive the quality value (0 to 9 see Lame doc for more info)		\param VBRHeader receive the value that indicates wether the VBR/Xing header should be filled		\param MPEG_Version The MPEG version (MPEG1 or MPEG2)		\return the VBR mode (Old, New, ABR, MTRH, Default or None)	*///	VBRMETHOD GetVBRValue(DWORD & MaxBitrate, int & Quality, DWORD & AbrBitrate, BOOL & VBRHeader, const DWORD MPEG_Version) const;	/**		\brief Get the Lame DLL Location	*///	const char * GetDllLocation() const { return DllLocation.c_str(); }	/**		\brief Set the Lame DLL Location	*///	void SetDllLocation( const char * the_string ) { DllLocation = the_string; }	/**		\brief Get the output directory for encoding	*///	const char * GetOutputDirectory() const { return OutputDir.c_str(); }	/**		\brief Set the output directory for encoding	*///	void SetOutputDirectory( const char * the_string ) { OutputDir = the_string; }	/**		\brief Get the current channel mode to use	*/	const unsigned int GetChannelModeValue() const;	/**		\brief Get the current channel mode in the form of a string	*/	inline const char * GetChannelModeString() const {return GetChannelModeString(nChannelIndex); }	/**		\brief Get the channel mode in the form of a string for the specified Channel mode index		\param a_channelID the Channel mode index (see GetChannelLentgh())	*/	const char * GetChannelModeString(const int a_channelID) const;	/**		\brief Get the number of possible channel mode	*/	inline const int GetChannelLentgh() const { return 3; }	/**		\brief Get the current preset to use, see lame documentation/code for more info on the possible presets	*///	const LAME_QUALTIY_PRESET GetPresetModeValue() const;	/**		\brief Get the preset in the form of a string for the specified Channel mode index		\param a_presetID the preset index (see GetPresetLentgh())	*/	const char * GetPresetModeString(const int a_presetID) const;	/**		\brief Get the number of possible presets	*///	inline const int GetPresetLentgh() const { return sizeof(the_Presets) / sizeof(LAME_QUALTIY_PRESET); }	/**		\brief Start the user configuration process (called by AOut::config())	*/	bool Config(const HINSTANCE hInstance, const HWND HwndParent);	/**		\brief Init the config dialog box with the right texts and choices	*/	bool InitConfigDlg(HWND hDialog);	/**		\brief Update the instance parameters from the config dialog box	*/	bool UpdateValueFromDlg(HWND hDialog);	/**		\brief Update the config dialog box from the instance parameters	*/	bool UpdateDlgFromValue(HWND hDialog);	/**		\brief Update the config dialog box with the BitRate mode	*/	static void DisplayVbrOptions(const HWND hDialog, const BRMode the_mode);	/**		\brief Handle the saving of parameters when something has changed in the config dialog box	*/	void SaveParams(const HWND hDialog);	/**		\brief Save the current parameters (current config in use)	*/	void ParamsSave(void);	/**		\brief Load the parameters (current config in use)	*/	void ParamsRestore(void);	/**		\brief Select the specified config name as the new default one	*/	void SelectSavedParams(const std::string config_name);	/**		\brief Save the current parameters to the specified config name	*/	void SaveValuesToStringKey(const std::string & config_name);	/**		\brief Rename the current config name to something else	*/	bool RenameCurrentTo(const std::string & new_config_name);	/**		\brief Delete the config name from the saved configs	*/	bool DeleteConfig(const std::string & config_name);	ADbg              my_debug;	/**		\brief Update the slides value (on scroll)	*/	void UpdateDlgFromSlides(HWND parent_window) const;	static ToolTipItem Tooltips[13];private:	bool bCopyright;	bool bCRC;	bool bOriginal;	bool bPrivate;	bool bNoBitRes;	BRMode mBRmode;	bool bXingFrame;	bool bForceChannel;	bool bResample;	bool bSmartOutput;	bool bAbrOutput;	int VbrQuality;	unsigned int AverageBitrate_Min;	unsigned int AverageBitrate_Max;	unsigned int AverageBitrate_Step;	double SmartRatioMax;	static const unsigned int the_ChannelModes[3];	int nChannelIndex;	static const unsigned int the_Bitrates[18];	static const unsigned int the_MPEG1_Bitrates[14];	static const unsigned int the_MPEG2_Bitrates[14];	int nMinBitrateIndex; // CBR and VBR	int nMaxBitrateIndex; // only used in VBR mode	static const unsigned int the_SamplingFreqs[9];	int nSamplingFreqIndex;//	static const LAME_QUALTIY_PRESET the_Presets[17];	int nPresetIndex;//	char DllLocation[512];//	std::string DllLocation;//	char OutputDir[MAX_PATH];//	std::string OutputDir;//	AParameters my_base_parameters;	TiXmlDocument my_stored_data;	std::string my_store_location;	std::string my_current_config;//	HINSTANCE hDllInstance;	void SaveValuesToElement(TiXmlElement * the_element) const;	inline void SetAttributeBool(TiXmlElement * the_elt,const std::string & the_string, const bool the_value) const;	void UpdateConfigs(const HWND HwndDlg);	void EnableAbrOptions(HWND hDialog, bool enable);	HMODULE my_hModule;	/**		\brief		\param config_name		\param parentNode	*/	void GetValuesFromKey(const std::string & config_name, const TiXmlNode & parentNode);};#endif // !defined(_AENCODEPROPERTIES_H__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -