+--- modules/demux/ts.c.orig 2013-08-08 19:38:57.049290576 +0200
++++ modules/demux/ts.c 2013-08-09 16:06:44.526199046 +0200
+@@ -3264,7 +3264,7 @@
+ {
+ if( b_current_following &&
+ ( p_sys->i_current_program == -1 ||
+- p_sys->i_current_program == p_eit->i_service_id ) )
++ p_sys->i_current_program == p_eit->i_extension ) )
+ {
+ p_sys->i_dvb_length = 0;
+ p_sys->i_dvb_start = 0;
+@@ -3275,7 +3275,7 @@
+ p_sys->i_dvb_length = CLOCK_FREQ * p_epg->p_current->i_duration;
+ }
+ }
+- es_out_Control( p_demux->out, ES_OUT_SET_GROUP_EPG, p_eit->i_service_id, p_epg );
++ es_out_Control( p_demux->out, ES_OUT_SET_GROUP_EPG, p_eit->i_extension, p_epg );
+ }
+ vlc_epg_Delete( p_epg );
+
+@@ -4506,7 +4506,8 @@
+ {
+ PIDInit( pmt, true, pat->psi );
+ pmt->psi->prg[pmt->psi->i_prg-1]->handle =
+- dvbpsi_pmt_attach( p_program->i_number,
++ dvbpsi_new(NULL, 0);
++ dvbpsi_pmt_attach(pmt->psi->prg[pmt->psi->i_prg-1]->handle, p_program->i_number,
+ (dvbpsi_pmt_callback)PMTCallBack,
+ p_demux );
+ pmt->psi->prg[pmt->psi->i_prg-1]->i_number =
+--- modules/mux/mpeg/ts.c.orig 2013-08-09 16:18:12.519503507 +0200
++++ modules/mux/mpeg/ts.c 2013-08-09 17:30:33.465988000 +0200
+@@ -2341,8 +2341,10 @@
+ p_sys->i_pmt_program_number[i],
+ p_sys->pmt[i].i_pid );
+
+- p_section = dvbpsi_pat_sections_generate( &pat,
++ dvbpsi_t *dvbpsi = dvbpsi_new(NULL, 0);
++ p_section = dvbpsi_pat_sections_generate( dvbpsi, &pat,
+ 0 ); /* max program per section */
++ dvbpsi_delete(dvbpsi);
+
+ p_pat = WritePSISection( p_mux->p_sout, p_section );
+
+@@ -2394,7 +2396,7 @@
+ }
+
+ if( p_sys->b_sdt )
+- dvbpsi_sdt_init( &sdt, p_sys->i_tsid, 1, 1, p_sys->i_netid );
++ dvbpsi_sdt_init( &sdt, p_sys->i_tsid, 1, 1, false, p_sys->i_netid );
+
+ for( i = 0; i < p_sys->i_num_pmt; i++ )
+ {
+@@ -2737,9 +2739,10 @@
+ }
+ }
+
++ dvbpsi_t *dvbpsi = dvbpsi_new(NULL, 0);
+ for( i = 0; i < p_sys->i_num_pmt; i++ )
+ {
+- p_section[i] = dvbpsi_pmt_sections_generate( &p_sys->dvbpmt[i] );
++ p_section[i] = dvbpsi_pmt_sections_generate( dvbpsi, &p_sys->dvbpmt[i] );
+ p_pmt[i] = WritePSISection( p_mux->p_sout, p_section[i] );
+ PEStoTS( p_mux->p_sout, c, p_pmt[i], &p_sys->pmt[i] );
+ dvbpsi_DeletePSISections( p_section[i] );
+@@ -2748,10 +2751,11 @@
+
+ if( p_sys->b_sdt )
+ {
+- p_section2 = dvbpsi_sdt_sections_generate( &sdt );
++ p_section2 = dvbpsi_sdt_sections_generate( dvbpsi, &sdt );
+ p_sdt = WritePSISection( p_mux->p_sout, p_section2 );
+ PEStoTS( p_mux->p_sout, c, p_sdt, &p_sys->sdt );
+ dvbpsi_DeletePSISections( p_section2 );
+- dvbpsi_EmptySDT( &sdt );
++ dvbpsi_sdt_empty( &sdt );
+ }
++ dvbpsi_delete(dvbpsi);
+ }