0

保存してから Sint16 (2 バイト) を取得する場所が必要です。

私は得る:

SInt16* frames = (SInt16*)inBuffer->mAudioData;

&frames[i]後で簡単に取得できる場所 (NSMutableData?)に保存したい。私はこのように(サイクルで)保存しようとしました:

[recordedData appendBytes:&frames[i] length:1];

そして取得します:

    SInt16* framesRetrieve ;

    //sets up mybytes buffer and reads in data from myData
    framesRetrieve = (SInt16*)malloc([mutableData framesRetrieve]);

    [mutableData getBytes:framesRetrieve];

しかし、このリターンは私が入れたものと同じではありません。

では、解決策は何でしょうか?

ありがとう。

4

2 に答える 2

1

データの長さを知る必要があり、バッファ全体をNSMutableDataオブジェクトに格納できます。

保存するには:

SInt16 *frames = ...;
NSUInteger length = ...;    // Assuming number of elements in frames, not bytes!   
NSMutableData *data = [[NSMutableData alloc] initWithCapacity:0];
[data appendBytes:(const void *)frames length:length * sizeof(SInt16)];

取得するには:

SInt16 *frames = (SInt16 *)[data bytes];
NSUInteger length = [data length] / sizeof(SInt16);
于 2012-08-09T06:53:10.860 に答える
0

2 バイト変数から 1 バイトだけをコピーしています。一度に両方のバイトを NSMutableData に追加してみてください。

[recordedData appendBytes: frames length:sizeof(SInt16)];
于 2012-08-09T06:41:28.407 に答える