Commit c9af9e38 authored by michael's avatar michael

remove wrong 33bit truncation of internal timestamps


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@3554 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent a506d609
...@@ -275,6 +275,8 @@ static int mpeg_mux_init(AVFormatContext *ctx) ...@@ -275,6 +275,8 @@ static int mpeg_mux_init(AVFormatContext *ctx)
goto fail; goto fail;
st->priv_data = stream; st->priv_data = stream;
av_set_pts_info(st, 64, 1, 90000);
switch(st->codec.codec_type) { switch(st->codec.codec_type) {
case CODEC_TYPE_AUDIO: case CODEC_TYPE_AUDIO:
if (st->codec.codec_id == CODEC_ID_AC3) { if (st->codec.codec_id == CODEC_ID_AC3) {
...@@ -1017,15 +1019,15 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) ...@@ -1017,15 +1019,15 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
if(s->is_svcd) { if(s->is_svcd) {
/* offset pts and dts slightly into the future to be able /* offset pts and dts slightly into the future to be able
to do the compatibility fix below.*/ to do the compatibility fix below.*/
pts = (pts + 2) & ((1LL << 33) - 1); pts += 2;
dts = (dts + 2) & ((1LL << 33) - 1); dts += 2;
if (stream->packet_number == 0 && dts == pts) if (stream->packet_number == 0 && dts == pts)
/* For the very first packet we want to force the DTS to be included. /* For the very first packet we want to force the DTS to be included.
This increases compatibility with lots of DVD players. This increases compatibility with lots of DVD players.
Since the MPEG-2 standard mandates that DTS is only written when Since the MPEG-2 standard mandates that DTS is only written when
it is different from PTS we have to move it slightly into the past.*/ it is different from PTS we have to move it slightly into the past.*/
dts = (dts - 2) & ((1LL << 33) - 1); dts -= 2;
} }
if(s->is_vcd) { if(s->is_vcd) {
/* We have to offset the PTS, so that it is consistent with the SCR. /* We have to offset the PTS, so that it is consistent with the SCR.
...@@ -1033,13 +1035,13 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) ...@@ -1033,13 +1035,13 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
and the first pack from the other stream, respectively, may also have and the first pack from the other stream, respectively, may also have
been written before. been written before.
So the real data starts at SCR 36000+3*1200. */ So the real data starts at SCR 36000+3*1200. */
pts = (pts + 36000 + 3600) & ((1LL << 33) - 1); pts += 36000 + 3600;
dts = (dts + 36000 + 3600) & ((1LL << 33) - 1); dts += 36000 + 3600;
}else{ }else{
pts = (pts + PRELOAD) & ((1LL << 33) - 1); pts += PRELOAD;
dts = (dts + PRELOAD) & ((1LL << 33) - 1); dts += PRELOAD;
} }
//av_log(ctx, AV_LOG_DEBUG, "dts:%f pts:%f flags:%d stream:%d\n", dts/90000.0, pts/90000.0, pkt->flags, pkt->stream_index);
*stream->next_packet= *stream->next_packet=
pkt_desc= av_mallocz(sizeof(PacketDesc)); pkt_desc= av_mallocz(sizeof(PacketDesc));
pkt_desc->pts= pts; pkt_desc->pts= pts;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment