Olá pessoal, será que alguém consegue me explicar o que este método está fazendo, que tipo de calculo está sendo realizado. :?:
int readInt16() {
short shorty = 0;
int b1 = AudioData[readpos++];
int b2 = AudioData[readpos++];
shorty = (short) (((b1 & 0xFF) | (b2 & 0xFF) << 8) & 0xFFFF);
return (int) shorty;
}
Este AudioData é um array de int. Ele armazena o conteúdo de um arquivo de áudio .wav da minha aplicação… Tem milhares de posições (+50.000).
Eu sei que ele trabalha pegando 2 posições do vetor, faz um cálculo sobre eles, e retorna um único valor. E seu plotar estes novos valores extraídos deste array, eu obtenho um gráfico da onda sonora.
Ele faz exatamente o que eu preciso, ou seja, extrair a onda sonora deste arquivo de áudio.
Porém, eu encontrei este método pronto na internet… Ele funciona como o esperado, mas eu gostaria de saber que tipo de operação está sendo realizada na LINHA 6.
Muito obrigado