pl-nk v0.4.5
Plonk|Plink|Plank are a set of cross-platform C/C++ frameworks for audio software development
plonk_AudioFile.h
00001 /*
00002  -------------------------------------------------------------------------------
00003  This file is part of the Plink, Plonk, Plank libraries
00004   by Martin Robinson
00005  
00006  http://code.google.com/p/pl-nk/
00007  
00008  Copyright University of the West of England, Bristol 2011-14
00009  All rights reserved.
00010  
00011  Redistribution and use in source and binary forms, with or without
00012  modification, are permitted provided that the following conditions are met:
00013  
00014  * Redistributions of source code must retain the above copyright
00015    notice, this list of conditions and the following disclaimer.
00016  * Redistributions in binary form must reproduce the above copyright
00017    notice, this list of conditions and the following disclaimer in the
00018    documentation and/or other materials provided with the distribution.
00019  * Neither the name of University of the West of England, Bristol nor 
00020    the names of its contributors may be used to endorse or promote products
00021    derived from this software without specific prior written permission.
00022  
00023  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00024  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00025  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
00026  DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF THE WEST OF ENGLAND, BRISTOL BE 
00027  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
00028  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
00029  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
00030  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
00031  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
00032  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
00033  
00034  This software makes use of third party libraries. For more information see:
00035  doc/license.txt included in the distribution.
00036  -------------------------------------------------------------------------------
00037  */
00038 
00039 #ifndef PLONK_AUDIOFILE_H
00040 #define PLONK_AUDIOFILE_H
00041 
00043 class AudioFile
00044 {
00045 public:
00046     enum Format
00047     {
00048         FormatInvalid               = PLANKAUDIOFILE_FORMAT_INVALID,
00049         FormatUnknown               = PLANKAUDIOFILE_FORMAT_UNKNOWN,
00050         FormatWAV                   = PLANKAUDIOFILE_FORMAT_WAV,
00051         FormatAIFF                  = PLANKAUDIOFILE_FORMAT_AIFF,
00052         FormatAIFC                  = PLANKAUDIOFILE_FORMAT_AIFC,
00053         FormatOggVorbis             = PLANKAUDIOFILE_FORMAT_OGGVORBIS,
00054         FormatOpus                  = PLANKAUDIOFILE_FORMAT_OPUS,
00055         FormatCAF                   = PLANKAUDIOFILE_FORMAT_CAF,
00056         FormatW64                   = PLANKAUDIOFILE_FORMAT_W64,
00057         FormatRegion                = PLANKAUDIOFILE_FORMAT_REGION,
00058         FormatMulti                 = PLANKAUDIOFILE_FORMAT_MULTI,
00059         FormatArray                 = PLANKAUDIOFILE_FORMAT_ARRAY,
00060         FormatQueue                 = PLANKAUDIOFILE_FORMAT_QUEUE,
00061         ForamtCustom                = PLANKAUDIOFILE_FORMAT_CUSTOM
00062     };
00063     
00064     enum EncodingFlag
00065     {
00066         EncodingFlagBigEndian       = PLANKAUDIOFILE_ENCODING_BIGENDIAN_FLAG,
00067         EncodingFlagPCM             = PLANKAUDIOFILE_ENCODING_PCM_FLAG,
00068         EncodingFlagFloat           = PLANKAUDIOFILE_ENCODING_FLOAT_FLAG,
00069         EncodingFlagNonIntervleaved = PLANKAUDIOFILE_ENCODING_NONINTERLEAVED_FLAG
00070     };
00071     
00072     enum Encoding
00073     {
00074         EncodingInvalid                         = PLANKAUDIOFILE_ENCODING_INVALID,
00075         EncodingUnknown                         = PLANKAUDIOFILE_ENCODING_UNKNOWN,
00076         EncodingUnused1                         = PLANKAUDIOFILE_ENCODING_UNUSED1,
00077                 
00078         EncodingPCMLittleEndian                 = PLANKAUDIOFILE_ENCODING_PCM_LITTLEENDIAN,
00079         EncodingPCMBigEndian                    = PLANKAUDIOFILE_ENCODING_PCM_BIGENDIAN,
00080         EncodingFloatLittleEndian               = PLANKAUDIOFILE_ENCODING_FLOAT_LITTLEENDIAN,
00081         EncodingFloatBigEndian                  = PLANKAUDIOFILE_ENCODING_FLOAT_BIGENDIAN,
00082         
00083         EncodingPCMLittleEndianNonInterleaved   = PLANKAUDIOFILE_ENCODING_PCM_LITTLEENDIAN_NONINTERLEAVED,
00084         EncodingPCMBigEndianNonInterleaved      = PLANKAUDIOFILE_ENCODING_PCM_BIGENDIAN_NONINTERLEAVED,
00085         EncodingFloatLittleEndianNonInterleaved = PLANKAUDIOFILE_ENCODING_FLOAT_LITTLEENDIAN_NONINTERLEAVED,
00086         EncodingFloatBigEndianNonInterleaved    = PLANKAUDIOFILE_ENCODING_FLOAT_BIGENDIAN_NONINTERLEAVED,
00087                 
00088         EncodingMin                             = PLANKAUDIOFILE_ENCODING_MIN,
00089         EncodingMax                             = PLANKAUDIOFILE_ENCODING_MAX
00090     };
00091     
00092     enum WAVOption
00093     {
00094         CompressionPCM              = PLANKAUDIOFILE_WAV_COMPRESSION_PCM,
00095         CompressionFloat            = PLANKAUDIOFILE_WAV_COMPRESSION_FLOAT,
00096         CompressionExtensible       = PLANKAUDIOFILE_WAV_COMPRESSION_EXTENSIBLE
00097     };
00098     
00099     enum CAFOption
00100     {
00101         CAFDefaultHeaderPad         = PLANKAUDIOFILE_CAF_DEFAULTHEADERPAD
00102     };
00103     
00104     enum AIFFOption
00105     {
00106         AIFCVersion                 = PLANKAUDIOFILE_AIFC_VERSION
00107     };
00108     
00109     enum SampleType
00110     {
00111         Invalid,
00112         Short,
00113         Int24,
00114         Int,
00115         Char,
00116         Float,
00117         Double,
00118         NumSampleTypes
00119     };
00120     
00121     enum Defaults
00122     {
00123         DefaultBufferSize = 32768
00124     };
00125     
00126     enum MultiFileTypes
00127     {
00128         MultiFileUnknown = PLANKMULITFILE_MODE_UNKNOWN,
00129         MultiFileArraySequenceOnce = PLANKMULITFILE_MODE_ARRAYSEQUENCEONCE,
00130         MultiFileArraySequenceLoop = PLANKMULITFILE_MODE_ARRAYSEQUENCELOOP,
00131         MultiFileArrayRandom = PLANKMULITFILE_MODE_ARRAYRANDOM,
00132         MultiFileArrayRandomNoRepeat = PLANKMULITFILE_MODE_ARRAYRANDOMNOREPEAT,
00133         MultiFileArrayIndexRef = PLANKMULITFILE_MODE_ARRAYINDEXREF,
00134         MultiFileQueue = PLANKMULITFILE_MODE_QUEUE,
00135         MultiFileCustom = PLANKMULITFILE_MODE_CUSTOM
00136     };
00137     
00138     enum MetaDataOption
00139     {
00140         DontConvertCuePointsToRegions = 0,
00141         ConvertCuePointsToRegions = 1,
00142         RemoveCuePoints = 2,
00143         ConvertCuePointsToRegionsRemovingCuePoints = 3
00144     };
00145     
00146     enum MetaDataIOFlags
00147     {
00148         MetaDataIOFlagsNone = PLANKAUDIOFILEMETADATA_IOFLAGS_NONE,                           //0x00000000
00149         MetaDataIOFlagsCuePoints = PLANKAUDIOFILEMETADATA_IOFLAGS_CUEPOINTS,                 //0x00000001
00150         MetaDataIOFlagsRegions = PLANKAUDIOFILEMETADATA_IOFLAGS_REGIONS,                     //0x00000002
00151         MetaDataIOFlagsLoops = PLANKAUDIOFILEMETADATA_IOFLAGS_LOOPS,                         //0x00000004
00152         MetaDataIOFlagsText = PLANKAUDIOFILEMETADATA_IOFLAGS_TEXT,                           //0x00000008
00153         MetaDataIOFlagssSampler = PLANKAUDIOFILEMETADATA_IOFLAGS_SAMPLER,                    //0x00000010
00154         MetaDataIOFlagsExtraSamplerData = PLANKAUDIOFILEMETADATA_IOFLAGS_EXTRASAMPLERDATA,   //0x00000020
00155         MetaDataIOFlagsInfo = PLANKAUDIOFILEMETADATA_IOFLAGS_INFO,                           //0x00000100
00156         MetaDataIOFlagsNormal = PLANKAUDIOFILEMETADATA_IOFLAGS_NORMAL,                       //0x0000013F
00157         MetaDataIOFlagsOverview = PLANKAUDIOFILEMETADATA_IOFLAGS_OVERVIEW,                   //0x00001000
00158         MetaDataIOFlagsCustom = PLANKAUDIOFILEMETADATA_IOFLAGS_CUSTOM,                       //0x80000000
00159         MetaDataIOFlagsAll = PLANKAUDIOFILEMETADATA_IOFLAGS_ALL                              //0xFFFFFFFF
00160     };
00161     
00162     enum CuePointTypes
00163     {
00164         CuePointUnknown = PLANKAUDIOFILE_CUEPOINTTYPE_UNKNOWN,
00165         CuePointCuePoint = PLANKAUDIOFILE_CUEPOINTTYPE_CUEPOINT,
00166         CuePointInsertPoint = PLANKAUDIOFILE_CUEPOINTTYPE_INSERTPOINT,
00167         CuePointPlayPosition = PLANKAUDIOFILE_CUEPOINTTYPE_PLAYPOSITION,
00168         CuePointRegionStart = PLANKAUDIOFILE_CUEPOINTTYPE_REGIONSTART,
00169         CuePointRegionEnd = PLANKAUDIOFILE_CUEPOINTTYPE_REGIONEND
00170     };
00171     
00172     enum RegionTypes
00173     {
00174         RegionUnknown = PLANKAUDIOFILE_REGIONTYPE_UNKNOWN,
00175         RegionRegion = PLANKAUDIOFILE_REGIONTYPE_REGION,
00176         RegionSelection = PLANKAUDIOFILE_REGIONTYPE_SELECTION,
00177         RegionLoop = PLANKAUDIOFILE_REGIONTYPE_LOOP,
00178         RegionLyrics = PLANKAUDIOFILE_REGIONTYPE_LYRICS
00179     };
00180     
00181     enum LoopTypes
00182     {
00183         LoopUnknown = PLANKAUDIOFILE_LOOPTYPE_UNKNOWN,
00184         LoopForward = PLANKAUDIOFILE_LOOPTYPE_FORWARD,
00185         LoopPingPong = PLANKAUDIOFILE_LOOPTYPE_PINGPONG,
00186         LoopReverse = PLANKAUDIOFILE_LOOPTYPE_REVERESE
00187     };
00188     
00189     enum ChannelIdentifiers
00190     {
00191         ChannelNone = PLANKAUDIOFILE_CHANNEL_NONE,
00192         ChannelFrontLeft = PLANKAUDIOFILE_CHANNEL_FRONT_LEFT,
00193         ChannelFrontRight = PLANKAUDIOFILE_CHANNEL_FRONT_RIGHT,
00194         ChannelFrontCenter = PLANKAUDIOFILE_CHANNEL_FRONT_CENTER,
00195         ChannelLowFrequency = PLANKAUDIOFILE_CHANNEL_LOW_FREQUENCY,
00196         ChannelBackLeft = PLANKAUDIOFILE_CHANNEL_BACK_LEFT,
00197         ChannelBackRight = PLANKAUDIOFILE_CHANNEL_BACK_RIGHT,
00198         ChannelFrontLeftOfCenter = PLANKAUDIOFILE_CHANNEL_FRONT_LEFT_OF_CENTER,
00199         ChannelFrontRightOfCenter = PLANKAUDIOFILE_CHANNEL_FRONT_RIGHT_OF_CENTER,
00200         ChannelBackCenter = PLANKAUDIOFILE_CHANNEL_BACK_CENTER,
00201         ChannelSideLeft = PLANKAUDIOFILE_CHANNEL_SIDE_LEFT,
00202         ChannelSideRight = PLANKAUDIOFILE_CHANNEL_SIDE_RIGHT,
00203         ChannelTopCenter = PLANKAUDIOFILE_CHANNEL_TOP_CENTER,
00204         ChannelTopFrontLeft = PLANKAUDIOFILE_CHANNEL_TOP_FRONT_LEFT,
00205         ChannelTopFrontCenter = PLANKAUDIOFILE_CHANNEL_TOP_FRONT_CENTER,
00206         ChannelTopFrontRight = PLANKAUDIOFILE_CHANNEL_TOP_FRONT_RIGHT,
00207         ChannelTopBackLeft = PLANKAUDIOFILE_CHANNEL_TOP_BACK_LEFT,
00208         ChannelTopBackCenter = PLANKAUDIOFILE_CHANNEL_TOP_BACK_CENTER,
00209         ChannelTopBackRight = PLANKAUDIOFILE_CHANNEL_TOP_BACK_RIGHT,
00210         ChannelUNUSED0 = PLANKAUDIOFILE_CHANNEL_UNUSED0,
00211         ChannelUNUSED1 = PLANKAUDIOFILE_CHANNEL_UNUSED1,
00212         ChannelUNUSED2 = PLANKAUDIOFILE_CHANNEL_UNUSED2,
00213         ChannelUNUSED3 = PLANKAUDIOFILE_CHANNEL_UNUSED3,
00214         ChannelUNUSED4 = PLANKAUDIOFILE_CHANNEL_UNUSED4,
00215         ChannelBitStream1Left = PLANKAUDIOFILE_CHANNEL_BITSTREAM_1_LEFT,
00216         ChannelBitStream1Right = PLANKAUDIOFILE_CHANNEL_BITSTREAM_1_RIGHT,
00217         ChannelBitStream2Left = PLANKAUDIOFILE_CHANNEL_BITSTREAM_2_LEFT,
00218         ChannelBitStream2Right = PLANKAUDIOFILE_CHANNEL_BITSTREAM_2_RIGHT,
00219         ChannelStereoLeft = PLANKAUDIOFILE_CHANNEL_STEREO_LEFT,
00220         ChannelStereoRight = PLANKAUDIOFILE_CHANNEL_STEREO_RIGHT,
00221         ChannelReserved = PLANKAUDIOFILE_CHANNEL_RESERVED,
00222         ChannelRearSurroundLeft = PLANKAUDIOFILE_CHANNEL_REAR_SURROUND_LEFT,
00223         ChannelRearSurroundRight = PLANKAUDIOFILE_CHANNEL_REAR_SURROUND_RIGHT,
00224         ChannelLeftWide = PLANKAUDIOFILE_CHANNEL_LEFT_WIDE,
00225         ChannelRightWide = PLANKAUDIOFILE_CHANNEL_RIGHT_WIDE,
00226         ChannelLowFrequencyExtra = PLANKAUDIOFILE_CHANNEL_LOW_FREQUENCY_EXTRA,
00227         ChannelLeftTotal = PLANKAUDIOFILE_CHANNEL_LEFT_TOTAL,
00228         ChannelRightTotal = PLANKAUDIOFILE_CHANNEL_RIGHT_TOTAL,
00229         ChannelHearingImpaired = PLANKAUDIOFILE_CHANNEL_HEARING_IMPAIRED,
00230         ChannelNarration = PLANKAUDIOFILE_CHANNEL_NARRATION,
00231         ChannelMono = PLANKAUDIOFILE_CHANNEL_MONO,
00232         ChannelDialogueCentricMix = PLANKAUDIOFILE_CHANNEL_DIALOGCENTRICMIX,
00233         ChannelCenterSurroundDirect = PLANKAUDIOFILE_CHANNEL_CENTERSURROUND_DIRECT,
00234         ChannelHaptic = PLANKAUDIOFILE_CHANNEL_HAPTIC,
00235         ChannelUseCooords = PLANKAUDIOFILE_CHANNEL_USE_COORDS,
00236         ChannelAmbisonicW = PLANKAUDIOFILE_CHANNEL_AMBISONIC_W,
00237         ChannelAmbisonicX = PLANKAUDIOFILE_CHANNEL_AMBISONIC_X,
00238         ChannelAmbisonicY = PLANKAUDIOFILE_CHANNEL_AMBISONIC_Y,
00239         ChannelAmbisonicZ = PLANKAUDIOFILE_CHANNEL_AMBISONIC_Z,
00240         ChannelMSMid = PLANKAUDIOFILE_CHANNEL_MS_MID,
00241         ChannelMSSide = PLANKAUDIOFILE_CHANNEL_MS_SIDE,
00242         ChannelXYX = PLANKAUDIOFILE_CHANNEL_XY_X,
00243         ChannelXYY = PLANKAUDIOFILE_CHANNEL_XY_Y,
00244         ChannelHeadphonesLeft = PLANKAUDIOFILE_CHANNEL_HEADPHONES_LEFT,
00245         ChannelHeadphonesRight = PLANKAUDIOFILE_CHANNEL_HEADPHONES_RIGHT,
00246         ChannelClickTrack = PLANKAUDIOFILE_CHANNEL_CLICK_TRACK,
00247         ChannelForeignLanguage = PLANKAUDIOFILE_CHANNEL_FOREIGN_LANGUAGE,
00248         ChannelDiscrete = PLANKAUDIOFILE_CHANNEL_DISCRETE,
00249         ChannelDiscreteN = PLANKAUDIOFILE_CHANNEL_DISCRETE_N,
00250         ChannelUnknown = PLANKAUDIOFILE_CHANNEL_UNKNOWN
00251     };
00252     
00253     enum ChannelLayouts
00254     {
00255         LayoutUndeifine = PLANKAUDIOFILE_LAYOUT_UNDEFINED,
00256         LayoutUseChannelBitMap = PLANKAUDIOFILE_LAYOUT_USECHANNELBITMAP,
00257         LayoutStandardMinimum = PLANKAUDIOFILE_LAYOUT_STANARDMINIMUM,
00258         LayoutMono = PLANKAUDIOFILE_LAYOUT_MONO,
00259         LayoutStereo = PLANKAUDIOFILE_LAYOUT_STEREO,
00260         LayoutStereoHeadphones = PLANKAUDIOFILE_LAYOUT_STEREOHEADPHONES,
00261         LayoutMatrixStereo = PLANKAUDIOFILE_LAYOUT_MATRIXSTEREO,
00262         LayoutMidSide = PLANKAUDIOFILE_LAYOUT_MIDSIDE,
00263         LayoutXY = PLANKAUDIOFILE_LAYOUT_XY,
00264         LayoutBinaural = PLANKAUDIOFILE_LAYOUT_BINAURAL,
00265         LayoutAmbisonicBFormat = PLANKAUDIOFILE_LAYOUT_AMBISONIC_B_FORMAT,
00266         LayoutQuadraphonic = PLANKAUDIOFILE_LAYOUT_QUADRAPHONIC,
00267         LayoutPentagonal = PLANKAUDIOFILE_LAYOUT_PENTAGONAL,
00268         LayoutHexagonal = PLANKAUDIOFILE_LAYOUT_HEXAGONAL,
00269         LayoutOctagonal = PLANKAUDIOFILE_LAYOUT_OCTAGONAL,
00270         LayoutCube = PLANKAUDIOFILE_LAYOUT_CUBE,
00271         LayoutMPEG_1_0 = PLANKAUDIOFILE_LAYOUT_MPEG_1_0,
00272         LayoutMPEG_2_0 = PLANKAUDIOFILE_LAYOUT_MPEG_2_0,
00273         LayoutMPEG_3_0_A = PLANKAUDIOFILE_LAYOUT_MPEG_3_0_A,
00274         LayoutMPEG_3_0_B = PLANKAUDIOFILE_LAYOUT_MPEG_3_0_B,
00275         LayoutMPEG_4_0_A = PLANKAUDIOFILE_LAYOUT_MPEG_4_0_A,
00276         LayoutMPEG_4_0_B = PLANKAUDIOFILE_LAYOUT_MPEG_4_0_B,
00277         LayoutMPEG_5_0_A = PLANKAUDIOFILE_LAYOUT_MPEG_5_0_A,
00278         LayoutMPEG_5_0_B = PLANKAUDIOFILE_LAYOUT_MPEG_5_0_B,
00279         LayoutMPEG_5_0_C = PLANKAUDIOFILE_LAYOUT_MPEG_5_0_C,
00280         LayoutMPEG_5_0_D = PLANKAUDIOFILE_LAYOUT_MPEG_5_0_D,
00281         LayoutMPEG_5_1_A = PLANKAUDIOFILE_LAYOUT_MPEG_5_1_A,
00282         LayoutMPEG_5_1_B = PLANKAUDIOFILE_LAYOUT_MPEG_5_1_B,
00283         LayoutMPEG_5_1_C = PLANKAUDIOFILE_LAYOUT_MPEG_5_1_C,
00284         LayoutMPEG_5_1_D = PLANKAUDIOFILE_LAYOUT_MPEG_5_1_D,
00285         LayoutMPEG_6_1_A = PLANKAUDIOFILE_LAYOUT_MPEG_6_1_A,
00286         LayoutMPEG_7_1_A = PLANKAUDIOFILE_LAYOUT_MPEG_7_1_A,
00287         LayoutMPEG_7_1_B = PLANKAUDIOFILE_LAYOUT_MPEG_7_1_B,
00288         LayoutMPEG_7_1_C = PLANKAUDIOFILE_LAYOUT_MPEG_7_1_C,
00289         LayoutEmagicDefault_7_1 = PLANKAUDIOFILE_LAYOUT_EMAGIC_DEFAULT_7_1,
00290         LayoutSMPTE_DTV = PLANKAUDIOFILE_LAYOUT_SMPTE_DTV,
00291         LayoutITU_1_0 = PLANKAUDIOFILE_LAYOUT_ITU_1_0,
00292         LayoutITU_2_0 = PLANKAUDIOFILE_LAYOUT_ITU_2_0,
00293         LayoutITU_2_1 = PLANKAUDIOFILE_LAYOUT_ITU_2_1,
00294         LayoutITU_2_2 = PLANKAUDIOFILE_LAYOUT_ITU_2_2,
00295         LayoutITU_3_0 = PLANKAUDIOFILE_LAYOUT_ITU_3_0,
00296         LayoutITU_3_1 = PLANKAUDIOFILE_LAYOUT_ITU_3_1,
00297         LayoutITU_3_2 = PLANKAUDIOFILE_LAYOUT_ITU_3_2,
00298         LayoutITU_3_2_1 = PLANKAUDIOFILE_LAYOUT_ITU_3_2_1,
00299         LayoutITU_3_4_1 = PLANKAUDIOFILE_LAYOUT_ITU_3_4_1,
00300         LayoutDVD_0 = PLANKAUDIOFILE_LAYOUT_DVD_0,
00301         LayoutDVD_1 = PLANKAUDIOFILE_LAYOUT_DVD_1,
00302         LayoutDVD_2 = PLANKAUDIOFILE_LAYOUT_DVD_2,
00303         LayoutDVD_3 = PLANKAUDIOFILE_LAYOUT_DVD_3,
00304         LayoutDVD_4 = PLANKAUDIOFILE_LAYOUT_DVD_4,
00305         LayoutDVD_5 = PLANKAUDIOFILE_LAYOUT_DVD_5,
00306         LayoutDVD_6 = PLANKAUDIOFILE_LAYOUT_DVD_6,
00307         LayoutDVD_7 = PLANKAUDIOFILE_LAYOUT_DVD_7,
00308         LayoutDVD_8 = PLANKAUDIOFILE_LAYOUT_DVD_8,
00309         LayoutDVD_9 = PLANKAUDIOFILE_LAYOUT_DVD_9,
00310         LayoutDVD_10 = PLANKAUDIOFILE_LAYOUT_DVD_10,
00311         LayoutDVD_11 = PLANKAUDIOFILE_LAYOUT_DVD_11,
00312         LayoutDVD_12 = PLANKAUDIOFILE_LAYOUT_DVD_12,
00313         LayoutDVD_13 = PLANKAUDIOFILE_LAYOUT_DVD_13,
00314         LayoutDVD_14 = PLANKAUDIOFILE_LAYOUT_DVD_14,
00315         LayoutDVD_15 = PLANKAUDIOFILE_LAYOUT_DVD_15,
00316         LayoutDVD_16 = PLANKAUDIOFILE_LAYOUT_DVD_16,
00317         LayoutDVD_17 = PLANKAUDIOFILE_LAYOUT_DVD_17,
00318         LayoutDVD_18 = PLANKAUDIOFILE_LAYOUT_DVD_18,
00319         LayoutDVD_19 = PLANKAUDIOFILE_LAYOUT_DVD_19,
00320         LayoutDVD_20 = PLANKAUDIOFILE_LAYOUT_DVD_20,
00321         LayoutAudioUnit_4 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_4,
00322         LayoutAudioUnit_5 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_5,
00323         LayoutAudioUnit_6 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_6,
00324         LayoutAudioUnit_8 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_8,
00325         LayoutAudioUnit_5_0 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_5_0,
00326         LayoutAudioUnit_6_0 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_6_0,
00327         LayoutAudioUnit_7_0 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_0,
00328         LayoutAudioUnit_7_0_Front = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_0_FRONT,
00329         LayoutAudioUnit_5_1 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_5_1,
00330         LayoutAudioUnit_6_1 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_6_1,
00331         LayoutAudioUnit_7_1 = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_1,
00332         LayoutAudioUnit_7_1_Front = PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_1_FRONT,
00333         LayoutAAC_3_0 = PLANKAUDIOFILE_LAYOUT_AAC_3_0,
00334         LayoutAAC_Quadraphonic = PLANKAUDIOFILE_LAYOUT_AAC_QUADRAPHONIC,
00335         LayoutAAC_4_0 = PLANKAUDIOFILE_LAYOUT_AAC_4_0,
00336         LayoutAAC_5_0 = PLANKAUDIOFILE_LAYOUT_AAC_5_0,
00337         LayoutAAC_5_1 = PLANKAUDIOFILE_LAYOUT_AAC_5_1,
00338         LayoutAAC_6_0 = PLANKAUDIOFILE_LAYOUT_AAC_6_0,
00339         LayoutAAC_6_1 = PLANKAUDIOFILE_LAYOUT_AAC_6_1,
00340         LayoutAAC_7_0 = PLANKAUDIOFILE_LAYOUT_AAC_7_0,
00341         LayoutAAC_7_1 = PLANKAUDIOFILE_LAYOUT_AAC_7_1,
00342         LayoutAAC_Octagonal = PLANKAUDIOFILE_LAYOUT_AAC_OCTAGONAL,
00343         LayoutTMH_10_2_STD = PLANKAUDIOFILE_LAYOUT_TMH_10_2_STD,
00344         LayoutTMH_10_2_Full = PLANKAUDIOFILE_LAYOUT_TMH_10_2_FULL,
00345         LayoutAC3_1_0_1 = PLANKAUDIOFILE_LAYOUT_AC3_1_0_1,
00346         LayoutAC3_3_0 = PLANKAUDIOFILE_LAYOUT_AC3_3_0,
00347         LayoutAC3_3_1 = PLANKAUDIOFILE_LAYOUT_AC3_3_1,
00348         LayoutAC3_3_0_1 = PLANKAUDIOFILE_LAYOUT_AC3_3_0_1,
00349         LayoutAC3_2_1_1 = PLANKAUDIOFILE_LAYOUT_AC3_2_1_1,
00350         LayoutAC3_3_1_1 = PLANKAUDIOFILE_LAYOUT_AC3_3_1_1,
00351         LayoutEAC_6_0_A = PLANKAUDIOFILE_LAYOUT_EAC_6_0_A,
00352         LayoutEAC_7_0_A = PLANKAUDIOFILE_LAYOUT_EAC_7_0_A,
00353         LayoutEAC3_6_1_A = PLANKAUDIOFILE_LAYOUT_EAC3_6_1_A,
00354         LayoutEAC3_6_1_B = PLANKAUDIOFILE_LAYOUT_EAC3_6_1_B,
00355         LayoutEAC3_6_1_C = PLANKAUDIOFILE_LAYOUT_EAC3_6_1_C,
00356         LayoutEAC3_7_1_A = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_A,
00357         LayoutEAC3_7_1_B = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_B,
00358         LayoutEAC3_7_1_C = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_C,
00359         LayoutEAC3_7_1_D = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_D,
00360         LayoutEAC3_7_1_E = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_E,
00361         LayoutEAC3_7_1_F = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_F,
00362         LayoutEAC3_7_1_G = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_G,
00363         LayoutEAC3_7_1_H = PLANKAUDIOFILE_LAYOUT_EAC3_7_1_H,
00364         LayoutDTS_3_1 = PLANKAUDIOFILE_LAYOUT_DTS_3_1,
00365         LayoutDTS_4_1 = PLANKAUDIOFILE_LAYOUT_DTS_4_1,
00366         LayoutDTS_6_0_A = PLANKAUDIOFILE_LAYOUT_DTS_6_0_A,
00367         LayoutDTS_6_0_B = PLANKAUDIOFILE_LAYOUT_DTS_6_0_B,
00368         LayoutDTS_6_0_C = PLANKAUDIOFILE_LAYOUT_DTS_6_0_C,
00369         LayoutDTS_6_1_A = PLANKAUDIOFILE_LAYOUT_DTS_6_1_A,
00370         LayoutDTS_6_1_B = PLANKAUDIOFILE_LAYOUT_DTS_6_1_B,
00371         LayoutDTS_6_1_C = PLANKAUDIOFILE_LAYOUT_DTS_6_1_C,
00372         LayoutDTS_7_0 = PLANKAUDIOFILE_LAYOUT_DTS_7_0,
00373         LayoutDTS_7_1 = PLANKAUDIOFILE_LAYOUT_DTS_7_1,
00374         LayoutDTS_8_0_A = PLANKAUDIOFILE_LAYOUT_DTS_8_0_A,
00375         LayoutDTS_8_0_B = PLANKAUDIOFILE_LAYOUT_DTS_8_0_B,
00376         LayoutDTS_8_1_A = PLANKAUDIOFILE_LAYOUT_DTS_8_1_A,
00377         LayoutDTS_8_1_B = PLANKAUDIOFILE_LAYOUT_DTS_8_1_B,
00378         LayoutDTS_6_1_D = PLANKAUDIOFILE_LAYOUT_DTS_6_1_D,
00379         LayoutDiscrete = PLANKAUDIOFILE_LAYOUT_DISCRETE,
00380         LayoutUnknown = PLANKAUDIOFILE_LAYOUT_UNKNOWN,
00381         LayoutOggVorbis_6_1 = PLANKAUDIOFILE_LAYOUT_OGGVORBIS_6_1,
00382         LayoutOggVorbis_7_1 = PLANKAUDIOFILE_LAYOUT_OGGVORBIS_7_1,
00383         LayoutAIFF_6_0 = PLANKAUDIOFILE_LAYOUT_AIFF_6_0,
00384         LayoutStereoPairs = PLANKAUDIOFILE_LAYOUT_STEREOPAIRS
00385     };
00386 
00387 };
00388 
00389 class ChannelLayout;
00390 class ChannelIdentifier;
00391 
00392 class ChannelLayout : public PlonkBase
00393 {
00394 public:
00395     ChannelLayout (PlankChannelLayout const& value) throw()
00396     :   peer (value)
00397     {
00398     }
00399     
00400     inline operator const UnsignedInt& () const throw()
00401     {
00402         return static_cast<const UnsignedInt&> (peer);
00403     }
00404     
00405     inline const UnsignedInt& getValue() const throw()
00406     {
00407         return static_cast<const UnsignedInt&> (peer);
00408     }
00409     
00410     Text getName() const throw()
00411     {
00412         return pl_AudioFileFormatInfoChannelLayoutToName (peer);
00413     }
00414     
00415     UnsignedInt getNumChannels() const throw()
00416     {
00417         return static_cast<UnsignedInt> (peer) & 0x0000FFFF;
00418     }
00419     
00420 private:
00421     PlankChannelLayout peer;
00422     
00423     ChannelLayout (ChannelIdentifier const&);
00424 };
00425 
00426 class ChannelIdentifier : public PlonkBase
00427 {
00428 public:
00429     ChannelIdentifier (PlankChannelIdentifier const& value) throw()
00430     :   peer (value)
00431     {
00432     }
00433     
00434     inline operator const UnsignedInt& () const throw()
00435     {
00436         return static_cast<const UnsignedInt&> (peer);
00437     }
00438     
00439     inline const UnsignedInt& getValue() const throw()
00440     {
00441         return static_cast<const UnsignedInt&> (peer);
00442     }
00443     
00444     Text getName() const throw()
00445     {
00446         return pl_AudioFileFormatInfoChannelIdentifierToName (peer);
00447     }
00448     
00449     bool isPairWith (ChannelIdentifier const& other) const throw()
00450     {
00451         return pl_AudioFileFormatInfoChannelIdentifiersArePair (peer, other.peer);
00452     }
00453     
00454 private:
00455     PlankChannelIdentifier peer;
00456     
00457     ChannelIdentifier (ChannelLayout const&);
00458 };
00459 
00460 class AudioFileMetaDataIOFlags : public PlonkBase
00461 {
00462 public:
00463     AudioFileMetaDataIOFlags (PlankAudioFileMetaDataIOFlags const& value) throw()
00464     :   peer (value)
00465     {
00466     }
00467 
00468     inline operator const UnsignedInt& () const throw()
00469     {
00470         return static_cast<const UnsignedInt&> (peer);
00471     }
00472     
00473     inline const UnsignedInt& getValue() const throw()
00474     {
00475         return static_cast<const UnsignedInt&> (peer);
00476     }
00477     
00478     AudioFileMetaDataIOFlags& add (AudioFileMetaDataIOFlags const& other) throw()
00479     {
00480         peer = static_cast<PlankAudioFileMetaDataIOFlags> (getValue() | other.getValue());
00481         return *this;
00482     }
00483     
00484     AudioFileMetaDataIOFlags& remove (AudioFileMetaDataIOFlags const& other) throw()
00485     {
00486         peer = static_cast<PlankAudioFileMetaDataIOFlags> (getValue() & ~other.getValue());
00487         return *this;
00488     }
00489 
00490     
00491 private:
00492     PlankAudioFileMetaDataIOFlags peer;
00493     
00494     AudioFileMetaDataIOFlags (bool);
00495 };
00496 
00497 
00498 
00499 #endif // PLONK_AUDIOFILE_H
 All Classes Functions Typedefs Enumerations Enumerator Properties