![]() |
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 PLANK_AUDIOFILECOMMON_H 00040 #define PLANK_AUDIOFILECOMMON_H 00041 00042 #include "../../maths/plank_Maths.h" 00043 #include "../plank_IffFileCommon.h" 00044 00045 #define PLANKAUDIOFILE_NAMENULL "(null)" 00046 00047 #define PLANKAUDIOFILE_CHARBITS 8 00048 00049 #define PLANKAUDIOFILE_FORMAT_INVALID -1 00050 #define PLANKAUDIOFILE_FORMAT_UNKNOWN 0 00051 #define PLANKAUDIOFILE_FORMAT_UNKNOWNIFF 1 00052 #define PLANKAUDIOFILE_FORMAT_WAV 2 00053 #define PLANKAUDIOFILE_FORMAT_AIFF 3 00054 #define PLANKAUDIOFILE_FORMAT_AIFC 4 00055 #define PLANKAUDIOFILE_FORMAT_OGGVORBIS 5 00056 #define PLANKAUDIOFILE_FORMAT_OPUS 6 00057 #define PLANKAUDIOFILE_FORMAT_CAF 7 00058 #define PLANKAUDIOFILE_FORMAT_W64 8 00059 #define PLANKAUDIOFILE_FORMAT_REGION 99 00060 #define PLANKAUDIOFILE_FORMAT_MULTI 100 00061 #define PLANKAUDIOFILE_FORMAT_ARRAY 101 00062 #define PLANKAUDIOFILE_FORMAT_QUEUE 102 00063 #define PLANKAUDIOFILE_FORMAT_CUSTOM 103 00064 00065 #define PLANKAUDIOFILE_ENCODING_BIGENDIAN_FLAG 1 00066 #define PLANKAUDIOFILE_ENCODING_PCM_FLAG 2 00067 #define PLANKAUDIOFILE_ENCODING_FLOAT_FLAG 4 00068 #define PLANKAUDIOFILE_ENCODING_NONINTERLEAVED_FLAG 8 00069 00070 #define PLANKAUDIOFILE_ENCODING_INVALID -1 00071 #define PLANKAUDIOFILE_ENCODING_UNKNOWN 0 00072 #define PLANKAUDIOFILE_ENCODING_UNUSED1 1 00073 00074 #define PLANKAUDIOFILE_ENCODING_PCM_LITTLEENDIAN (PLANKAUDIOFILE_ENCODING_PCM_FLAG) 00075 #define PLANKAUDIOFILE_ENCODING_PCM_BIGENDIAN (PLANKAUDIOFILE_ENCODING_PCM_FLAG | PLANKAUDIOFILE_ENCODING_BIGENDIAN_FLAG) 00076 #define PLANKAUDIOFILE_ENCODING_FLOAT_LITTLEENDIAN (PLANKAUDIOFILE_ENCODING_FLOAT_FLAG) 00077 #define PLANKAUDIOFILE_ENCODING_FLOAT_BIGENDIAN (PLANKAUDIOFILE_ENCODING_FLOAT_FLAG | PLANKAUDIOFILE_ENCODING_BIGENDIAN_FLAG) 00078 00079 #define PLANKAUDIOFILE_ENCODING_PCM_LITTLEENDIAN_NONINTERLEAVED (PLANKAUDIOFILE_ENCODING_PCM_LITTLEENDIAN | PLANKAUDIOFILE_ENCODING_NONINTERLEAVED_FLAG) 00080 #define PLANKAUDIOFILE_ENCODING_PCM_BIGENDIAN_NONINTERLEAVED (PLANKAUDIOFILE_ENCODING_PCM_BIGENDIAN | PLANKAUDIOFILE_ENCODING_NONINTERLEAVED_FLAG) 00081 #define PLANKAUDIOFILE_ENCODING_FLOAT_LITTLEENDIAN_NONINTERLEAVED (PLANKAUDIOFILE_ENCODING_FLOAT_LITTLEENDIAN | PLANKAUDIOFILE_ENCODING_NONINTERLEAVED_FLAG) 00082 #define PLANKAUDIOFILE_ENCODING_FLOAT_BIGENDIAN_NONINTERLEAVED (PLANKAUDIOFILE_ENCODING_FLOAT_BIGENDIAN | PLANKAUDIOFILE_ENCODING_NONINTERLEAVED_FLAG) 00083 00084 #define PLANKAUDIOFILE_ENCODING_MIN PLANKAUDIOFILE_ENCODING_PCM_LITTLEENDIAN 00085 #define PLANKAUDIOFILE_ENCODING_MAX PLANKAUDIOFILE_ENCODING_FLOAT_BIGENDIAN_NONINTERLEAVED 00086 00087 #define PLANKAUDIOFILE_WAV_COMPRESSION_PCM 0x0001 00088 #define PLANKAUDIOFILE_WAV_COMPRESSION_FLOAT 0x0003 00089 #define PLANKAUDIOFILE_WAV_COMPRESSION_EXTENSIBLE 0xFFFE 00090 #define PLANKAUDIOFILE_WAV_FMT_LENGTH 16 00091 #define PLANKAUDIOFILE_WAV_FMT_EXTENSIBLE_LENGTH 40 00092 #define PLANKAUDIOFILE_WAV_DS64_MINIMUMLENGTH 28 00093 #define PLANKAUDIOFILE_WAV_HEADER_LENGTH (PLANKAUDIOFILE_WAV_FMT_EXTENSIBLE_LENGTH + PLANKAUDIOFILE_WAV_DS64_MINIMUMLENGTH + 8) 00094 00095 typedef PlankUI PlankChannelIdentifier; 00096 00097 // from WAV and CAF 00098 00099 #define PLANKAUDIOFILE_CHANNEL_NONE 0 00100 #define PLANKAUDIOFILE_CHANNEL_FRONT_LEFT 1 // 1. Front Left - FL 00101 #define PLANKAUDIOFILE_CHANNEL_FRONT_RIGHT 2 // 2. Front Right - FR 00102 #define PLANKAUDIOFILE_CHANNEL_FRONT_CENTER 3 // 3. Front Center - FC 00103 #define PLANKAUDIOFILE_CHANNEL_LOW_FREQUENCY 4 // 4. Low Frequency - LF 00104 #define PLANKAUDIOFILE_CHANNEL_BACK_LEFT 5 // 5. Back Left - BL 00105 #define PLANKAUDIOFILE_CHANNEL_BACK_RIGHT 6 // 6. Back Right - BR 00106 #define PLANKAUDIOFILE_CHANNEL_FRONT_LEFT_OF_CENTER 7 // 7. Front Left of Center - FLC 00107 #define PLANKAUDIOFILE_CHANNEL_FRONT_RIGHT_OF_CENTER 8 // 8. Front Right of Center - FRC 00108 #define PLANKAUDIOFILE_CHANNEL_BACK_CENTER 9 // 9. Back Center - BC 00109 #define PLANKAUDIOFILE_CHANNEL_SIDE_LEFT 10 // 10. Side Left - SL 00110 #define PLANKAUDIOFILE_CHANNEL_SIDE_RIGHT 11 // 11. Side Right - SR 00111 #define PLANKAUDIOFILE_CHANNEL_TOP_CENTER 12 // 12. Top Center - TC 00112 #define PLANKAUDIOFILE_CHANNEL_TOP_FRONT_LEFT 13 // 13. Top Front Left - TFL 00113 #define PLANKAUDIOFILE_CHANNEL_TOP_FRONT_CENTER 14 // 14. Top Front Center - TFC 00114 #define PLANKAUDIOFILE_CHANNEL_TOP_FRONT_RIGHT 15 // 15. Top Front Right - TFR 00115 #define PLANKAUDIOFILE_CHANNEL_TOP_BACK_LEFT 16 // 16. Top Back Left - TBL 00116 #define PLANKAUDIOFILE_CHANNEL_TOP_BACK_CENTER 17 // 17. Top Back Center - TBC 00117 #define PLANKAUDIOFILE_CHANNEL_TOP_BACK_RIGHT 18 // 18. Top Back Right - TBR 00118 00119 #define PLANKAUDIOFILE_CHANNEL_UNUSED0 19 00120 #define PLANKAUDIOFILE_CHANNEL_UNUSED1 20 00121 #define PLANKAUDIOFILE_CHANNEL_UNUSED2 21 00122 #define PLANKAUDIOFILE_CHANNEL_UNUSED3 22 00123 #define PLANKAUDIOFILE_CHANNEL_UNUSED4 23 00124 00125 #define PLANKAUDIOFILE_CHANNEL_BITSTREAM_1_LEFT 24 00126 #define PLANKAUDIOFILE_CHANNEL_BITSTREAM_1_RIGHT 25 00127 #define PLANKAUDIOFILE_CHANNEL_BITSTREAM_2_LEFT 26 00128 #define PLANKAUDIOFILE_CHANNEL_BITSTREAM_2_RIGHT 27 00129 00130 #define PLANKAUDIOFILE_CHANNEL_STEREO_LEFT 30 00131 #define PLANKAUDIOFILE_CHANNEL_STEREO_RIGHT 31 00132 00133 #define PLANKAUDIOFILE_CHANNEL_RESERVED 32 00134 00135 // CAF 00136 #define PLANKAUDIOFILE_CHANNEL_REAR_SURROUND_LEFT 33 00137 #define PLANKAUDIOFILE_CHANNEL_REAR_SURROUND_RIGHT 34 00138 #define PLANKAUDIOFILE_CHANNEL_LEFT_WIDE 35 00139 #define PLANKAUDIOFILE_CHANNEL_RIGHT_WIDE 36 00140 #define PLANKAUDIOFILE_CHANNEL_LOW_FREQUENCY_EXTRA 37 00141 #define PLANKAUDIOFILE_CHANNEL_LEFT_TOTAL 38 // matrix encoded 4 channels 00142 #define PLANKAUDIOFILE_CHANNEL_RIGHT_TOTAL 39 // matrix encoded 4 channels 00143 #define PLANKAUDIOFILE_CHANNEL_HEARING_IMPAIRED 40 00144 #define PLANKAUDIOFILE_CHANNEL_NARRATION 41 00145 #define PLANKAUDIOFILE_CHANNEL_MONO 42 00146 #define PLANKAUDIOFILE_CHANNEL_DIALOGCENTRICMIX 43 00147 #define PLANKAUDIOFILE_CHANNEL_CENTERSURROUND_DIRECT 44 // back center non diffuse 00148 #define PLANKAUDIOFILE_CHANNEL_HAPTIC 45 00149 00150 #define PLANKAUDIOFILE_CHANNEL_USE_COORDS 100 00151 00152 #define PLANKAUDIOFILE_CHANNEL_AMBISONIC_W 200 00153 #define PLANKAUDIOFILE_CHANNEL_AMBISONIC_X 201 00154 #define PLANKAUDIOFILE_CHANNEL_AMBISONIC_Y 202 00155 #define PLANKAUDIOFILE_CHANNEL_AMBISONIC_Z 203 00156 #define PLANKAUDIOFILE_CHANNEL_MS_MID 204 00157 #define PLANKAUDIOFILE_CHANNEL_MS_SIDE 205 00158 #define PLANKAUDIOFILE_CHANNEL_XY_X 206 00159 #define PLANKAUDIOFILE_CHANNEL_XY_Y 207 00160 #define PLANKAUDIOFILE_CHANNEL_HEADPHONES_LEFT 301 00161 #define PLANKAUDIOFILE_CHANNEL_HEADPHONES_RIGHT 302 00162 #define PLANKAUDIOFILE_CHANNEL_CLICK_TRACK 304 00163 #define PLANKAUDIOFILE_CHANNEL_FOREIGN_LANGUAGE 305 00164 #define PLANKAUDIOFILE_CHANNEL_DISCRETE 400 00165 00166 #define PLANKAUDIOFILE_CHANNEL_DISCRETE_N (1<<16) // OR with 0-based channel index 0-65535 00167 00168 #define PLANKAUDIOFILE_CHANNEL_UNKNOWN 0xFFFFFFFF 00169 00170 // the table of strings for unknown and discrete layouts/channels 00171 // can be overrided with a preprocessor macro 00172 #ifndef PLANKAUDIOFILE_CHANNEL_MAXINDEXSTRINGS 00173 #define PLANKAUDIOFILE_CHANNEL_MAXINDEXSTRINGS 128 00174 #endif 00175 00176 00177 // EBU-TECH 3306 00178 #define PLANKAUDIOFILE_WAV_SPEAKER_NONE 0x00000000 00179 00180 #define PLANKAUDIOFILE_WAV_SPEAKER_FRONT_LEFT 0x00000001 00181 #define PLANKAUDIOFILE_WAV_SPEAKER_FRONT_RIGHT 0x00000002 00182 #define PLANKAUDIOFILE_WAV_SPEAKER_FRONT_CENTER 0x00000004 00183 #define PLANKAUDIOFILE_WAV_SPEAKER_LOW_FREQUENCY 0x00000008 00184 #define PLANKAUDIOFILE_WAV_SPEAKER_BACK_LEFT 0x00000010 00185 #define PLANKAUDIOFILE_WAV_SPEAKER_BACK_RIGHT 0x00000020 00186 #define PLANKAUDIOFILE_WAV_SPEAKER_FRONT_LEFT_OF_CENTER 0x00000040 00187 #define PLANKAUDIOFILE_WAV_SPEAKER_FRONT_RIGHT_OF_CENTER 0x00000080 00188 #define PLANKAUDIOFILE_WAV_SPEAKER_BACK_CENTER 0x00000100 00189 #define PLANKAUDIOFILE_WAV_SPEAKER_SIDE_LEFT 0x00000200 00190 #define PLANKAUDIOFILE_WAV_SPEAKER_SIDE_RIGHT 0x00000400 00191 #define PLANKAUDIOFILE_WAV_SPEAKER_TOP_CENTER 0x00000800 00192 #define PLANKAUDIOFILE_WAV_SPEAKER_TOP_FRONT_LEFT 0x00001000 00193 #define PLANKAUDIOFILE_WAV_SPEAKER_TOP_FRONT_CENTER 0x00002000 00194 #define PLANKAUDIOFILE_WAV_SPEAKER_TOP_FRONT_RIGHT 0x00004000 00195 #define PLANKAUDIOFILE_WAV_SPEAKER_TOP_BACK_LEFT 0x00008000 00196 #define PLANKAUDIOFILE_WAV_SPEAKER_TOP_BACK_CENTER 0x00010000 00197 #define PLANKAUDIOFILE_WAV_SPEAKER_TOP_BACK_RIGHT 0x00020000 00198 #define PLANKAUDIOFILE_WAV_SPEAKER_ALL 0x80000000 00199 #define PLANKAUDIOFILE_WAV_SPEAKER_RESERVED 0x80000000 00200 #define PLANKAUDIOFILE_WAV_SPEAKER_STEREO_LEFT 0x20000000 00201 #define PLANKAUDIOFILE_WAV_SPEAKER_STEREO_RIGHT 0x40000000 00202 00203 #define PLANKAUDIOFILE_WAV_SPEAKER_BITSTREAM_1_LEFT 0x00800000 00204 #define PLANKAUDIOFILE_WAV_SPEAKER_BITSTREAM_1_RIGHT 0x01000000 00205 #define PLANKAUDIOFILE_WAV_SPEAKER_BITSTREAM_2_LEFT 0x02000000 00206 #define PLANKAUDIOFILE_WAV_SPEAKER_BITSTREAM_2_RIGHT 0x04000000 00207 #define PLANKAUDIOFILE_WAV_SPEAKER_ANY 0xffffffff 00208 00209 #define PLANKAUDIOFILE_WAV_SPEAKER_VALIDBITS 0xF783FFFF 00210 #define PLANKAUDIOFILE_CAF_SPEAKER_VALIDBITS 0x0003FFFF 00211 00212 00213 #define PLANKAUDIOFILE_W64_RIFF_ID PLANKIFFFILE_W64_RIFF_ID 00214 #define PLANKAUDIOFILE_W64_LIST_ID PLANKIFFFILE_W64_LIST_ID 00215 #define PLANKAUDIOFILE_W64_WAVE_ID "wave-ACF3-11D3-8CD1-00C04F8EDB8A" 00216 #define PLANKAUDIOFILE_W64_FMT_ID "fmt -ACF3-11D3-8CD1-00C04F8EDB8A" 00217 #define PLANKAUDIOFILE_W64_FACT_ID "fact-ACF3-11D3-8CD1-00C04F8EDB8A" 00218 #define PLANKAUDIOFILE_W64_DATA_ID "data-ACF3-11D3-8CD1-00C04F8EDB8A" 00219 #define PLANKAUDIOFILE_W64_LEVL_ID "levl-ACF3-11D3-8CD1-00C04F8EDB8A" 00220 #define PLANKAUDIOFILE_W64_JUNK_ID PLANKIFFFILE_W64_JUNK_ID 00221 #define PLANKAUDIOFILE_W64_BEXT_ID "bext-ACF3-11D3-8CD1-00C04F8EDB8A" 00222 #define PLANKAUDIOFILE_W64_MARKER_ID "ABF76256-392D-11D2-86C7-00C04F8EDB8A" 00223 #define PLANKAUDIOFILE_W64_SUMMARYLIST_ID "925F94BC-525A-11D2-86DC-00C04F8EDB8A" 00224 00225 /* 00226 RIFF = 1179011410 00227 WAVE = 1163280727 00228 fmt = 544501094 00229 data = 1635017060 00230 JUNK = 1263424842 00231 FORM = 1297239878 00232 AIFF = 1179011393 00233 SSND = 1145983827 00234 COMM = 1296912195 00235 */ 00236 00237 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_RIFF = PLANKFOURCHARCODE("RIFF"); 00238 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_WAVE = PLANKFOURCHARCODE("WAVE"); 00239 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_FMT = PLANKFOURCHARCODE("fmt "); 00240 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_DATA = PLANKFOURCHARCODE("data"); 00241 // 00242 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_FORM = PLANKFOURCHARCODE("FORM"); 00243 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_AIFF = PLANKFOURCHARCODE("AIFF"); 00244 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_AIFC = PLANKFOURCHARCODE("AIFC"); 00245 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_COMM = PLANKFOURCHARCODE("COMM"); 00246 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_SSND = PLANKFOURCHARCODE("SSND"); 00247 //static const PlankFourCharCode PLANKAUDIOFILE_CHUNKID_FVER = PLANKFOURCHARCODE("FVER"); 00248 00249 #define PLANKAUDIOFILE_AIFF_COMM_LENGTH 18 00250 #define PLANKAUDIOFILE_AIFC_VERSION 0xA2805140 00251 #define PLANKAUDIOFILE_AIFC_COMM_LENGTH 24 00252 00253 typedef struct PlankCAFStringID { 00254 00255 PlankUI stringID; 00256 PlankLL offset; 00257 } PlankCAFStringID; 00258 00259 #define PLANKAUDIOFILE_CAF_DEFAULTHEADERPAD 4016 // 4028 00260 #define PLANKAUDIOFILE_CAF_DESC_LENGTH 32 00261 #define PLANKAUDIOFILE_CAF_FLOAT_FLAG 0x00000001 // (1L << 0) 00262 #define PLANKAUDIOFILE_CAF_LITTLEENDIAN_FLAG 0x00000002 // (1L << 1) 00263 00264 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPENONE 0 00265 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE24 1 00266 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE25 2 00267 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE30DROP 3 00268 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE30 4 00269 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE2997 5 00270 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE2997DROP 6 00271 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE60 7 00272 #define PLANKAUDIOFILE_CAF_SMPTE_TIMETYPE5994 8 00273 00274 00275 00276 #define PLANKAUDIOFILE_CAF_MARKERTYPE_GENERIC 0 00277 #define PLANKAUDIOFILE_CAF_MARKERTYPE_PROGRAMSTART pl_FourCharCode ("pbeg") 00278 #define PLANKAUDIOFILE_CAF_MARKERTYPE_PROMGRAMEND pl_FourCharCode ("pend") 00279 #define PLANKAUDIOFILE_CAF_MARKERTYPE_TRACKSTART pl_FourCharCode ("tbeg") 00280 #define PLANKAUDIOFILE_CAF_MARKERTYPE_TRACKEND pl_FourCharCode ("tend") 00281 #define PLANKAUDIOFILE_CAF_MARKERTYPE_INDEX pl_FourCharCode ("indx") 00282 #define PLANKAUDIOFILE_CAF_MARKERTYPE_REGIONSTART pl_FourCharCode ("rbeg") 00283 #define PLANKAUDIOFILE_CAF_MARKERTYPE_REGIONEND pl_FourCharCode ("rend") 00284 #define PLANKAUDIOFILE_CAF_MARKERTYPE_REGIONSYNCPOINT pl_FourCharCode ("rsyc") 00285 #define PLANKAUDIOFILE_CAF_MARKERTYPE_SELECTIONSTART pl_FourCharCode ("sbeg") 00286 #define PLANKAUDIOFILE_CAF_MARKERTYPE_SELECTIONEND pl_FourCharCode ("send") 00287 #define PLANKAUDIOFILE_CAF_MARKERTYPE_EDITSOURCEBEGIN pl_FourCharCode ("cbeg") 00288 #define PLANKAUDIOFILE_CAF_MARKERTYPE_EDITSOURCEEND pl_FourCharCode ("cend") 00289 #define PLANKAUDIOFILE_CAF_MARKERTYPE_EDITDESTINATIONBEGIN pl_FourCharCode ("dbeg") 00290 #define PLANKAUDIOFILE_CAF_MARKERTYPE_EDITDESTINATIONEND pl_FourCharCode ("dend") 00291 #define PLANKAUDIOFILE_CAF_MARKERTYPE_SUSTAINLOOPSTART pl_FourCharCode ("slbg") 00292 #define PLANKAUDIOFILE_CAF_MARKERTYPE_SUSTAINLOOPEND pl_FourCharCode ("slen") 00293 #define PLANKAUDIOFILE_CAF_MARKERTYPE_RELEASELOOPSTART pl_FourCharCode ("rlbg") 00294 #define PLANKAUDIOFILE_CAF_MARKERTYPE_RELEASELOOPEND pl_FourCharCode ("rlen") 00295 00296 typedef PlankUI PlankChannelLayout; 00297 00298 // essentially the same as CAF 00299 #define PLANKAUDIOFILE_LAYOUT_UNDEFINED 0 00300 #define PLANKAUDIOFILE_LAYOUT_USECHANNELDESCRIPTIONS ((0<<16) | 0) 00301 #define PLANKAUDIOFILE_LAYOUT_USECHANNELBITMAP ((1<<16) | 0) 00302 00303 #define PLANKAUDIOFILE_LAYOUT_STANARDMINIMUM PLANKAUDIOFILE_LAYOUT_USECHANNELBITMAP 00304 00305 #define PLANKAUDIOFILE_LAYOUT_MONO ((100<<16) | 1) 00306 #define PLANKAUDIOFILE_LAYOUT_STEREO ((101<<16) | 2) 00307 #define PLANKAUDIOFILE_LAYOUT_STEREOHEADPHONES ((102<<16) | 2) 00308 #define PLANKAUDIOFILE_LAYOUT_MATRIXSTEREO ((103<<16) | 2) 00309 #define PLANKAUDIOFILE_LAYOUT_MIDSIDE ((104<<16) | 2) 00310 #define PLANKAUDIOFILE_LAYOUT_XY ((105<<16) | 2) 00311 #define PLANKAUDIOFILE_LAYOUT_BINAURAL ((106<<16) | 2) 00312 #define PLANKAUDIOFILE_LAYOUT_AMBISONIC_B_FORMAT ((107<<16) | 4) 00313 #define PLANKAUDIOFILE_LAYOUT_QUADRAPHONIC ((108<<16) | 4) 00314 #define PLANKAUDIOFILE_LAYOUT_PENTAGONAL ((109<<16) | 5) 00315 #define PLANKAUDIOFILE_LAYOUT_HEXAGONAL ((110<<16) | 6) 00316 #define PLANKAUDIOFILE_LAYOUT_OCTAGONAL ((111<<16) | 8) 00317 #define PLANKAUDIOFILE_LAYOUT_CUBE ((112<<16) | 8) 00318 #define PLANKAUDIOFILE_LAYOUT_MPEG_1_0 PLANKAUDIOFILE_LAYOUT_MONO // C 00319 #define PLANKAUDIOFILE_LAYOUT_MPEG_2_0 PLANKAUDIOFILE_LAYOUT_STEREO // L R 00320 #define PLANKAUDIOFILE_LAYOUT_MPEG_3_0_A ((113<<16) | 3) // L R C 00321 #define PLANKAUDIOFILE_LAYOUT_MPEG_3_0_B ((114<<16) | 3) // C L R 00322 #define PLANKAUDIOFILE_LAYOUT_MPEG_4_0_A ((115<<16) | 4) // L R C Cs 00323 #define PLANKAUDIOFILE_LAYOUT_MPEG_4_0_B ((116<<16) | 4) // C L R Cs 00324 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_0_A ((117<<16) | 5) // L R C Ls Rs 00325 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_0_B ((118<<16) | 5) // L R Ls Rs C 00326 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_0_C ((119<<16) | 5) // L C R Ls Rs 00327 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_0_D ((120<<16) | 5) // C L R Ls Rs 00328 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_1_A ((121<<16) | 6) // L R C LFE Ls Rs 00329 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_1_B ((122<<16) | 6) // L R Ls Rs C LFE 00330 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_1_C ((123<<16) | 6) // L C R Ls Rs LFE 00331 #define PLANKAUDIOFILE_LAYOUT_MPEG_5_1_D ((124<<16) | 6) // C L R Ls Rs LFE 00332 #define PLANKAUDIOFILE_LAYOUT_MPEG_6_1_A ((125<<16) | 7) // L R C LFE Ls Rs Cs 00333 #define PLANKAUDIOFILE_LAYOUT_MPEG_7_1_A ((126<<16) | 8) // L R C LFE Ls Rs Lc Rc 00334 #define PLANKAUDIOFILE_LAYOUT_MPEG_7_1_B ((127<<16) | 8) // C Lc Rc L R Ls Rs LFE 00335 #define PLANKAUDIOFILE_LAYOUT_MPEG_7_1_C ((128<<16) | 8) // L R C LFE Ls Rs Rls Rrs 00336 #define PLANKAUDIOFILE_LAYOUT_EMAGIC_DEFAULT_7_1 ((129<<16) | 8) // L R Ls Rs C LFE Lc Rc 00337 #define PLANKAUDIOFILE_LAYOUT_SMPTE_DTV ((130<<16) | 8) // L R C LFE Ls Rs Lt Rt 00338 #define PLANKAUDIOFILE_LAYOUT_ITU_1_0 PLANKAUDIOFILE_LAYOUT_MONO // C 00339 #define PLANKAUDIOFILE_LAYOUT_ITU_2_0 PLANKAUDIOFILE_LAYOUT_STEREO // L R 00340 #define PLANKAUDIOFILE_LAYOUT_ITU_2_1 ((131<<16) | 3) // L R Cs 00341 #define PLANKAUDIOFILE_LAYOUT_ITU_2_2 ((132<<16) | 4) // L R Ls Rs 00342 #define PLANKAUDIOFILE_LAYOUT_ITU_3_0 PLANKAUDIOFILE_LAYOUT_MPEG_3_0_A // L R C 00343 #define PLANKAUDIOFILE_LAYOUT_ITU_3_1 PLANKAUDIOFILE_LAYOUT_MPEG_4_0_A // L R C Cs 00344 #define PLANKAUDIOFILE_LAYOUT_ITU_3_2 PLANKAUDIOFILE_LAYOUT_MPEG_5_0_A // L R C Ls Rs 00345 #define PLANKAUDIOFILE_LAYOUT_ITU_3_2_1 PLANKAUDIOFILE_LAYOUT_MPEG_5_1_A // L R C LFE Ls Rs 00346 #define PLANKAUDIOFILE_LAYOUT_ITU_3_4_1 PLANKAUDIOFILE_LAYOUT_MPEG_7_1_C // L R C LFE Ls Rs Rls Rrs 00347 #define PLANKAUDIOFILE_LAYOUT_DVD_0 PLANKAUDIOFILE_LAYOUT_MONO // C (mono) 00348 #define PLANKAUDIOFILE_LAYOUT_DVD_1 PLANKAUDIOFILE_LAYOUT_STEREO // L R 00349 #define PLANKAUDIOFILE_LAYOUT_DVD_2 PLANKAUDIOFILE_LAYOUT_ITU_2_1 // L R Cs 00350 #define PLANKAUDIOFILE_LAYOUT_DVD_3 PLANKAUDIOFILE_LAYOUT_ITU_2_2 // L R Ls Rs 00351 #define PLANKAUDIOFILE_LAYOUT_DVD_4 ((133<<16) | 3) // L R LFE 00352 #define PLANKAUDIOFILE_LAYOUT_DVD_5 ((134<<16) | 4) // L R LFE Cs 00353 #define PLANKAUDIOFILE_LAYOUT_DVD_6 ((135<<16) | 5) // L R LFE Ls Rs 00354 #define PLANKAUDIOFILE_LAYOUT_DVD_7 PLANKAUDIOFILE_LAYOUT_MPEG_3_0_A // L R C 00355 #define PLANKAUDIOFILE_LAYOUT_DVD_8 PLANKAUDIOFILE_LAYOUT_MPEG_4_0_A // L R C Cs 00356 #define PLANKAUDIOFILE_LAYOUT_DVD_9 PLANKAUDIOFILE_LAYOUT_MPEG_5_0_A // L R C Ls Rs 00357 #define PLANKAUDIOFILE_LAYOUT_DVD_10 ((136<<16) | 4) // L R C LFE 00358 #define PLANKAUDIOFILE_LAYOUT_DVD_11 ((137<<16) | 5) // L R C LFE Cs 00359 #define PLANKAUDIOFILE_LAYOUT_DVD_12 PLANKAUDIOFILE_LAYOUT_MPEG_5_1_A // L R C LFE Ls Rs 00360 #define PLANKAUDIOFILE_LAYOUT_DVD_13 PLANKAUDIOFILE_LAYOUT_DVD_8 // L R C Cs 00361 #define PLANKAUDIOFILE_LAYOUT_DVD_14 PLANKAUDIOFILE_LAYOUT_DVD_9 // L R C Ls Rs 00362 #define PLANKAUDIOFILE_LAYOUT_DVD_15 PLANKAUDIOFILE_LAYOUT_DVD_10 // L R C LFE 00363 #define PLANKAUDIOFILE_LAYOUT_DVD_16 PLANKAUDIOFILE_LAYOUT_DVD_11 // L R C LFE Cs 00364 #define PLANKAUDIOFILE_LAYOUT_DVD_17 PLANKAUDIOFILE_LAYOUT_DVD_12 // L R C LFE Ls Rs 00365 #define PLANKAUDIOFILE_LAYOUT_DVD_18 ((138<<16) | 5) // L R Ls Rs LFE 00366 #define PLANKAUDIOFILE_LAYOUT_DVD_19 PLANKAUDIOFILE_LAYOUT_MPEG_5_0_B // L R Ls Rs C 00367 #define PLANKAUDIOFILE_LAYOUT_DVD_20 PLANKAUDIOFILE_LAYOUT_MPEG_5_1_B // L R Ls Rs C LFE 00368 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_4 PLANKAUDIOFILE_LAYOUT_QUADRAPHONIC 00369 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_5 PLANKAUDIOFILE_LAYOUT_PENTAGONAL 00370 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_6 PLANKAUDIOFILE_LAYOUT_HEXAGONAL 00371 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_8 PLANKAUDIOFILE_LAYOUT_OCTAGONAL 00372 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_5_0 PLANKAUDIOFILE_LAYOUT_MPEG_5_0_B // L R Ls Rs C 00373 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_6_0 ((139<<16) | 6) // L R Ls Rs C Cs 00374 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_0 ((140<<16) | 7) // L R Ls Rs C Rls Rrs 00375 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_0_FRONT ((148<<16) | 7) // L R Ls Rs C Lc Rc 00376 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_5_1 PLANKAUDIOFILE_LAYOUT_MPEG_5_1_A // L R C LFE Ls Rs 00377 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_6_1 PLANKAUDIOFILE_LAYOUT_MPEG_6_1_A // L R C LFE Ls Rs Cs 00378 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_1 PLANKAUDIOFILE_LAYOUT_MPEG_7_1_C // L R C LFE Ls Rs Rls Rrs 00379 #define PLANKAUDIOFILE_LAYOUT_AUDIOUNIT_7_1_FRONT PLANKAUDIOFILE_LAYOUT_MPEG_7_1_A // L R C LFE Ls Rs Lc Rc 00380 #define PLANKAUDIOFILE_LAYOUT_AAC_3_0 PLANKAUDIOFILE_LAYOUT_MPEG_3_0_B // C L R 00381 #define PLANKAUDIOFILE_LAYOUT_AAC_QUADRAPHONIC PLANKAUDIOFILE_LAYOUT_QUADRAPHONIC // L R Ls Rs 00382 #define PLANKAUDIOFILE_LAYOUT_AAC_4_0 PLANKAUDIOFILE_LAYOUT_MPEG_4_0_B // C L R Cs 00383 #define PLANKAUDIOFILE_LAYOUT_AAC_5_0 PLANKAUDIOFILE_LAYOUT_MPEG_5_0_D // C L R Ls Rs 00384 #define PLANKAUDIOFILE_LAYOUT_AAC_5_1 PLANKAUDIOFILE_LAYOUT_MPEG_5_1_D // C L R Ls Rs Lfe 00385 #define PLANKAUDIOFILE_LAYOUT_AAC_6_0 ((141<<16) | 6) // C L R Ls Rs Cs 00386 #define PLANKAUDIOFILE_LAYOUT_AAC_6_1 ((142<<16) | 7) // C L R Ls Rs Cs Lfe 00387 #define PLANKAUDIOFILE_LAYOUT_AAC_7_0 ((143<<16) | 7) // C L R Ls Rs Rls Rrs 00388 #define PLANKAUDIOFILE_LAYOUT_AAC_7_1 PLANKAUDIOFILE_LAYOUT_MPEG_7_1_B // C Lc Rc L R Ls Rs Lfe 00389 #define PLANKAUDIOFILE_LAYOUT_AAC_OCTAGONAL ((144<<16) | 8) // C L R Ls Rs Rls Rrs Cs 00390 #define PLANKAUDIOFILE_LAYOUT_TMH_10_2_STD ((145<<16) | 16) // L R C Vhc Lsd Rsd Ls Rs Vhl Vhr Lw Rw Csd Cs LFE1 LFE2 00391 #define PLANKAUDIOFILE_LAYOUT_TMH_10_2_FULL ((146<<16) | 21) // TMH_10_2_std plus: Lc Rc HI VI Haptic 00392 #define PLANKAUDIOFILE_LAYOUT_AC3_1_0_1 ((149<<16) | 2) // C LFE 00393 #define PLANKAUDIOFILE_LAYOUT_AC3_3_0 ((150<<16) | 3) // L C R 00394 #define PLANKAUDIOFILE_LAYOUT_AC3_3_1 ((151<<16) | 4) // L C R Cs 00395 #define PLANKAUDIOFILE_LAYOUT_AC3_3_0_1 ((152<<16) | 4) // L C R LFE 00396 #define PLANKAUDIOFILE_LAYOUT_AC3_2_1_1 ((153<<16) | 4) // L R Cs LFE 00397 #define PLANKAUDIOFILE_LAYOUT_AC3_3_1_1 ((154<<16) | 5) // L C R Cs LFE 00398 #define PLANKAUDIOFILE_LAYOUT_EAC_6_0_A ((155<<16) | 6) // L C R Ls Rs Cs 00399 #define PLANKAUDIOFILE_LAYOUT_EAC_7_0_A ((156<<16) | 7) // L C R Ls Rs Rls Rrs 00400 #define PLANKAUDIOFILE_LAYOUT_EAC3_6_1_A ((157<<16) | 7) // L C R Ls Rs LFE Cs 00401 #define PLANKAUDIOFILE_LAYOUT_EAC3_6_1_B ((158<<16) | 7) // L C R Ls Rs LFE Ts 00402 #define PLANKAUDIOFILE_LAYOUT_EAC3_6_1_C ((159<<16) | 7) // L C R Ls Rs LFE Vhc 00403 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_A ((160<<16) | 8) // L C R Ls Rs LFE Rls Rrs 00404 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_B ((161<<16) | 8) // L C R Ls Rs LFE Lc Rc 00405 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_C ((162<<16) | 8) // L C R Ls Rs LFE Lsd Rsd 00406 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_D ((163<<16) | 8) // L C R Ls Rs LFE Lw Rw 00407 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_E ((164<<16) | 8) // L C R Ls Rs LFE Vhl Vhr 00408 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_F ((165<<16) | 8) // L C R Ls Rs LFE Cs Ts 00409 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_G ((166<<16) | 8) // L C R Ls Rs LFE Cs Vhc 00410 #define PLANKAUDIOFILE_LAYOUT_EAC3_7_1_H ((167<<16) | 8) // L C R Ls Rs LFE Ts Vhc 00411 #define PLANKAUDIOFILE_LAYOUT_DTS_3_1 ((168<<16) | 4) // C L R LFE 00412 #define PLANKAUDIOFILE_LAYOUT_DTS_4_1 ((169<<16) | 5) // C L R Cs LFE 00413 #define PLANKAUDIOFILE_LAYOUT_DTS_6_0_A ((170<<16) | 6) // Lc Rc L R Ls Rs 00414 #define PLANKAUDIOFILE_LAYOUT_DTS_6_0_B ((171<<16) | 6) // C L R Rls Rrs Ts 00415 #define PLANKAUDIOFILE_LAYOUT_DTS_6_0_C ((172<<16) | 6) // C Cs L R Rls Rrs 00416 #define PLANKAUDIOFILE_LAYOUT_DTS_6_1_A ((173<<16) | 7) // Lc Rc L R Ls Rs LFE 00417 #define PLANKAUDIOFILE_LAYOUT_DTS_6_1_B ((174<<16) | 7) // C L R Rls Rrs Ts LFE 00418 #define PLANKAUDIOFILE_LAYOUT_DTS_6_1_C ((175<<16) | 7) // C Cs L R Rls Rrs LFE 00419 #define PLANKAUDIOFILE_LAYOUT_DTS_7_0 ((176<<16) | 7) // Lc C Rc L R Ls Rs 00420 #define PLANKAUDIOFILE_LAYOUT_DTS_7_1 ((177<<16) | 8) // Lc C Rc L R Ls Rs LFE 00421 #define PLANKAUDIOFILE_LAYOUT_DTS_8_0_A ((178<<16) | 8) // Lc Rc L R Ls Rs Rls Rrs 00422 #define PLANKAUDIOFILE_LAYOUT_DTS_8_0_B ((179<<16) | 8) // Lc C Rc L R Ls Cs Rs 00423 #define PLANKAUDIOFILE_LAYOUT_DTS_8_1_A ((180<<16) | 9) // Lc Rc L R Ls Rs Rls Rrs LFE 00424 #define PLANKAUDIOFILE_LAYOUT_DTS_8_1_B ((181<<16) | 9) // Lc C Rc L R Ls Cs Rs LFE 00425 #define PLANKAUDIOFILE_LAYOUT_DTS_6_1_D ((182<<16) | 7) // C L R Ls Rs LFE Cs 00426 #define PLANKAUDIOFILE_LAYOUT_DISCRETE ((147<<16) | 0) // needs to be ORed with the actual number of channels 00427 #define PLANKAUDIOFILE_LAYOUT_UNKNOWN 0xFFFF0000 // needs to be ORed with the actual number of channels 00428 00429 #define PLANKAUDIOFILE_LAYOUT_OGGVORBIS_6_1 ((16384<<16) | 7) // front left, center, front right, side left, side right, rear center, LFE 00430 #define PLANKAUDIOFILE_LAYOUT_OGGVORBIS_7_1 ((16385<<16) | 8) // front left, center, front right, side left, side right, rear left, rear right, LFE 00431 #define PLANKAUDIOFILE_LAYOUT_AIFF_6_0 ((16386<<16) | 6) // left, left centre, centre, right, right centre, surround 00432 00433 #define PLANKAUDIOFILE_LAYOUT_STEREOPAIRS 0xFFFE0000 // needs to be ORed with the actual number of channels 00434 00435 00436 // custom ones.. non-CAF standard may need to update these in the future is CAF adds need formats 00437 00438 #define PLANKAUDIOFILE_LAYOUT_MAXSTANDARDCHANNELS 21 00439 00440 #define PLANKAUDIOFILEMETADATA_TEXTENCODING_ASCII 0 00441 #define PLANKAUDIOFILEMETADATA_TEXTENCODING_UTF8 1 00442 #define PLANKAUDIOFILEMETADATA_TEXTENCODING_UTF16 2 00443 #define PLANKAUDIOFILEMETADATA_TEXTENCODING_LATIN1 0 00444 00445 //#define PLANKAUDIOFILEMETADATA_UNSET INT_MIN 00446 00447 #define PLANKAUDIOFILEMETADATA_IOFLAGS_NONE 0x00000000 00448 #define PLANKAUDIOFILEMETADATA_IOFLAGS_CUEPOINTS 0x00000001 00449 #define PLANKAUDIOFILEMETADATA_IOFLAGS_REGIONS 0x00000002 00450 #define PLANKAUDIOFILEMETADATA_IOFLAGS_LOOPS 0x00000004 00451 #define PLANKAUDIOFILEMETADATA_IOFLAGS_TEXT 0x00000008 00452 #define PLANKAUDIOFILEMETADATA_IOFLAGS_SAMPLER 0x00000010 00453 #define PLANKAUDIOFILEMETADATA_IOFLAGS_EXTRASAMPLERDATA 0x00000020 00454 #define PLANKAUDIOFILEMETADATA_IOFLAGS_INFO 0x00000100 00455 #define PLANKAUDIOFILEMETADATA_IOFLAGS_NORMAL 0x0000013F 00456 00457 #define PLANKAUDIOFILEMETADATA_IOFLAGS_OVERVIEW 0x00001000 00458 #define PLANKAUDIOFILEMETADATA_IOFLAGS_CUSTOM 0x80000000 00459 #define PLANKAUDIOFILEMETADATA_IOFLAGS_ALL 0xFFFFFFFF 00460 00461 typedef PlankUI PlankAudioFileMetaDataIOFlags; 00462 00463 #define PLANKAUDIOFILE_CUEPOINTTYPE_UNKNOWN -1 00464 #define PLANKAUDIOFILE_CUEPOINTTYPE_CUEPOINT 0 00465 #define PLANKAUDIOFILE_CUEPOINTTYPE_INSERTPOINT 1 00466 #define PLANKAUDIOFILE_CUEPOINTTYPE_PLAYPOSITION 2 00467 #define PLANKAUDIOFILE_CUEPOINTTYPE_REGIONSTART 3 00468 #define PLANKAUDIOFILE_CUEPOINTTYPE_REGIONEND 4 00469 00470 #define PLANKAUDIOFILE_REGIONTYPE_UNKNOWN -1 00471 #define PLANKAUDIOFILE_REGIONTYPE_REGION 0 00472 #define PLANKAUDIOFILE_REGIONTYPE_SELECTION 1 00473 #define PLANKAUDIOFILE_REGIONTYPE_LOOP 2 00474 #define PLANKAUDIOFILE_REGIONTYPE_LYRICS 3 00475 00476 #define PLANKAUDIOFILE_WAV_LOOPTYPE_FORWARD 0 00477 #define PLANKAUDIOFILE_WAV_LOOPTYPE_PINGPONG 1 00478 #define PLANKAUDIOFILE_WAV_LOOPTYPE_REVERESE 2 00479 00480 #define PLANKAUDIOFILE_LOOPTYPE_UNKNOWN -1 00481 #define PLANKAUDIOFILE_LOOPTYPE_FORWARD PLANKAUDIOFILE_WAV_LOOPTYPE_FORWARD 00482 #define PLANKAUDIOFILE_LOOPTYPE_PINGPONG PLANKAUDIOFILE_WAV_LOOPTYPE_PINGPONG 00483 #define PLANKAUDIOFILE_LOOPTYPE_REVERESE PLANKAUDIOFILE_WAV_LOOPTYPE_REVERESE 00484 00485 #define PLANKAUDIOFILE_AIFF_LOOPTYPE_NOLOOP 0 00486 #define PLANKAUDIOFILE_AIFF_LOOPTYPE_FORWARD 1 00487 #define PLANKAUDIOFILE_AIFF_LOOPTYPE_PINGPONG 2 00488 00489 #define PLANKAUDIOFILE_REGIONNAME_SEPARATOR "#" 00490 00491 00492 #if PLANK_OGGVORBIS 00493 #ifndef OV_EXCLUDE_STATIC_CALLBACKS 00494 #define OV_EXCLUDE_STATIC_CALLBACKS 00495 #endif 00496 00497 #include "../../../../ext/vorbis/vorbis/vorbisenc.h" 00498 #include "../../../../ext/vorbis/vorbis/codec.h" 00499 #include "../../../../ext/vorbis/vorbis/vorbisfile.h" 00500 #endif 00501 00502 #if PLANK_OPUS 00503 #include "../../../../ext/ogg/ogg.h" 00504 #include "../../../../ext/opus/opusfile/opusfile.h" 00505 #include "../../../../ext/opus/opus_header.h" 00506 #define PLANKAUDIOFILE_OPUS_VENDOR "libopus 1.01 in Plank " PLANK_VERSION 00507 #define PLANKAUDIOFILE_OPUS_MAXFRAMESIZE (960 * 6) 00508 #define PLANKAUDIOFILE_OPUS_MAXPACKETSIZE (1275 * 3 + 7) 00509 #define PLANKAUDIOFILE_OPUS_MAXSEGMENTS 255 00510 #define PLANKAUDIOFILE_OPUS_FLUSHFILLSIZE (255 * 255) 00511 #define PLANKAUDIOFILE_OPUS_DELAY 312 00512 #define PLANKAUDIOFILE_OPUS_READBYTES 200 00513 #define PLANKAUDIOFILE_OPUS_MINSAMPLERATE 8000 00514 #define PLANKAUDIOFILE_OPUS_MAXSAMPLERATE 192000 00515 #define PLANKAUDIOFILE_OPUS_DEFAULTSAMPLERATE 48000 00516 #define PLANKAUDIOFILE_OPUS_HEAD "OpusHead" 00517 #define PLANKAUDIOFILE_OPUS_TAGS "OpusTags" 00518 #define PLANKAUDIOFILE_OPUS_HEAD_LEN 8 00519 #define PLANKAUDIOFILE_OPUS_PREROLL_MS 80 00520 #define PLANKAUDIOFILE_OPUS_HEADERNUMSEGSPOS 26 00521 #endif 00522 00523 00524 #define PLANKAUDIOFILE_CHANNELFLAGS_ALLOFF 0 00525 #define PLANKAUDIOFILE_CHANNELFLAGS_RECTANGULARCOORDINATES (1<<0) 00526 #define PLANKAUDIOFILE_CHANNELFLAGS_SPHERICALCOORDINATES (1<<1) 00527 #define PLANKAUDIOFILE_CHANNELFLAGS_METERS (1<<2) 00528 00529 typedef struct PlankSpeakerPosition 00530 { 00531 PlankUI flags; 00532 PlankVec3F coords; 00533 } PlankSpeakerPosition; 00534 00535 typedef struct PlankAudioFileFormatInfo 00536 { 00537 PlankC format; 00538 PlankC encoding; 00539 00540 PlankI bitsPerSample; 00541 PlankI bytesPerFrame; 00542 PlankI minimumBitRate; 00543 PlankI maximumBitRate; 00544 PlankI nominalBitRate; 00545 PlankD sampleRate; 00546 PlankD frameDuration; 00547 PlankF quality; 00548 00549 PlankChannelLayout channelLayout; 00550 PlankDynamicArray channelIdentifiers; 00551 PlankDynamicArray channelCoords; 00552 00553 } PlankAudioFileFormatInfo; 00554 00555 typedef struct PlankAudioFileFormatInfo* PlankAudioFileFormatInfoRef; 00556 00557 //PlankB pl_AudioFileFormatInfo_IsChannelMapClear (const PlankAudioFileFormatInfo* info); 00558 00559 PLANK_BEGIN_C_LINKAGE 00560 00561 const char* pl_PlankAudioFileGetFormatName (int format); 00562 00563 PlankResult pl_AudioFileFormatInfo_Init (PlankAudioFileFormatInfoRef formatInfo); 00564 PlankResult pl_AudioFileFormatInfo_DeInit (PlankAudioFileFormatInfoRef formatInfo); 00565 PlankChannelIdentifier* pl_AudioFileFormatInfo_GetChannelIdentifiers (PlankAudioFileFormatInfoRef formatInfo); 00566 PlankSpeakerPosition* pl_AudioFileFormatInfo_GetChannelCoords (PlankAudioFileFormatInfoRef formatInfo); 00567 PlankChannelIdentifier pl_AudioFileFormatInfo_GetChannelItentifier (PlankAudioFileFormatInfoRef formatInfo, const int channel); 00568 PlankResult pl_AudioFileFormatInfo_SetChannelItentifier (PlankAudioFileFormatInfoRef formatInfo, const int channel, const PlankChannelIdentifier channelIdentifier); 00569 PlankChannelLayout pl_AudioFileFormatInfo_GetChannelLayout (PlankAudioFileFormatInfoRef formatInfo); 00570 int pl_AudioFileFormatInfo_GetNumChannels (PlankAudioFileFormatInfoRef formatInfo); 00571 PlankResult pl_AudioFileFormatInfo_SetNumChannels (PlankAudioFileFormatInfoRef formatInfo, const int numChannels, const PlankB useCoords); 00572 void pl_AudioFileFormatInfo_CAF_ChannelMaskToFormat (PlankAudioFileFormatInfoRef formatInfo, const PlankUI channelMask); 00573 void pl_AudioFileFormatInfo_WAV_ChannelMaskToFormat (PlankAudioFileFormatInfoRef formatInfo, const PlankUI channelMask); 00574 const char* pl_AudioFileFormatInfoDiscreteIndexToName (const PlankUS discreteIndex); 00575 const char* pl_AudioFileFormatInfoChannelIdentifierToName (const PlankChannelIdentifier identifier); 00576 char* pl_AudioFileFormatInfoAbbreviateIdentifierName (const char* name, char* abbrev, const int abbrevLength); 00577 const char* pl_AudioFileFormatInfoChannelLayoutToName (const PlankChannelLayout channelLayoutTag); 00578 PlankB pl_AudioFileFormatInfoLayoutToFormatChannelIdentifiers (PlankChannelIdentifier* channelIdentifiers, const PlankChannelLayout channelLayoutTag); 00579 PlankB pl_AudioFileFormatInfo_LayoutToFormatChannelIdentifiers (PlankAudioFileFormatInfoRef formatInfo, const PlankChannelLayout channelLayoutTag); 00580 PlankB pl_AudioFileFormatInfo_ChannelIdentifiersMatchesLayout (PlankAudioFileFormatInfoRef formatInfo, const PlankChannelLayout channelLayoutTag); 00581 PlankChannelLayout pl_AudioFileFormatInfo_ChannelIdentifiersToLayout (PlankAudioFileFormatInfoRef formatInfo); 00582 PlankB pl_AudioFileFormatInfoChannelIdentifiersArePair (const PlankChannelIdentifier A, const PlankChannelIdentifier B); 00583 void pl_AudioFileFormatInfo_SetDiscreteLayout (PlankAudioFileFormatInfoRef formatInfo); 00584 void pl_AudioFileFormatInfo_SetSimpleLayout (PlankAudioFileFormatInfoRef formatInfo); 00585 void pl_AudioFileFormatInfo_WAV_SetDefaultLayout (PlankAudioFileFormatInfoRef formatInfo); 00586 void pl_AudioFileFormatInfo_AIFF_SetDefaultLayout (PlankAudioFileFormatInfoRef formatInfo); 00587 void pl_AudioFileFormatInfo_OggVorbis_SetDefaultLayout (PlankAudioFileFormatInfoRef formatInfo); 00588 void pl_AudioFileFormatInfo_Opus_SetDefaultLayout (PlankAudioFileFormatInfoRef formatInfo); 00589 00590 PLANK_END_C_LINKAGE 00591 00593 typedef struct PlankAudioFileMetaData* PlankAudioFileMetaDataRef; 00594 00596 typedef struct PlankAudioFileCuePointExtra* PlankAudioFileCuePointExtraRef; 00597 00599 typedef struct PlankAudioFileCuePoint* PlankAudioFileCuePointRef; 00600 00602 typedef struct PlankAudioFileRegion* PlankAudioFileRegionRef; 00603 00604 00605 00606 #endif // PLANK_AUDIOFILECOMMON_H