From patchwork Mon May 28 18:18:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephan Holljes X-Patchwork-Id: 9121 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp2225252jad; Mon, 28 May 2018 11:19:34 -0700 (PDT) X-Google-Smtp-Source: AB8JxZr4+uQIzz4WuM+Pg22JANLDls+G/elyajgPnOXwK/mS6hKJi7HHLRcKDyDq42FKlqv6FaxH X-Received: by 2002:adf:de82:: with SMTP id w2-v6mr12130235wrl.88.1527531574743; Mon, 28 May 2018 11:19:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527531574; cv=none; d=google.com; s=arc-20160816; b=UzvxHpDyuCL8jbrGgP3GDtfT6G/cjlAzUQcs1xV+uSP1newQ/tqDxu/FSgbuZmD3k8 9Pi5/mP/3o6STHEowbiNI2YTOvywdp8BZD6XskHdBlPXQ5849wWCGbrZpgGQDEzcv6Us M2GTWJBozoxeEK+WcAgGKBPIXHtVeIahCthTdvY69aGNNMexiZHp346LG3tvbjDd9Rwh vGO0/mDucHZVaFHoJ0OJ9fgzBLH35mLJaKfz3vydihIeZBlmab3FsbsDsR4pObjt73z1 seyoA2gOLBrfaTbQdWnN2EX2WaU4x32/v9ykaC5M5avDRl2BMoId/ZZW65HXp8uh3tiO 5oLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=fUATDPv7KQVwIBKgcEQVLEibMTiUzpzxGE6Io290PhA=; b=zGPU0Jjo5EqnHqGlw1tS+6KcMWHaLpkMPH+UwXy1jDxzRV6V2+2ZLnZFagROHrQHP8 uTobvIGUeLAr3RcS6+HAld8Jh5XamB22txubBtwdndNEnP2Fl2HMGUqOke4xuP/mcrps mrGAya0QrF3v7AOuau8abtCSXfG23jDSa4b6WgNmt06LehYobZrwNaB1bWVNefVKxSXV s4Ed5pSmqtIX3qePbnOQelFzA/RKtcsGyrfSwjkaukxen8pC5mCzndwUq2csnp3EwDuw UuQ7G530tjuFSdQlNo4TI3t5fGc6SfC/eSWyitJ6TLSzmnN6mvacC/ZTCkrn5XzD1c1g i1MQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@googlemail.com header.s=20161025 header.b=rbCas7+o; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b51-v6si12656644wrb.350.2018.05.28.11.19.34; Mon, 28 May 2018 11:19:34 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@googlemail.com header.s=20161025 header.b=rbCas7+o; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3B8FA689FBB; Mon, 28 May 2018 21:18:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f182.google.com (mail-wr0-f182.google.com [209.85.128.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B65BF6809FF for ; Mon, 28 May 2018 21:18:42 +0300 (EEST) Received: by mail-wr0-f182.google.com with SMTP id d2-v6so6081972wrm.10 for ; Mon, 28 May 2018 11:19:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fWnLnL8x8FqafvoaM2hYJqBIEAyONy+fNgRFDf/slrE=; b=rbCas7+oTpTd/2DLZkYwwxElubjrMcsIaQuj4QY4f4k96NMfGWCpZuBBmqg9Yriqwa kaUXft2RfOSLj3OfOAtYjYQkJPf5WjdqbYuC6Ki8vHzQXUnaSWREPoXmOKcnUg6G9xX6 vydFF4f260U8vdT62FTMuV7VVhzaIamqn3DpZRhZ2JW6k3ErKftYIxIwrXg50BujKp5U h98dBdyVfEeaN8O800n9WiA6oCFS77wpWV8cnUxr6Zt/DaMrHrm5Sv+qvBsSmg+HjL/n s+zFbSeKFBqT7/FQk3hzw4jWF0MrstcbJMbDM/jwjo45vDkICfg/A42cBzcXRALwibeg H78A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=fWnLnL8x8FqafvoaM2hYJqBIEAyONy+fNgRFDf/slrE=; b=Ij2J577gg1OeAt9wlIkP4cc42KR78smSTinUOCS60HxQRp69bYah8/lvoUgr528+NR ypWWxe7CHyZBSOfJTVC2q+8rQIrg93DeWp2yfNPsuI5mec8jCJ4ikOl0LmoczUfmtMye vsTzzWDsvFFicbelzIR9W9qOnzIHk4DP1PPP2cDsX7bj5OtTo/zP+/FBqki3CKKfniHc SprKawORZr0ZfjN36pcy1i5jUMYcoybBqcSl3E4gp/xATADkGijFgG0ZwrCUg/D/Kg7P ZZVe8Iful341um1s7vrpt8Iw1UICEihKcYRj2XrBcE6NcWnuu5k7FvA5OD1nJHsXn9Un VPDg== X-Gm-Message-State: ALKqPwfdxoWL1qfhNTpUpMjuV9jdbzyTn0J0zk6mjRpikH3ZgnwcHjX4 nzgH41/FGA3ZMLvRCfHTRwzaBQ== X-Received: by 2002:adf:bc8f:: with SMTP id g15-v6mr11126181wrh.266.1527531565774; Mon, 28 May 2018 11:19:25 -0700 (PDT) Received: from localhost.localdomain ([46.5.2.0]) by smtp.gmail.com with ESMTPSA id p5-v6sm14649465wre.83.2018.05.28.11.19.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 May 2018 11:19:24 -0700 (PDT) From: Stephan Holljes To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 May 2018 20:18:52 +0200 Message-Id: <20180528181859.12182-2-klaxa1337@googlemail.com> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180528181859.12182-1-klaxa1337@googlemail.com> References: <20180520185404.29836-1-klaxa1337@googlemail.com> <20180528181859.12182-1-klaxa1337@googlemail.com> Subject: [FFmpeg-devel] [PATCH 1/8] ffserver.c: Fix timestamp handling, still creates new clusters for mp4 files, but result is playable X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Stephan Holljes MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Stephan Holljes --- ffserver.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ffserver.c b/ffserver.c index 39e1c32..fc2a1a4 100644 --- a/ffserver.c +++ b/ffserver.c @@ -133,7 +133,7 @@ void *read_thread(void *arg) pkt.pos = -1; // current pts - pts = pkt.pts; //av_rescale_q(pkt.pts, in_stream->time_base, tb); + pts = pkt.pts; // current stream "uptime" now = av_gettime_relative() - start; @@ -200,6 +200,9 @@ void write_segment(struct Client *c) struct Segment *seg; int ret; int pkt_count = 0; + AVRational tb; + tb.num = 1; + tb.den = AV_TIME_BASE; pthread_mutex_lock(&c->buffer_lock); if (av_fifo_size(c->buffer) > 0) { AVFormatContext *fmt_ctx; @@ -249,8 +252,13 @@ void write_segment(struct Client *c) if (ret < 0) break; - pkt.dts = seg->ts[pkt_count]; - pkt.pts = seg->ts[pkt_count+1]; + pkt.dts = av_rescale_q_rnd(seg->ts[pkt_count], tb, + c->ofmt_ctx->streams[pkt.stream_index]->time_base, + AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX); + pkt.pts = av_rescale_q_rnd(seg->ts[pkt_count+1], tb, + c->ofmt_ctx->streams[pkt.stream_index]->time_base, + AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX); + pkt.pos = -1; pkt_count += 2; ret = av_write_frame(c->ofmt_ctx, &pkt); av_packet_unref(&pkt);