[linux-dvb] Problems with ca_zap
Allan Stirling
Dibblahdvb0042 at pendor.org
Fri Jun 24 10:41:24 CEST 2005
Allan Stirling wrote:
> Allan Stirling wrote:
>
>> dvbsnoop gives me the following:
>> ------------------------------------------------------------
>> SECT-Packet: 00000001 PID: 0 (0x0000), Length: 44 (0x002c)
>> Time received: Thu 2005-06-23 22:20:09.035
>> ------------------------------------------------------------
>> 0000: 00 b0 29 07 ee e3 00 00 00 00 e0 10 11 39 e1 01
>> ..)..........9..
>> 0010: 11 fa e1 07 11 fb e1 09 12 5f e1 04 12 c2 e1 0c
>> ........._......
>> 0020: 12 c9 e1 0b 13 2a e1 0a 24 a9 24 84 .....*..$.$.
>>
>> PID: 0 (0x0000) [= assigned for: ISO 13818-1 Program Association
>> Table (PAT)]
>> Guess table from table id...
>> PAT-decoding....
>> Table_ID: 0 (0x00) [= Program Association Table (PAT)]
>> section_syntax_indicator: 1 (0x01)
>> (fixed): 0 (0x00)
>> reserved_1: 3 (0x03)
>> Section_length: 41 (0x0029)
>> Transport_Stream_ID: 2030 (0x07ee)
>> reserved_2: 3 (0x03)
>> Version_number: 17 (0x11)
>> current_next_indicator: 1 (0x01) [= valid now]
>> Section_number: 0 (0x00)
>> Last_Section_number: 0 (0x00)
>>
>> Program_number: 0 (0x0000)
>> reserved: 7 (0x07)
>> Network_PID: 16 (0x0010)
>>
>> Program_number: 4409 (0x1139)
>> reserved: 7 (0x07)
>> Program_map_PID: 257 (0x0101)
>>
>> Program_number: 4602 (0x11fa)
>> reserved: 7 (0x07)
>> Program_map_PID: 263 (0x0107)
>>
>> Program_number: 4603 (0x11fb)
>> reserved: 7 (0x07)
>> Program_map_PID: 265 (0x0109)
>>
>> Program_number: 4703 (0x125f)
>> reserved: 7 (0x07)
>> Program_map_PID: 260 (0x0104)
>>
>> Program_number: 4802 (0x12c2)
>> reserved: 7 (0x07)
>> Program_map_PID: 268 (0x010c)
>>
>> Program_number: 4809 (0x12c9)
>> reserved: 7 (0x07)
>> Program_map_PID: 267 (0x010b)
>>
>> Program_number: 4906 (0x132a)
>> reserved: 7 (0x07)
>> Program_map_PID: 266 (0x010a)
>>
>> Where you can clearly see that 4703 is listed, with a PID of 260. I
>> think there must be something wrong in the PAT parsing, since I get
>> the following with a slightly modified ca_zap:
>>
>> parse_pat: PAT => Section Length=[41], TS ID=[12270]
>> service_id: 4703
>> program_number: 176 PID: 2311
>> program_number: 61155 PID: 0
>> program_number: 12288 PID: 16
>> program_number: 65337 PID: 7937
>> program_number: 65530 PID: 7943
>> program_number: 4603 PID: 265
>> program_number: 15967 PID: 260
>> program_number: 65474 PID: 7948
>> program_number: 4809 PID: 267
>> program_number: 4906 PID: 266
>>
>> As you can see, some of the program_numbers as well as some of the
>> PIDs are correct, but some are not. This is repeatable between runs.
>>
>> The TS ID is also different. I'm just about to try hardcoding the PID
>> as Manu originally suggested.
>>
> Okay. That gets me more output, but I don't think it's good.
>
> parse_sat_channel_list: Channel=[Sky One], Frequency=[12285],
> Satellite=[0], Symbol Rate=[27500], Video=[513], Audio=[641],
> Service=[4703]
> Service ID=[4703]
> parse_pat: ----------------->parse PAT section
> parse_pat: PAT => Section Length=[41], TS ID=[12270]
> service_id: 4703
> program_number: 176 PID: 2311
> program_number: 61155 PID: 0
> program_number: 12288 PID: 16
> program_number: 65337 PID: 7937
> program_number: 65530 PID: 7943
> program_number: 4603 PID: 265
> program_number: 15967 PID: 260
> parse_si: PMT PID = [260]
> program_number: 65474 PID: 7948
> program_number: 4809 PID: 267
> program_number: 4906 PID: 266
> parse_si: PAT: Close Demux /dev/dvb/adapter3/demux0
> parse_pmt: PMT Words=[ 02 b2 f5 12 5f c9 00 00 ff fe f0 13 0c 04 80 b4
> 81 68 0e 03 c5 df bb 10 06 c5 df bb c0 08 00 02 e2 01 f0 1c 02 03 1a
> 48 5f 09 04 09 60 e5 00 09 04 09 61 e5 00 52 01 01 0e 03 c0 4f f0 06
> 01 02 04 e2 81 f0 1d 03 01 67 09 04 09 60 e5 00 09 04 09 61 e5 00 0a
> 04 65 6e 67 00 52 01 81 0e 03 c0 02 0a 04 e2 95 f0 1d 03 01 67 09 04
> 09 60 e5 00 09 04 09 61 e5 00 0a 04 4e 41 52 00 52 01 95 0e 03 c0 02
> 0a 06 e2 40 f0 0f 56 05 65 6e 67 09 00 52 01 40 0e 03 c0 01 78 06 e2
> 41 f0 0f 56 05 65 6e 67 10 88 52 01 41 0e 03 c0 00 bc 05 e9 80 f0 17
> 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 45 54 30 31 52 01 5a
> 05 e9 81 f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 45 54
> 30 32 52 01 5b 05 e9 82 f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01
> 90 fe 04 45 54 30 33 52 01 5c 05 e9 83 f0 17 0e 03 c0 46 d8 0f 04 4f
> 54 56 00 90 01 90 fe 04 57 54 53 33 52 01 0f 05 e9 84 f0 17 0e 03 c0
> 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 45 54 30 34 52 01 5d 05 e9 85
> f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 45 54 30 35 52
> 01 5e 05 e9 86 f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04
> 45 54 30 36 52 01 5f 05 e9 87 f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00
> 90 01 90 fe 04 45 54 30 37 52 01 60 05 e9 88 f0 17 0e 03 c0 46 d8 0f
> 04 4f 54 56 00 90 01 90 fe 04 45 54 30 38 52 01 61 05 e9 89 f0 17 0e
> 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 45 54 30 39 52 01 62 05
> e9 8a f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 57 49 41
> 31 52 01 7e 05 e9 8b f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90
> fe 04 57 49 41 32 52 01 7f 05 e9 8c f0 17 0e 03 c0 46 d8 0f 04 4f 54
> 56 00 90 01 90 fe 04 57 49 41 33 52 01 80 05 e9 8d f0 17 0e 03 c0 46
> d8 0f 04 4f 54 56 00 90 01 90 fe 04 57 54 56 43 52 01 c9 05 e9 8e f0
> 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 57 54 56 30 52 01
> ca 05 ec 01 f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 54
> 58 54 00 52 01 3a 05 ec 02 f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90
> 01 90 fe 04 54 58 54 01 52 01 3b 05 ec 03 f0 17 0e 03 c0 46 d8 0f 04
> 4f 54 56 00 90 01 90 fe 04 54 58 54 02 52 01 3c 05 ec 04 f0 17 0e 03
> c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 54 58 54 03 52 01 3d 05 e9
> 93 f0 17 0e 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 49 53 4d 00
> 52 01 f7 05 e4 06 f0 13 5f 04 4f 54 56 00 90 01 9d fe 04 54 47 54 00
> 66 02 01 07 5c fc 4f 1d ]
>
> parse_pmt: ----------->parse PMT section, PMT PID=[260], bytes=[760]
> parse_pmt_header: Table ID=[2], Section Length=[757], Program
> Number=[4703], Section Number=[0], PCR PID=[8190], Program info
> length=[19]
> parse_pmt: Program info length=[19]
> parse_pmt: Count=[16], Position=[16], Program descriptor count=[19]
> parse_pmt: Count=[137], Position=[120], Program descriptor count=[19]
>
> parse_streams: Elements=[ 4e 41 52 00 52 01 95 0e 03 c0 02 0a
> 06 e2 40 f0 0f 56 05 65 6e 67 09 00 52 01 40 0e 03 c0 01 78 06 e2 41
> f0 0f 56 05 65 6e 67 10 88 52 01 41 0e 03 c0 00 bc 05 e9 80 f0 17 0e
> 03 c0 46 d8 0f 04 4f 54 56 00 90 01 90 fe 04 45 54 30 31 52 01 5a 05
> e9 81 f0 17 0e 03]
> parse_streams: Stream=[0], Stream Type=[78], Elementary
> PID=[338], ES info length=[82]
>
> Cheers,
>
> Allan.
From pat.c:
static uint16_t parse_descriptor(struct program_descriptor
*p_program_descriptor,
uint8_t
*buf, uint16_t pos)
{
p_program_descriptor->program_number =
((p_program_descriptor->program_number | buf[pos + 0])
<< 8) | buf[pos + 1];
Doesn't look quite right. Why do we care what the program_number is
before it's been parsed?
If I change this to
p_program_descriptor->program_number =
( buf[pos + 0] << 8) | buf[pos + 1];
Then the table comes out mostly fine. There's a couple of
program_numbers at the beginning that look like 'noise' however... I
think the offset of the start of the programs in the PAT may somehow be
wrong.
parse_pat: PAT => Section Length=[41], TS ID=[12270]
service_id: 4703
program_number: 176 PID: 2311
program_number: 61155 PID: 0
program_number: 0 PID: 16
program_number: 4409 PID: 7937
program_number: 4602 PID: 7943
program_number: 4603 PID: 265
program_number: 4703 PID: 260
parse_si: PMT PID = [260]
program_number: 4802 PID: 7948
program_number: 4809 PID: 267
program_number: 4906 PID: 266
Cheers,
Allan.
More information about the linux-dvb
mailing list