#encoding = utf8 from ctypes import * import os import numpy as np current = os.path.dirname(__file__) dynamic_path = os.path.join(current, 'AudioRender.dll') def audio_render_log_callback(level, log, size): print(f'level={level}, log={log}, len={size}') class AudioRender: def __init__(self): self.__audio_render_obj = WinDLL(dynamic_path) print(self.__audio_render_obj) if self.__audio_render_obj is not None: CALLBACK_TYPE = CFUNCTYPE(None, c_int, c_ubyte, c_uint) c_callback = CALLBACK_TYPE(audio_render_log_callback) self.__init = self.__audio_render_obj.Initialize(c_callback) print('AudioRender init', self.__init) def __del__(self): print('AudioRender __del__') if self.__audio_render_obj is None: return if self.__init: self.__audio_render_obj.Uninitialize() def write(self, data, size): if not self.__init: return False self.__audio_render_obj.argtypes = (POINTER(c_uint8), c_uint) byte_data = np.frombuffer(data, dtype=np.uint8) return self.__audio_render_obj.Write(byte_data.ctypes.data_as(POINTER(c_uint8)), size)