Hola Al, sólo tengo que decirte que tu explicación encaja como un guante, ahora entiendo cómo trabaja el bloque completo. Hacía tiempo que no usaba
or para sumar bits, estaba obcecado pensando en "el otro
or", o sea, o cojo la expresión evaluada a la izquierda o la de la derecha (es que hoy estoy espeso).
Bueno, pues dejo la explicación final y resumida
ara una muestra de un canal tenemos 2bytes, al más significativo lo corro 8 bits a la izquierda con
shl 8, y a continuación se le suma con el operador
or el byte menos significatico, cuyo resultado va a una posición del array pcm. Para una muestra completa de una posición de pcm resultaría del siguiente ejemplo:
byte1 + byte2 = muestra completa canal L
byte1 = 11000001; byte2 = 01010001
Tomando que el byte1 debe ser el más significativo, debe ser el que desplacemos 8 bits a la izquierda:
muestra1 equivalente = 1100000100000000 (habrá que guardarlo en un entero)
Ahora hago la suma de ambas muestras (guardadas en variables tipo entero):
1100000100000000
0000000001010001 +
--------------------
1100000101010001 --> será una muestra del array pcm, de tipo entero
¡ Todo encaja ! Gracias a los dos