Commit 3a997279 authored by Sjoerd Mullender's avatar Sjoerd Mullender

CL.py, clmodule.c: Adapted to new CL library. Lots of new methods.

aifc.py: Several small improvements.  Use new methods from CL module.
parent 8d733a00
...@@ -356,6 +356,7 @@ class Aifc_read(): ...@@ -356,6 +356,7 @@ class Aifc_read():
# _ssnd_seek_needed -- 1 iff positioned correctly in audio # _ssnd_seek_needed -- 1 iff positioned correctly in audio
# file for readframes() # file for readframes()
# _ssnd_chunk -- instantiation of a chunk class for the SSND chunk # _ssnd_chunk -- instantiation of a chunk class for the SSND chunk
# _framesize -- size of one frame in the file
def initfp(self, file): def initfp(self, file):
self._file = file self._file = file
self._version = 0 self._version = 0
...@@ -497,24 +498,15 @@ class Aifc_read(): ...@@ -497,24 +498,15 @@ class Aifc_read():
if self._ssnd_seek_needed: if self._ssnd_seek_needed:
self._ssnd_chunk.rewind() self._ssnd_chunk.rewind()
dummy = self._ssnd_chunk.read(8) dummy = self._ssnd_chunk.read(8)
pos = self._soundpos * self._nchannels * self._sampwidth pos = self._soundpos * self._framesize
if self._decomp:
if self._comptype in ('ULAW', 'ALAW'):
pos = pos / 2
if pos: if pos:
self._ssnd_chunk.setpos(pos + 8) self._ssnd_chunk.setpos(pos + 8)
self._ssnd_seek_needed = 0 self._ssnd_seek_needed = 0
if nframes == 0: if nframes == 0:
return '' return ''
size = nframes * self._nchannels * self._sampwidth data = self._ssnd_chunk.read(nframes * self._framesize)
if self._decomp:
if self._comptype in ('ULAW', 'ALAW'):
size = size / 2
data = self._ssnd_chunk.read(size)
if self._decomp and data: if self._decomp and data:
params = [CL.FRAME_BUFFER_SIZE, len(data) * 2, \ self._decomp.SetParam(CL.FRAME_BUFFER_SIZE, len(data) * 2)
CL.COMPRESSED_BUFFER_SIZE, len(data)]
self._decomp.SetParams(params)
data = self._decomp.Decompress(len(data) / self._nchannels, data) data = self._decomp.Decompress(len(data) / self._nchannels, data)
self._soundpos = self._soundpos + len(data) / (self._nchannels * self._sampwidth) self._soundpos = self._soundpos + len(data) / (self._nchannels * self._sampwidth)
return data return data
...@@ -530,6 +522,7 @@ class Aifc_read(): ...@@ -530,6 +522,7 @@ class Aifc_read():
self._sampwidth = _convert1(sampwidth, _sampwidthlist) self._sampwidth = _convert1(sampwidth, _sampwidthlist)
framerate = _read_float(chunk) framerate = _read_float(chunk)
self._framerate = _convert1(framerate, _frameratelist) self._framerate = _convert1(framerate, _frameratelist)
self._framesize = self._nchannels * self._sampwidth
if self._aifc: if self._aifc:
#DEBUG: SGI's soundeditor produces a bad size :-( #DEBUG: SGI's soundeditor produces a bad size :-(
kludge = 0 kludge = 0
...@@ -555,8 +548,10 @@ class Aifc_read(): ...@@ -555,8 +548,10 @@ class Aifc_read():
raise Error, 'cannot read compressed AIFF-C files' raise Error, 'cannot read compressed AIFF-C files'
if self._comptype == 'ULAW': if self._comptype == 'ULAW':
scheme = CL.G711_ULAW scheme = CL.G711_ULAW
self._framesize = self._framesize / 2
elif self._comptype == 'ALAW': elif self._comptype == 'ALAW':
scheme = CL.G711_ALAW scheme = CL.G711_ALAW
self._framesize = self._framesize / 2
else: else:
raise Error, 'unsupported compression type' raise Error, 'unsupported compression type'
self._decomp = cl.OpenDecompressor(scheme) self._decomp = cl.OpenDecompressor(scheme)
...@@ -643,6 +638,7 @@ class Aifc_write(): ...@@ -643,6 +638,7 @@ class Aifc_write():
def setnchannels(self, nchannels): def setnchannels(self, nchannels):
if self._nframeswritten: if self._nframeswritten:
raise Error, 'cannot change parameters after starting to write' raise Error, 'cannot change parameters after starting to write'
dummy = _convert(nchannels, _nchannelslist)
self._nchannels = nchannels self._nchannels = nchannels
def getnchannels(self): def getnchannels(self):
...@@ -653,6 +649,7 @@ class Aifc_write(): ...@@ -653,6 +649,7 @@ class Aifc_write():
def setsampwidth(self, sampwidth): def setsampwidth(self, sampwidth):
if self._nframeswritten: if self._nframeswritten:
raise Error, 'cannot change parameters after starting to write' raise Error, 'cannot change parameters after starting to write'
dummy = _convert2(sampwidth, _sampwidthlist)
self._sampwidth = sampwidth self._sampwidth = sampwidth
def getsampwidth(self): def getsampwidth(self):
...@@ -663,6 +660,7 @@ class Aifc_write(): ...@@ -663,6 +660,7 @@ class Aifc_write():
def setframerate(self, framerate): def setframerate(self, framerate):
if self._nframeswritten: if self._nframeswritten:
raise Error, 'cannot change parameters after starting to write' raise Error, 'cannot change parameters after starting to write'
dummy = _convert2(framerate, _frameratelist)
self._framerate = framerate self._framerate = framerate
def getframerate(self): def getframerate(self):
...@@ -702,6 +700,9 @@ class Aifc_write(): ...@@ -702,6 +700,9 @@ class Aifc_write():
raise Error, 'cannot change parameters after starting to write' raise Error, 'cannot change parameters after starting to write'
if comptype not in ('NONE', 'ULAW', 'ALAW'): if comptype not in ('NONE', 'ULAW', 'ALAW'):
raise Error, 'unsupported compression type' raise Error, 'unsupported compression type'
dummy = _convert2(nchannels, _nchannelslist)
dummy = _convert2(sampwidth, _sampwidthlist)
dummy = _convert2(framerate, _frameratelist)
self._nchannels = nchannels self._nchannels = nchannels
self._sampwidth = sampwidth self._sampwidth = sampwidth
self._framerate = framerate self._framerate = framerate
...@@ -755,9 +756,9 @@ class Aifc_write(): ...@@ -755,9 +756,9 @@ class Aifc_write():
self._write_header(len(data)) self._write_header(len(data))
nframes = len(data) / (self._sampwidth * self._nchannels) nframes = len(data) / (self._sampwidth * self._nchannels)
if self._comp: if self._comp:
params = [CL.FRAME_BUFFER_SIZE, len(data), \ self._comp.SetParam(CL.FRAME_BUFFER_SIZE, len(data))
CL.COMPRESSED_BUFFER_SIZE, len(data)] self._comp.SetParam(CL.COMPRESSED_BUFFER_SIZE, \
self._comp.SetParams(params) len(data))
data = self._comp.Compress(nframes, data) data = self._comp.Compress(nframes, data)
self._file.write(data) self._file.write(data)
self._nframeswritten = self._nframeswritten + nframes self._nframeswritten = self._nframeswritten + nframes
...@@ -803,7 +804,9 @@ class Aifc_write(): ...@@ -803,7 +804,9 @@ class Aifc_write():
self._comp = cl.OpenCompressor(scheme) self._comp = cl.OpenCompressor(scheme)
params = [CL.ORIGINAL_FORMAT, 0, \ params = [CL.ORIGINAL_FORMAT, 0, \
CL.BITS_PER_COMPONENT, 0, \ CL.BITS_PER_COMPONENT, 0, \
CL.FRAME_RATE, self._framerate] CL.FRAME_RATE, self._framerate, \
CL.FRAME_BUFFER_SIZE, 100, \
CL.COMPRESSED_BUFFER_SIZE, 100]
if self._nchannels == AL.MONO: if self._nchannels == AL.MONO:
params[1] = CL.MONO params[1] = CL.MONO
else: else:
...@@ -815,6 +818,8 @@ class Aifc_write(): ...@@ -815,6 +818,8 @@ class Aifc_write():
else: else:
params[3] = 24 params[3] = 24
self._comp.SetParams(params) self._comp.SetParams(params)
# the compressor produces a header which we ignore
dummy = self._comp.Compress(0, '')
self._file.write('FORM') self._file.write('FORM')
if not self._nframes: if not self._nframes:
self._nframes = initlength / (self._nchannels * self._sampwidth) self._nframes = initlength / (self._nchannels * self._sampwidth)
...@@ -836,7 +841,7 @@ class Aifc_write(): ...@@ -836,7 +841,7 @@ class Aifc_write():
self._file.write('AIFF') self._file.write('AIFF')
self._file.write('COMM') self._file.write('COMM')
_write_long(self._file, commlength) _write_long(self._file, commlength)
_write_short(self._file, self._nchannels) _write_short(self._file, _convert2(self._nchannels, _nchannelslist))
self._nframes_pos = self._file.tell() self._nframes_pos = self._file.tell()
_write_long(self._file, self._nframes) _write_long(self._file, self._nframes)
_write_short(self._file, _convert2(self._sampwidth, _sampwidthlist)) _write_short(self._file, _convert2(self._sampwidth, _sampwidthlist))
......
# #
# cl.h - Compression Library typedefs and prototypes # cl.h - Compression Library typedefs and prototypes
# #
# 01/07/92 Cleanup by Brian Knittel
# 02/18/92 Original Version by Brian Knittel # 02/18/92 Original Version by Brian Knittel
# #
# #
# originalFormat parameter values # originalFormat parameter values
# #
MAX_NUMBER_OF_ORIGINAL_FORMATS = (32) MAX_NUMBER_OF_ORIGINAL_FORMATS = 32
# Audio # Audio
MONO = (0) MONO = 0
STEREO_INTERLEAVED = (1) STEREO_INTERLEAVED = 1
# Video # Video
# YUV is defined to be the same thing as YCrCb (luma and two chroma components). # YUV is defined to be the same thing as YCrCb (luma and two chroma components).
...@@ -21,152 +22,215 @@ STEREO_INTERLEAVED = (1) ...@@ -21,152 +22,215 @@ STEREO_INTERLEAVED = (1)
# vertically in addition to horizontally, and is packed the same as # vertically in addition to horizontally, and is packed the same as
# 422 except that U & V are not valid on the second line. # 422 except that U & V are not valid on the second line.
# #
RGB = (0) RGB = 0
RGBX = (1) RGBX = 1
RGBA = (2) RGBA = 2
RGB332 = (3) RGB332 = 3
GRAYSCALE = 4
Y = 4
YUV = 5
YCbCr = 5
YUV422 = 6 # 4:2:2 sampling
YCbCr422 = 6 # 4:2:2 sampling
YUV422HC = 7 # 4:1:1 sampling
YCbCr422HC = 7 # 4:1:1 sampling
YUV422DC = 7 # 4:1:1 sampling
YCbCr422DC = 7 # 4:1:1 sampling
BEST_FIT = -1
def BytesPerSample(s):
if s in (MONO, YUV):
return 2
elif s == STEREO_INTERLEAVED:
return 4
else:
return 0
def BytesPerPixel(f):
if f in (RGB, YUV):
return 3
elif f in (RGBX, RGBA):
return 4
elif f in (RGB332, GRAYSCALE):
return 1
else:
return 2
def AudioFormatName(f):
if f == MONO:
return 'MONO'
elif f == STEREO_INTERLEAVED:
return 'STEREO_INTERLEAVED'
else:
return 'Not a valid format'
def VideoFormatName(f):
if f == RGB:
return 'RGB'
elif f == RGBX:
return 'RGBX'
elif f == RGBA:
return 'RGBA'
elif f == RGB332:
return 'RGB332'
elif f == GRAYSCALE:
return 'GRAYSCALE'
elif f == YUV:
return 'YUV'
elif f == YUV422:
return 'YUV422'
elif f == YUV422DC:
return 'YUV422DC'
else:
return 'Not a valid format'
MAX_NUMBER_OF_AUDIO_ALGORITHMS = 32
MAX_NUMBER_OF_VIDEO_ALGORITHMS = 32
GRAYSCALE = (4) #
Y = (4) # Algorithm types
YUV = (5) #
YCbCr = (5) AUDIO = 0
YUV422 = (6) # 4:2:2 sampling VIDEO = 1
YCbCr422 = (6) # 4:2:2 sampling
YUV422HC = (7) # 4:1:1 sampling
YCbCr422HC = (7) # 4:1:1 sampling
MAX_NUMBER_OF_AUDIO_ALGORITHMS = (32) def AlgorithmNumber(scheme):
MAX_NUMBER_OF_VIDEO_ALGORITHMS = (32) return scheme & 0x7fff
def AlgorithmType(scheme):
return (scheme >> 15) & 1
def Algorithm(type, n):
return n | ((type & 1) << 15)
# #
# "compressionScheme" argument values # "compressionScheme" argument values
# #
UNCOMPRESSED_AUDIO = (0) UNKNOWN_SCHEME = -1
G711_ULAW = (1)
ULAW = (1) UNCOMPRESSED_AUDIO = Algorithm(AUDIO, 0)
G711_ALAW = (2) G711_ULAW = Algorithm(AUDIO, 1)
ALAW = (2) ULAW = Algorithm(AUDIO, 1)
G722 = (3) G711_ALAW = Algorithm(AUDIO, 2)
ALAW = Algorithm(AUDIO, 2)
AWARE_MPEG_AUDIO = Algorithm(AUDIO, 3)
AWARE_MULTIRATE = Algorithm(AUDIO, 4)
UNCOMPRESSED = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0) UNCOMPRESSED = Algorithm(VIDEO, 0)
UNCOMPRESSED_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0) UNCOMPRESSED_VIDEO = Algorithm(VIDEO, 0)
RLE = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 1) RLE = Algorithm(VIDEO, 1)
JPEG = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 2) JPEG = Algorithm(VIDEO, 2)
MPEG_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 3) MPEG_VIDEO = Algorithm(VIDEO, 3)
MVC1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 4) MVC1 = Algorithm(VIDEO, 4)
RTR = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5) RTR = Algorithm(VIDEO, 5)
RTR1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5) RTR1 = Algorithm(VIDEO, 5)
# #
# Parameters # Parameters
# #
MAX_NUMBER_OF_PARAMS = (256) MAX_NUMBER_OF_PARAMS = 256
# Default Parameters # Default Parameters
IMAGE_WIDTH = (0) IMAGE_WIDTH = 0
IMAGE_HEIGHT = (1) IMAGE_HEIGHT = 1
ORIGINAL_FORMAT = (2) ORIGINAL_FORMAT = 2
INTERNAL_FORMAT = (3) INTERNAL_FORMAT = 3
COMPONENTS = (4) COMPONENTS = 4
BITS_PER_COMPONENT = (5) BITS_PER_COMPONENT = 5
FRAME_RATE = (6) FRAME_RATE = 6
COMPRESSION_RATIO = (7) COMPRESSION_RATIO = 7
EXACT_COMPRESSION_RATIO = (8) EXACT_COMPRESSION_RATIO = 8
FRAME_BUFFER_SIZE = (9) FRAME_BUFFER_SIZE = 9
COMPRESSED_BUFFER_SIZE = (10) COMPRESSED_BUFFER_SIZE = 10
BLOCK_SIZE = (11) BLOCK_SIZE = 11
PREROLL = (12) PREROLL = 12
UNIQUE = (13) FRAME_TYPE = 13
FRAME_TYPE = (14) ALGORITHM_ID = 14
OVERWRITE_MODE = (15) ALGORITHM_VERSION = 15
NUMBER_OF_PARAMS = (16) ORIENTATION = 16
NUMBER_OF_FRAMES = 17
SPEED = 18
LAST_FRAME_INDEX = 19
NUMBER_OF_PARAMS = 20
# JPEG Specific Parameters # JPEG Specific Parameters
QUALITY_FACTOR = (NUMBER_OF_PARAMS + 0) QUALITY_FACTOR = NUMBER_OF_PARAMS + 0
# MPEG Specific Parameters # MPEG Specific Parameters
SPEED = (NUMBER_OF_PARAMS + 0) END_OF_SEQUENCE = NUMBER_OF_PARAMS + 0
ACTUAL_FRAME_INDEX = (NUMBER_OF_PARAMS + 1)
# RTR Specific Parameters # RTR Specific Parameters
QUALITY_LEVEL = (NUMBER_OF_PARAMS + 0) QUALITY_LEVEL = NUMBER_OF_PARAMS + 0
ZOOM_X = NUMBER_OF_PARAMS + 1
ZOOM_Y = NUMBER_OF_PARAMS + 2
# #define clTypeIsFloat(v) (*(float *)&(v))
# #define clTypeIsLong(v) (*(long *)&(v))
# #
# RATIO_1 = (65536.0) # Parameter value types
# #define clFloatToRatio(f) ((long)((float)(f) * RATIO_1)) #
# #define clRatioToFloat(f) ((float)(f) / RATIO_1) ENUM_VALUE = 0 # only certain constant values are valid
# RATIO_SHIFT = (16) RANGE_VALUE = 1 # any value in a given range is valid
# #define clRatioMul(m, r) ((m) * (r)) FLOATING_ENUM_VALUE = 2 # only certain constant floating point values are valid
# #define clRatioToLong(r) ((r) >> RATIO_SHIFT) FLOATING_RANGE_VALUE = 3 # any value in a given floating point range is valid
# #define clLongToRatio(r) ((r) << RATIO_SHIFT)
# #
# Parameter value types # Algorithm Functionality
# #
ENUM_VALUE = (0) # only certain constant values are valid DECOMPRESSOR = 1
RANGE_VALUE = (1) # any value in a given range is valid COMPRESSOR = 2
FLOATING_ENUM_VALUE = (2) # only certain constant floating point values are valid CODEC = 3
FLOATING_RANGE_VALUE = (3) # any value in a given floating point range is valid
POINTER = (4) # any legal pointer is valid
# #
# Algorithm types # Buffer types
# #
AUDIO = (0) NONE = 0
VIDEO = (1) FRAME = 1
DATA = 2
# #
# Algorithm Functionality # Frame types
# #
DECOMPRESSOR = (1) NONE = 0
COMPRESSOR = (2) KEYFRAME = 1
CODEC = (3) INTRA = 1
PREDICTED = 2
BIDIRECTIONAL = 3
# #
# Buffer types # Orientations
# #
NONE = (0) TOP_DOWN = 0
FRAME = (1) BOTTOM_UP = 1
DATA = (2)
#
# SGI Proprietaty Algorithm Header Start Code
#
HEADER_START_CODE = 0xc1C0DEC
# #
# error codes # error codes
# #
BAD_NOT_IMPLEMENTED = ( -1) # not impimented yet
BAD_NO_BUFFERSPACE = ( -2) # no space for internal buffers BAD_NO_BUFFERSPACE = -2 # no space for internal buffers
BAD_BUFFER_NULL = ( -3) # null buffer pointer BAD_PVBUFFER = -3 # param/val buffer doesn't make sense
BAD_COUNT_NEG = ( -4) # negative count BAD_BUFFERLENGTH_NEG = -4 # negative buffer length
BAD_PVBUFFER = ( -5) # param/val buffer doesn't make sense BAD_BUFFERLENGTH_ODD = -5 # odd length parameter/value buffer
BAD_BUFFERLENGTH_NEG = ( -6) # negative buffer length BAD_PARAM = -6 # invalid parameter
BAD_BUFFERLENGTH_ODD = ( -7) # odd length parameter/value buffer BAD_COMPRESSION_SCHEME = -7 # compression scheme parameter invalid
BAD_PARAM = ( -8) # invalid parameter BAD_COMPRESSOR_HANDLE = -8 # compression handle parameter invalid
BAD_COMPRESSION_SCHEME = ( -9) # compression scheme parameter invalid BAD_COMPRESSOR_HANDLE_POINTER = -9 # compression handle pointer invalid
BAD_COMPRESSOR_HANDLE = (-10) # compression handle parameter invalid BAD_BUFFER_HANDLE = -10 # buffer handle invalid
BAD_COMPRESSOR_HANDLE_POINTER = (-11) # compression handle pointer invalid BAD_BUFFER_QUERY_SIZE = -11 # buffer query size too large
BAD_BUFFER_HANDLE = (-12) # callback function invalid JPEG_ERROR = -12 # error from libjpeg
BAD_ALGORITHM_INFO = (-13) # algorithm info invalid BAD_FRAME_SIZE = -13 # frame size invalid
BAD_CL_BAD_WIDTH_OR_HEIGHT = (-14) # compressor width or height invalid PARAM_OUT_OF_RANGE = -14 # parameter out of range
BAD_POINTER_FROM_CALLBACK_FUNCTION = (-15) # pointer from callback invalid ADDED_ALGORITHM_ERROR = -15 # added algorithm had a unique error
JPEG_ERROR = (-16) # error from libjpeg BAD_ALGORITHM_TYPE = -16 # bad algorithm type
NO_SEMAPHORE = (-17) # could not get semaphore BAD_ALGORITHM_NAME = -17 # bad algorithm name
BAD_WIDTH_OR_HEIGHT = (-18) # width or height invalid BAD_BUFFERING = -18 # bad buffering calls
BAD_FRAME_COUNT = (-19) # frame count invalid BUFFER_NOT_CREATED = -19 # buffer not created
BAD_FRAME_INDEX = (-20) # frame index invalid BAD_BUFFER_EXISTS = -20 # buffer already created
BAD_FRAME_BUFFER = (-21) # frame buffer pointer invalid BAD_INTERNAL_FORMAT = -21 # invalid internal format
BAD_FRAME_SIZE = (-22) # frame size invalid BAD_BUFFER_POINTER = -22 # invalid buffer pointer
BAD_DATA_BUFFER = (-23) # data buffer pointer invalid FRAME_BUFFER_SIZE_ZERO = -23 # frame buffer has zero size
BAD_DATA_SIZE = (-24) # data buffer size invalid BAD_STREAM_HEADER = -24 # invalid stream header
BAD_TOTAL_NUMBER_OF_FRAMES = (-25) # total number of frames invalid
BAD_IMAGE_FORMAT = (-26) # image format invalid BAD_LICENSE = -25 # netls license not valid
BAD_BITS_PER_COMPONENT = (-27) # bits per component invalid AWARE_ERROR = -26 # error from libawcmp
BAD_FRAME_RATE = (-28) # frame rate invalid
BAD_INSUFFICIENT_DATA_FROM_CALLBACK_FUNCTION = (-29) # insufficient data from callback invalid
PARAM_OUT_OF_RANGE = (-30) # parameter out of range
ADDED_ALGORITHM_ERROR = (-31) # added algorithm had a unique error
BAD_ALGORITHM_TYPE = (-32) # bad algorithm type
BAD_ALGORITHM_NAME = (-33) # bad algorithm name
BAD_FRAME_INDEXING = (-34) # bad frame indexing
BAD_BUFFERING = (-35) # bad buffering calls
BUFFER_NOT_CREATED = (-36) # buffer not created
BAD_BUFFER_EXISTS = (-37) # buffer already created
# #
# cl.h - Compression Library typedefs and prototypes # cl.h - Compression Library typedefs and prototypes
# #
# 01/07/92 Cleanup by Brian Knittel
# 02/18/92 Original Version by Brian Knittel # 02/18/92 Original Version by Brian Knittel
# #
# #
# originalFormat parameter values # originalFormat parameter values
# #
MAX_NUMBER_OF_ORIGINAL_FORMATS = (32) MAX_NUMBER_OF_ORIGINAL_FORMATS = 32
# Audio # Audio
MONO = (0) MONO = 0
STEREO_INTERLEAVED = (1) STEREO_INTERLEAVED = 1
# Video # Video
# YUV is defined to be the same thing as YCrCb (luma and two chroma components). # YUV is defined to be the same thing as YCrCb (luma and two chroma components).
...@@ -21,152 +22,215 @@ STEREO_INTERLEAVED = (1) ...@@ -21,152 +22,215 @@ STEREO_INTERLEAVED = (1)
# vertically in addition to horizontally, and is packed the same as # vertically in addition to horizontally, and is packed the same as
# 422 except that U & V are not valid on the second line. # 422 except that U & V are not valid on the second line.
# #
RGB = (0) RGB = 0
RGBX = (1) RGBX = 1
RGBA = (2) RGBA = 2
RGB332 = (3) RGB332 = 3
GRAYSCALE = 4
Y = 4
YUV = 5
YCbCr = 5
YUV422 = 6 # 4:2:2 sampling
YCbCr422 = 6 # 4:2:2 sampling
YUV422HC = 7 # 4:1:1 sampling
YCbCr422HC = 7 # 4:1:1 sampling
YUV422DC = 7 # 4:1:1 sampling
YCbCr422DC = 7 # 4:1:1 sampling
BEST_FIT = -1
def BytesPerSample(s):
if s in (MONO, YUV):
return 2
elif s == STEREO_INTERLEAVED:
return 4
else:
return 0
def BytesPerPixel(f):
if f in (RGB, YUV):
return 3
elif f in (RGBX, RGBA):
return 4
elif f in (RGB332, GRAYSCALE):
return 1
else:
return 2
def AudioFormatName(f):
if f == MONO:
return 'MONO'
elif f == STEREO_INTERLEAVED:
return 'STEREO_INTERLEAVED'
else:
return 'Not a valid format'
def VideoFormatName(f):
if f == RGB:
return 'RGB'
elif f == RGBX:
return 'RGBX'
elif f == RGBA:
return 'RGBA'
elif f == RGB332:
return 'RGB332'
elif f == GRAYSCALE:
return 'GRAYSCALE'
elif f == YUV:
return 'YUV'
elif f == YUV422:
return 'YUV422'
elif f == YUV422DC:
return 'YUV422DC'
else:
return 'Not a valid format'
MAX_NUMBER_OF_AUDIO_ALGORITHMS = 32
MAX_NUMBER_OF_VIDEO_ALGORITHMS = 32
GRAYSCALE = (4) #
Y = (4) # Algorithm types
YUV = (5) #
YCbCr = (5) AUDIO = 0
YUV422 = (6) # 4:2:2 sampling VIDEO = 1
YCbCr422 = (6) # 4:2:2 sampling
YUV422HC = (7) # 4:1:1 sampling
YCbCr422HC = (7) # 4:1:1 sampling
MAX_NUMBER_OF_AUDIO_ALGORITHMS = (32) def AlgorithmNumber(scheme):
MAX_NUMBER_OF_VIDEO_ALGORITHMS = (32) return scheme & 0x7fff
def AlgorithmType(scheme):
return (scheme >> 15) & 1
def Algorithm(type, n):
return n | ((type & 1) << 15)
# #
# "compressionScheme" argument values # "compressionScheme" argument values
# #
UNCOMPRESSED_AUDIO = (0) UNKNOWN_SCHEME = -1
G711_ULAW = (1)
ULAW = (1) UNCOMPRESSED_AUDIO = Algorithm(AUDIO, 0)
G711_ALAW = (2) G711_ULAW = Algorithm(AUDIO, 1)
ALAW = (2) ULAW = Algorithm(AUDIO, 1)
G722 = (3) G711_ALAW = Algorithm(AUDIO, 2)
ALAW = Algorithm(AUDIO, 2)
AWARE_MPEG_AUDIO = Algorithm(AUDIO, 3)
AWARE_MULTIRATE = Algorithm(AUDIO, 4)
UNCOMPRESSED = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0) UNCOMPRESSED = Algorithm(VIDEO, 0)
UNCOMPRESSED_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0) UNCOMPRESSED_VIDEO = Algorithm(VIDEO, 0)
RLE = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 1) RLE = Algorithm(VIDEO, 1)
JPEG = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 2) JPEG = Algorithm(VIDEO, 2)
MPEG_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 3) MPEG_VIDEO = Algorithm(VIDEO, 3)
MVC1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 4) MVC1 = Algorithm(VIDEO, 4)
RTR = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5) RTR = Algorithm(VIDEO, 5)
RTR1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5) RTR1 = Algorithm(VIDEO, 5)
# #
# Parameters # Parameters
# #
MAX_NUMBER_OF_PARAMS = (256) MAX_NUMBER_OF_PARAMS = 256
# Default Parameters # Default Parameters
IMAGE_WIDTH = (0) IMAGE_WIDTH = 0
IMAGE_HEIGHT = (1) IMAGE_HEIGHT = 1
ORIGINAL_FORMAT = (2) ORIGINAL_FORMAT = 2
INTERNAL_FORMAT = (3) INTERNAL_FORMAT = 3
COMPONENTS = (4) COMPONENTS = 4
BITS_PER_COMPONENT = (5) BITS_PER_COMPONENT = 5
FRAME_RATE = (6) FRAME_RATE = 6
COMPRESSION_RATIO = (7) COMPRESSION_RATIO = 7
EXACT_COMPRESSION_RATIO = (8) EXACT_COMPRESSION_RATIO = 8
FRAME_BUFFER_SIZE = (9) FRAME_BUFFER_SIZE = 9
COMPRESSED_BUFFER_SIZE = (10) COMPRESSED_BUFFER_SIZE = 10
BLOCK_SIZE = (11) BLOCK_SIZE = 11
PREROLL = (12) PREROLL = 12
UNIQUE = (13) FRAME_TYPE = 13
FRAME_TYPE = (14) ALGORITHM_ID = 14
OVERWRITE_MODE = (15) ALGORITHM_VERSION = 15
NUMBER_OF_PARAMS = (16) ORIENTATION = 16
NUMBER_OF_FRAMES = 17
SPEED = 18
LAST_FRAME_INDEX = 19
NUMBER_OF_PARAMS = 20
# JPEG Specific Parameters # JPEG Specific Parameters
QUALITY_FACTOR = (NUMBER_OF_PARAMS + 0) QUALITY_FACTOR = NUMBER_OF_PARAMS + 0
# MPEG Specific Parameters # MPEG Specific Parameters
SPEED = (NUMBER_OF_PARAMS + 0) END_OF_SEQUENCE = NUMBER_OF_PARAMS + 0
ACTUAL_FRAME_INDEX = (NUMBER_OF_PARAMS + 1)
# RTR Specific Parameters # RTR Specific Parameters
QUALITY_LEVEL = (NUMBER_OF_PARAMS + 0) QUALITY_LEVEL = NUMBER_OF_PARAMS + 0
ZOOM_X = NUMBER_OF_PARAMS + 1
ZOOM_Y = NUMBER_OF_PARAMS + 2
# #define clTypeIsFloat(v) (*(float *)&(v))
# #define clTypeIsLong(v) (*(long *)&(v))
# #
# RATIO_1 = (65536.0) # Parameter value types
# #define clFloatToRatio(f) ((long)((float)(f) * RATIO_1)) #
# #define clRatioToFloat(f) ((float)(f) / RATIO_1) ENUM_VALUE = 0 # only certain constant values are valid
# RATIO_SHIFT = (16) RANGE_VALUE = 1 # any value in a given range is valid
# #define clRatioMul(m, r) ((m) * (r)) FLOATING_ENUM_VALUE = 2 # only certain constant floating point values are valid
# #define clRatioToLong(r) ((r) >> RATIO_SHIFT) FLOATING_RANGE_VALUE = 3 # any value in a given floating point range is valid
# #define clLongToRatio(r) ((r) << RATIO_SHIFT)
# #
# Parameter value types # Algorithm Functionality
# #
ENUM_VALUE = (0) # only certain constant values are valid DECOMPRESSOR = 1
RANGE_VALUE = (1) # any value in a given range is valid COMPRESSOR = 2
FLOATING_ENUM_VALUE = (2) # only certain constant floating point values are valid CODEC = 3
FLOATING_RANGE_VALUE = (3) # any value in a given floating point range is valid
POINTER = (4) # any legal pointer is valid
# #
# Algorithm types # Buffer types
# #
AUDIO = (0) NONE = 0
VIDEO = (1) FRAME = 1
DATA = 2
# #
# Algorithm Functionality # Frame types
# #
DECOMPRESSOR = (1) NONE = 0
COMPRESSOR = (2) KEYFRAME = 1
CODEC = (3) INTRA = 1
PREDICTED = 2
BIDIRECTIONAL = 3
# #
# Buffer types # Orientations
# #
NONE = (0) TOP_DOWN = 0
FRAME = (1) BOTTOM_UP = 1
DATA = (2)
#
# SGI Proprietaty Algorithm Header Start Code
#
HEADER_START_CODE = 0xc1C0DEC
# #
# error codes # error codes
# #
BAD_NOT_IMPLEMENTED = ( -1) # not impimented yet
BAD_NO_BUFFERSPACE = ( -2) # no space for internal buffers BAD_NO_BUFFERSPACE = -2 # no space for internal buffers
BAD_BUFFER_NULL = ( -3) # null buffer pointer BAD_PVBUFFER = -3 # param/val buffer doesn't make sense
BAD_COUNT_NEG = ( -4) # negative count BAD_BUFFERLENGTH_NEG = -4 # negative buffer length
BAD_PVBUFFER = ( -5) # param/val buffer doesn't make sense BAD_BUFFERLENGTH_ODD = -5 # odd length parameter/value buffer
BAD_BUFFERLENGTH_NEG = ( -6) # negative buffer length BAD_PARAM = -6 # invalid parameter
BAD_BUFFERLENGTH_ODD = ( -7) # odd length parameter/value buffer BAD_COMPRESSION_SCHEME = -7 # compression scheme parameter invalid
BAD_PARAM = ( -8) # invalid parameter BAD_COMPRESSOR_HANDLE = -8 # compression handle parameter invalid
BAD_COMPRESSION_SCHEME = ( -9) # compression scheme parameter invalid BAD_COMPRESSOR_HANDLE_POINTER = -9 # compression handle pointer invalid
BAD_COMPRESSOR_HANDLE = (-10) # compression handle parameter invalid BAD_BUFFER_HANDLE = -10 # buffer handle invalid
BAD_COMPRESSOR_HANDLE_POINTER = (-11) # compression handle pointer invalid BAD_BUFFER_QUERY_SIZE = -11 # buffer query size too large
BAD_BUFFER_HANDLE = (-12) # callback function invalid JPEG_ERROR = -12 # error from libjpeg
BAD_ALGORITHM_INFO = (-13) # algorithm info invalid BAD_FRAME_SIZE = -13 # frame size invalid
BAD_CL_BAD_WIDTH_OR_HEIGHT = (-14) # compressor width or height invalid PARAM_OUT_OF_RANGE = -14 # parameter out of range
BAD_POINTER_FROM_CALLBACK_FUNCTION = (-15) # pointer from callback invalid ADDED_ALGORITHM_ERROR = -15 # added algorithm had a unique error
JPEG_ERROR = (-16) # error from libjpeg BAD_ALGORITHM_TYPE = -16 # bad algorithm type
NO_SEMAPHORE = (-17) # could not get semaphore BAD_ALGORITHM_NAME = -17 # bad algorithm name
BAD_WIDTH_OR_HEIGHT = (-18) # width or height invalid BAD_BUFFERING = -18 # bad buffering calls
BAD_FRAME_COUNT = (-19) # frame count invalid BUFFER_NOT_CREATED = -19 # buffer not created
BAD_FRAME_INDEX = (-20) # frame index invalid BAD_BUFFER_EXISTS = -20 # buffer already created
BAD_FRAME_BUFFER = (-21) # frame buffer pointer invalid BAD_INTERNAL_FORMAT = -21 # invalid internal format
BAD_FRAME_SIZE = (-22) # frame size invalid BAD_BUFFER_POINTER = -22 # invalid buffer pointer
BAD_DATA_BUFFER = (-23) # data buffer pointer invalid FRAME_BUFFER_SIZE_ZERO = -23 # frame buffer has zero size
BAD_DATA_SIZE = (-24) # data buffer size invalid BAD_STREAM_HEADER = -24 # invalid stream header
BAD_TOTAL_NUMBER_OF_FRAMES = (-25) # total number of frames invalid
BAD_IMAGE_FORMAT = (-26) # image format invalid BAD_LICENSE = -25 # netls license not valid
BAD_BITS_PER_COMPONENT = (-27) # bits per component invalid AWARE_ERROR = -26 # error from libawcmp
BAD_FRAME_RATE = (-28) # frame rate invalid
BAD_INSUFFICIENT_DATA_FROM_CALLBACK_FUNCTION = (-29) # insufficient data from callback invalid
PARAM_OUT_OF_RANGE = (-30) # parameter out of range
ADDED_ALGORITHM_ERROR = (-31) # added algorithm had a unique error
BAD_ALGORITHM_TYPE = (-32) # bad algorithm type
BAD_ALGORITHM_NAME = (-33) # bad algorithm name
BAD_FRAME_INDEXING = (-34) # bad frame indexing
BAD_BUFFERING = (-35) # bad buffering calls
BUFFER_NOT_CREATED = (-36) # buffer not created
BAD_BUFFER_EXISTS = (-37) # buffer already created
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment