ariblib 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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