def parse_buf
			ret=[]
			bs=BitStream.new(@buf)
			#service_description_section(){
			table_id                  =bs.read 8 #uimsbf
			#staff_table if table_id == 0x72
			section_syntax_indicator  =bs.read 1 #bslbf
			reserved_future_use       =bs.read 1 #bslbf
			reserved                  =bs.read 2 #bslbf
			section_length            =bs.read 12 #uimsbf# < 1024 -3
			transport_stream_id       =bs.read 16 #uimsbf
			reserved                  =bs.read 2 #bslbf
			version_number            =bs.read 5 #uimsbf
			current_next_indicator    =bs.read 1 #bslbf
			section_number            =bs.read 8 #uimsbf
			last_section_number       =bs.read 8 #uimsbf
			original_network_id       =bs.read 16 #uimsbf
			reserved_future_use       =bs.read 8 #bslbf
			ret << [table_id,original_network_id,transport_stream_id]
			len=(section_length+3-4)*8
			while bs.pos < len
				service_id                  =bs.read 16 #uimsbf
				reserved_future_use         =bs.read 3 #bslbf
				fEIT_user_defined_flags     =bs.read 3 #bslbf
				fEIT_schedule_flag          =bs.read 1 #bslbf
				fEIT_present_following_flag =bs.read 1 #bslbf
				running_status              =bs.read 3 #uimsbf
				free_CA_mode                =bs.read 1 #bslbf
				descriptors_loop_length     =bs.read 12 #uimsbf
				desc=descriptor(bs,descriptors_loop_length)
				ret << [service_id,desc]
			end
			cCRC_32  =bs.read 32 #rpchof
			ret
		end
def parse_buf
			ret=[]
			bs=BitStream.new(@buf)
			#service_description_section(){
			table_id                  =bs.read 8 #uimsbf
			#staff_table if table_id == 0x72
			section_syntax_indicator  =bs.read 1 #bslbf
			reserved_future_use       =bs.read 1 #bslbf
			reserved                  =bs.read 2 #bslbf
			section_length            =bs.read 12 #uimsbf# < 1024 -3
			transport_stream_id       =bs.read 16 #uimsbf
			reserved                  =bs.read 2 #bslbf
			version_number            =bs.read 5 #uimsbf
			current_next_indicator    =bs.read 1 #bslbf
			section_number            =bs.read 8 #uimsbf
			last_section_number       =bs.read 8 #uimsbf
			original_network_id       =bs.read 16 #uimsbf
			reserved_future_use       =bs.read 8 #bslbf
			ret << [table_id,original_network_id,transport_stream_id]
			len=(section_length+3-4)*8
			while bs.pos < len
				service_id                  =bs.read 16 #uimsbf
				reserved_future_use         =bs.read 3 #bslbf
				fEIT_user_defined_flags     =bs.read 3 #bslbf
				fEIT_schedule_flag          =bs.read 1 #bslbf
				fEIT_present_following_flag =bs.read 1 #bslbf
				running_status              =bs.read 3 #uimsbf
				free_CA_mode                =bs.read 1 #bslbf
				descriptors_loop_length     =bs.read 12 #uimsbf
				desc=descriptor(bs,descriptors_loop_length)
				ret << [service_id,desc]
			end
			cCRC_32  =bs.read 32 #rpchof
			ret
		end
< 1Kbyte