我正在尝试为FLAC创建自己的包装器,以便我可以在自己的Python代码中使用FLAC.
我首先尝试使用ctypes,但它显示了一个非常奇怪的库接口,例如FLAC流和文件的所有init函数都成为一个函数,没有关于如何初始化它的真实信息.特别是因为它想要引用流解码器,但Python无法存储指针(BZZZT!),因此我无法将指针存储到流解码器.不同的init函数具有不同数量的参数并且一些参数类型不同也没有帮助.它还有很多枚举和结构,我不知道如何将它们放入我的代码中.
我一直在研究Pyrex,但是我有点遇到了与指针相同的问题,但我认为我已经解决了它的问题.该文件也不小,甚至还不完整.
所以我正在寻找可以帮助我更好地理解上述方法的替代方案或指南.如果我能得到推荐和/或帮助,那将会非常有帮助.
这与我的另一个问题有关,但我觉得我应该在一个新问题中提出这个问题.
基本上FLAC使用函数指针进行回调,并使用ctypes实现回调,您可以使用CFUNCTYPE它们进行原型化,然后使用该prototype()函数创建它们.
我遇到的问题是我想我会创建我的回调函数(我没有显示我重新创建的结构,FLAC__Frame是一个结构):
write_callback_prototype = CFUNCTYPE(c_int, c_void_p,
POINTER(FLAC__Frame),
POINTER(c_int32), v_void_p)Run Code Online (Sandbox Code Playgroud)
我遇到的问题是实施.FLAC__Frame永远不会被程序员实例化,只能从初始化函数和处理函数中调用.我必须自己编写回调函数,但问题是我不知道怎么做,所以如果有人知道我应该怎么做,然后一些帮助将不胜感激.