У меня есть NSDATA, который является аудио буфером (BIG_ENDIAN), я пытаюсь получить каждые 2 байта буфера и преобразовать его в формат int_16, чтобы применить кодек в этих результатах ... Я пытаюсь сделать следующее:
-(NSData*)encodeSample:(NSData*)buffer
{
NSMutableData *backValue = [[NSMutableData alloc] init];
for (int i = 0; i < [buffer length]; i+=4)
{
if ( i+4 > [buffer length] )
{
break;
}
else
{
NSRange range = {i,2};
int16_t temp1 = OSReadBigInt16([buffer subdataWithRange:range], 0);
int result1 = [self encode:temp1] & 0x0F; //codec call
NSRange range2 = {i+2,2};
int temp2 = OSReadBigInt16([buffer subdataWithRange:range2], 0);
int result2 = [self encode:temp2] & 0x0F;
Byte finalValue = (Byte) ((result1 << 4) | result2);
[backValue appendBytes:&valorFinal length:sizeof(valorFinal)];
}
Я читал документацию Apple по функции OSReadBigInt16 и думаю, что она не работает с NSDATA, и я не знаю, что делать, чтобы получить правильное значение.
Кто-то имеет представление о том, как получить байты из nsdata и преобразовать их в int_16?