Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4fff13f

Browse files
CL.py: adapted to newest version of CL library.
cdplayer.py: It is now also possible to give the CD's TOC as argument to init(). The TOC is a string consisting of 2 digits giving the number of tracks and then for each track the length of the track as number of minutes and number of seconds (2 digits each). cddb.py: Interface to the .cddb directory. Usage is the same as for cdplayer.py.
1 parent 23bafde commit 4fff13f

6 files changed

Lines changed: 530 additions & 132 deletions

File tree

Lib/irix5/CL.py

Lines changed: 154 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,172 @@
1-
# typedef enum CL_OriginalFormat
2-
RGB = 0
3-
RGBX = 1
4-
RGBA = 2
5-
YCrCb444 = 3
6-
YCrCb422 = 4
7-
YCrCb411 = 5
8-
RGB332 = 6
9-
COLORMAP8 = 7
10-
COLORMAP12 = 8
11-
GRAYSCALE = 9
12-
MONO = 10
13-
STEREO_INTERLEAVED = 11
14-
QUAD_INTERLEAVED = 12
15-
SURROUND_SOUND = 13
16-
17-
MAX_NUMBER_OF_AUDIO_ALGORITHMS = 32
18-
MAX_NUMBER_OF_VIDEO_ALGORITHMS = 32
19-
20-
# typedef enum CL_CompressionScheme
21-
UNCOMPRESSED = 0
22-
G711_ULAW = 1
23-
G711_ALAW = 2
24-
G722 = 3
25-
UNCOMPRESSED_VIDEO = MAX_NUMBER_OF_AUDIO_ALGORITHMS
26-
RLE = UNCOMPRESSED_VIDEO + 1
27-
JPEG = RLE + 1
28-
MPEG_VIDEO = JPEG + 1
29-
MVC1 = MPEG_VIDEO + 1
1+
#
2+
# cl.h - Compression Library typedefs and prototypes
3+
#
4+
# 02/18/92 Original Version by Brian Knittel
5+
#
6+
7+
#
8+
# originalFormat parameter values
9+
#
10+
MAX_NUMBER_OF_ORIGINAL_FORMATS = (32)
3011

12+
# Audio
13+
MONO = (0)
14+
STEREO_INTERLEAVED = (1)
15+
16+
# Video
17+
# YUV is defined to be the same thing as YCrCb (luma and two chroma components).
18+
# 422 is appended to YUV (or YCrCb) if the chroma is sub-sampled by 2
19+
# horizontally, packed as U Y1 V Y2 (byte order).
20+
# 422HC is appended to YUV (or YCrCb) if the chroma is sub-sampled by 2
21+
# vertically in addition to horizontally, and is packed the same as
22+
# 422 except that U & V are not valid on the second line.
23+
#
24+
RGB = (0)
25+
RGBX = (1)
26+
RGBA = (2)
27+
RGB332 = (3)
28+
29+
GRAYSCALE = (4)
30+
Y = (4)
31+
YUV = (5)
32+
YCbCr = (5)
33+
YUV422 = (6) # 4:2:2 sampling
34+
YCbCr422 = (6) # 4:2:2 sampling
35+
YUV422HC = (7) # 4:1:1 sampling
36+
YCbCr422HC = (7) # 4:1:1 sampling
37+
38+
MAX_NUMBER_OF_AUDIO_ALGORITHMS = (32)
39+
MAX_NUMBER_OF_VIDEO_ALGORITHMS = (32)
40+
41+
#
42+
# "compressionScheme" argument values
43+
#
44+
UNCOMPRESSED_AUDIO = (0)
45+
G711_ULAW = (1)
46+
ULAW = (1)
47+
G711_ALAW = (2)
48+
ALAW = (2)
49+
G722 = (3)
50+
51+
UNCOMPRESSED = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0)
52+
UNCOMPRESSED_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 0)
53+
RLE = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 1)
54+
JPEG = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 2)
55+
MPEG_VIDEO = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 3)
56+
MVC1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 4)
57+
RTR = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5)
58+
RTR1 = (MAX_NUMBER_OF_AUDIO_ALGORITHMS + 5)
3159

