Ver Mensaje Individual
  #3  
Antiguo 31-05-2008
Avatar de Guillermo80
Guillermo80 Guillermo80 is offline
Miembro
 
Registrado: may 2007
Posts: 87
Reputación: 18
Guillermo80 Va por buen camino
Hola ixMike, gracias por tu interés, estás cerca de dar con la clave, mira te explico un poco mejor ahora que he estado repasando un poco:

buffer recordemos que es un array de bytes, o sea, cada posición, un byte.
EL flujo de datos wav que se va a almacenar en buffer va así, sabiendo que una muestra de un canal ocupa 2bytes:

Cita:
2bytes canal L, 2bytes canal R, 2bytes canal L, 2bytes canal R, ....
Por lo tanto en buffer quedará así almacenado:

Cita:
1byte L, 1byte L, 1byte R, 1byte R, 1byte L, 1byte L, 1byte R, 1byte R, ...
Ostras, a medida que escribo creo que lo voy entendiendo yo también, ahora viene la instrucción que va dentro del bucle for, que a mi entender, es de mitad de tamaño porque agrupa en una posición las muestras de buffer i e i+1 de un canal en una posición de pcm, y esto lo hace gracias al desplazamiento de 8 bits (1byte) a la izquierda de la muestra i, que concatena a su derecha la muestra i+1:


Cita:
pcm[i] := buffer[2*i+1] shl 8 or buffer[2*i];
Ahora, creo que eso es así, pero no entiendo cómo funciona el operador or en esta situación de trabajar bit a bit, ¿podrías explicármelo para terminar de entender cómo en una misma instrucción hace lo que he explicado?
Responder Con Cita