Mercurial > libavformat.hg
comparison mpegtsenc.c @ 4212:3aaa3da02aea libavformat
use delay to avoid negative dts
author | bcoudurier |
---|---|
date | Wed, 14 Jan 2009 22:14:35 +0000 |
parents | 5e5654752973 |
children | 461f23728a14 |
comparison
equal
deleted
inserted
replaced
4211:5e5654752973 | 4212:3aaa3da02aea |
---|---|
670 int size= pkt->size; | 670 int size= pkt->size; |
671 uint8_t *buf= pkt->data; | 671 uint8_t *buf= pkt->data; |
672 MpegTSWriteStream *ts_st = st->priv_data; | 672 MpegTSWriteStream *ts_st = st->priv_data; |
673 int len, max_payload_size; | 673 int len, max_payload_size; |
674 const uint8_t *access_unit_index = NULL; | 674 const uint8_t *access_unit_index = NULL; |
675 const uint64_t delay = av_rescale(s->max_delay, 90000, AV_TIME_BASE); | |
675 | 676 |
676 if (st->codec->codec_type == CODEC_TYPE_SUBTITLE) { | 677 if (st->codec->codec_type == CODEC_TYPE_SUBTITLE) { |
677 /* for subtitle, a single PES packet must be generated */ | 678 /* for subtitle, a single PES packet must be generated */ |
678 mpegts_write_pes(s, st, buf, size, pkt->pts, AV_NOPTS_VALUE); | 679 mpegts_write_pes(s, st, buf, size, pkt->pts, AV_NOPTS_VALUE); |
679 return 0; | 680 return 0; |
715 size -= len; | 716 size -= len; |
716 ts_st->payload_index += len; | 717 ts_st->payload_index += len; |
717 if (access_unit_index && access_unit_index < buf && | 718 if (access_unit_index && access_unit_index < buf && |
718 ts_st->payload_pts == AV_NOPTS_VALUE && | 719 ts_st->payload_pts == AV_NOPTS_VALUE && |
719 ts_st->payload_dts == AV_NOPTS_VALUE) { | 720 ts_st->payload_dts == AV_NOPTS_VALUE) { |
720 ts_st->payload_dts = pkt->dts; | 721 ts_st->payload_dts = pkt->dts + delay; |
721 ts_st->payload_pts = pkt->pts; | 722 ts_st->payload_pts = pkt->pts + delay; |
722 } | 723 } |
723 if (ts_st->payload_index >= max_payload_size) { | 724 if (ts_st->payload_index >= max_payload_size) { |
724 mpegts_write_pes(s, st, ts_st->payload, ts_st->payload_index, | 725 mpegts_write_pes(s, st, ts_st->payload, ts_st->payload_index, |
725 ts_st->payload_pts, ts_st->payload_dts); | 726 ts_st->payload_pts, ts_st->payload_dts); |
726 ts_st->payload_pts = AV_NOPTS_VALUE; | 727 ts_st->payload_pts = AV_NOPTS_VALUE; |