Blame ports/MSVC++/2008clr/mpg123clr/enum.h

Packit c32a2d
/*
Packit c32a2d
	mpg123clr: MPEG Audio Decoder library Common Language Runtime version.
Packit c32a2d

Packit c32a2d
	copyright 2009 by Malcolm Boczek - free software under the terms of the LGPL 2.1
Packit c32a2d
	mpg123clr.dll is a derivative work of libmpg123 - all original mpg123 licensing terms apply.
Packit c32a2d

Packit c32a2d
	All rights to this work freely assigned to the mpg123 project.
Packit c32a2d
*/
Packit c32a2d
/*
Packit c32a2d
	libmpg123: MPEG Audio Decoder library
Packit c32a2d

Packit c32a2d
	copyright 1995-2011 by the mpg123 project - free software under the terms of the LGPL 2.1
Packit c32a2d
	see COPYING and AUTHORS files in distribution or http://mpg123.org
Packit c32a2d

Packit c32a2d
*/
Packit c32a2d
/*
Packit c32a2d
	1.8.1.0	04-Aug-09	Initial release.
Packit c32a2d
	1.10.0.0 30-Nov-09	release match - added mpg123_feature (mb)
Packit c32a2d
	1.13.0.0 13-Jan-11	release match (mb)
Packit c32a2d
*/
Packit c32a2d

Packit c32a2d
#pragma once
Packit c32a2d

Packit c32a2d
#pragma warning(disable : 4635)
Packit c32a2d
#include "mpg123.h"
Packit c32a2d
#pragma warning(default : 4635)
Packit c32a2d

Packit c32a2d

