id	summary	reporter	owner	description	type	status	priority	component	version	resolution	keywords	cc	blockedby	blocking	reproduced	analyzed
1719	MPEG-TS demuxer : don't parse a PAT (and clear programs) if its version number is the same as the previous one	aurelien		"{{{
ffmpeg -i euronews_long_pmt_over_pat.ts
ffmpeg version N-44162-gfc15f58 Copyright (c) 2000-2012 the FFmpeg developers   
  built on Sep  5 2012 12:24:04 with gcc 4.7 (Debian 4.7.1-2)
  configuration: --prefix=/home/aurelien/local --enable-postproc --enable-nonfree --enable-gpl --enable-libopencore-amrnb --enable-libfaac --enable-libmp3lame --enable-shared --enable-libxvid --enable-libx264 --extra-cflags=-I/home/aurelien/local/include --extra-ldflags=-L/home/aurelien/local/lib --enable-version3 --disable-optimizations --enable-libfreetype --disable-stripping --enable-libaacplus --enable-libfaac
  libavutil      51. 70.100 / 51. 70.100
  libavcodec     54. 55.100 / 54. 55.100
  libavformat    54. 25.104 / 54. 25.104
  libavdevice    54.  2.100 / 54.  2.100
  libavfilter     3. 15.103 /  3. 15.103
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
[mpegts @ 0x1b61240] probed stream 1 failed
[mpegts @ 0x1b61240] max_analyze_duration 5000000 reached at 5016000
[mpegts @ 0x1b61240] Could not find codec parameters for stream 1 (Unknown: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x1b61240] PES packet size mismatch
    Last message repeated 9 times
Input #0, mpegts, from '/home/dump/euronews_long_pmt_over_pat.ts':
  Duration: 00:02:59.27, start: 10770.595789, bitrate: 4407 kb/s
  Program 8202
    Metadata:
      service_name    : ARM_1
      service_provider: GlobeCast   
[...]  
  No Program
    Stream #0:0[0x8c6]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:1[0x300]: Unknown: none
    Stream #0:2[0x8ad]: Video: mpeg2video (Main), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 3240 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:3[0x8c1]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:4[0x8bf]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:5[0x8c0]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:6[0x8bd]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:7[0x8be]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:8[0x8bb]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:9[0x8ba]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:10[0x8bc]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:11[0x8b9]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:12[0x8b8]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0:13[0x8b7]: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s

The stream looks like :
[PAT]
[PAT]
[PAT]
[PMT_first packet]
[PAT]
[PAT]
[PAT]
[PMT_last_packet]
[etc...]
}}}

In pat_cb(), clear_programs() is called unconditionally so the when the second half of the PMT is received it will be discarded.
The attached patch fixes that.

The sample is on the ffmpeg ftp : euronews_long_pmt_over_pat.ts"	defect	open	normal	avformat	git-master		mpegts demuxer pat pmt				1	0
