File tree Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Original file line number Diff line number Diff line change @@ -73,20 +73,30 @@ class from the standard library can be used.
7373
7474 :param elementsize: The size of a single data element in bytes.
7575 :type elementsize: int
76- :param size: The number of elements in the buffer (must be a
77- power of 2).
76+ :param size: The number of elements in the buffer (must be a power
77+ of 2). Can be omitted if a pre-allocated buffer is passed .
7878 :type size: int
79- :param buffer: optional pre-allocated buffer to use with RingBuffer
79+ :param buffer: optional pre-allocated buffer to use with RingBuffer.
8080 :type buffer: buffer
8181
8282 """
8383
84- def __init__ (self , elementsize , size , buffer = None ):
84+ def __init__ (self , elementsize , size = None , buffer = None ):
8585 self ._ptr = self ._ffi .new ('PaUtilRingBuffer*' )
8686 if buffer is None :
87+ if size is None :
88+ raise ValueError (
89+ "size is required when buffer parameter is not specified" )
8790 self ._data = self ._ffi .new ('unsigned char[]' , size * elementsize )
8891 else :
89- self ._data = self ._ffi .from_buffer (buffer )
92+ try :
93+ data = self ._ffi .from_buffer (buffer )
94+ except TypeError :
95+ data = buffer
96+ size , rest = divmod (self ._ffi .sizeof (data ), elementsize )
97+ if rest :
98+ raise ValueError ('buffer size must be multiple of elementsize' )
99+ self ._data = data
90100
91101 res = self ._lib .PaUtil_InitializeRingBuffer (
92102 self ._ptr , elementsize , size , self ._data )
You can’t perform that action at this time.
0 commit comments