Selectorの動作にchannel.size() ==
channel.position()となっている場合にデータが取得できないので
Frame = nullを応答するようにしておきました。
無理やり読み込もうとしてエラーになる不具合がありました。
loggerを挿入したが消したので、warningがでないように、unusedつけといた。
強制で16bitにしていましたが、mkvでもwavでもriffでも4bitになっているみたいなので、そのまま受け入れます。
ただし、adpcmのframe作成時に16bitを名乗るようにしておきます。
fftを理解するために、ちょっと再生するプログラムをつくってみようと思います。
adpcmのdecoderかいたった。
とりあえずだらだら書いてみた。

参考:http://d.hatena.ne.jp/nodamushi/20110611/1307830732
flvの音声コーデック pcm_alawとpcm_mulaw(G711AとG711U)のxuggleによるテストデータ作成コード
をつくってみたけどflvのheaderデータ書き込み失敗とでてうまく動作しない・・・orz
とりあえず、frameのベース動作はつくった。
テストはしてないけどw
とりあえずG711AやG711Uのデータもframeデータ化までできた。
xuggleやffmpegによる変換ができるか？とかそういったものはあとでテストしておきたい。
riff形式なら扱えるみたいですね。
flvで扱えない理由っぽいのもみつけれた。
動作はさせてないけど、こんな感じかな？
sampleNumをきちんとデータ量から取得するように変更
フレームの読み込みで必要ないものは撤去した。
せっかくつくったG711.Aのデータを現状のxuggleの変換データから出力するプログラムなので
晒しておきたいと思います。
とりあえずfftの計算は問題なく動作しているみたい。