summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSjoerd Mullender <sjoerd@acm.org>1993-02-04 16:43:28 (GMT)
committerSjoerd Mullender <sjoerd@acm.org>1993-02-04 16:43:28 (GMT)
commit3a997279d50d98bc403103d3467740f69a5fc47f (patch)
tree6d4f8db517925580d9fefc1e1ba6a52183c3f512 /Lib
parent8d733a00f00c98f5627a977150c85bfa9bed6d28 (diff)
downloadcpython-3a997279d50d98bc403103d3467740f69a5fc47f.zip
cpython-3a997279d50d98bc403103d3467740f69a5fc47f.tar.gz
cpython-3a997279d50d98bc403103d3467740f69a5fc47f.tar.bz2
CL.py, clmodule.c: Adapted to new CL library. Lots of new methods.
aifc.py: Several small improvements. Use new methods from CL module.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/aifc.py39
-rwxr-xr-xLib/irix5/CL.py298
-rwxr-xr-xLib/plat-irix5/CL.py298
3 files changed, 384 insertions, 251 deletions
diff --git a/Lib/aifc.py b/Lib/aifc.py
index 706bba8..63849a1 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -356,6 +356,7 @@ class Aifc_read():
# _ssnd_seek_needed -- 1 iff positioned correctly in audio
# file for readframes()
# _ssnd_chunk -- instantiation of a chunk class for the SSND chunk
+ # _framesize -- size of one frame in the file
def initfp(self, file):
self._file = file
self._version = 0
@@ -497,24 +498,15 @@ class Aifc_read():
if self._ssnd_seek_needed:
self._ssnd_chunk.rewind()
dummy = self._ssnd_chunk.read(8)
- pos = self._soundpos * self._nchannels * self._sampwidth
- if self._decomp:
- if self._comptype in ('ULAW', 'ALAW'):
- pos = pos / 2
+ pos = self._soundpos * self._framesize
if pos:
self._ssnd_chunk.setpos(pos + 8)
self._ssnd_seek_needed = 0
if nframes == 0:
return ''
- size = nframes * self._nchannels * self._sampwidth
- if self._decomp:
- if self._comptype in ('ULAW', 'ALAW'):
- size = size / 2
- data = self._ssnd_chunk.read(size)
+ data = self._ssnd_chunk.read(nframes * self._framesize)
if self._decomp and data:
- params = [CL.FRAME_BUFFER_SIZE, len(data) * 2, \
- CL.COMPRESSED_BUFFER_SIZE, len(data)]
- self._decomp.SetParams(params)
+ self._decomp.SetParam(CL.FRAME_BUFFER_SIZE, len(data) * 2)
data = self._decomp.Decompress(len(data) / self._nchannels, data)
self._soundpos = self._soundpos + len(data) / (self._nchannels * self._sampwidth)
return data
@@ -530,6 +522,7 @@ class Aifc_read():
self._sampwidth = _convert1(sampwidth, _sampwidthlist)
framerate = _read_float(chunk)
self._framerate = _convert1(framerate, _frameratelist)
+ self._framesize = self._nchannels * self._sampwidth
if self._aifc:
#DEBUG: SGI's soundeditor produces a bad size :-(
kludge = 0
@@ -555,8 +548,10 @@ class Aifc_read():
raise Error, 'cannot read compressed AIFF-C files'
if self._comptype == 'ULAW':
scheme = CL.G711_ULAW
+ self._framesize = self._framesize / 2
elif self._comptype == 'ALAW':
scheme = CL.G711_ALAW
+ self._framesize = self._framesize / 2
else:
raise Error, 'unsupported compression type'
self._decomp = cl.OpenDecompressor(scheme)
@@ -643,6 +638,7 @@ class Aifc_write():
def setnchannels(self, nchannels):
if self._nframeswritten:
raise Error, 'cannot change parameters after starting to write'
+ dummy = _convert(nchannels, _nchannelslist)
self._nchannels = nchannels
def getnchannels(self):
@@ -653,6 +649,7 @@ class Aifc_write():
def setsampwidth(self, sampwidth):
if self._nframeswritten:
raise Error, 'cannot change parameters after starting to write'
+ dummy = _convert2(sampwidth, _sampwidthlist)
self._sampwidth = sampwidth
def getsampwidth(self):
@@ -663,6 +660,7 @@ class Aifc_write():
def setframerate(self, framerate):
if self._nframeswritten:
raise Error, 'cannot change parameters after starting to write'
+ dummy = _convert2(framerate, _frameratelist)
self._framerate = framerate
def getframerate(self):
@@ -702,6 +700,9 @@ class Aifc_write():
raise Error, 'cannot change parameters after starting to write'
if comptype not in ('NONE', 'ULAW', 'ALAW'):
raise Error, 'unsupported compression type'
+ dummy = _convert2(nchannels, _nchannelslist)
+ dummy = _convert2(sampwidth, _sampwidthlist)
+ dummy = _convert2(framerate, _frameratelist)
self._nchannels = nchannels
self._sampwidth = sampwidth
self._framerate = framerate
@@ -755,9 +756,9 @@ class Aifc_write():
self._write_header(len(data))
nframes = len(data) / (self._sampwidth * self._nchannels)
if self._comp:
- params = [CL.FRAME_BUFFER_SIZE, len(data), \
- CL.COMPRESSED_BUFFER_SIZE, len(data)]
- self._comp.SetParams(params)
+ self._comp.SetParam(CL.FRAME_BUFFER_SIZE, len(data))
+ self._comp.SetParam(CL.COMPRESSED_BUFFER_SIZE, \
+ len(data))
data = self._comp.Compress(nframes, data)
self._file.write(data)
self._nframeswritten = self._nframeswritten + nframes
@@ -803,7 +804,9 @@ class Aifc_write():
self._comp = cl.OpenCompressor(scheme)
params = [CL.ORIGINAL_FORMAT, 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:
params[1] = CL.MONO
else:
@@ -815,6 +818,8 @@ class Aifc_write():
else:
params[3] = 24
self._comp.SetParams(params)
+ # the compressor produces a header which we ignore
+ dummy = self._comp.Compress(0, '')
self._file.write('FORM')
if not self._nframes:
self._nframes = initlength / (self._nchannels * self._sampwidth)
@@ -836,7 +841,7 @@ class Aifc_write():
self._file.write('AIFF')
self._file.write('COMM')
_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()
_write_long(self._file, self._nframes)
_write_short(self._file, _convert2(self._sampwidth, _sampwidthlist))
diff --git a/Lib/irix5/CL.py b/Lib/irix5/CL.py
index c64f088..41c56e0 100755
--- a/Lib/irix5/CL.py
+++ b/Lib/irix5/CL.py
@@ -1,17 +1,18 @@
#
# cl.h - Compression Library typedefs and prototypes
#
+# 01/07/92 Cleanup by Brian Knittel
# 02/18/92 Original Version by Brian Knittel
#
#
# originalFormat parameter values
#
-MAX_NUMBER_OF_ORIGINAL_FORMATS = (32)
+MAX_NUMBER_OF_ORIGINAL_FORMATS = 32
# Audio
-MONO = (0)
-STEREO_INTERLEAVED = (1)
+MONO = 0
+STEREO_INTERLEAVED = 1
# Video
# YUV is defined to be the same thing as YCrCb (luma and two chroma components).
@@ -21,152 +22,215 @@ STEREO_INTERLEAVED = (1)
# vertically in addition to horizontally, and is packed the same as
# 422 except that U & V are not valid on the second line.
#
-RGB = (0)
-RGBX = (1)
-RGBA = (2)
-RGB332 = (3)
+RGB = 0
+RGBX = 1
+RGBA = 2
+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)
-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
+#
+# Algorithm types
+#
+AUDIO = 0
+VIDEO = 1
-MAX_NUMBER_OF_AUDIO_ALGORITHMS = (32)
-MAX_NUMBER_OF_VIDEO_ALGORITHMS = (32)
+def AlgorithmNumber(scheme):
+ return scheme & 0x7fff
+def AlgorithmType(scheme):
+ return (scheme >> 15) & 1
+def Algorithm(type, n):
+ return n | ((type & 1) << 15)
#
# "compressionScheme" argument values
#
-UNCOMPRESSED_AUDIO = (0)
-G711_ULAW = (1)
-ULAW = (1)
-G711_ALAW = (2)
-ALAW = (2)
-G722 = (3)
+UNKNOWN_SCHEME = -1
+
+UNCOMPRESSED_AUDIO = Algorithm(AUDIO, 0)
+G711_ULAW = Algorithm(AUDIO, 1)
+ULAW = Algorithm(AUDIO, 1)
+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_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0)
-RLE = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 1)
-JPEG = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 2)
-MPEG_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 3)
-MVC1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 4)
-RTR = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5)
-RTR1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5)
+UNCOMPRESSED = Algorithm(VIDEO, 0)
+UNCOMPRESSED_VIDEO = Algorithm(VIDEO, 0)
+RLE = Algorithm(VIDEO, 1)
+JPEG = Algorithm(VIDEO, 2)
+MPEG_VIDEO = Algorithm(VIDEO, 3)
+MVC1 = Algorithm(VIDEO, 4)
+RTR = Algorithm(VIDEO, 5)
+RTR1 = Algorithm(VIDEO, 5)
#
# Parameters
#
-MAX_NUMBER_OF_PARAMS = (256)
+MAX_NUMBER_OF_PARAMS = 256
# Default Parameters
-IMAGE_WIDTH = (0)
-IMAGE_HEIGHT = (1)
-ORIGINAL_FORMAT = (2)
-INTERNAL_FORMAT = (3)
-COMPONENTS = (4)
-BITS_PER_COMPONENT = (5)
-FRAME_RATE = (6)
-COMPRESSION_RATIO = (7)
-EXACT_COMPRESSION_RATIO = (8)
-FRAME_BUFFER_SIZE = (9)
-COMPRESSED_BUFFER_SIZE = (10)
-BLOCK_SIZE = (11)
-PREROLL = (12)
-UNIQUE = (13)
-FRAME_TYPE = (14)
-OVERWRITE_MODE = (15)
-NUMBER_OF_PARAMS = (16)
+IMAGE_WIDTH = 0
+IMAGE_HEIGHT = 1
+ORIGINAL_FORMAT = 2
+INTERNAL_FORMAT = 3
+COMPONENTS = 4
+BITS_PER_COMPONENT = 5
+FRAME_RATE = 6
+COMPRESSION_RATIO = 7
+EXACT_COMPRESSION_RATIO = 8
+FRAME_BUFFER_SIZE = 9
+COMPRESSED_BUFFER_SIZE = 10
+BLOCK_SIZE = 11
+PREROLL = 12
+FRAME_TYPE = 13
+ALGORITHM_ID = 14
+ALGORITHM_VERSION = 15
+ORIENTATION = 16
+NUMBER_OF_FRAMES = 17
+SPEED = 18
+LAST_FRAME_INDEX = 19
+NUMBER_OF_PARAMS = 20
# JPEG Specific Parameters
-QUALITY_FACTOR = (NUMBER_OF_PARAMS + 0)
+QUALITY_FACTOR = NUMBER_OF_PARAMS + 0
# MPEG Specific Parameters
-SPEED = (NUMBER_OF_PARAMS + 0)
-ACTUAL_FRAME_INDEX = (NUMBER_OF_PARAMS + 1)
+END_OF_SEQUENCE = NUMBER_OF_PARAMS + 0
# RTR Specific Parameters
-QUALITY_LEVEL = (NUMBER_OF_PARAMS + 0)
-
-# #define clTypeIsFloat(v) (*(float *)&(v))
-# #define clTypeIsLong(v) (*(long *)&(v))
-#
-# RATIO_1 = (65536.0)
-# #define clFloatToRatio(f) ((long)((float)(f) * RATIO_1))
-# #define clRatioToFloat(f) ((float)(f) / RATIO_1)
-# RATIO_SHIFT = (16)
-# #define clRatioMul(m, r) ((m) * (r))
-# #define clRatioToLong(r) ((r) >> RATIO_SHIFT)
-# #define clLongToRatio(r) ((r) << RATIO_SHIFT)
+QUALITY_LEVEL = NUMBER_OF_PARAMS + 0
+ZOOM_X = NUMBER_OF_PARAMS + 1
+ZOOM_Y = NUMBER_OF_PARAMS + 2
#
# Parameter value types
#
-ENUM_VALUE = (0) # only certain constant values are valid
-RANGE_VALUE = (1) # any value in a given range is valid
-FLOATING_ENUM_VALUE = (2) # only certain constant floating point values are valid
-FLOATING_RANGE_VALUE = (3) # any value in a given floating point range is valid
-POINTER = (4) # any legal pointer is valid
+ENUM_VALUE = 0 # only certain constant values are valid
+RANGE_VALUE = 1 # any value in a given range is valid
+FLOATING_ENUM_VALUE = 2 # only certain constant floating point values are valid
+FLOATING_RANGE_VALUE = 3 # any value in a given floating point range is valid
#
-# Algorithm types
+# Algorithm Functionality
#
-AUDIO = (0)
-VIDEO = (1)
+DECOMPRESSOR = 1
+COMPRESSOR = 2
+CODEC = 3
#
-# Algorithm Functionality
+# Buffer types
#
-DECOMPRESSOR = (1)
-COMPRESSOR = (2)
-CODEC = (3)
+NONE = 0
+FRAME = 1
+DATA = 2
#
-# Buffer types
+# Frame types
+#
+NONE = 0
+KEYFRAME = 1
+INTRA = 1
+PREDICTED = 2
+BIDIRECTIONAL = 3
+
+#
+# Orientations
#
-NONE = (0)
-FRAME = (1)
-DATA = (2)
+TOP_DOWN = 0
+BOTTOM_UP = 1
+
+#
+# SGI Proprietaty Algorithm Header Start Code
+#
+HEADER_START_CODE = 0xc1C0DEC
#
# error codes
#
-BAD_NOT_IMPLEMENTED = ( -1) # not impimented yet
-BAD_NO_BUFFERSPACE = ( -2) # no space for internal buffers
-BAD_BUFFER_NULL = ( -3) # null buffer pointer
-BAD_COUNT_NEG = ( -4) # negative count
-BAD_PVBUFFER = ( -5) # param/val buffer doesn't make sense
-BAD_BUFFERLENGTH_NEG = ( -6) # negative buffer length
-BAD_BUFFERLENGTH_ODD = ( -7) # odd length parameter/value buffer
-BAD_PARAM = ( -8) # invalid parameter
-BAD_COMPRESSION_SCHEME = ( -9) # compression scheme parameter invalid
-BAD_COMPRESSOR_HANDLE = (-10) # compression handle parameter invalid
-BAD_COMPRESSOR_HANDLE_POINTER = (-11) # compression handle pointer invalid
-BAD_BUFFER_HANDLE = (-12) # callback function invalid
-BAD_ALGORITHM_INFO = (-13) # algorithm info invalid
-BAD_CL_BAD_WIDTH_OR_HEIGHT = (-14) # compressor width or height invalid
-BAD_POINTER_FROM_CALLBACK_FUNCTION = (-15) # pointer from callback invalid
-JPEG_ERROR = (-16) # error from libjpeg
-NO_SEMAPHORE = (-17) # could not get semaphore
-BAD_WIDTH_OR_HEIGHT = (-18) # width or height invalid
-BAD_FRAME_COUNT = (-19) # frame count invalid
-BAD_FRAME_INDEX = (-20) # frame index invalid
-BAD_FRAME_BUFFER = (-21) # frame buffer pointer invalid
-BAD_FRAME_SIZE = (-22) # frame size invalid
-BAD_DATA_BUFFER = (-23) # data buffer pointer invalid
-BAD_DATA_SIZE = (-24) # data buffer size invalid
-BAD_TOTAL_NUMBER_OF_FRAMES = (-25) # total number of frames invalid
-BAD_IMAGE_FORMAT = (-26) # image format invalid
-BAD_BITS_PER_COMPONENT = (-27) # bits per component invalid
-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
+
+BAD_NO_BUFFERSPACE = -2 # no space for internal buffers
+BAD_PVBUFFER = -3 # param/val buffer doesn't make sense
+BAD_BUFFERLENGTH_NEG = -4 # negative buffer length
+BAD_BUFFERLENGTH_ODD = -5 # odd length parameter/value buffer
+BAD_PARAM = -6 # invalid parameter
+BAD_COMPRESSION_SCHEME = -7 # compression scheme parameter invalid
+BAD_COMPRESSOR_HANDLE = -8 # compression handle parameter invalid
+BAD_COMPRESSOR_HANDLE_POINTER = -9 # compression handle pointer invalid
+BAD_BUFFER_HANDLE = -10 # buffer handle invalid
+BAD_BUFFER_QUERY_SIZE = -11 # buffer query size too large
+JPEG_ERROR = -12 # error from libjpeg
+BAD_FRAME_SIZE = -13 # frame size invalid
+PARAM_OUT_OF_RANGE = -14 # parameter out of range
+ADDED_ALGORITHM_ERROR = -15 # added algorithm had a unique error
+BAD_ALGORITHM_TYPE = -16 # bad algorithm type
+BAD_ALGORITHM_NAME = -17 # bad algorithm name
+BAD_BUFFERING = -18 # bad buffering calls
+BUFFER_NOT_CREATED = -19 # buffer not created
+BAD_BUFFER_EXISTS = -20 # buffer already created
+BAD_INTERNAL_FORMAT = -21 # invalid internal format
+BAD_BUFFER_POINTER = -22 # invalid buffer pointer
+FRAME_BUFFER_SIZE_ZERO = -23 # frame buffer has zero size
+BAD_STREAM_HEADER = -24 # invalid stream header
+
+BAD_LICENSE = -25 # netls license not valid
+AWARE_ERROR = -26 # error from libawcmp
diff --git a/Lib/plat-irix5/CL.py b/Lib/plat-irix5/CL.py
index c64f088..41c56e0 100755
--- a/Lib/plat-irix5/CL.py
+++ b/Lib/plat-irix5/CL.py
@@ -1,17 +1,18 @@
#
# cl.h - Compression Library typedefs and prototypes
#
+# 01/07/92 Cleanup by Brian Knittel
# 02/18/92 Original Version by Brian Knittel
#
#
# originalFormat parameter values
#
-MAX_NUMBER_OF_ORIGINAL_FORMATS = (32)
+MAX_NUMBER_OF_ORIGINAL_FORMATS = 32
# Audio
-MONO = (0)
-STEREO_INTERLEAVED = (1)
+MONO = 0
+STEREO_INTERLEAVED = 1
# Video
# YUV is defined to be the same thing as YCrCb (luma and two chroma components).
@@ -21,152 +22,215 @@ STEREO_INTERLEAVED = (1)
# vertically in addition to horizontally, and is packed the same as
# 422 except that U & V are not valid on the second line.
#
-RGB = (0)
-RGBX = (1)
-RGBA = (2)
-RGB332 = (3)
+RGB = 0
+RGBX = 1
+RGBA = 2
+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)
-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
+#
+# Algorithm types
+#
+AUDIO = 0
+VIDEO = 1
-MAX_NUMBER_OF_AUDIO_ALGORITHMS = (32)
-MAX_NUMBER_OF_VIDEO_ALGORITHMS = (32)
+def AlgorithmNumber(scheme):
+ return scheme & 0x7fff
+def AlgorithmType(scheme):
+ return (scheme >> 15) & 1
+def Algorithm(type, n):
+ return n | ((type & 1) << 15)
#
# "compressionScheme" argument values
#
-UNCOMPRESSED_AUDIO = (0)
-G711_ULAW = (1)
-ULAW = (1)
-G711_ALAW = (2)
-ALAW = (2)
-G722 = (3)
+UNKNOWN_SCHEME = -1
+
+UNCOMPRESSED_AUDIO = Algorithm(AUDIO, 0)
+G711_ULAW = Algorithm(AUDIO, 1)
+ULAW = Algorithm(AUDIO, 1)
+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_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0)
-RLE = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 1)
-JPEG = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 2)
-MPEG_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 3)
-MVC1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 4)
-RTR = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5)
-RTR1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5)
+UNCOMPRESSED = Algorithm(VIDEO, 0)
+UNCOMPRESSED_VIDEO = Algorithm(VIDEO, 0)
+RLE = Algorithm(VIDEO, 1)
+JPEG = Algorithm(VIDEO, 2)
+MPEG_VIDEO = Algorithm(VIDEO, 3)
+MVC1 = Algorithm(VIDEO, 4)
+RTR = Algorithm(VIDEO, 5)
+RTR1 = Algorithm(VIDEO, 5)
#
# Parameters
#
-MAX_NUMBER_OF_PARAMS = (256)
+MAX_NUMBER_OF_PARAMS = 256
# Default Parameters
-IMAGE_WIDTH = (0)
-IMAGE_HEIGHT = (1)
-ORIGINAL_FORMAT = (2)
-INTERNAL_FORMAT = (3)
-COMPONENTS = (4)
-BITS_PER_COMPONENT = (5)
-FRAME_RATE = (6)
-COMPRESSION_RATIO = (7)
-EXACT_COMPRESSION_RATIO = (8)
-FRAME_BUFFER_SIZE = (9)
-COMPRESSED_BUFFER_SIZE = (10)
-BLOCK_SIZE = (11)
-PREROLL = (12)
-UNIQUE = (13)
-FRAME_TYPE = (14)
-OVERWRITE_MODE = (15)
-NUMBER_OF_PARAMS = (16)
+IMAGE_WIDTH = 0
+IMAGE_HEIGHT = 1
+ORIGINAL_FORMAT = 2
+INTERNAL_FORMAT = 3
+COMPONENTS = 4
+BITS_PER_COMPONENT = 5
+FRAME_RATE = 6
+COMPRESSION_RATIO = 7
+EXACT_COMPRESSION_RATIO = 8
+FRAME_BUFFER_SIZE = 9
+COMPRESSED_BUFFER_SIZE = 10
+BLOCK_SIZE = 11
+PREROLL = 12
+FRAME_TYPE = 13
+ALGORITHM_ID = 14
+ALGORITHM_VERSION = 15
+ORIENTATION = 16
+NUMBER_OF_FRAMES = 17
+SPEED = 18
+LAST_FRAME_INDEX = 19
+NUMBER_OF_PARAMS = 20
# JPEG Specific Parameters
-QUALITY_FACTOR = (NUMBER_OF_PARAMS + 0)
+QUALITY_FACTOR = NUMBER_OF_PARAMS + 0
# MPEG Specific Parameters
-SPEED = (NUMBER_OF_PARAMS + 0)
-ACTUAL_FRAME_INDEX = (NUMBER_OF_PARAMS + 1)
+END_OF_SEQUENCE = NUMBER_OF_PARAMS + 0
# RTR Specific Parameters
-QUALITY_LEVEL = (NUMBER_OF_PARAMS + 0)
-
-# #define clTypeIsFloat(v) (*(float *)&(v))
-# #define clTypeIsLong(v) (*(long *)&(v))
-#
-# RATIO_1 = (65536.0)
-# #define clFloatToRatio(f) ((long)((float)(f) * RATIO_1))
-# #define clRatioToFloat(f) ((float)(f) / RATIO_1)
-# RATIO_SHIFT = (16)
-# #define clRatioMul(m, r) ((m) * (r))
-# #define clRatioToLong(r) ((r) >> RATIO_SHIFT)
-# #define clLongToRatio(r) ((r) << RATIO_SHIFT)
+QUALITY_LEVEL = NUMBER_OF_PARAMS + 0
+ZOOM_X = NUMBER_OF_PARAMS + 1
+ZOOM_Y = NUMBER_OF_PARAMS + 2
#
# Parameter value types
#
-ENUM_VALUE = (0) # only certain constant values are valid
-RANGE_VALUE = (1) # any value in a given range is valid
-FLOATING_ENUM_VALUE = (2) # only certain constant floating point values are valid
-FLOATING_RANGE_VALUE = (3) # any value in a given floating point range is valid
-POINTER = (4) # any legal pointer is valid
+ENUM_VALUE = 0 # only certain constant values are valid
+RANGE_VALUE = 1 # any value in a given range is valid
+FLOATING_ENUM_VALUE = 2 # only certain constant floating point values are valid
+FLOATING_RANGE_VALUE = 3 # any value in a given floating point range is valid
#
-# Algorithm types
+# Algorithm Functionality
#
-AUDIO = (0)
-VIDEO = (1)
+DECOMPRESSOR = 1
+COMPRESSOR = 2
+CODEC = 3
#
-# Algorithm Functionality
+# Buffer types
#
-DECOMPRESSOR = (1)
-COMPRESSOR = (2)
-CODEC = (3)
+NONE = 0
+FRAME = 1
+DATA = 2
#
-# Buffer types
+# Frame types
+#
+NONE = 0
+KEYFRAME = 1
+INTRA = 1
+PREDICTED = 2
+BIDIRECTIONAL = 3
+
+#
+# Orientations
#
-NONE = (0)
-FRAME = (1)
-DATA = (2)
+TOP_DOWN = 0
+BOTTOM_UP = 1
+
+#
+# SGI Proprietaty Algorithm Header Start Code
+#
+HEADER_START_CODE = 0xc1C0DEC
#
# error codes
#
-BAD_NOT_IMPLEMENTED = ( -1) # not impimented yet
-BAD_NO_BUFFERSPACE = ( -2) # no space for internal buffers
-BAD_BUFFER_NULL = ( -3) # null buffer pointer
-BAD_COUNT_NEG = ( -4) # negative count
-BAD_PVBUFFER = ( -5) # param/val buffer doesn't make sense
-BAD_BUFFERLENGTH_NEG = ( -6) # negative buffer length
-BAD_BUFFERLENGTH_ODD = ( -7) # odd length parameter/value buffer
-BAD_PARAM = ( -8) # invalid parameter
-BAD_COMPRESSION_SCHEME = ( -9) # compression scheme parameter invalid
-BAD_COMPRESSOR_HANDLE = (-10) # compression handle parameter invalid
-BAD_COMPRESSOR_HANDLE_POINTER = (-11) # compression handle pointer invalid
-BAD_BUFFER_HANDLE = (-12) # callback function invalid
-BAD_ALGORITHM_INFO = (-13) # algorithm info invalid
-BAD_CL_BAD_WIDTH_OR_HEIGHT = (-14) # compressor width or height invalid
-BAD_POINTER_FROM_CALLBACK_FUNCTION = (-15) # pointer from callback invalid
-JPEG_ERROR = (-16) # error from libjpeg
-NO_SEMAPHORE = (-17) # could not get semaphore
-BAD_WIDTH_OR_HEIGHT = (-18) # width or height invalid
-BAD_FRAME_COUNT = (-19) # frame count invalid
-BAD_FRAME_INDEX = (-20) # frame index invalid
-BAD_FRAME_BUFFER = (-21) # frame buffer pointer invalid
-BAD_FRAME_SIZE = (-22) # frame size invalid
-BAD_DATA_BUFFER = (-23) # data buffer pointer invalid
-BAD_DATA_SIZE = (-24) # data buffer size invalid
-BAD_TOTAL_NUMBER_OF_FRAMES = (-25) # total number of frames invalid
-BAD_IMAGE_FORMAT = (-26) # image format invalid
-BAD_BITS_PER_COMPONENT = (-27) # bits per component invalid
-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
+
+BAD_NO_BUFFERSPACE = -2 # no space for internal buffers
+BAD_PVBUFFER = -3 # param/val buffer doesn't make sense
+BAD_BUFFERLENGTH_NEG = -4 # negative buffer length
+BAD_BUFFERLENGTH_ODD = -5 # odd length parameter/value buffer
+BAD_PARAM = -6 # invalid parameter
+BAD_COMPRESSION_SCHEME = -7 # compression scheme parameter invalid
+BAD_COMPRESSOR_HANDLE = -8 # compression handle parameter invalid
+BAD_COMPRESSOR_HANDLE_POINTER = -9 # compression handle pointer invalid
+BAD_BUFFER_HANDLE = -10 # buffer handle invalid
+BAD_BUFFER_QUERY_SIZE = -11 # buffer query size too large
+JPEG_ERROR = -12 # error from libjpeg
+BAD_FRAME_SIZE = -13 # frame size invalid
+PARAM_OUT_OF_RANGE = -14 # parameter out of range
+ADDED_ALGORITHM_ERROR = -15 # added algorithm had a unique error
+BAD_ALGORITHM_TYPE = -16 # bad algorithm type
+BAD_ALGORITHM_NAME = -17 # bad algorithm name
+BAD_BUFFERING = -18 # bad buffering calls
+BUFFER_NOT_CREATED = -19 # buffer not created
+BAD_BUFFER_EXISTS = -20 # buffer already created
+BAD_INTERNAL_FORMAT = -21 # invalid internal format
+BAD_BUFFER_POINTER = -22 # invalid buffer pointer
+FRAME_BUFFER_SIZE_ZERO = -23 # frame buffer has zero size
+BAD_STREAM_HEADER = -24 # invalid stream header
+
+BAD_LICENSE = -25 # netls license not valid
+AWARE_ERROR = -26 # error from libawcmp