私も気になって答えを見つけました。
Q12 : sf_read* を見ています。アイテムとは?フレームとは
項目は、読み取っているデータ型の単一のサンプルです。つまり、sf_read_short の単一の short 値または sf_read_float の単一の float です。チャネルが 1 つだけのサウンド ファイルの場合、フレームは項目 (つまり、単一のサンプル) と同じですが、マルチチャネルのサウンド ファイルの場合、単一のフレームにはチャネルごとに単一の項目が含まれます。
以下に 2 つの単純で正しい例を示します。どちらも最初に項目を使用して、ステレオ ファイルで作業していると想定されています。
#define CHANNELS 2
short data [CHANNELS * 100] ;
sf_count items_read = sf_read_short (file, data, 200) ;
assert (items_read == 200) ;
フレームを使用してまったく同じ量のデータを読み取るようになりました。
#define CHANNELS 2
short data [CHANNELS * 100] ;
sf_count frames_read = sf_readf_short (file, data, 100) ;
assert (frames_read == 100) ;
これはlibsndfile FAQ、質問 12からのコピー & ペースト
です。