3260
#
3361
# Parameters
3462
#
35-
# typedef enum CL_Parameters
36-
SPEED = 0
37-
ACTUAL_FRAME_INDEX = 1
38-
COMPRESSION_FORMAT = 2
39-
QUALITY_FACTOR = 3
40-
NUMBER_OF_PARAMS = 4
63+
MAX_NUMBER_OF_PARAMS = (256)
64+
# Default Parameters
65+
IMAGE_WIDTH = (0)
66+
IMAGE_HEIGHT = (1)
67+
ORIGINAL_FORMAT = (2)
68+
INTERNAL_FORMAT = (3)
69+
COMPONENTS = (4)
70+
BITS_PER_COMPONENT = (5)
71+
FRAME_RATE = (6)
72+
COMPRESSION_RATIO = (7)
73+
EXACT_COMPRESSION_RATIO = (8)
74+
FRAME_BUFFER_SIZE = (9)
75+
COMPRESSED_BUFFER_SIZE = (10)
76+
BLOCK_SIZE = (11)
77+
PREROLL = (12)
78+
UNIQUE = (13)
79+
FRAME_TYPE = (14)
80+
OVERWRITE_MODE = (15)
81+
NUMBER_OF_PARAMS = (16)
82+
83+
# JPEG Specific Parameters
84+
QUALITY_FACTOR = (NUMBER_OF_PARAMS + 0)
4185

42-
MAX_NUMBER_OF_PARAMS = 32
86+
# MPEG Specific Parameters
87+
SPEED = (NUMBER_OF_PARAMS + 0)
88+
ACTUAL_FRAME_INDEX = (NUMBER_OF_PARAMS + 1)
4389

90+
# RTR Specific Parameters
91+
QUALITY_LEVEL = (NUMBER_OF_PARAMS + 0)
92+
93+
# #define clTypeIsFloat(v) (*(float *)&(v))
94+
# #define clTypeIsLong(v) (*(long *)&(v))
95+
#
96+
# RATIO_1 = (65536.0)
97+
# #define clFloatToRatio(f) ((long)((float)(f) * RATIO_1))
98+
# #define clRatioToFloat(f) ((float)(f) / RATIO_1)
99+
# RATIO_SHIFT = (16)
100+
# #define clRatioMul(m, r) ((m) * (r))
101+
# #define clRatioToLong(r) ((r) >> RATIO_SHIFT)
102+
# #define clLongToRatio(r) ((r) << RATIO_SHIFT)
44103

45104
#
46105
# Parameter value types
47106
#
48-
# typedef enum CL_ParameterTypes
49-
ENUM_VALUE = 0 # only certain constant values are valid
50-
RANGE_VALUE = 1 # any value in a given range is valid
51-
POINTER = 2 # any legal pointer is valid
107+
ENUM_VALUE = (0) # only certain constant values are valid
108+
RANGE_VALUE = (1) # any value in a given range is valid
109+
FLOATING_ENUM_VALUE = (2) # only certain constant floating point values are valid
110+
FLOATING_RANGE_VALUE = (3) # any value in a given floating point range is valid
111+
POINTER = (4) # any legal pointer is valid
52112

53-
# typedef enum AlgorithmType
54-
AUDIO = 0
55-
VIDEO = 1
113+
#
114+
# Algorithm types
115+
#
116+
AUDIO = (0)
117+
VIDEO = (1)
56118

57-
# typedef enum AlgorithmFunctionality
58-
DECOMPRESSOR = 1
59-
COMPRESSOR = 2
60-
CODEC = 3
119+
#
120+
# Algorithm Functionality
121+
#
122+
DECOMPRESSOR = (1)
123+
COMPRESSOR = (2)
124+
CODEC = (3)
61125

126+
#
127+
# Buffer types
128+
#
129+
NONE = (0)
130+
FRAME = (1)
131+
DATA = (2)
62132

