0

ディスクに新しいファイルを作成し、OSX の Core Audio フレームワークを使用して録音しようとしています。現在の私の主なハードルは、次のコードを使用してファイルを作成できないように見えることです。私の目的は、プロジェクトの残りの作業を再開できるように、以下のコードが機能しない理由を突き止めることです。このコードの出力を以下に示します。

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

このエラーの意味がわかりません。ここで何か助けていただければ幸いです。

4

1 に答える 1

0

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;
    }
于 2013-08-28T14:44:51.917 に答える