From 2bd243347e2d23d5779de62b522a81d9f71c6643 Mon Sep 17 00:00:00 2001 From: Kieran Kunhya Date: Wed, 5 Jun 2013 22:31:33 +0100 Subject: [PATCH] Improve multi-packet SDT and PMT --- dvb/dvb.c | 4 ++-- libmpegts.c | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dvb/dvb.c b/dvb/dvb.c index c95bc52..de2d2ed 100644 --- a/dvb/dvb.c +++ b/dvb/dvb.c @@ -292,10 +292,10 @@ int write_sdt( ts_writer_t *w ) bytes_left = 184; /* keep writing SDT packets */ - while( length > bytes_left ) + while( length > 0 ) { start = bs_pos( s ); - write_packet_header( w, s, 1, SDT_PID, PAYLOAD_ONLY, &w->sdt->cc ); + write_packet_header( w, s, 0, SDT_PID, PAYLOAD_ONLY, &w->sdt->cc ); write_bytes( s, &sdt_buf[pos], MIN( bytes_left, length ) ); write_padding( s, start ); pos += MIN( bytes_left, length ); diff --git a/libmpegts.c b/libmpegts.c index c994666..bf6a649 100644 --- a/libmpegts.c +++ b/libmpegts.c @@ -608,7 +608,7 @@ static int write_pmt( ts_writer_t *w, ts_int_program_t *program ) bytes_left = 184; /* queue up pmt packets for spaced output */ - while( length > bytes_left ) + while( length > 0 ) { bs_t z; @@ -1935,6 +1935,9 @@ int ts_close_writer( ts_writer_t *w ) free( w->buffered_frames ); + if( w->sdt ) + free( w->sdt ); + if( w->pcr_list ) free( w->pcr_list );