63133
#
64134
# error codes
65135
#
66-
BAD_NOT_IMPLEMENTED = 0 # not impimented yet
67-
BAD_NO_BUFFERSPACE = 1 # no space for internal buffers
68-
BAD_QSIZE = 2 # attempt to set an invalid queue size
69-
BAD_BUFFER_NULL = 3 # null buffer pointer
70-
BAD_COUNT_NEG = 4 # negative count
71-
BAD_PVBUFFER = 5 # param/val buffer doesn't make sense
72-
BAD_BUFFERLENGTH_NEG = 6 # negative buffer length
73-
BAD_BUFFERLENGTH_ODD = 7 # odd length parameter/value buffer
74-
BAD_PARAM = 8 # invalid parameter
75-
BAD_COMPRESSION_SCHEME = 9 # compression scheme parameter invalid
76-
BAD_COMPRESSOR_HANDLE = 10 # compression handle parameter invalid
77-
BAD_COMPRESSOR_HANDLE_POINTER = 11 # compression handle pointer invalid
78-
BAD_CALLBACK_FUNCTION = 12 # callback function invalid
79-
BAD_COMPRESSION_FORMAT_POINTER = 13 # compression format parameter invalid
80-
BAD_POINTER_FROM_CALLBACK_FUNCTION = 14 # pointer from callback invalid
81-
JPEG_ERROR = 15 # error from libjpeg
82-
NO_SEMAPHORE = 16 # could not get semaphore
83-
BAD_WIDTH_OR_HEIGHT = 17 # width or height invalid
84-
BAD_FRAME_COUNT = 18 # frame count invalid
136+
BAD_NOT_IMPLEMENTED = ( -1) # not impimented yet
137+
BAD_NO_BUFFERSPACE = ( -2) # no space for internal buffers
138+
BAD_BUFFER_NULL = ( -3) # null buffer pointer
139+
BAD_COUNT_NEG = ( -4) # negative count
140+
BAD_PVBUFFER = ( -5) # param/val buffer doesn't make sense
141+
BAD_BUFFERLENGTH_NEG = ( -6) # negative buffer length
142+
BAD_BUFFERLENGTH_ODD = ( -7) # odd length parameter/value buffer
143+
BAD_PARAM = ( -8) # invalid parameter
144+
BAD_COMPRESSION_SCHEME = ( -9) # compression scheme parameter invalid
145+
BAD_COMPRESSOR_HANDLE = (-10) # compression handle parameter invalid
146+
BAD_COMPRESSOR_HANDLE_POINTER = (-11) # compression handle pointer invalid
147+
BAD_BUFFER_HANDLE = (-12) # callback function invalid
148+
BAD_ALGORITHM_INFO = (-13) # algorithm info invalid
149+
BAD_CL_BAD_WIDTH_OR_HEIGHT = (-14) # compressor width or height invalid
150+
BAD_POINTER_FROM_CALLBACK_FUNCTION = (-15) # pointer from callback invalid
151+
JPEG_ERROR = (-16) # error from libjpeg
152+
NO_SEMAPHORE = (-17) # could not get semaphore
153+
BAD_WIDTH_OR_HEIGHT = (-18) # width or height invalid
154+
BAD_FRAME_COUNT = (-19) # frame count invalid
155+
BAD_FRAME_INDEX = (-20) # frame index invalid
156+
BAD_FRAME_BUFFER = (-21) # frame buffer pointer invalid
157+
BAD_FRAME_SIZE = (-22) # frame size invalid
158+
BAD_DATA_BUFFER = (-23) # data buffer pointer invalid
159+
BAD_DATA_SIZE = (-24) # data buffer size invalid
160+
BAD_TOTAL_NUMBER_OF_FRAMES = (-25) # total number of frames invalid
161+
BAD_IMAGE_FORMAT = (-26) # image format invalid
162+
BAD_BITS_PER_COMPONENT = (-27) # bits per component invalid
163+
BAD_FRAME_RATE = (-28) # frame rate invalid
164+
BAD_INSUFFICIENT_DATA_FROM_CALLBACK_FUNCTION = (-29) # insufficient data from callback invalid
165+
PARAM_OUT_OF_RANGE = (-30) # parameter out of range
166+
ADDED_ALGORITHM_ERROR = (-31) # added algorithm had a unique error
167+
BAD_ALGORITHM_TYPE = (-32) # bad algorithm type
168+
BAD_ALGORITHM_NAME = (-33) # bad algorithm name
169+
BAD_FRAME_INDEXING = (-34) # bad frame indexing
170+
BAD_BUFFERING = (-35) # bad buffering calls
171+
BUFFER_NOT_CREATED = (-36) # buffer not created
172+
BAD_BUFFER_EXISTS = (-37) # buffer already created

