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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
#
# 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
# Audio
MONO = 0
STEREO_INTERLEAVED = 1
# Video
# YUV is defined to be the same thing as YCrCb (luma and two chroma components).
# 422 is appended to YUV (or YCrCb) if the chroma is sub-sampled by 2
# horizontally, packed as U Y1 V Y2 (byte order).
# 422HC is appended to YUV (or YCrCb) if the chroma is sub-sampled by 2
# 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
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
#
# Algorithm types
#
AUDIO = 0
VIDEO = 1
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
#
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 = 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
# 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
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
# MPEG Specific Parameters
END_OF_SEQUENCE = NUMBER_OF_PARAMS + 0
# RTR Specific Parameters
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
#
# Algorithm Functionality
#
DECOMPRESSOR = 1
COMPRESSOR = 2
CODEC = 3
#
# Buffer types
#
NONE = 0
FRAME = 1
DATA = 2
#
# Frame types
#
NONE = 0
KEYFRAME = 1
INTRA = 1
PREDICTED = 2
BIDIRECTIONAL = 3
#
# Orientations
#
TOP_DOWN = 0
BOTTOM_UP = 1
#
# SGI Proprietary Algorithm Header Start Code
#
HEADER_START_CODE = 0xc1C0DEC
#
# error codes
#
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
|