Cider Isn't Darwin Emulation, Really
Something went wrong. Try again.
2.4 kB · 66 lines
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667/*This file is part of Darling.
Copyright (C) 2020 Lubos Dolezel
Darling is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.
Darling is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.
You should have received a copy of the GNU General Public Licensealong with Darling. If not, see <http://www.gnu.org/licenses/>.*/
#ifndef _AUDIO_FILE_FORMAT_GENERIC_H#define _AUDIO_FILE_FORMAT_GENERIC_H#include "AudioFileFormat.h"
class AudioFileFormatGeneric : public AudioFileFormat{public: AudioFileFormatGeneric(UInt32 inFileType, const char* avformatShortName); Boolean ExtensionIsThisFormat(CFStringRef inExtension) override; void GetExtensions(CFArrayRef *outArray) override; void GetUTIs(CFArrayRef *outArray) override; void GetMIMETypes(CFArrayRef *outArray) override; void GetFileTypeName(CFStringRef *outName) override; UncertainResult FileDataIsThisFormat(UInt32 inDataByteSize, const void* inData) override;
AudioFileObject* New() override; AudioFileStreamObject* NewStream() override { return NULL; }
// File format -> data formats // https://developer.apple.com/library/archive/documentation/MusicAudio/Conceptual/CoreAudioOverview/SupportedAudioFormatsMacOSX/SupportedAudioFormatsMacOSX.html OSStatus GetAvailableFormatIDs(UInt32* ioDataSize, void* outPropertyData) override;
OSStatus GetAvailableStreamDescriptions(UInt32 inFormatID, UInt32* ioDataSize, void* outPropertyData) override;private: static CFArrayRef toCFArray(const std::vector<const char*>& array);protected: struct Format : public AudioStreamBasicDescription { Format(UInt32 formatID) { mFormatID = formatID; } Format(UInt32 formatID, UInt32 formatFlags, UInt32 bitsPerChannel) { mFormatID = formatID; mFormatFlags = formatFlags; mBitsPerChannel = bitsPerChannel; } Format() {} }; struct Description { const char* name; std::vector<const char*> extensions; std::vector<const char*> utis; std::vector<const char*> mimeTypes; std::vector<Format> formats; }; virtual const Description& description() const = 0;private: const char* m_avformatShortName;};
#endif