# HG changeset patch # User bcoudurier # Date 1241920641 0 # Node ID 26708ee9a51df67199a642548d51668c4e775e49 # Parent 75a9c304280049e417c47f1621e686376c0e254c ensure first pts is set, according to specs diff -r 75a9c3042800 -r 26708ee9a51d mpegtsenc.c --- a/mpegtsenc.c Sun May 10 01:41:35 2009 +0000 +++ b/mpegtsenc.c Sun May 10 01:57:21 2009 +0000 @@ -173,6 +173,7 @@ int pid; /* stream associated pid */ int cc; int payload_index; + int first_pts_check; ///< first pts check needed int64_t payload_pts; int64_t payload_dts; uint8_t payload[DEFAULT_PES_PAYLOAD_SIZE]; @@ -419,6 +420,7 @@ ts_st->pid = DEFAULT_START_PID + i; ts_st->payload_pts = AV_NOPTS_VALUE; ts_st->payload_dts = AV_NOPTS_VALUE; + ts_st->first_pts_check = 1; /* update PCR pid by using the first video stream */ if (st->codec->codec_type == CODEC_TYPE_VIDEO && service->pcr_pid == 0x1fff) @@ -701,6 +703,12 @@ if (pkt->dts != AV_NOPTS_VALUE) dts = pkt->dts + delay; + if (ts_st->first_pts_check && pts == AV_NOPTS_VALUE) { + av_log(s, AV_LOG_ERROR, "first pts value must set\n"); + return -1; + } + ts_st->first_pts_check = 0; + if (st->codec->codec_type == CODEC_TYPE_SUBTITLE) { /* for subtitle, a single PES packet must be generated */ mpegts_write_pes(s, st, buf, size, pts, AV_NOPTS_VALUE);