Я пытаюсь создать новый файл на диске и записать на него с помощью платформы Core Audio на OSX. Мое главное препятствие сейчас заключается в том, что я не могу создать файл, используя следующий код. Моя цель — выяснить, почему приведенный ниже код не работает, чтобы я мог возобновить работу над остальной частью моего проекта. Вы можете увидеть вывод этого кода ниже.
string fp = "…path…to…file.../file.wav"CFURLRef audioFileURL = CFURLCreateFromFileSystemRepresentation(
NULL,
(const UInt8 *)fp.c_str(), // filename
fp.length(), // number of bytes in filename
false // this is a file, not a directory
);
if(audioFileURL == NULL){
cout << endl << "audioFileURL == NULL :(";
}
OSStatus retErr = AudioFileCreateWithURL (
audioFileURL,
df.mFormatID,
&aqData.mDataFormat,
kAudioFileFlags_EraseFile,
&aqData.mAudioFile
);
cout << endl << "\nAudioFileCreateWithURL error:" << retErr;
который выводит следующее:
AudioFileCreateWithURL error:1954115647
Мне не повезло выяснить, что означает эта ошибка. Любая помощь здесь приветствуется.
Ошибки Core Audio возвращаются либо в виде числа, либо в виде 4-буквенного кода. Я предполагаю, что странное число, которое вы показываете, является местом в памяти кода.
Вам нужно что-то вроде этого, чтобы определить и преобразовать:
static char *FormatError(char *str, OSStatus error)
{
// see if it appears to be a 4-char-code
*(UInt32 *)(str + 1) = CFSwapInt32HostToBig(error);
if (isprint(str[1]) && isprint(str[2]) && isprint(str[3]) && isprint(str[4])) {
str[0] = str[5] = '\'';
str[6] = '\0';
} else
// no, format it as an integer
sprintf(str, "%d", (int)error);
return str;
}
Других решений пока нет …