Packit c32a2d
namespace mpg123clr
Packit c32a2d
{
Packit c32a2d
	///<summary>Mpg123 enumerations.</summary>
Packit c32a2d
	namespace mpg
Packit c32a2d
	{
Packit c32a2d

Packit c32a2d
		///<summary>Enumeration of the parameters types that it is possible to set/get.</summary>
Packit c32a2d
		public enum class parms
Packit c32a2d
		{
Packit c32a2d
			verbose = MPG123_VERBOSE,				/// set verbosity value for enabling messages to stderr, >= 0 makes sense (integer)
Packit c32a2d
			flags = MPG123_FLAGS,					/// set all flags, p.ex val = MPG123_GAPLESS|MPG123_MONO_MIX (integer)
Packit c32a2d
			add_flags = MPG123_ADD_FLAGS,			/// add some flags (integer)
Packit c32a2d
			force_rate = MPG123_FORCE_RATE,			/// when value > 0, force output rate to that value (integer)
Packit c32a2d
			down_sample = MPG123_DOWN_SAMPLE,		/// 0=native rate, 1=half rate, 2=quarter rate (integer)
Packit c32a2d
			rva = MPG123_RVA,						/// one of the RVA choices above (integer)
Packit c32a2d
			downspeed = MPG123_DOWNSPEED,			/// play a frame N times (integer)
Packit c32a2d
			upspeed = MPG123_UPSPEED,				/// play every Nth frame (integer)
Packit c32a2d
			start_frame = MPG123_START_FRAME,		/// start with this frame (skip frames before that, integer)
Packit c32a2d
			decode_frames = MPG123_DECODE_FRAMES,	/// decode only this number of frames (integer)
Packit c32a2d
			icy_interval = MPG123_ICY_INTERVAL,		/// stream contains ICY metadata with this interval (integer)
Packit c32a2d
			outscale = MPG123_OUTSCALE,				/// the scale for output samples (amplitude - integer or float according to mpg123 output format, normally integer)
Packit c32a2d
			timeout = MPG123_TIMEOUT,				/// timeout for reading from a stream (not supported on win32, integer)
Packit c32a2d
			remove_flags = MPG123_REMOVE_FLAGS,		/// remove some flags (inverse of MPG123_ADD_FLAGS, integer)
Packit c32a2d
			resync_limit = MPG123_RESYNC_LIMIT,		/// Try resync on frame parsing for that many bytes or until end of stream (<0 ... integer).
Packit c32a2d
			index_size = MPG123_INDEX_SIZE,			/// Set the frame index size (if supported). Values <0 mean that the index is allowed to grow dynamically in these steps (in positive direction, of course) -- Use this when you really want a full index with every individual frame.
Packit c32a2d
			preframes = MPG123_PREFRAMES			/// Decode/ignore that many frames in advance for layer 3. This is needed to fill bit reservoir after seeking, for example (but also at least one frame in advance is needed to have all "normal" data for layer 3). Give a positive integer value, please.
Packit c32a2d

Packit c32a2d
		};
Packit c32a2d

Packit c32a2d

Packit c32a2d
		///<summary>Parameter flag bits.</summary>
Packit c32a2d
		///<remarks>Equivalent to MPG123_FLAGS, use the usual binary or ( | ) to combine.</remarks>
Packit c32a2d
		public enum class param_flags
Packit c32a2d
		{
Packit c32a2d
			force_mono = MPG123_FORCE_MONO,			///     0111 Force some mono mode: This is a test bitmask for seeing if any mono forcing is active. 
Packit c32a2d
			mono_left = MPG123_MONO_LEFT,			///     0001 Force playback of left channel only.  
Packit c32a2d
			mono_right = MPG123_MONO_RIGHT,			///     0010 Force playback of right channel only. 
Packit c32a2d
			mono_mix = MPG123_MONO_MIX,				///     0100 Force playback of mixed mono.         
Packit c32a2d
			force_stereo = MPG123_FORCE_STEREO,		///     1000 Force stereo output.                  
Packit c32a2d
			force_8bit = MPG123_FORCE_8BIT,			/// 00010000 Force 8bit formats.                   
Packit c32a2d
			quiet = MPG123_QUIET,					/// 00100000 Suppress any printouts (overrules verbose).                    
Packit c32a2d
			gapless = MPG123_GAPLESS,				/// 01000000 Enable gapless decoding (default on if libmpg123 has support). 
Packit c32a2d
			no_resync = MPG123_NO_RESYNC,			/// 10000000 Disable resync stream after error.                             
Packit c32a2d
			seekbuffer = MPG123_SEEKBUFFER,			/// 000100000000 Enable small buffer on non-seekable streams to allow some peek-ahead (for better MPEG sync). 
Packit c32a2d
			fuzzy = MPG123_FUZZY,					/// 001000000000 Enable fuzzy seeks (guessing byte offsets or using approximate seek points from Xing TOC) 
Packit c32a2d
			force_float = MPG123_FORCE_FLOAT,		/// 010000000000 Force floating point output (32 or 64 bits depends on mpg123 internal precision). 
Packit c32a2d

Packit c32a2d
			///<summary>Prevent ID3 text translation to UTF-8.
Packit c32a2d
			///<para>NOTE: Do not set if you intend to use CLR id3v2 objects.</para>
Packit c32a2d
			///</summary>
Packit c32a2d
			plain_id3text = MPG123_PLAIN_ID3TEXT,	/// 100000000000 Do not translate ID3 text data to UTF-8. ID3 strings will contain the raw text data, with the first byte containing the ID3 encoding code.
Packit c32a2d

Packit c32a2d
			ignore_streamlength = MPG123_IGNORE_STREAMLENGTH,	/// 1000000000000 Ignore any stream length information contained in the stream, which can be contained in a 'TLEN' frame of an ID3v2 tag or a Xing tag.
Packit c32a2d

Packit c32a2d
			// 1.13.0.0
Packit c32a2d
			skip_id3v2 = MPG123_SKIP_ID3V2,			/// 10 0000 0000 0000 Do not parse ID3v2 tags, just skip them.
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>RVA enumeration.</summary>
Packit c32a2d
		///<remarks>Equivalent to MPG123_RVA.</remarks>
Packit c32a2d
		public enum class rva
Packit c32a2d
		{
Packit c32a2d
			rva_off   = MPG123_RVA_OFF,		/// RVA disabled (default).   
Packit c32a2d
			rva_mix   = MPG123_RVA_MIX,		/// Use mix/track/radio gain. 
Packit c32a2d
			rva_album = MPG123_RVA_ALBUM,	/// Use album/audiophile gain 
Packit c32a2d
			rva_max   = MPG123_RVA_ALBUM,	/// The maximum RVA code, may increase in future. 
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>Feature set available for query with mpg123_feature. </summary>
Packit c32a2d
		///<remarks>Equivalent to MPG123_FEATURE_SET.</remarks>
Packit c32a2d
		public enum class feature_set
Packit c32a2d
		{
Packit c32a2d
			feature_abi_utf8open = MPG123_FEATURE_ABI_UTF8OPEN,				/// mpg123 expects path names to be given in UTF-8 encoding instead of plain native.
Packit c32a2d
			feature_output_8bit = MPG123_FEATURE_OUTPUT_8BIT,				/// 8bit output  
Packit c32a2d
			feature_output_16bit = MPG123_FEATURE_OUTPUT_16BIT,				/// 16bit output
Packit c32a2d
			feature_output_32bit = MPG123_FEATURE_OUTPUT_32BIT,				/// 32bit output
Packit c32a2d
			feature_index = MPG123_FEATURE_INDEX,							/// support for building a frame index for accurate seeking
Packit c32a2d
			feature_parse_id3v2 = MPG123_FEATURE_PARSE_ID3V2,				/// id3v2 parsing
Packit c32a2d
			feature_decode_layer1 = MPG123_FEATURE_DECODE_LAYER1,			/// mpeg layer-1 decoder enabled
Packit c32a2d
			feature_decode_layer2 = MPG123_FEATURE_DECODE_LAYER2,			/// mpeg layer-2 decoder enabled
Packit c32a2d
			feature_decode_layer3 = MPG123_FEATURE_DECODE_LAYER3,			/// mpeg layer-3 decoder enabled
Packit c32a2d
			feature_decode_accurate = MPG123_FEATURE_DECODE_ACCURATE,		/// accurate decoder rounding
Packit c32a2d
			feature_decode_downsample = MPG123_FEATURE_DECODE_DOWNSAMPLE,	/// downsample (sample omit)
Packit c32a2d
			feature_decode_ntom = MPG123_FEATURE_DECODE_NTOM,				/// flexible rate decoding
Packit c32a2d
			feature_parse_icy = MPG123_FEATURE_PARSE_ICY,					/// ICY support
Packit c32a2d
			feature_timeout_read = MPG123_FEATURE_TIMEOUT_READ,				/// Reader with timeout (network)
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d

Packit c32a2d

Packit c32a2d
		///<summary>An enum over all sample types possibly known to mpg123.</summary>
Packit c32a2d
		///<remarks><para>The values are designed as bit flags to allow bitmasking for encoding families.</para>
Packit c32a2d
		///
Packit c32a2d
		///<para>Note that (your build of) libmpg123 does not necessarily support all these.
Packit c32a2d
		/// Usually, you can expect the 8bit encodings and signed 16 bit.
Packit c32a2d
		/// Also 32bit float will be usual beginning with mpg123-1.7.0 .</para>
Packit c32a2d
		///
Packit c32a2d
		///<para>What you should bear in mind is that (SSE, etc) optimized routines may be absent
Packit c32a2d
		/// for some formats. We do have SSE for 16, 32 bit and float, though.
Packit c32a2d
		/// 24 bit integer is done via postprocessing of 32 bit output -- just cutting
Packit c32a2d
		/// the last byte, no rounding, even. If you want better, do it yourself.</para>
Packit c32a2d
		///
Packit c32a2d
		///<para>All formats are in native byte order. On a little endian machine this should mean
Packit c32a2d
		/// that you can just feed the MPG123_ENC_SIGNED_32 data to common 24bit hardware that
Packit c32a2d
		/// ignores the lowest byte (or you could choose to do rounding with these lower bits).</para>
Packit c32a2d
		///</remarks>
Packit c32a2d
		public enum class enc
Packit c32a2d
		{
Packit c32a2d
			enc_8			= MPG123_ENC_8,				/// 0000 0000 1111 Some 8 bit  integer encoding. 
Packit c32a2d
			enc_16			= MPG123_ENC_16,			/// 0000 0100 0000 Some 16 bit integer encoding.
Packit c32a2d
			enc_24			= MPG123_ENC_24,			/// 0100 0000 0000 0000 Some 24 bit integer encoding. (r1.13)
Packit c32a2d
			enc_32			= MPG123_ENC_32,			/// 0001 0000 0000 Some 32 bit integer encoding.
Packit c32a2d
			enc_signed		= MPG123_ENC_SIGNED,		/// 0000 1000 0000 Some signed integer encoding.
Packit c32a2d
			enc_float		= MPG123_ENC_FLOAT,			/// 1110 0000 0000 Some float encoding.
Packit c32a2d
			enc_signed_16   = MPG123_ENC_SIGNED_16,		///           1101 0000 signed 16 bit
Packit c32a2d
			enc_unsigned_16 = MPG123_ENC_UNSIGNED_16,	///           0110 0000 unsigned 16 bit
Packit c32a2d
			enc_unsigned_8  = MPG123_ENC_UNSIGNED_8,    ///           0000 0001 unsigned 8 bit
Packit c32a2d
			enc_signed_8    = MPG123_ENC_SIGNED_8,      ///           1000 0010 signed 8 bit
Packit c32a2d
			enc_ulaw_8		= MPG123_ENC_ULAW_8,		///           0000 0100 ulaw 8 bit
Packit c32a2d
			enc_alaw_8		= MPG123_ENC_ALAW_8,		///           0000 1000 alaw 8 bit
Packit c32a2d
			enc_signed_32   = MPG123_ENC_SIGNED_32,		/// 0001 0001 1000 0000 signed 32 bit
Packit c32a2d
			enc_unsigned_32 = MPG123_ENC_UNSIGNED_32,   /// 0010 0001 0000 0000 unsigned 32 bit
Packit c32a2d
			enc_signed_24	= MPG123_ENC_SIGNED_24,		/// 0101 0000 1000 0000 signed 24 bit (r1.13)
Packit c32a2d
			enc_unsigned_24	= MPG123_ENC_UNSIGNED_24,	/// 0110 0000 0000 0000 unsigned 24 bit (r1.13)
Packit c32a2d
			enc_float_32    = MPG123_ENC_FLOAT_32,      ///      0010 0000 0000 32bit float
Packit c32a2d
			enc_float_64    = MPG123_ENC_FLOAT_64,      ///      0100 0000 0000 64bit float
Packit c32a2d
			enc_any			= MPG123_ENC_ANY,			/// any encoding
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d

Packit c32a2d
		///<summary>Channel count enumeration</summary>
Packit c32a2d
		///<remarks>clr added <cref name="both">both</cref></remarks>
Packit c32a2d
		public enum class channelcount
Packit c32a2d
		{
Packit c32a2d
			mono   = MPG123_MONO,
Packit c32a2d
			stereo = MPG123_STEREO,
Packit c32a2d
			both   = MPG123_MONO | MPG123_STEREO,
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>Channel enumeration.</summary>
Packit c32a2d
		public enum class channels
Packit c32a2d
		{
Packit c32a2d
			left	= MPG123_LEFT,	/// The Left Channel. 
Packit c32a2d
			right	= MPG123_RIGHT,	/// The Right Channel. 
Packit c32a2d
			both	= MPG123_LR,	/// Both left and right channel; same as MPG123_LEFT|MPG123_RIGHT 
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>VBR enumeration.</summary>
Packit c32a2d
		public enum class mpeg_vbr
Packit c32a2d
		{
Packit c32a2d
			cbr = MPG123_CBR,		/// Constant Bitrate Mode (default) 
Packit c32a2d
			vbr = MPG123_VBR,		/// Variable Bitrate Mode 
Packit c32a2d
			abr = MPG123_ABR,		/// Average Bitrate Mode 
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>MPEG Version enumeration.</summary>
Packit c32a2d
		public enum class mpeg_version
Packit c32a2d
		{
Packit c32a2d
			mpeg_1_0 = MPG123_1_0,	/// MPEG Version 1.0 
Packit c32a2d
			mpeg_2_0 = MPG123_2_0,	/// MPEG Version 2.0 
Packit c32a2d
			mpeg_2_5 = MPG123_2_5,	/// MPEG Version 2.5 
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>MPEG Mode enumeration.</summary>
Packit c32a2d
		public enum class mpeg_mode
Packit c32a2d
		{
Packit c32a2d
			m_stereo	= MPG123_M_STEREO,	/// Standard Stereo. 
Packit c32a2d
			m_joint		= MPG123_M_JOINT,	/// Joint Stereo. 
Packit c32a2d
			m_dual		= MPG123_M_DUAL,	/// Dual Channel. 
Packit c32a2d
			m_mono		= MPG123_M_MONO,	/// Single Channel. 
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>MPEG Flags enumeration.</summary>
Packit c32a2d
		public enum class mpeg_flags
Packit c32a2d
		{
Packit c32a2d
			CRC			= MPG123_CRC,		/// The bitstream is error protected using 16-bit CRC. 
Packit c32a2d
			COPYRIGHT	= MPG123_COPYRIGHT,	/// The bitstream is copyrighted. 
Packit c32a2d
			PRIVATE		= MPG123_PRIVATE,	/// The private bit has been set. 
Packit c32a2d
			ORIGINAL	= MPG123_ORIGINAL,	/// The bitstream is an original, not a copy. 
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d
		///<summary>Positional state.</summary>
Packit c32a2d
		public enum class state
Packit c32a2d
		{
Packit c32a2d
			accurate	= MPG123_ACCURATE	/// Query if positons are currently accurate (integer value, 0 if false, 1 if true) 
Packit c32a2d
		};
Packit c32a2d

Packit c32a2d

Packit c32a2d
	}
Packit c32a2d
}