Class: Ariblib::ProgramSpecificInformation
- Inherits:
-
Object
- Object
- Ariblib::ProgramSpecificInformation
show all
- Defined in:
- lib/ariblib/ProgramSpecificInformation.rb
Overview
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of ProgramSpecificInformation.
9
10
11
12
13
14
15
|
# File 'lib/ariblib/ProgramSpecificInformation.rb', line 9
def initialize
@buf=''.force_encoding('ASCII-8BIT')
@count=nil
@length=nil
@contents=[]
@descriptor_set=DescriptorTag
end
|
Instance Attribute Details
#contents ⇒ Object
Returns the value of attribute contents.
75
76
77
|
# File 'lib/ariblib/ProgramSpecificInformation.rb', line 75
def contents
@contents
end
|
Instance Method Details
#arib_to_utf8(buf) ⇒ Object
#descriptor(bs, len) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/ariblib/ProgramSpecificInformation.rb', line 53
def descriptor(bs,len)
return nil if len==0
h={:tag => [],
:verbose_pair=>[],
:verbose=>''.force_encoding('ASCII-8BIT'),
}
len=bs.pos+len*8
while bs.pos < len
descriptor_tag =bs.getc descriptor_length =bs.getc len2=bs.pos+descriptor_length*8
@descriptor_set[descriptor_tag].new(h,bs,descriptor_tag,descriptor_length)
bs.pos=len2
end
bs.pos=len
h[:verbose_pair]=h[:verbose_pair].map{|v|[v[0],arib_to_utf8(v[1])]}
h[:verbose]=arib_to_utf8(h[:verbose])
h.delete :verbose_pair if h[:verbose_pair].size==0
h.delete :verbose if h[:verbose].size==0
h
end
|
#init_buf ⇒ Object
16
17
18
19
|
# File 'lib/ariblib/ProgramSpecificInformation.rb', line 16
def init_buf
@buf.clear
@length=nil
end
|
#set(ts) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/ariblib/ProgramSpecificInformation.rb', line 35
def set(ts)
@count=nil if ts.continuity_counter != @count
buf=ts.bs.str(ts.payload_length)
if ts.payload_unit_start_indicator != 0
set_buf(ts,buf.byteslice(1,188))
@count=ts.continuity_counter
init_buf
set_buf(ts,buf.byteslice(buf.getbyte(0)+1,188))
else
set_buf(ts,buf)
end
end
|
#set_buf(ts, buf) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/ariblib/ProgramSpecificInformation.rb', line 21
def set_buf(ts,buf)
return unless @count
@buf+=buf
@length=(((@buf.getbyte(1)<<8) | @buf.getbyte(2))&0x0fff)+3 if (@length==nil) && (@buf.length>=3)
if @buf.length>=@length
@ts=ts
tmp =parse_buf
@contents << tmp if tmp
@count=nil
else
@count=(@count+1)&0x0f
end
end
|