waveファイルが読み込めていれば逆さまに再生するのは大変簡単です.単純にサンプリングデータ並びを逆さまにすればいいだけです.ただし,量子化ビット,チャンネル数によって保存先の変数が違うために場合分けをしなければなりません.
if(snd->monaural8){ unsigned char temp; for(i=0; i<snd->datanum/2-1; i++){ temp = snd->monaural8[i]; snd->monaural8[i] = snd->monaural8[snd->datanum - i - 1]; snd->monaural8[snd->datanum - i - 1] = temp; } }else if(snd->monaural16){ signed short temp; for(i=0; i<snd->datanum/2-1; i++){ temp = snd->monaural16[i]; snd->monaural16[i] = snd->monaural16[snd->datanum - i - 1]; snd->monaural16[snd->datanum - i - 1] = temp; } }else if(snd->stereo8){ Soundsample8 temp; for(i=0; i<snd->datanum/2-1; i++){ temp = snd->stereo8[i]; snd->stereo8[i] = snd->stereo8[snd->datanum - i - 1]; snd->stereo8[snd->datanum - i - 1] = temp; } }else if(snd->stereo16){ Soundsample16 temp; for(i=0; i<snd->datanum/2-1; i++){ temp = snd->stereo16[i]; snd->stereo16[i] = snd->stereo16[snd->datanum - i - 1]; snd->stereo16[snd->datanum - i - 1] = temp; } }
使用しているポインタ以外はNULLでクリアされていますので,それをif文でチェックしています.