portaudio的环形缓冲区的python包装器

pa-ringbuffer的Python项目详细描述


ring buffer functionality通常不包含在二进制文件中 PortAudio的发行版,因此大多数Python包装器都不包含它, 或者。

pa_ringbuffer模块只提供一个python包装器,实际的 portaudio环缓冲区代码必须单独编译,请参见Usage。 它可以用于任何有CFFI可用的python版本。

此模块设计为与sounddevice模块一起使用(它 也可以与其他模块一起使用)在 主Python程序和一个用C语言实现的音频回调函数 或者其他编译语言。

用法

这个模块不是单独使用的,它只在合作中有用 另一个使用cffi的python模块。 例如,查看https://github.com/spatialaudio/python-rtmixer

可以从PyPI获取python代码,例如在setup.py文件中 (在下面的示例中,您的模块将被称为mycffimodule):

fromsetuptoolsimportsetupsetup(name=...,version=...,author=...,...,cffi_modules=['mycffimodule_build.py:ffibuilder'],setup_requires=['CFFI','pa_ringbuffer'],install_requires=['pa_ringbuffer'],...,)

或者,只需将文件src/pa_ringbuffer.py复制到您自己的 源目录并从那里导入。

您可以构建自己的CFFI模块,如中所述 http://cffi.readthedocs.io/en/latest/cdef.html,只是在 您的mycffimodule_build.py

fromcffiimportFFIimportpa_ringbufferffibuilder=FFI()ffibuilder.cdef(pa_ringbuffer.cdef())ffibuilder.cdef("""

/* my own declarations */

""")ffibuilder.set_source('_mycffimodule','/* my implementation */',sources=['portaudio/src/common/pa_ringbuffer.c'],)if__name__=='__main__':ffibuilder.compile(verbose=True)

请注意,编译器必须可以使用以下文件:

对于您自己的C代码,您可能需要主PortAudio中的一些定义 标题:

一旦编译了扩展模块(在cffi的帮助下),就可以 在您自己的模块中使用类似的方法来访问RingBuffer 班级:

importpa_ringbufferfrom_mycffimoduleimportffi,libRingBuffer=pa_ringbuffer.init(ffi,lib)

API参考

只有两个功能:

pa_ringbuffer.cdef()

此函数返回一个字符串,该字符串包含文件中的C声明 pa_ringbuffer.h,可以用作cffi的cdef()函数的参数 (见上面的Usage)。注意,返回的声明略有不同 在macos/darwin系统上调用时。

pa_ringbuffer.init(ffi, lib)

此函数返回与cffi关联的RingBuffer类 实例由ffilib给定。

创建文档

RingBuffer类的文档不能单独使用。 如果使用Sphinx,则可以无缝地包含 RingBuffer使用您自己的文档初始化。 一个例子可以在 https://github.com/spatialaudio/python-rtmixer,生成的文档是 可在http://python-rtmixer.readthedocs.io/#rtmixer.RingBuffer购买

您需要在您的conf.py中激活autodoc扩展:

extensions=[...,'sphinx.ext.autodoc',...,]

在模块文档中的某个地方,您应该添加以下内容:

..autoclass:: RingBuffer
   :inherited-members:

在此之前,您可能必须使用currentmodule指令来选择 自己的模块。使用automodule也可以

版本历史记录

0.1.3(2018-06-02):
  • 没有新功能,只是一个小文档更新
0.1.2(2017-10-21):
  • 没有新功能,只是一个错误修复程序
0.1.1(2017-09-04):
  • 添加buffer参数
0.1.0(2017-08-08):
初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android使用两个后台服务错误   解压缩HTTPInputStream时,java GZIPInputStream过早关闭   javax和javax的区别是什么。网ssl。密钥库和服务器。ssl。为SpringBoot应用程序指定密钥库时的密钥库属性   java生成两个JPanel,而我只需要一个   java深度链接从play store安装应用程序时获取数据   java 安卓应用程序在退出时未正确释放蓝牙   java正确使用setCellValueFactory   java开放JdbcTemplate连接处于只读模式?   使用Spring MVC创建服务时发生java错误   JavaFX获取安装在计算机中的特定应用程序的版本   SecureRandom的安全问题:PRNG在java 1.5中不一致   windows我可以创建一个独立的。带Inno设置的Java应用程序的exe安装程序?   如何使用JavaServlet下载csv文件?   java从生成的缓冲图像中添加图像作为jasper中的数据记录?   java日期和时间解析