libsndfile中框架和项目之间的区别?

时间:2014-04-06 03:49:24

标签: c audio-processing libsndfile

我正在编写一个处理音频文件的软件。我正在使用libsndfile库来读取波形文件数据,我遇到了一个疑问,它们的文档没有解决:读取项目的函数和读取框架的函数有什么区别?或者,换句话说,如果我同时交换sf_read_shortsf_readf_short,我会得到相同的结果吗?

我已经读过一些问题,音频帧等于单个样本,所以我认为libsndfile调用的东西可能是同一个东西。在我的测试中,它们看起来是一样的。

1 个答案:

答案 0 :(得分:2)

我也很关心并找到答案。

  

问题12:我在看sf_read *。什么是物品?什么是框架?

     

项目是您正在阅读的数据类型的单个样本;即a   sf_read_short的单个短值或者单个浮点数   sf_read_float。对于只有一个通道的声音文件,帧是   对于多声道声音而言,与项目(即单个样本)相同   文件,单个框架包含每个渠道的单个项目。

     

以下是两个简单,正确的例子,假设两者都是   处理立体声文件,首先使用项目:

    #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。