summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ffmpeg.c5
-rw-r--r--libavformat/mpeg.c10
2 files changed, 9 insertions, 6 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 6af03b264e..62593e9a72 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1249,7 +1249,10 @@ static int output_packet(AVInputStream *ist, int ist_index,
opkt.stream_index= ost->index;
opkt.data= data_buf;
opkt.size= data_size;
- opkt.pts= pkt->pts + input_files_ts_offset[ist->file_index];
+ if(pkt->pts != AV_NOPTS_VALUE)
+ opkt.pts= pkt->pts + input_files_ts_offset[ist->file_index];
+ else
+ opkt.pts= AV_NOPTS_VALUE;
opkt.dts= pkt->dts + input_files_ts_offset[ist->file_index];
opkt.flags= pkt->flags;
diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index 4f8d20dc6a..772a4df30e 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -1029,13 +1029,13 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
and the first pack from the other stream, respectively, may also have
been written before.
So the real data starts at SCR 36000+3*1200. */
- pts += 36000 + 3600;
- dts += 36000 + 3600;
+ if(pts != AV_NOPTS_VALUE) pts += 36000 + 3600;
+ if(dts != AV_NOPTS_VALUE) dts += 36000 + 3600;
}else{
- pts += PRELOAD;
- dts += PRELOAD;
+ if(pts != AV_NOPTS_VALUE) pts += PRELOAD;
+ if(dts != AV_NOPTS_VALUE) 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);
+//av_log(ctx, AV_LOG_DEBUG, "dts:%f pts:%f flags:%d stream:%d nopts:%d\n", dts/90000.0, pts/90000.0, pkt->flags, pkt->stream_index, pts != AV_NOPTS_VALUE);
*stream->next_packet=
pkt_desc= av_mallocz(sizeof(PacketDesc));
pkt_desc->pts= pts;