mpegpsenc: Fix SCR handling for DVD
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 4 Jan 2013 18:50:48 +0000 (19:50 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 4 Jan 2013 19:58:59 +0000 (20:58 +0100)
This makes the initial SCR equal 0

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
ffmpeg_opt.c
libavformat/mpegenc.c

index c01ef42..63e3de9 100644 (file)
@@ -1922,8 +1922,6 @@ static int opt_target(void *optctx, const char *opt, const char *arg)
         av_dict_set(&o->g->codec_opts, "b:a", "448000", 0);
         parse_option(o, "ar", "48000", options);
 
-        av_dict_set(&o->g->format_opts, "avoid_negative_ts", "1", 0);
-
     } else if (!strncmp(arg, "dv", 2)) {
 
         parse_option(o, "f", "dv", options);
index 5d2757a..ef8d762 100644 (file)
@@ -1062,7 +1062,9 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
     dts= pkt->dts;
 
     if (s->last_scr == AV_NOPTS_VALUE) {
-        if (dts == AV_NOPTS_VALUE ) {
+        if (dts == AV_NOPTS_VALUE || s->is_dvd) {
+            if (dts != AV_NOPTS_VALUE)
+                s->preload += av_rescale(-dts, AV_TIME_BASE, 90000);
             s->last_scr = 0;
         } else {
             s->last_scr = dts + preload;