this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

AudioToolbox: Some work on AudioFileFormatManager, add stubs

+593 -1
+236 -1
src/CoreAudio/AudioToolbox/AudioFile.cpp
··· 1 - #include "AudioFile.h" 1 + /* 2 + This file is part of Darling. 3 + 4 + Copyright (C) 2020 Lubos Dolezel 5 + 6 + Darling is free software: you can redistribute it and/or modify 7 + it under the terms of the GNU General Public License as published by 8 + the Free Software Foundation, either version 3 of the License, or 9 + (at your option) any later version. 10 + 11 + Darling is distributed in the hope that it will be useful, 12 + but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + GNU General Public License for more details. 15 + 16 + You should have received a copy of the GNU General Public License 17 + along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 + */ 19 + 20 + #include <AudioToolbox/AudioFile.h> 21 + #include <CoreServices/MacErrors.h> 22 + 23 + OSStatus AudioFileCreateWithURL (CFURLRef inFileRef, 24 + AudioFileTypeID inFileType, 25 + const AudioStreamBasicDescription *inFormat, 26 + AudioFileFlags inFlags, 27 + AudioFileID _Nullable * _Nonnull outAudioFile) 28 + { 29 + return unimpErr; 30 + } 31 + 32 + OSStatus AudioFileOpenURL ( CFURLRef inFileRef, 33 + AudioFilePermissions inPermissions, 34 + AudioFileTypeID inFileTypeHint, 35 + AudioFileID _Nullable * _Nonnull outAudioFile) 36 + { 37 + return unimpErr; 38 + } 39 + 40 + OSStatus AudioFileInitializeWithCallbacks ( 41 + void * inClientData, 42 + AudioFile_ReadProc inReadFunc, 43 + AudioFile_WriteProc inWriteFunc, 44 + AudioFile_GetSizeProc inGetSizeFunc, 45 + AudioFile_SetSizeProc inSetSizeFunc, 46 + AudioFileTypeID inFileType, 47 + const AudioStreamBasicDescription *inFormat, 48 + AudioFileFlags inFlags, 49 + AudioFileID _Nullable * _Nonnull outAudioFile) 50 + { 51 + return unimpErr; 52 + } 53 + 54 + OSStatus AudioFileOpenWithCallbacks ( 55 + void * inClientData, 56 + AudioFile_ReadProc inReadFunc, 57 + AudioFile_WriteProc _Nullable inWriteFunc, 58 + AudioFile_GetSizeProc inGetSizeFunc, 59 + AudioFile_SetSizeProc _Nullable inSetSizeFunc, 60 + AudioFileTypeID inFileTypeHint, 61 + AudioFileID _Nullable * _Nonnull outAudioFile) 62 + { 63 + return unimpErr; 64 + } 65 + 66 + OSStatus AudioFileClose (AudioFileID inAudioFile) 67 + { 68 + return unimpErr; 69 + } 70 + 71 + OSStatus AudioFileOptimize (AudioFileID inAudioFile) 72 + { 73 + return unimpErr; 74 + } 75 + 76 + OSStatus AudioFileReadBytes ( AudioFileID inAudioFile, 77 + Boolean inUseCache, 78 + SInt64 inStartingByte, 79 + UInt32 *ioNumBytes, 80 + void *outBuffer) 81 + { 82 + return unimpErr; 83 + } 84 + 85 + OSStatus AudioFileWriteBytes ( AudioFileID inAudioFile, 86 + Boolean inUseCache, 87 + SInt64 inStartingByte, 88 + UInt32 *ioNumBytes, 89 + const void *inBuffer) 90 + { 91 + return unimpErr; 92 + } 93 + 94 + OSStatus AudioFileReadPacketData ( AudioFileID inAudioFile, 95 + Boolean inUseCache, 96 + UInt32 * ioNumBytes, 97 + AudioStreamPacketDescription * _Nullable outPacketDescriptions, 98 + SInt64 inStartingPacket, 99 + UInt32 * ioNumPackets, 100 + void * _Nullable outBuffer) 101 + { 102 + return unimpErr; 103 + } 104 + 105 + OSStatus AudioFileReadPackets ( AudioFileID inAudioFile, 106 + Boolean inUseCache, 107 + UInt32 * outNumBytes, 108 + AudioStreamPacketDescription * _Nullable outPacketDescriptions, 109 + SInt64 inStartingPacket, 110 + UInt32 * ioNumPackets, 111 + void * _Nullable outBuffer) 112 + { 113 + return unimpErr; 114 + } 115 + 116 + OSStatus AudioFileWritePackets ( AudioFileID inAudioFile, 117 + Boolean inUseCache, 118 + UInt32 inNumBytes, 119 + const AudioStreamPacketDescription * _Nullable inPacketDescriptions, 120 + SInt64 inStartingPacket, 121 + UInt32 *ioNumPackets, 122 + const void *inBuffer) 123 + { 124 + return unimpErr; 125 + } 126 + 127 + OSStatus AudioFileCountUserData ( AudioFileID inAudioFile, 128 + UInt32 inUserDataID, 129 + UInt32 *outNumberItems) 130 + { 131 + return unimpErr; 132 + } 133 + 134 + OSStatus AudioFileGetUserDataSize ( AudioFileID inAudioFile, 135 + UInt32 inUserDataID, 136 + UInt32 inIndex, 137 + UInt32 *outUserDataSize) 138 + { 139 + return unimpErr; 140 + } 141 + 142 + OSStatus AudioFileGetUserData ( AudioFileID inAudioFile, 143 + UInt32 inUserDataID, 144 + UInt32 inIndex, 145 + UInt32 *ioUserDataSize, 146 + void *outUserData) 147 + { 148 + return unimpErr; 149 + } 150 + 151 + OSStatus AudioFileSetUserData ( AudioFileID inAudioFile, 152 + UInt32 inUserDataID, 153 + UInt32 inIndex, 154 + UInt32 inUserDataSize, 155 + const void *inUserData) 156 + { 157 + return unimpErr; 158 + } 159 + 160 + OSStatus AudioFileRemoveUserData ( AudioFileID inAudioFile, 161 + UInt32 inUserDataID, 162 + UInt32 inIndex) 163 + { 164 + return unimpErr; 165 + } 166 + 167 + OSStatus AudioFileGetPropertyInfo( AudioFileID inAudioFile, 168 + AudioFilePropertyID inPropertyID, 169 + UInt32 * _Nullable outDataSize, 170 + UInt32 * _Nullable isWritable) 171 + { 172 + return unimpErr; 173 + } 174 + 175 + OSStatus AudioFileGetProperty( AudioFileID inAudioFile, 176 + AudioFilePropertyID inPropertyID, 177 + UInt32 *ioDataSize, 178 + void *outPropertyData) 179 + { 180 + return unimpErr; 181 + } 182 + 183 + OSStatus AudioFileSetProperty( AudioFileID inAudioFile, 184 + AudioFilePropertyID inPropertyID, 185 + UInt32 inDataSize, 186 + const void *inPropertyData) 187 + { 188 + return unimpErr; 189 + } 190 + 191 + OSStatus AudioFileGetGlobalInfoSize( AudioFilePropertyID inPropertyID, 192 + UInt32 inSpecifierSize, 193 + void * _Nullable inSpecifier, 194 + UInt32 *outDataSize) 195 + { 196 + return unimpErr; 197 + } 198 + 199 + OSStatus AudioFileGetGlobalInfo( AudioFilePropertyID inPropertyID, 200 + UInt32 inSpecifierSize, 201 + void * _Nullable inSpecifier, 202 + UInt32 *ioDataSize, 203 + void *outPropertyData) 204 + { 205 + return unimpErr; 206 + } 207 + 208 + OSStatus AudioFileCreate ( const struct FSRef *inParentRef, 209 + CFStringRef inFileName, 210 + AudioFileTypeID inFileType, 211 + const AudioStreamBasicDescription *inFormat, 212 + AudioFileFlags inFlags, 213 + struct FSRef *outNewFileRef, 214 + AudioFileID _Nullable * _Nonnull outAudioFile) 215 + { 216 + return unimpErr; 217 + } 218 + 219 + OSStatus AudioFileInitialize ( const struct FSRef *inFileRef, 220 + AudioFileTypeID inFileType, 221 + const AudioStreamBasicDescription *inFormat, 222 + AudioFileFlags inFlags, 223 + AudioFileID _Nullable * _Nonnull outAudioFile) 224 + { 225 + return unimpErr; 226 + } 227 + 228 + OSStatus AudioFileOpen ( const struct FSRef *inFileRef, 229 + AudioFilePermissions inPermissions, 230 + AudioFileTypeID inFileTypeHint, 231 + AudioFileID _Nullable * _Nonnull outAudioFile) 232 + { 233 + return unimpErr; 234 + } 235 + 236 + 2 237
+62
src/CoreAudio/AudioToolbox/AudioFileFormatManager.cpp
··· 1 + /* 2 + This file is part of Darling. 3 + 4 + Copyright (C) 2020 Lubos Dolezel 5 + 6 + Darling is free software: you can redistribute it and/or modify 7 + it under the terms of the GNU General Public License as published by 8 + the Free Software Foundation, either version 3 of the License, or 9 + (at your option) any later version. 10 + 11 + Darling is distributed in the hope that it will be useful, 12 + but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + GNU General Public License for more details. 15 + 16 + You should have received a copy of the GNU General Public License 17 + along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 + */ 19 + 20 + #include "AudioFileFormatManager.h" 21 + 22 + AudioFileFormatManager::AudioFileFormatManager() 23 + { 24 + 25 + } 26 + 27 + void AudioFileFormatManager::buildDatabase() 28 + { 29 + AudioComponentDescription acd = { 0 }; 30 + acd.componentType = 'afil'; 31 + 32 + AudioComponent component = nullptr; 33 + 34 + while ((component = ::AudioComponentFindNext(component, &acd)) != nullptr) 35 + { 36 + AudioComponentInstance inst; 37 + OSStatus status = ::AudioComponentInstanceNew(component, &inst); 38 + 39 + if (status != noErr) 40 + continue; 41 + 42 + analyzeAudioFileComponent(inst); 43 + ::AudioComponentInstanceDispose(inst); 44 + } 45 + } 46 + 47 + void AudioFileFormatManager::analyzeAudioFileComponent(AudioFileComponent component) 48 + { 49 + /* 50 + kAudioFileComponent_FileTypeName = 'ftnm', 51 + kAudioFileComponent_UTIsForType = 'futi', 52 + kAudioFileComponent_MIMETypesForType = 'fmim', 53 + kAudioFileComponent_ExtensionsForType = 'fext', 54 + kAudioFileComponent_AvailableFormatIDs = 'fmid', 55 + */ 56 + } 57 + 58 + AudioFileFormatManager* AudioFileFormatManager::instance() 59 + { 60 + static AudioFileFormatManager inst; 61 + return &inst; 62 + }
+37
src/CoreAudio/AudioToolbox/AudioFileFormatManager.h
··· 1 + /* 2 + This file is part of Darling. 3 + 4 + Copyright (C) 2020 Lubos Dolezel 5 + 6 + Darling is free software: you can redistribute it and/or modify 7 + it under the terms of the GNU General Public License as published by 8 + the Free Software Foundation, either version 3 of the License, or 9 + (at your option) any later version. 10 + 11 + Darling is distributed in the hope that it will be useful, 12 + but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + GNU General Public License for more details. 15 + 16 + You should have received a copy of the GNU General Public License 17 + along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 + */ 19 + 20 + 21 + #ifndef _AUDIO_FILE_FORMAT_MANAGER_H 22 + #define _AUDIO_FILE_FORMAT_MANAGER_H 23 + #include <AudioToolbox/AudioComponent.h> 24 + #include <AudioToolbox/AudioFileComponent.h> 25 + 26 + class __attribute__((visibility("hidden"))) AudioFileFormatManager 27 + { 28 + private: 29 + AudioFileFormatManager(); 30 + void buildDatabase(); 31 + void analyzeAudioFileComponent(AudioFileComponent component); 32 + public: 33 + static AudioFileFormatManager* instance(); 34 + }; 35 + 36 + #endif 37 +
+37
src/CoreAudio/AudioToolbox/AudioFormat.cpp
··· 1 + /* 2 + This file is part of Darling. 3 + 4 + Copyright (C) 2020 Lubos Dolezel 5 + 6 + Darling is free software: you can redistribute it and/or modify 7 + it under the terms of the GNU General Public License as published by 8 + the Free Software Foundation, either version 3 of the License, or 9 + (at your option) any later version. 10 + 11 + Darling is distributed in the hope that it will be useful, 12 + but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + GNU General Public License for more details. 15 + 16 + You should have received a copy of the GNU General Public License 17 + along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 + */ 19 + #include <AudioToolbox/AudioFormat.h> 20 + #include <CoreServices/MacErrors.h> 21 + 22 + OSStatus AudioFormatGetPropertyInfo( AudioFormatPropertyID inPropertyID, 23 + UInt32 inSpecifierSize, 24 + const void * _Nullable inSpecifier, 25 + UInt32 * outPropertyDataSize) 26 + { 27 + return unimpErr; 28 + } 29 + 30 + OSStatus AudioFormatGetProperty( AudioFormatPropertyID inPropertyID, 31 + UInt32 inSpecifierSize, 32 + const void * _Nullable inSpecifier, 33 + UInt32 * _Nullable ioPropertyDataSize, 34 + void * _Nullable outPropertyData) 35 + { 36 + return unimpErr; 37 + }
+27
src/CoreAudio/AudioToolbox/AudioToolbox.cpp
··· 1 + /* 2 + This file is part of Darling. 3 + 4 + Copyright (C) 2020 Lubos Dolezel 5 + 6 + Darling is free software: you can redistribute it and/or modify 7 + it under the terms of the GNU General Public License as published by 8 + the Free Software Foundation, either version 3 of the License, or 9 + (at your option) any later version. 10 + 11 + Darling is distributed in the hope that it will be useful, 12 + but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + GNU General Public License for more details. 15 + 16 + You should have received a copy of the GNU General Public License 17 + along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 + */ 19 + 20 + #include <AudioToolbox/AudioToolbox.h> 21 + #include <iostream> 22 + 23 + void CAShow(void* inObject) 24 + { 25 + // TODO: print something useful 26 + std::cout << "CAShow: " << inObject << std::endl; 27 + }
+5
src/CoreAudio/AudioToolbox/CMakeLists.txt
··· 20 20 AudioComponent.mm 21 21 AudioComponentManager.mm 22 22 AudioFileComponent.cpp 23 + AudioFileFormatManager.cpp 24 + ExtendedAudioFile.cpp 25 + AudioFormat.cpp 26 + MusicDevice.cpp 27 + AudioToolbox.cpp 23 28 ) 24 29 25 30 add_framework(AudioToolbox
+125
src/CoreAudio/AudioToolbox/ExtendedAudioFile.cpp
··· 1 + /* 2 + This file is part of Darling. 3 + 4 + Copyright (C) 2020 Lubos Dolezel 5 + 6 + Darling is free software: you can redistribute it and/or modify 7 + it under the terms of the GNU General Public License as published by 8 + the Free Software Foundation, either version 3 of the License, or 9 + (at your option) any later version. 10 + 11 + Darling is distributed in the hope that it will be useful, 12 + but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + GNU General Public License for more details. 15 + 16 + You should have received a copy of the GNU General Public License 17 + along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 + */ 19 + 20 + 21 + #include <AudioToolbox/ExtendedAudioFile.h> 22 + #include <CoreServices/MacErrors.h> 23 + 24 + // TODO: Implement with the help of CAAudioFile? 25 + 26 + OSStatus ExtAudioFileOpenURL( CFURLRef inURL, 27 + ExtAudioFileRef _Nullable * _Nonnull outExtAudioFile) 28 + { 29 + return unimpErr; 30 + } 31 + 32 + OSStatus ExtAudioFileWrapAudioFileID(AudioFileID inFileID, 33 + Boolean inForWriting, 34 + ExtAudioFileRef _Nullable * _Nonnull outExtAudioFile) 35 + { 36 + return unimpErr; 37 + } 38 + 39 + OSStatus ExtAudioFileCreateWithURL( CFURLRef inURL, 40 + AudioFileTypeID inFileType, 41 + const AudioStreamBasicDescription * inStreamDesc, 42 + const AudioChannelLayout * _Nullable inChannelLayout, 43 + UInt32 inFlags, 44 + ExtAudioFileRef _Nullable * _Nonnull outExtAudioFile) 45 + { 46 + return unimpErr; 47 + } 48 + 49 + OSStatus ExtAudioFileOpen( const struct FSRef * inFSRef, 50 + ExtAudioFileRef _Nullable * _Nonnull outExtAudioFile) 51 + { 52 + return unimpErr; 53 + } 54 + 55 + OSStatus ExtAudioFileCreateNew( const struct FSRef * inParentDir, 56 + CFStringRef inFileName, 57 + AudioFileTypeID inFileType, 58 + const AudioStreamBasicDescription * inStreamDesc, 59 + const AudioChannelLayout * _Nullable inChannelLayout, 60 + ExtAudioFileRef _Nullable * _Nonnull outExtAudioFile) 61 + { 62 + return unimpErr; 63 + } 64 + 65 + OSStatus ExtAudioFileDispose( ExtAudioFileRef inExtAudioFile) 66 + { 67 + return unimpErr; 68 + } 69 + 70 + OSStatus ExtAudioFileRead( ExtAudioFileRef inExtAudioFile, 71 + UInt32 * ioNumberFrames, 72 + AudioBufferList * ioData) 73 + { 74 + return unimpErr; 75 + } 76 + 77 + OSStatus ExtAudioFileWrite( ExtAudioFileRef inExtAudioFile, 78 + UInt32 inNumberFrames, 79 + const AudioBufferList * ioData) 80 + { 81 + return unimpErr; 82 + } 83 + 84 + OSStatus ExtAudioFileWriteAsync( ExtAudioFileRef inExtAudioFile, 85 + UInt32 inNumberFrames, 86 + const AudioBufferList * _Nullable ioData) 87 + { 88 + return unimpErr; 89 + } 90 + 91 + OSStatus ExtAudioFileSeek( ExtAudioFileRef inExtAudioFile, 92 + SInt64 inFrameOffset) 93 + { 94 + return unimpErr; 95 + } 96 + 97 + OSStatus ExtAudioFileTell( ExtAudioFileRef inExtAudioFile, 98 + SInt64 * outFrameOffset) 99 + { 100 + return unimpErr; 101 + } 102 + 103 + OSStatus ExtAudioFileGetPropertyInfo(ExtAudioFileRef inExtAudioFile, 104 + ExtAudioFilePropertyID inPropertyID, 105 + UInt32 * _Nullable outSize, 106 + Boolean * _Nullable outWritable) 107 + { 108 + return unimpErr; 109 + } 110 + 111 + OSStatus ExtAudioFileGetProperty( ExtAudioFileRef inExtAudioFile, 112 + ExtAudioFilePropertyID inPropertyID, 113 + UInt32 * ioPropertyDataSize, 114 + void * outPropertyData) 115 + { 116 + return unimpErr; 117 + } 118 + 119 + OSStatus ExtAudioFileSetProperty( ExtAudioFileRef inExtAudioFile, 120 + ExtAudioFilePropertyID inPropertyID, 121 + UInt32 inPropertyDataSize, 122 + const void * inPropertyData) 123 + { 124 + return unimpErr; 125 + }
+64
src/CoreAudio/AudioToolbox/MusicDevice.cpp
··· 1 + /* 2 + This file is part of Darling. 3 + 4 + Copyright (C) 2020 Lubos Dolezel 5 + 6 + Darling is free software: you can redistribute it and/or modify 7 + it under the terms of the GNU General Public License as published by 8 + the Free Software Foundation, either version 3 of the License, or 9 + (at your option) any later version. 10 + 11 + Darling is distributed in the hope that it will be useful, 12 + but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + GNU General Public License for more details. 15 + 16 + You should have received a copy of the GNU General Public License 17 + along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 + */ 19 + 20 + #include <AudioToolbox/MusicDevice.h> 21 + #include <CoreServices/MacErrors.h> 22 + #include <iostream> 23 + 24 + OSStatus 25 + MusicDeviceMIDIEvent( MusicDeviceComponent inUnit, 26 + UInt32 inStatus, 27 + UInt32 inData1, 28 + UInt32 inData2, 29 + UInt32 inOffsetSampleFrame) 30 + { 31 + std::cerr << "NOT IMPLEMENTED: " << __FUNCTION__ << std::endl; 32 + return unimpErr; 33 + } 34 + 35 + OSStatus 36 + MusicDeviceSysEx( MusicDeviceComponent inUnit, 37 + const UInt8 * inData, 38 + UInt32 inLength) 39 + { 40 + std::cerr << "NOT IMPLEMENTED: " << __FUNCTION__ << std::endl; 41 + return unimpErr; 42 + } 43 + 44 + OSStatus 45 + MusicDeviceStartNote( MusicDeviceComponent inUnit, 46 + MusicDeviceInstrumentID inInstrument, 47 + MusicDeviceGroupID inGroupID, 48 + NoteInstanceID * outNoteInstanceID, 49 + UInt32 inOffsetSampleFrame, 50 + const MusicDeviceNoteParams * inParams) 51 + { 52 + std::cerr << "NOT IMPLEMENTED: " << __FUNCTION__ << std::endl; 53 + return unimpErr; 54 + } 55 + 56 + OSStatus 57 + MusicDeviceStopNote( MusicDeviceComponent inUnit, 58 + MusicDeviceGroupID inGroupID, 59 + NoteInstanceID inNoteInstanceID, 60 + UInt32 inOffsetSampleFrame) 61 + { 62 + std::cerr << "NOT IMPLEMENTED: " << __FUNCTION__ << std::endl; 63 + return unimpErr; 64 + }