-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpybass_spx.py
45 lines (35 loc) · 1.66 KB
/
pybass_spx.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Copyright(c) Max Kolosov 2009 [email protected]
# http://vosolok2008.narod.ru
# BSD license
__version__ = '0.2'
__versionTime__ = '2013-01-22'
__author__ = 'Max Kolosov <[email protected]>'
__doc__ = '''
pybass_spx.py - is ctypes python module for
BASS_SPX - extension to the BASS audio library
that enables the playback of Speex streams.
'''
import sys, ctypes, platform, pybass
QWORD = pybass.QWORD
HSTREAM = pybass.HSTREAM
BASS_FILEPROCS = pybass.BASS_FILEPROCS
if platform.system().lower() == 'windows':
bass_spx_module = ctypes.WinDLL('bass_spx')
func_type = ctypes.WINFUNCTYPE
else:
bass_spx_module = ctypes.CDLL('bass_spx')
func_type = ctypes.CFUNCTYPE
# BASS_CHANNELINFO type
BASS_CTYPE_STREAM_SPX = 0x10c00
#HSTREAM BASSSPXDEF(BASS_SPX_StreamCreateFile)(BOOL mem, const void *file, QWORD offset, QWORD length, DWORD flags);
BASS_SPX_StreamCreateFile = func_type(HSTREAM, ctypes.c_byte, ctypes.c_void_p, QWORD, QWORD, ctypes.c_ulong)(('BASS_SPX_StreamCreateFile', bass_spx_module))
#HSTREAM BASSSPXDEF(BASS_SPX_StreamCreateFileUser)(DWORD system, DWORD flags, const BASS_FILEPROCS *procs, void *user);
BASS_SPX_StreamCreateFileUser = func_type(HSTREAM, ctypes.c_ulong, ctypes.c_ulong, ctypes.POINTER(BASS_FILEPROCS), ctypes.c_void_p)(('BASS_SPX_StreamCreateFileUser', bass_spx_module))
if __name__ == "__main__":
if not pybass.BASS_Init(-1, 44100, 0, 0, 0):
print('BASS_Init error %s' % pybass.get_error_description(pybass.BASS_ErrorGetCode()))
else:
handle = BASS_SPX_StreamCreateFile(False, b'test.spx', 0, 0, 0)
pybass.play_handle(handle)
if not pybass.BASS_Free():
print('BASS_Free error %s' % pybass.get_error_description(pybass.BASS_ErrorGetCode()))