![]() |
pl-nk v0.4.5
Plonk|Plink|Plank are a set of cross-platform C/C++ frameworks for audio software development
|
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