Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: PAT/PMT decoding



Aurelian Pop wrote:
If section_number = last_section_number = 0 it means that PAT is formed of only one TS packet, and all the information about the programs (in fact the different PMTs) exists in those 45 bytes that you say the section_lenght is.
It says that all information is contained in one SECTION, which can span along multiple TS packets. One (as in this case) or multiple (up to 256 with last_section_number = 0xFF) section form one table. One section can be up to 1024 (all except EIT) or 4096 bytes (EIT).



47 40 00 1f
the ts header, pid 0, CC=0xF, PUSI=1, no adaption field but payload.
> 00
since PUSI is one, the first byte is a pointer to the section data (starting from the byte after the pointer). data before this pointer belongs to the last section. as it is 0, a new section start immediately after the 00.

> 00
table id is 0
> b0 2d
length is 0x2d
> 07 f3
tsid is 0x07F3.
> ef
version is 46d
00 00
first/last section number

now, we have (0x2d-5) = 40d bytes left. 4 bytes are CRC, so we have 36 bytes data left. these data defines the PAT. there is no counter or something like this, since all data belong to the assosiation between SID and PMTPID.

> 00 00 e0 10
ok, the special case: 0000 means NIT and is usually on pid 0x10

12 08 e1 04
> 14 56 e1 03
> 14 78 e1 06
> 14 79 e1 07
> 14 ab e1 05
> 15 82 e1 00
> 16 aa e1 02
> 16 ac e1 01
the services in this TS (36/4 =  9 services including NIT entry)
> 94 71 3f de
the crc.

since no other sections are available, that's the whole PAT.


bye,
felix



--
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index