From 4bde18f29b47ca39da7fba416c3c912d7c46ad2c Mon Sep 17 00:00:00 2001 From: jstebbins Date: Wed, 17 Dec 2014 15:33:53 +0000 Subject: [PATCH] mux: fix format of ssa preamble 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 | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/libhb/muxavformat.c b/libhb/muxavformat.c index 8186c5bd2..0bc444031 100644 --- a/libhb/muxavformat.c +++ b/libhb/muxavformat.c @@ -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; } -- 2.50.0