Lib/irix5/cddb.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# This file implements a class which forms an interface to the .cddb
2+
# directory that is maintained by SGI's cdman program.
3+
#
4+
# Usage is as follows:
5+
#
6+
# import readcd
7+
# r = readcd.Readcd().init()
8+
# c = Cddb().init(r.gettrackinfo())
9+
#
10+
# Now you can use c.artist, c.title and c.track[trackno] (where trackno
11+
# starts at 1). When the CD is not recognized, all values will be the empty
12+
# string.
13+
# It is also possible to set the above mentioned variables to new values.
14+
# You can then use c.write() to write out the changed values to the
15+
# .cdplayerrc file.
16+
17+
import string
18+
19+
_cddbrc = '.cddb/'
20+
_DB_ID_NTRACKS = 5
21+
_dbid_map = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ@_=+abcdefghijklmnopqrstuvwxyz'
22+
def _dbid(v):
23+
if v >= len(_dbid_map):
24+
return string.zfill(v, 2)
25+
else:
26+
return _dbid_map[v]
27+
28+
class Cddb():
29+
def init(self, tracklist):
30+
self.artist = ''
31+
self.title = ''
32+
if type(tracklist) == type(''):
33+
t = []
34+
for i in range(2, len(tracklist), 4):
35+
t.append((None, \
36+
(string.atoi(tracklist[i:i+2]), \
37+
string.atoi(tracklist[i+2:i+4]))))
38+
tracklist = t
39+
ntracks = len(tracklist)
40+
self.track = [None] + [''] * ntracks
41+
self.id = _dbid((ntracks >> 4) & 0xF) + _dbid(ntracks & 0xF)
42+
if ntracks <= _DB_ID_NTRACKS:
43+
nidtracks = ntracks
44+
else:
45+
nidtracks = _DB_ID_NTRACKS - 1
46+
min = 0
47+
sec = 0
48+
for track in tracklist:
49+
start, length = track
50+
min = min + length[0]
51+
sec = sec + length[1]
52+
min = min + sec / 60
53+
sec = sec % 60
54+
self.id = self.id + _dbid(min) + _dbid(sec)
55+
for i in range(nidtracks):
56+
start, length = tracklist[i]
57+
self.id = self.id + _dbid(length[0]) + _dbid(length[1])
58+
self.toc = string.zfill(ntracks, 2)
59+
for track in tracklist:
60+
start, length = track
61+
self.toc = self.toc + string.zfill(length[0], 2) + \
62+
string.zfill(length[1], 2)
63+
try:
64+
import posix
65+
file = posix.environ['HOME'] + '/' + _cddbrc + self.id + '.rdb'
66+
f = open(file, 'r')
67+
except IOError:
68+
return self
69+
import regex
70+
reg = regex.compile('^\\([^.]*\\)\\.\\([^:]*\\):\t\\(.*\\)')
71+
while 1:
72+
line = f.readline()
73+
if not line:
74+
break
75+
if reg.match(line) == -1:
76+
print 'syntax error in ' + file
77+
continue
78+
name1 = line[reg.regs[1][0]:reg.regs[1][1]]
79+
name2 = line[reg.regs[2][0]:reg.regs[2][1]]
80+
value = line[reg.regs[3][0]:reg.regs[3][1]]
81+
if name1 == 'album':
82+
if name2 == 'artist':
83+
self.artist = value
84+
elif name2 == 'title':
85+
self.title = value
86+
elif name2 == 'toc':
87+
if self.toc != value:
88+
print 'toc\'s don\'t match'
89+
elif name1[:5] == 'track':
90+
trackno = string.atoi(name1[5:])
91+
self.track[trackno] = value
92+
f.close()
93+
return self
94+
95+
def write(self):
96+
import posix
97+
file = posix.environ['HOME'] + '/' + _cddbrc + self.id + '.rdb'
98+
f = open(file, 'w')
99+
f.write('album.title:\t' + self.title + '\n')
100+
f.write('album.artist:\t' + self.artist + '\n')
101+
f.write('album.toc:\t' + self.toc + '\n')
102+
for i in range(1, len(self.track)):
103+
f.write('track' + `i` + '.title:\t' + self.track[i] + '\n')
104+
f.close()

Lib/irix5/cdplayer.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ def init(self, tracklist):
2121
import string
2222
self.artist = ''
2323
self.title = ''
24+
if type(tracklist) == type(''):
25+
t = []
26+
for i in range(2, len(tracklist), 4):
27+
t.append((None, \
28+
(string.atoi(tracklist[i:i+2]), \
29+
string.atoi(tracklist[i+2:i+4]))))
30+
tracklist = t
2431
self.track = [None] + [''] * len(tracklist)
2532
self.id = 'd' + string.zfill(len(tracklist), 2)
2633
for track in tracklist:

0 commit comments

Comments
 (0)