La función está fuera del bucle for, pero dentro de otro bucle "padre", por lo que se ejecuta muchísimas veces, a cada vez se le pasa sólo un trocito del wav en el array pcm.
Voy a mirar lo que me dices más a fondo, a ver si averiguo exactamente el valor que lo hacer petar, ya mañana te cuento cómo me fue (se me ha hecho un poco tarde
)
De todas formas es bien raro, porque aunque haga el desplazamiento ese fijo que eso está bien porque haciendo esa operación puedo trabajar con codificaciones de hasta 300Mb, el problema viene por la función codificadora FLAC_stream_encoder_process por narices, raro raro.
Un saludo¡¡