human/audio_render/audio_render.py

40 lines
1.2 KiB
Python
Raw Normal View History

2024-09-28 18:47:04 +00:00
#encoding = utf8
from ctypes import *
import os
2024-10-04 08:16:36 +00:00
import numpy as np
2024-09-28 18:47:04 +00:00
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
2024-10-04 08:16:36 +00:00
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)