summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libhb/muxavformat.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/libhb/muxavformat.c b/libhb/muxavformat.c
index a494bf0ef..668957e47 100644
--- a/libhb/muxavformat.c
+++ b/libhb/muxavformat.c
@@ -1158,18 +1158,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, ',');
@@ -1181,9 +1181,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;
}