+ int64_t metadata_duration = get_metadata_duration(s);
+
+ if (s->duration > 0) {
+ int64_t scaledDuration = av_rescale(s->duration, 1000, AV_TIME_BASE);
+ put_ebml_float(pb, MATROSKA_ID_DURATION, scaledDuration);
+ av_log(s, AV_LOG_DEBUG, "Write early duration from recording time = %" PRIu64 "\n", scaledDuration);
+ } else if (metadata_duration > 0) {
+ int64_t scaledDuration = av_rescale(metadata_duration, 1000, AV_TIME_BASE);
+ put_ebml_float(pb, MATROSKA_ID_DURATION, scaledDuration);
+ av_log(s, AV_LOG_DEBUG, "Write early duration from metadata = %" PRIu64 "\n", scaledDuration);
+ } else {
+ put_ebml_void(pb, 11); // assumes double-precision float to be written
+ }