ariblib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,325 @@
1
+ #! ruby
2
+ # -*- encoding: utf-8 -*-
3
+
4
+ module Ariblib
5
+ class String
6
+ DesignationGSET={
7
+ 0x42 => [:set_code_group, [:put_kanji ,true ].freeze].freeze,#:CODE_KANJI
8
+ 0x4A => [:set_code_group, [:put_alphanumeric ,false].freeze].freeze,#:CODE_ALPHANUMERIC
9
+ 0x30 => [:set_code_group, [:put_hiragana ,false].freeze].freeze,#:CODE_HIRAGANA
10
+ 0x31 => [:set_code_group, [:put_katakana ,false].freeze].freeze,#:CODE_KATAKANA
11
+ 0x32 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_A
12
+ 0x33 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_B
13
+ 0x34 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_C
14
+ 0x35 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_D
15
+ 0x36 => [:set_code_group, [:put_alphanumeric ,false].freeze].freeze,#:CODE_PROP_ALPHANUMERIC
16
+ 0x37 => [:set_code_group, [:put_hiragana ,false].freeze].freeze,#:CODE_PROP_HIRAGANA
17
+ 0x38 => [:set_code_group, [:put_katakana ,false].freeze].freeze,#:CODE_PROP_KATAKANA
18
+ 0x49 => [:set_code_group, [:put_jis_katakana ,false].freeze].freeze,#:CODE_JIS_X0201_KATAKANA
19
+ 0x39 => [:set_code_group, [:put_kanji ,true ].freeze].freeze,#:CODE_JIS_KANJI_PLANE_1
20
+ 0x3A => [:set_code_group, [:put_kanji ,true ].freeze].freeze,#:CODE_JIS_KANJI_PLANE_2
21
+ 0x3B => [:set_code_group, [:put_symbols ,true ].freeze].freeze,#:CODE_ADDITIONAL_SYMBOLS
22
+ }.freeze
23
+ DesignationDRCS={
24
+ 0x40 => [:set_code_group, [:put_ignore,true ].freeze].freeze,# DRCS-0
25
+ 0x41 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-1
26
+ 0x42 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-2
27
+ 0x43 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-3
28
+ 0x44 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-4
29
+ 0x45 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-5
30
+ 0x46 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-6
31
+ 0x47 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-7
32
+ 0x48 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-8
33
+ 0x49 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-9
34
+ 0x4A => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-10
35
+ 0x4B => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-11
36
+ 0x4C => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-12
37
+ 0x4D => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-13
38
+ 0x4E => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-14
39
+ 0x4F => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-15
40
+ 0x70 => [:set_code_group, [:put_ignore,false].freeze].freeze,# Macro
41
+ }.freeze
42
+
43
+ Esc_4th=DesignationDRCS.freeze
44
+ Esc_3rd_drcs=DesignationDRCS.merge({0x20 => [:esc_seq,Esc_4th,nil].freeze}).freeze
45
+ Esc_3rd_gset=DesignationGSET.merge({0x20 => [:esc_seq,Esc_4th,nil].freeze}).freeze
46
+ Esc_2nd={
47
+ 0x20 => [:esc_seq,Esc_3rd_drcs ,nil].freeze,
48
+ 0x28 => [:esc_seq,Esc_3rd_drcs , 0].freeze,
49
+ 0x29 => [:esc_seq,Esc_3rd_gset , 1].freeze,
50
+ 0x2A => [:esc_seq,Esc_3rd_gset , 2].freeze,
51
+ 0x2B => [:esc_seq,Esc_3rd_gset , 3].freeze,
52
+ }.merge(DesignationGSET).freeze
53
+ Esc_1st={
54
+ # Invocation of code elements
55
+ 0x6E => [:set_locking_gl,2].freeze,# LS2
56
+ 0x6F => [:set_locking_gl,3].freeze,# LS3
57
+ 0x7E => [:set_locking_gr,1].freeze,# LS1R
58
+ 0x7D => [:set_locking_gr,2].freeze,# LS2R
59
+ 0x7C => [:set_locking_gr,3].freeze,# LS3R
60
+ # Designation of graphic sets
61
+ 0x24 => [:esc_seq,Esc_2nd,0].freeze,
62
+ 0x28 => [:esc_seq,Esc_2nd,0].freeze,
63
+ 0x29 => [:esc_seq,Esc_2nd,1].freeze,
64
+ 0x2A => [:esc_seq,Esc_2nd,2].freeze,
65
+ 0x2B => [:esc_seq,Esc_2nd,3].freeze,
66
+ }.freeze
67
+ Esc_Error=[:escape_error].freeze
68
+
69
+ Ctrl_code={
70
+ 0x0F => [:set_locking_gl , 0 ].freeze,# LS0
71
+ 0x0E => [:set_locking_gl , 1 ].freeze,# LS1
72
+ 0x19 => [:set_single_gl , 2 ].freeze,# SS2
73
+ 0x1D => [:set_single_gl , 3 ].freeze,# SS3
74
+ 0x1B => [:esc_seq ,Esc_1st,nil].freeze, # ESC
75
+ #0x89 => [:set_em_str_size , :STR_MEDIUM ].freeze,# MSZ
76
+ #0x8A => [:set_em_str_size , :STR_NORMAL ].freeze,# NSZ
77
+ 0x20 => [:put_alphanumeric_narrow, 0x20 ].freeze,# space
78
+ 0xA0 => [:put_alphanumeric_narrow, 0x20 ].freeze,# space(ARIB)
79
+ 0x09 => [:put_alphanumeric_narrow, 0x20 ].freeze,# HT
80
+ 0x0D => [:put_alphanumeric_narrow, 0x0d ].freeze,
81
+ 0x0A => [:put_alphanumeric_narrow, 0x0d ].freeze,
82
+ }.freeze
83
+
84
+ def set_em_str_size(val)
85
+ @m_emStrSize = val
86
+ end
87
+ def set_single_gl(val)
88
+ @m_pSingleGL = val
89
+ end
90
+ def set_locking_gl(val)
91
+ @m_pLockingGL = val
92
+ end
93
+ def set_locking_gr(val)
94
+ @m_pLockingGR = val
95
+ end
96
+ def set_code_group(val)
97
+ @m_CodeG[@byIndexG]=val
98
+ end
99
+ def escape_error
100
+ end
101
+ def esc_seq(hash , byIndexG)
102
+ @byIndexG=byIndexG if byIndexG
103
+ args=hash.fetch(@bs.getc,Esc_Error)
104
+ send *args if @bs.pos <= @len
105
+ end
106
+
107
+ Code_kanji = [0x1B, 0x24, 0x40,nil,nil,0x1B,0x28,0x4a]
108
+ Code_alphanumeric = (
109
+ "                "+
110
+ "                "+
111
+ " !”#$%&’()*+,-./"+
112
+ "0123456789:;<=>?"+
113
+ "@ABCDEFGHIJKLMNO"+
114
+ "PQRSTUVWXYZ[¥]^_"+
115
+ " abcdefghijklmno"+
116
+ "pqrstuvwxyz{|} ̄ ").freeze
117
+ Code_hiragana = (
118
+ "                "+
119
+ "                "+
120
+ " ぁあぃいぅうぇえぉおかがきぎく"+
121
+ "ぐけげこごさざしじすずせぜそぞた"+
122
+ "だちぢっつづてでとどなにぬねのは"+
123
+ "ばぱひびぴふぶぷへべぺほぼぽまみ"+
124
+ "むめもゃやゅゆょよらりるれろゎわ"+
125
+ "ゐゑをん   ゝゞー。「」、・ ").freeze
126
+ Code_katakana = (
127
+ "                "+
128
+ "                "+
129
+ " ァアィイゥウェエォオカガキギク"+
130
+ "グケゲコゴサザシジスズセゼソゾタ"+
131
+ "ダチヂッツヅテデトドナニヌネノハ"+
132
+ "バパヒビピフブプヘベペホボポマミ"+
133
+ "ムメモャヤュユョヨラリルレロヮワ"+
134
+ "ヰヱヲンヴヵヶヽヾー。「」、・ ").freeze
135
+ Code_jis_katakana = (
136
+ "                "+
137
+ "                "+
138
+ " 。「」、・ヲァィゥェォャュョッ"+
139
+ "ーアイウエオカキクケコサシスセソ"+
140
+ "タチツテトナニヌネノハヒフヘホマ"+
141
+ "ミムメモヤユヨラリルレロワン゛゜"+
142
+ "                "+
143
+ "                ").freeze
144
+ Code_gaiji = {
145
+ 0x7A => [ nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,#0x21-0x2f
146
+ nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,#0x30-0x3f
147
+ nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,#0x40-0x4f
148
+ "【HV】","【SD】","【P】","【W】","【MV】","【手】","【字】","【双】",
149
+ "【デ】","【S】","【二】","【多】","【解】","【SS】","【B】","【N】",
150
+ "■" ,"●" ,"【天】","【交】","【映】","【無】","【料】","【年齢制限】",
151
+ "【前】","【後】","【再】","【新】","【初】","【終】","【生】","【販】",
152
+ "【声】","【吹】","【PPV】","(秘)","ほか",],
153
+ 0x7C=>[ "→" ,"←" ,"↑" ,"↓" ,"●" ,"○" ,"年" ,
154
+ "月" ,"日" ,"円" ,"㎡" ,"㎥" ,"㎝" ,"㎠" ,"㎤" ,
155
+ "0." ,"1." ,"2." ,"3." ,"4." ,"5." ,"6." ,"7." ,
156
+ "8." ,"9." ,"氏" ,"副" ,"元" ,"故" ,"前" ,"[新]",
157
+ "0," ,"1," ,"2," ,"3," ,"4," ,"5," ,"6," ,"7," ,
158
+ "8," ,"9," ,"(社)","(財)","(有)","(株)","(代)","(問)",
159
+ "▶" ,"◀" ,"〖" ,"〗" ,"⟐" ,"^2" ,"^3" ,"(CD)",
160
+ "(vn)","(ob)","(cb)","(ce" ,"mb)" ,"(hp)","(br)","(p)" ,
161
+ "(s)" ,"(ms)","(t)" ,"(bs)","(b)" ,"(tb)","(tp)","(ds)",
162
+ "(ag)","(eg)","(vo)","(fl)","(ke" ,"y)" ,"(sa" ,"x)" ,
163
+ "(sy" ,"n)" ,"(or" ,"g)" ,"(pe" ,"r)" ,"(R)" ,"(C)" ,
164
+ "(箏)","DJ" ,"[演]","Fax",],
165
+ 0x7D=>[ "㈪" ,"㈫" ,"㈬" ,
166
+ "㈭" ,"㈮" ,"㈯" ,"㈰" ,
167
+ "㈷" ,"㍾" ,"㍽" ,"㍼" ,
168
+ "㍻" ,"№" ,"℡" ,"〶" ,
169
+ "○" ,"〔本〕" ,"〔三〕" ,"〔二〕" ,
170
+ "〔安〕" ,"〔点〕" ,"〔打〕" ,"〔盗〕" ,
171
+ "〔勝〕" ,"〔敗〕" ,"〔S〕" ,"[投]" ,
172
+ "[捕]" ,"[一]" ,"[二]" ,"[三]" ,
173
+ "[遊]" ,"[左]" ,"[中]" ,"[右]" ,
174
+ "[指]" ,"[走]" ,"[打]" ,"㍑" ,
175
+ "㎏" ,"㎐" ,"ha" ,"㎞" ,
176
+ "㎢" ,"㍱" ,"・" ,"・" ,
177
+ "1/2" ,"0/3" ,"1/3" ,"2/3" ,
178
+ "1/4" ,"3/4" ,"1/5" ,"2/5" ,
179
+ "3/5" ,"4/5" ,"1/6" ,"5/6" ,
180
+ "1/7" ,"1/8" ,"1/9" ,"1/10" ,
181
+ "☀" ,"☁" ,"☂" ,"☃" ,
182
+ "☖" ,"☗" ,"▽" ,"▼" ,
183
+ "♦" ,"♥" ,"♣" ,"♠" ,
184
+ "⌺" ,"⦿" ,"‼" ,"⁉" ,
185
+ "(曇/晴)","☔" ,"(雨)" ,"(雪)" ,
186
+ "(大雪)" ,"⚡" ,"(雷雨)" ," " ,
187
+ "・" ,"・" ,"♬" "☎" ,],
188
+ 0x7E=>[ "Ⅰ" ,"Ⅱ" ,"Ⅲ" ,"Ⅳ" ,"Ⅴ" ,"Ⅵ" ,"Ⅶ" ,
189
+ "Ⅷ" ,"Ⅸ" ,"Ⅹ" ,"Ⅺ" ,"Ⅻ" ,"⑰" ,"⑱" ,"⑲" ,
190
+ "⑳" ,"⑴" ,"⑵" ,"⑶" ,"⑷" ,"⑸" ,"⑹" ,"⑺" ,
191
+ "⑻" ,"⑼" ,"⑽" ,"⑾" ,"⑿" ,"㉑" ,"㉒" ,"㉓" ,
192
+ "㉔" ,"(A)","(B)","(C)","(D)","(E)","(F)","(G)",
193
+ "(H)","(I)","(J)","(K)","(L)","(M)","(N)","(O)",
194
+ "(P)","(Q)","(R)","(S)","(T)","(U)","(V)","(W)",
195
+ "(X)","(Y)","(Z)","㉕" ,"㉖" ,"㉗" ,"㉘" ,"㉙" ,
196
+ "㉚" ,"①" ,"②" ,"③" ,"④" ,"⑤" ,"⑥" ,"⑦" ,
197
+ "⑧" ,"⑨" ,"⑩" ,"⑪" ,"⑫" ,"⑬" ,"⑭" ,"⑮" ,
198
+ "⑯" ,"❶" ,"❷" ,"❸" ,"❹" ,"❺" ,"❻" ,"❼" ,
199
+ "❽" ,"❾" ,"❿" ,"⓫" ,"⓬" ,"㉛" ,],
200
+ 0x75=>[ "㐂","亭","份","仿","侚","俉","傜",
201
+ "儞","冼","㔟","匇","卡","卬","詹","吉",
202
+ "呍","咖","咜","咩","唎","啊","噲","囤",
203
+ "圳","圴","塚","墀","姤","娣","婕","寬",
204
+ "﨑","㟢","庬","弴","彅","德","怗","恵",
205
+ "愰","昤","曈","曙","曺","曻","桒","・",
206
+ "椑","椻","橅","檑","櫛","・","・","・",
207
+ "毱","泠","洮","海","涿","淊","淸","渚",
208
+ "潞","濹","灤","・","・","煇","燁","爀",
209
+ "玟","・","珉","珖","琛","琡","琢","琦",
210
+ "琪","琬","琹","瑋","㻚","畵","疁","睲",
211
+ "䂓","磈","磠","祇","禮","・","・",],
212
+ 0x76=>[ "・","秚","稞","筿","簱","䉤","綋",
213
+ "羡","脘","脺","・","芮","葛","蓜","蓬",
214
+ "蕙","藎","蝕","蟬","蠋","裵","角","諶",
215
+ "跎","辻","迶","郝","鄧","鄭","醲","鈳",
216
+ "銈","錡","鍈","閒","雞","餃","饀","髙",
217
+ "鯖","鷗","麴","麵",],
218
+ }
219
+ Code_gaiji.default=[]
220
+ Code_gaiji.freeze
221
+
222
+ def put_kanji(char1,char2)
223
+ Code_kanji[3]=char1
224
+ Code_kanji[4]=char2
225
+ @dst+=Code_kanji.pack('C*').force_encoding('ISO-2022-JP').encode('utf-8')
226
+ #rescue => e
227
+ # puts e.message
228
+ # p (@bs.pos-@debug_pos)/8
229
+ # @bs.pos=@debug_pos
230
+ # p @bs.str(@debug_len).unpack('C*')
231
+ # puts @dst
232
+ # exit
233
+ end
234
+ def put_alphanumeric(char1,char2)
235
+ @dst+=char1.chr
236
+ end
237
+ def put_alphanumeric_narrow(char1,char2)
238
+ @dst+=char1.chr
239
+ end
240
+ def put_alphanumeric_wide(char1,char2)
241
+ @dst+=Code_alphanumeric[char1]
242
+ end
243
+ def put_hiragana(char1,char2)
244
+ @dst+=Code_hiragana[char1]
245
+ end
246
+ def put_katakana(char1,char2)
247
+ @dst+=Code_katakana[char1]
248
+ end
249
+ def put_jis_katakana(char1,char2)
250
+ @dst+=Code_jis_katakana[char1]
251
+ end
252
+ def put_symbols(char1,char2)
253
+ return if char2 < 0x21
254
+ @dst+=Code_gaiji[char1][char2-0x21]||''
255
+ end
256
+ def put_ignore(char1,char2)
257
+ end
258
+
259
+ def initialize(bs,len)
260
+ @len=bs.pos+len*8
261
+ @bs=bs
262
+ @dst=''.force_encoding('utf-8')
263
+
264
+ # 状態初期設定
265
+ @m_CodeG =[ DesignationGSET[0x42][1],
266
+ DesignationGSET[0x4a][1],
267
+ DesignationGSET[0x30][1],
268
+ DesignationGSET[0x31][1]]
269
+ @m_pLockingGL = 0
270
+ @m_pLockingGR = 2
271
+ @m_pSingleGL = nil
272
+
273
+ #@str=bs.str(len).unpack('C*')
274
+ #bs.pos-=len*8
275
+ #@debug_pos=bs.pos
276
+ #@debug_len=len
277
+
278
+ conv
279
+ end
280
+
281
+ def to_utf8
282
+ @dst
283
+ end
284
+
285
+ def conv
286
+ #@m_emStrSize = :STR_NORMAL
287
+ while(@bs.pos < @len)
288
+ dwSrcData = @bs.getc
289
+
290
+ if((dwSrcData >= 0x21) && (dwSrcData <= 0x7E)) #GL領域
291
+ curCodeSet = @m_CodeG[@m_pSingleGL || @m_pLockingGL];
292
+ @m_pSingleGL=nil
293
+ char2 = (curCodeSet[1])? @bs.getc : nil #// 2バイトコード
294
+ send( curCodeSet[0],dwSrcData,char2) if @bs.pos <= @len
295
+
296
+ elsif((dwSrcData >= 0xA1) && (dwSrcData <= 0xFE)) #// GR領域
297
+ curCodeSet = @m_CodeG[@m_pLockingGR];
298
+ char2 = (curCodeSet[1])? @bs.getc : nil #// 2バイトコード
299
+ send( curCodeSet[0],dwSrcData & 0x7f,char2 & 0x7f) if @bs.pos <= @len
300
+
301
+ else
302
+ #// 制御コード
303
+ case(dwSrcData)
304
+ when 0x0F then @m_pLockingGL = 0 # LS0
305
+ when 0x0E then @m_pLockingGL = 1 # LS1
306
+ when 0x19 then @m_pSingleGL = 2 # SS2
307
+ when 0x1D then @m_pSingleGL = 3 # SS3
308
+ when 0x1B then esc_seq(Esc_1st,nil) # ESC
309
+ #when 0x89 then @m_emStrSize = :STR_MEDIUM # MSZ
310
+ #when 0x8A then @m_emStrSize = :STR_NORMAL # NSZ
311
+ when 0x20 then @dst+=' ' # space
312
+ when 0xA0 then @dst+=' ' # space(ARIB)
313
+ when 0x09 then @dst+=' ' # HT
314
+ when 0x0D then @dst+="\r"
315
+ when 0x0A then @dst+="\r"
316
+ else
317
+ end
318
+ end
319
+ end
320
+ @dst
321
+ end
322
+ end
323
+ end
324
+
325
+ __END__
@@ -0,0 +1,283 @@
1
+ #! ruby
2
+ # -*- encoding: utf-8 -*-
3
+
4
+ module Ariblib
5
+ class FIFO
6
+ attr_accessor :buf
7
+ def initialize(buf)
8
+ @buf=buf
9
+ end
10
+ def getbyte
11
+ @buf.shift
12
+ end
13
+ def add(buf)
14
+ @buf += buf
15
+ end
16
+ def << (buf)
17
+ @buf << buf
18
+ end
19
+ def clear
20
+ @buf.clear
21
+ end
22
+ def size
23
+ @buf.size * 8
24
+ end
25
+ def eof?
26
+ @buf.size == 0
27
+ end
28
+ end
29
+
30
+ #TSパケット
31
+ class TransportStreamPacket
32
+ def initialize
33
+ end
34
+ def set(ts)
35
+ end
36
+ end
37
+
38
+ #TSファイル
39
+ class TransportStreamFile
40
+ attr_reader :payload_ap
41
+ attr_reader :pid
42
+ attr_reader :adaptation_field_control
43
+ attr_reader :packet_start_pos
44
+
45
+
46
+ attr_reader :payload
47
+ attr_reader :bs
48
+ attr_reader :continuity_counter
49
+ attr_reader :payload_unit_start_indicator
50
+ attr_reader :payload_length
51
+
52
+ Default_payload={
53
+ #0x0000 => ProgramAssociationTable.new,
54
+ #0x0001 => ConditionalAccessTable.new,
55
+ 0x0012 => EventInformationTable.new,
56
+ 0x0011 => ServiceDescriptionTable.new,
57
+ 0x0010 => NetworkInformationTable.new,
58
+ 0x0014 => TimeOffsetTable.new,
59
+ 0x0029 => CommonDataTable.new,
60
+ }
61
+ ReadSize=188*20
62
+ def initialize(filename,payload_list=Default_payload)
63
+ @file=open(filename,'rb')
64
+ @bs=BitStream.new(@file.read(ReadSize))
65
+ @payload=payload_list
66
+ @payload.default=TransportStreamPacket.new
67
+ @payload.merge!(payload_list)
68
+ @payload_ap=Hash.new(0)
69
+ @packet_count=0
70
+ end
71
+
72
+ def eof?
73
+ @file.eof? && (@bs.lest <= 0)
74
+ end
75
+
76
+ def close
77
+ @file.close
78
+ end
79
+
80
+ def sync
81
+ while(@bs.lest>0 and (c=@bs.read(8))!=0x47) do
82
+ end
83
+ return false if @bs.lest<=0
84
+ @bs.pos-=8
85
+ true
86
+ end
87
+
88
+ def transport_packet
89
+ if @bs.lest <= 0
90
+ tmp=@file.read(ReadSize)
91
+ return nil unless tmp
92
+ @bs=BitStream.new(tmp)
93
+ end
94
+ packet_start_pos = @bs.pos
95
+ sync_byte = @bs.getc
96
+ return :async unless sync_byte==0x47
97
+ tmp = @bs.getc
98
+ tmp=(tmp<<8)| @bs.getc
99
+ #transport_error_indicator = @bs.read 1 #bslbf
100
+ #@payload_unit_start_indicator = @bs.read 1 #bslbf
101
+ #transport_priority = @bs.read 1 #bslbf
102
+ #@pid = @bs.read 13 #uimsbf
103
+ transport_error_indicator = tmp & 0x8000 #1 bslbf
104
+ @payload_unit_start_indicator = tmp & 0x4000 #1 bslbf
105
+ transport_priority = tmp & 0x2000 #1 bslbf
106
+ @pid = tmp & 0x1fff #13 uimsbf
107
+ tmp = @bs.getc
108
+ #transport_scrambling_control = @bs.read 2 #bslbf
109
+ #@adaptation_field_control = @bs.read 2 #bslbf
110
+ #@continuity_counter = @bs.read 4 #uimsbf
111
+ transport_scrambling_control = tmp & 0xc0 #2 bslbf
112
+ adaptation_field_control1 = tmp & 0x20 #2 bslbf
113
+ adaptation_field_control2 = tmp & 0x10 #2 bslbf
114
+ @continuity_counter = tmp & 0x0f #4 uimsbf
115
+ if(adaptation_field_control1 !=0 )
116
+ #adaptation_field()
117
+ @adaptation_field_length = @bs.getc
118
+ @adaptation_field_length += 1 #uimsbf
119
+ @adaptation_pos=@bs.pos
120
+ @bs.pos+=@adaptation_field_length
121
+ end
122
+ count = packet_start_pos+188*8
123
+ @payload_length=((count)-@bs.pos)/8
124
+ if(adaptation_field_control2 !=0 )
125
+ @payload[@pid].set(self)
126
+ @payload_ap[@pid]+=1
127
+ end
128
+ @bs.pos=count
129
+ true
130
+ end
131
+
132
+ end
133
+ end
134
+
135
+ __END__
136
+ #Default_payload 一覧
137
+ # PID table_id
138
+ #PMT*1 PATによる間接指定 0x02 +必須 1@100ms
139
+ #INT*1 PMTによる間接指定 0x4c 任意 1@30s
140
+
141
+ #PID table_id
142
+ #0x0000 0x00 PAT +必須 1@100ms
143
+ #0x0001 0x01 CAT +必須 1@1s
144
+ #0x0010 0x40 NIT *必須 1@10s(自ストリーム)
145
+ #0x0010 0x41 NIT *任意 1@10s(他ストリーム)
146
+ #0x0011 0x42 SDT *必須 1@10s(自ストリーム)
147
+ #0x0011 0x46 SDT *任意 1@10s(他ストリーム)
148
+ #0x0011 0x4a BAT 任意 1@10s(他ストリーム)
149
+ #0x0012 0x4e EIT *必須 1@2s(EITpf自ストリーム)
150
+ #0x0012 0x4f EIT 任意 1@10s(EITpf自ストリーム)
151
+ #0x0012 0x5? EIT 任意 1@10s(自ストリーム8日以内)
152
+ #0x0012 0x5? EIT 任意 1@30s(自ストリーム8日以降)
153
+ #0x0012 0x6? EIT 任意 1@10s(他ストリーム8日以内)
154
+ #0x0012 0x6? EIT 任意 1@30s(他ストリーム8日以降)
155
+ #0x0012,0x0026,0x0027 EIT
156
+ #0x0013 0x71 RST 任意 任意
157
+ #0x0014 0x70 TDT *必須 1@30s
158
+ #0x0014 0x73 TOT *必須 1@30s
159
+ #0x0022 0xc2 PCAT 任意 任意
160
+ #0x0024 0xc4 BIT 任意 1@20s
161
+ #0x0025 0xc5 NBIT 任意 1@20s
162
+ #0x0025 0xc6 NBIT 任意 1@10s
163
+ #0x002E 0xfe AMT 任意 1@10s
164
+ #?????? 0x72 ST 任意 任意 (0x0000, 0x0001, 0x0014を除く)
165
+
166
+ #ECM*1 PMTによる間接指定
167
+ #EMM*1 CATによる間接指定
168
+ #DLT*3 DCTによる間接指定
169
+ #LIT*5 PMTによる間接指定*6(Default:0x20)
170
+ #ERT*5 PMTによる間接指定*6(Default:0x21)
171
+ #ITT PMTによる間接指定
172
+ #AIT*9 PMTによる間接指定
173
+ #DCM*10 PMTによる間接指定
174
+ #DSM-CCセクション*4 PMTによる間接指定
175
+ #DMM*10 SDTTによる間接指定
176
+
177
+ #0x0017 DCT*3
178
+ #0x001E DIT*2
179
+ #0x001F SIT*2
180
+ #0x0020 LIT*5
181
+ #0x0021 ERT*5
182
+ #0x0023、0x0028 SDTT
183
+ #0x0025 0xc7 LDT
184
+ #0x0029 CDT
185
+ #0x002D 分割TLVパケット*11
186
+ #0x002F 多重フレームヘッダ情報*7
187
+ #0x1FFF ???? ヌルパケット*1
188
+
189
+ #記述子タグ()
190
+ #CAT SDT NBIT
191
+ # PMT EIT LDT
192
+ # NIT TOT
193
+ # BAT BIT
194
+ #-o-------- j 0x04 階層符号化記述子*1, 8
195
+ #-o-------- j 0x05 登録記述子*8
196
+ #oo-------- * 0x09 限定受信方式記述子*1
197
+ #-o-------- * 0x0D 著作権記述子*1
198
+ # 0x13 カルーセル識別記述子*7
199
+ # 0x14 アソシエーションタグ記述子*7
200
+ # 0x15 拡張アソシエーションタグ記述子*7
201
+ #-o-------- j 0x1C MPEG-4 オーディオ記述子*8
202
+ #-o-------- r 0x28 AVC ビデオ記述子*8
203
+ #-o-------- r 0x2A AVC タイミングHRD 記述子*8
204
+ #-o-------- j 0x2E MPEG-4 オーディオ拡張記述子*8
205
+ #-o-------- j 0x38 HEVC ビデオ記述子*8
206
+ #--o------- n 0x40* ネットワーク名記述子*2
207
+ #--oo---o-- n 0x41* サービスリスト記述子*1
208
+ #--oooo--oo r 0x42 スタッフ記述子
209
+ #--o------- n 0x43 衛星分配システム記述子*1
210
+ # 0x44 有線分配システム記述子*4
211
+ #---oo----- n 0x47 ブーケ名記述子
212
+ #----o----- n 0x48 サービス記述子*2
213
+ #-o-oo----- r 0x49 国別受信可否記述子
214
+ #-ooooo---- r 0x4A リンク記述子
215
+ #----o----- j 0x4B NVOD 基準サービス記述子
216
+ #----o----- j 0x4C タイムシフトサービス記述子*2
217
+ #-----o---o n 0x4D 短形式イベント記述子*2
218
+ #-----o---o r 0x4E 拡張形式イベント記述子
219
+ #-----o---- j 0x4F タイムシフトイベント記述子*2
220
+ #-o---o---- r 0x50 コンポーネント記述子
221
+ #-o--o----- r 0x51 モザイク記述子
222
+ #-o-------- r 0x52 ストリーム識別記述子
223
+ #---ooo---- r 0x53 CA 識別記述子
224
+ #-----o---- r 0x54 コンテント記述子
225
+ #-o---o---- r 0x55 パレンタルレート記述子
226
+ #------o--- j 0x58 ローカル時間オフセット記述子
227
+ # 0x63 パーシャルトランスポートストリーム記述子*3
228
+ #-o-------- r 0x66 データブロードキャスト識別記述子
229
+ # 0x67 素材情報記述子
230
+ #-o-------- r 0x68 通信連携情報記述子
231
+ # 0x80-
232
+ # 0xBF 事業者定義記述子のタグ値として選択可能な範囲
233
+ #-o-------- j 0xC0 階層伝送記述子
234
+ #-o--oo---- r 0xC1 デジタルコピー制御記述子
235
+ # 0xC2 ネットワーク識別記述子*3
236
+ # 0xC3 パーシャルトランスポートストリームタイム記述子*3
237
+ #-----o---- r 0xC4 音声コンポーネント記述子
238
+ #-----o-o-- r 0xC5 ハイパーリンク記述子
239
+ #-o-------- r 0xC6 対象地域記述子
240
+ #-----o---- r 0xC7 データコンテンツ記述子
241
+ #-o-------- r 0xC8 ビデオデコードコントロール記述子
242
+ # 0xC9 ダウンロードコンテンツ記述子*3
243
+ # 0xCA CA_EMM_TS 記述子*5
244
+ # 0xCB CA 契約情報記述子*5
245
+ # 0xCC CA サービス記述子*5
246
+ #--o------- r 0xCD* TS 情報記述子
247
+ #-------o-- r 0xCE 拡張ブロードキャスタ記述子
248
+ #----o----- r 0xCF ロゴ伝送記述子
249
+ # 0xD0 基本ローカルイベント記述子
250
+ # 0xD1 リファレンス記述子
251
+ # 0xD2 ノード関係記述子
252
+ # 0xD3 短形式ノード情報記述子
253
+ # 0xD4 STC 参照記述子
254
+ #-----o---- r 0xD5 シリーズ記述子
255
+ #-----o---- r 0xD6 イベントグループ記述子
256
+ #-------o-- r 0xD7 SI 伝送パラメータ記述子
257
+ #-------o-- r 0xD8 ブロードキャスタ名記述子
258
+ #-----o---- r 0xD9 コンポーネントグループ記述子
259
+ #-------o-- r 0xDA SI プライムTS 記述子
260
+ #--------o- r 0xDB 掲示板情報記述子
261
+ #-----o---- r 0xDC LDT リンク記述子
262
+ #--o------- j 0xDD 連結送信記述子
263
+ #-o--oo---- r 0xDE コンテント利用記述子
264
+ # 0xDF タグ値拡張用(未規定)
265
+ #--o------- r 0xE0 サービスグループ記述子
266
+ #--o------- j 0xE1 エリア放送情報記述子
267
+ # 0xE2 ネットワークダウンロードコンテンツ記述子*3
268
+ # 0xE3 ダウンロード保護記述子*9
269
+ # 0xE4 CA 起動記述子*9
270
+ # 0xE5-
271
+ # 0xF2 未規定
272
+ # 0xF3 有線複数搬送波伝送分配システム記述子*10
273
+ # 0xF4 高度有線分配システム記述子*10
274
+ #oo-------- j 0xF5 スクランブル方式記述子*1
275
+ #oo-------- j 0xF6 アクセス制御記述子*1
276
+ #-o---o---- r 0xF7 カルーセル互換複合記述子*1
277
+ #oo-------- j 0xF8 限定再生方式記述子*1, *5
278
+ # 0xF9 有線TS 分割システム記述子*6
279
+ #--o------- n 0xFA* 地上分配システム記述子*1
280
+ #--o------- j 0xFB* 部分受信記述子*1
281
+ #-oo------- j 0xFC 緊急情報記述子*1
282
+ #-o-------- j 0xFD データ符号化方式記述子*1
283
+ #-oo------- n 0xFE* システム管理記述子*1