SDRのハードとソフトを作製してみたけど、うまく音声にならない状態が続いているので、振り出しにもどって以前に作成したキャプチャした信号をそのまま再生するソフトで確認してみた。
キャプチャしたbyte列の入力信号を、一旦short列の信号に変換して、もう一度byte列に変換してから再生してみたところ、同じような現象になった。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
for (int i = 0; i < 4096; i++) { idata[i] = BitConverter.ToInt16(e.Buffer, i * 4); qdata[i] = BitConverter.ToInt16(e.Buffer, i * 4 + 2); } for(int i = 0; i < idata.Length; i++) { byte[] dd = BitConverter.GetBytes(idata[i]); b_out[i] = dd[0]; b_out[i + 1] = dd[1]; b_out[i + 2] = dd[0]; b_out[i + 3] = dd[1]; } bufferedwaveprovider.AddSamples(b_out, 0, b_out.Length); |
最後の行で、waveproviderに渡すデータを処理しないキャプチャしたデータそのままで渡すと正常に再生できる。
ということは、時間的に間に合わないという問題でないことが判った。 また、SDRのハードを通さなくても同じ現象が起きているので、SDRの問題ではなく、データ処理に問題があることが判った。
問題の箇所がだいぶ絞られたので、解決に一歩近づいたと思ったけど、色々試してみたけどさっぱり解決できない。 何か勘違いしているんだろうな..。