Browse Source

move pcr/sdt/pat period computation after ts->mux_rate is set, patch by Mike Scheutzow, scheutzow at alcatel-lucent dot com

Originally committed as revision 21198 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.6
Mike Scheutzow Baptiste Coudurier 15 years ago
parent
commit
49f6fd8f3f
1 changed files with 10 additions and 9 deletions
  1. +10
    -9
      libavformat/mpegtsenc.c

+ 10
- 9
libavformat/mpegtsenc.c View File

@@ -448,15 +448,6 @@ static int mpegts_write_header(AVFormatContext *s)
service->pcr_pid = ts_st->pid; service->pcr_pid = ts_st->pid;
} }


if (total_bit_rate <= 8 * 1024)
total_bit_rate = 8 * 1024;
service->pcr_packet_period = (total_bit_rate * PCR_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);
ts->sdt_packet_period = (total_bit_rate * SDT_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);
ts->pat_packet_period = (total_bit_rate * PAT_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);

ts->mux_rate = 1; // avoid div by 0 ts->mux_rate = 1; // avoid div by 0


/* write info at the start of the file, so that it will be fast to /* write info at the start of the file, so that it will be fast to
@@ -471,6 +462,9 @@ static int mpegts_write_header(AVFormatContext *s)
} }
pat_pmt_size = url_ftell(s->pb) - pos; pat_pmt_size = url_ftell(s->pb) - pos;


if (total_bit_rate <= 8 * 1024)
total_bit_rate = 8 * 1024;

total_bit_rate += total_bit_rate +=
total_bit_rate * 4 / (TS_PACKET_SIZE-4) + /* TS header size */ total_bit_rate * 4 / (TS_PACKET_SIZE-4) + /* TS header size */
1000 * 8 * sdt_size / PAT_RETRANS_TIME + /* SDT size */ 1000 * 8 * sdt_size / PAT_RETRANS_TIME + /* SDT size */
@@ -485,6 +479,13 @@ static int mpegts_write_header(AVFormatContext *s)
else else
ts->mux_rate = total_bit_rate; ts->mux_rate = total_bit_rate;


service->pcr_packet_period = (ts->mux_rate * PCR_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);
ts->sdt_packet_period = (ts->mux_rate * SDT_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);
ts->pat_packet_period = (ts->mux_rate * PAT_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);

// output a PCR as soon as possible // output a PCR as soon as possible
service->pcr_packet_count = service->pcr_packet_period; service->pcr_packet_count = service->pcr_packet_period;




Loading…
Cancel
Save