]> granicus.if.org Git - handbrake/commitdiff
mux: fix format of ssa preamble
authorjstebbins <jstebbins.hb@gmail.com>
Wed, 17 Dec 2014 15:33:53 +0000 (15:33 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Wed, 17 Dec 2014 15:33:53 +0000 (15:33 +0000)
sprintf decimal specifier was using the system local to insert a ','
where there should have been a '.'

git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/0.10.x@6605 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/muxavformat.c

index 8186c5bd2713a3a30ab2ae12ee6c2423727bbdbc..0bc444031a4cb4124e488e5570349cf01391631d 100644 (file)
@@ -1173,18 +1173,18 @@ static int avformatMux(hb_mux_object_t *m, hb_mux_data_t *track, hb_buffer_t *bu
             {
                 // avformat requires the this additional information
                 // which it parses and then strips away
-                int start_hh, start_mm, stop_hh, stop_mm, layer;
-                float start_ss, stop_ss;
+                int start_hh, start_mm, start_ss, start_ms;
+                int stop_hh, stop_mm, stop_ss, stop_ms, layer;
                 char *ssa;
 
                 start_hh = buf->s.start / (90000 * 60 * 60);
-                start_mm = (buf->s.start / (90000 * 60));
-                start_ss = ((float)buf->s.start / 90000) - start_mm * 60;
-                start_mm %= 60;
+                start_mm = (buf->s.start / (90000 * 60)) % 60;
+                start_ss = (buf->s.start / 90000) % 60;
+                start_ms = (buf->s.start / 900) % 100;
                 stop_hh = buf->s.stop / (90000 * 60 * 60);
-                stop_mm = (buf->s.stop / (90000 * 60));
-                stop_ss = ((float)buf->s.stop / 90000) - stop_mm * 60;
-                stop_mm %= 60;
+                stop_mm = (buf->s.stop / (90000 * 60)) % 60;
+                stop_ss = (buf->s.stop / 90000) % 60;
+                stop_ms = (buf->s.stop / 900) % 100;
 
                 // Skip the read-order field
                 ssa = strchr((char*)buf->data, ',');
@@ -1196,9 +1196,10 @@ static int avformatMux(hb_mux_object_t *m, hb_mux_data_t *track, hb_buffer_t *bu
                 if (ssa != NULL)
                     ssa++;
                 sprintf((char*)sub_out,
-                    "Dialogue: %d,%d:%02d:%05.2f,%d:%02d:%05.2f,%s", layer,
-                    start_hh, start_mm, start_ss,
-                    stop_hh, stop_mm, stop_ss, ssa);
+                    "Dialogue: %d,%d:%02d:%02d.%02d,%d:%02d:%02d.%02d,%s",
+                    layer,
+                    start_hh, start_mm, start_ss, start_ms,
+                    stop_hh, stop_mm, stop_ss, stop_ms, ssa);
                 pkt.data = sub_out;
                 pkt.size = strlen((char*)sub_out) + 1;
             }