Class: Ariblib::TransportStreamFile
- Inherits:
-
Object
- Object
- Ariblib::TransportStreamFile
- Defined in:
- lib/ariblib/TransportStreamFile.rb
Overview
TSファイル
Constant Summary collapse
- Default_payload =
{ #0x0000 => ProgramAssociationTable.new, #0x0001 => ConditionalAccessTable.new, 0x0012 => EventInformationTable.new, 0x0011 => ServiceDescriptionTable.new, 0x0010 => NetworkInformationTable.new, 0x0014 => TimeOffsetTable.new, 0x0029 => CommonDataTable.new, }
- ReadSize =
188*20
Instance Attribute Summary collapse
-
#adaptation_field_control ⇒ Object
readonly
Returns the value of attribute adaptation_field_control.
-
#bs ⇒ Object
readonly
Returns the value of attribute bs.
-
#continuity_counter ⇒ Object
readonly
Returns the value of attribute continuity_counter.
-
#packet_start_pos ⇒ Object
readonly
Returns the value of attribute packet_start_pos.
-
#payload ⇒ Object
readonly
Returns the value of attribute payload.
-
#payload_ap ⇒ Object
readonly
Returns the value of attribute payload_ap.
-
#payload_length ⇒ Object
readonly
Returns the value of attribute payload_length.
-
#payload_unit_start_indicator ⇒ Object
readonly
Returns the value of attribute payload_unit_start_indicator.
-
#pid ⇒ Object
readonly
Returns the value of attribute pid.
Instance Method Summary collapse
- #close ⇒ Object
- #eof? ⇒ Boolean
-
#initialize(filename, payload_list = Default_payload) ⇒ TransportStreamFile
constructor
A new instance of TransportStreamFile.
- #sync ⇒ Object
- #transport_packet ⇒ Object
Constructor Details
#initialize(filename, payload_list = Default_payload) ⇒ TransportStreamFile
Returns a new instance of TransportStreamFile.
62 63 64 65 66 67 68 69 70 |
# File 'lib/ariblib/TransportStreamFile.rb', line 62 def initialize(filename,payload_list=Default_payload) @file=open(filename,'rb') @bs=BitStream.new(@file.read(ReadSize)) @payload=payload_list @payload.default=TransportStreamPacket.new @payload.merge!(payload_list) @payload_ap=Hash.new(0) @packet_count=0 end |
Instance Attribute Details
#adaptation_field_control ⇒ Object (readonly)
Returns the value of attribute adaptation_field_control.
42 43 44 |
# File 'lib/ariblib/TransportStreamFile.rb', line 42 def adaptation_field_control @adaptation_field_control end |
#bs ⇒ Object (readonly)
Returns the value of attribute bs.
47 48 49 |
# File 'lib/ariblib/TransportStreamFile.rb', line 47 def bs @bs end |
#continuity_counter ⇒ Object (readonly)
Returns the value of attribute continuity_counter.
48 49 50 |
# File 'lib/ariblib/TransportStreamFile.rb', line 48 def continuity_counter @continuity_counter end |
#packet_start_pos ⇒ Object (readonly)
Returns the value of attribute packet_start_pos.
43 44 45 |
# File 'lib/ariblib/TransportStreamFile.rb', line 43 def packet_start_pos @packet_start_pos end |
#payload ⇒ Object (readonly)
Returns the value of attribute payload.
46 47 48 |
# File 'lib/ariblib/TransportStreamFile.rb', line 46 def payload @payload end |
#payload_ap ⇒ Object (readonly)
Returns the value of attribute payload_ap.
40 41 42 |
# File 'lib/ariblib/TransportStreamFile.rb', line 40 def payload_ap @payload_ap end |
#payload_length ⇒ Object (readonly)
Returns the value of attribute payload_length.
50 51 52 |
# File 'lib/ariblib/TransportStreamFile.rb', line 50 def payload_length @payload_length end |
#payload_unit_start_indicator ⇒ Object (readonly)
Returns the value of attribute payload_unit_start_indicator.
49 50 51 |
# File 'lib/ariblib/TransportStreamFile.rb', line 49 def payload_unit_start_indicator @payload_unit_start_indicator end |
#pid ⇒ Object (readonly)
Returns the value of attribute pid.
41 42 43 |
# File 'lib/ariblib/TransportStreamFile.rb', line 41 def pid @pid end |
Instance Method Details
#close ⇒ Object
76 77 78 |
# File 'lib/ariblib/TransportStreamFile.rb', line 76 def close @file.close end |
#eof? ⇒ Boolean
72 73 74 |
# File 'lib/ariblib/TransportStreamFile.rb', line 72 def eof? @file.eof? && (@bs.lest <= 0) end |
#sync ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/ariblib/TransportStreamFile.rb', line 80 def sync while(@bs.lest>0 and (c=@bs.read(8))!=0x47) do end return false if @bs.lest<=0 @bs.pos-=8 true end |
#transport_packet ⇒ Object
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 |
# File 'lib/ariblib/TransportStreamFile.rb', line 88 def transport_packet if @bs.lest <= 0 tmp=@file.read(ReadSize) return nil unless tmp @bs=BitStream.new(tmp) end packet_start_pos = @bs.pos sync_byte = @bs.getc return :async unless sync_byte==0x47 tmp = @bs.getc tmp=(tmp<<8)| @bs.getc #transport_error_indicator = @bs.read 1 #bslbf #@payload_unit_start_indicator = @bs.read 1 #bslbf #transport_priority = @bs.read 1 #bslbf #@pid = @bs.read 13 #uimsbf transport_error_indicator = tmp & 0x8000 #1 bslbf @payload_unit_start_indicator = tmp & 0x4000 #1 bslbf transport_priority = tmp & 0x2000 #1 bslbf @pid = tmp & 0x1fff #13 uimsbf tmp = @bs.getc #transport_scrambling_control = @bs.read 2 #bslbf #@adaptation_field_control = @bs.read 2 #bslbf #@continuity_counter = @bs.read 4 #uimsbf transport_scrambling_control = tmp & 0xc0 #2 bslbf adaptation_field_control1 = tmp & 0x20 #2 bslbf adaptation_field_control2 = tmp & 0x10 #2 bslbf @continuity_counter = tmp & 0x0f #4 uimsbf if(adaptation_field_control1 !=0 ) #adaptation_field() @adaptation_field_length = @bs.getc @adaptation_field_length += 1 #uimsbf @adaptation_pos=@bs.pos @bs.pos+=@adaptation_field_length end count = packet_start_pos+188*8 @payload_length=((count)-@bs.pos)/8 if(adaptation_field_control2 !=0 ) @payload[@pid].set(self) @payload_ap[@pid]+=1 end @bs.pos=count true end |