From: zotan via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: ffmpeg-devel@ffmpeg.org
Cc: zotan <code@ffmpeg.org>
Subject: [FFmpeg-devel] [PR] avformat/dashenc: fix SegmentTemplate timescale with use_timeline 0 (PR #21481)
Date: Thu, 15 Jan 2026 22:55:46 -0000
Message-ID: <176851774696.25.1613431023617096194@4457048688e7> (raw)
PR #21481 opened by zotan
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21481
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21481.patch
The DASH specification stipulates that "All Representations shall have equal timescale values in all @timescale attributes and 'tkhd' timescale fields in Initialization Segments".
This commit makes sure ffmpeg implements this behavior.
This fixes https://trac.ffmpeg.org/ticket/10134
>From bddd0b670aa4383ce868257775b053e2bea8751d Mon Sep 17 00:00:00 2001
From: Laura Hausmann <laura@hausmann.dev>
Date: Thu, 15 Jan 2026 23:37:12 +0100
Subject: [PATCH] avformat/dashenc: fix SegmentTemplate timescale with
use_timeline 0
The DASH specification stipulates that "All Representations shall have equal timescale values in all @timescale attributes and 'tkhd' timescale fields in Initialization Segments".
This commit makes sure ffmpeg implements this behavior.
---
libavformat/dashenc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index da7725fc3f..425d489460 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -518,10 +518,10 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, AVFormatCont
get_start_index_number(os, c, &start_index, &start_number);
if (c->use_template) {
- int timescale = c->use_timeline ? os->ctx->streams[0]->time_base.den : AV_TIME_BASE;
+ int timescale = os->ctx->streams[0]->time_base.den;
avio_printf(out, "\t\t\t\t<SegmentTemplate timescale=\"%d\" ", timescale);
if (!c->use_timeline) {
- avio_printf(out, "duration=\"%"PRId64"\" ", os->seg_duration);
+ avio_printf(out, "duration=\"%"PRId64"\" ", os->seg_duration / AV_TIME_BASE * timescale);
if (c->streaming && os->availability_time_offset)
avio_printf(out, "availabilityTimeOffset=\"%.3f\" ",
os->availability_time_offset);
--
2.52.0
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
reply other threads:[~2026-01-15 22:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=176851774696.25.1613431023617096194@4457048688e7 \
--to=ffmpeg-devel@ffmpeg.org \
--cc=code@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git