From patchwork Sat Oct 22 20:33:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 1112 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.133 with SMTP id o127csp1581646vsd; Sat, 22 Oct 2016 13:48:48 -0700 (PDT) X-Received: by 10.194.110.73 with SMTP id hy9mr5599839wjb.139.1477169328897; Sat, 22 Oct 2016 13:48:48 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id z1si8610974wjk.104.2016.10.22.13.48.48; Sat, 22 Oct 2016 13:48:48 -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=@gmail.com; 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=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DFA65689C3F; Sat, 22 Oct 2016 23:48:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ua0-f196.google.com (mail-ua0-f196.google.com [209.85.217.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 55C66689BE9 for ; Sat, 22 Oct 2016 23:48:36 +0300 (EEST) Received: by mail-ua0-f196.google.com with SMTP id u68so912231uau.1 for ; Sat, 22 Oct 2016 13:48:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=7b0xbAIYpxBjJgHhjSmZboanPkB2vzMYaxsRd12LZRM=; b=j0nAkHtTzd4K0BhgMKoJFa2tDGOyaT6CsO1gpM6rhRaOFS3WQ0x1jCPcr6gDBpd+EH yeAIve3tHMwSCo3U5jUAvDu8PuwO7SdalQbockBvm7ZK/QYeE/OpjrIvgD9fEUVr48ng eGi7C6cGRpLzPpb03N0CUMiIU5MQIeIE16T4xERTPxpHamz0B5GyOcXLESDoA1EcSvuQ CIU1epbhhasLPGWDyyLat8g4PTf0YteUKFJChs+pqV5nTNincMVsPvWu8dzrSLe/bW/r EJCi25864cAaSua0Gpcu+v/ulwNtRwVevUo6NqohIuIJXltsfLmNjcUh5pfqYi5G05A2 b/Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=7b0xbAIYpxBjJgHhjSmZboanPkB2vzMYaxsRd12LZRM=; b=QPVmPWUnW/b818qfPEJNS7ujakTyFLIsa98vS0WoZThwfYkYjbV965tF7DiEmU/OY2 LDCVvZeLzUmF9k9IVDNon/HpUL05QtmGTxJcQguD3LguqAR+I5y4zE7a/HEZyZ+1J3dM BULR7FYITWR6cnAsLloFnGYQf/03wTjE7WmLtoqLSOtMLXLGm0EoSZXcVB3ENpYdVKWj nhVDuSu0XEwst6IWCZu/5oVipR9jKPzvzg5wqaXTRuZTcelMvkcQ69n1JaFB+42oWj12 1DeIybbgDkgC0k0hte5p/gz9WqX9E/3MY3wdnrzLkWM/NKQCywYRsf2ihaUtA/cXWGiQ rdOw== X-Gm-Message-State: ABUngvfJVk18A4ONNDozxjHROw6oJd7jx+5vj+4duIwi7/uAfIEXq6rD30r5QJ5OKfHBWA== X-Received: by 10.176.5.3 with SMTP id 3mr3253150uax.71.1477168480884; Sat, 22 Oct 2016 13:34:40 -0700 (PDT) Received: from localhost.localdomain ([181.22.27.68]) by smtp.gmail.com with ESMTPSA id 15sm1996765uai.14.2016.10.22.13.34.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 22 Oct 2016 13:34:40 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 22 Oct 2016 17:33:30 -0300 Message-Id: <20161022203330.5416-1-jamrial@gmail.com> X-Mailer: git-send-email 2.9.1 Subject: [FFmpeg-devel] [PATCH] avformat/matroskaenc: use display aspect ratio for DisplayWidth and DisplayHeight when possible 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This avoids potential rounding errors and guarantees the source aspect ratio is preserved. Keep writing pixel values when Stereo 3D Mode is enabled and for WebM, as the format doesn't support anything else. This fixes ticket #5743, implementing the suggestion from ticket #5903. Signed-off-by: James Almer --- libavformat/matroskaenc.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 03d5326..5790fe1 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1193,8 +1193,19 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, return AVERROR(EINVAL); } if (d_width != par->width || display_width_div != 1 || display_height_div != 1) { - put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYWIDTH , d_width / display_width_div); - put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYHEIGHT, par->height / display_height_div); + if (mkv->mode == MODE_WEBM || display_width_div != 1 || display_height_div != 1) { + put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYWIDTH , d_width / display_width_div); + put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYHEIGHT, par->height / display_height_div); + } else { + AVRational display_aspect_ratio; + av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den, + par->width * (int64_t)st->sample_aspect_ratio.num, + par->height * (int64_t)st->sample_aspect_ratio.den, + 1024 * 1024); + put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYWIDTH, display_aspect_ratio.num); + put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYHEIGHT, display_aspect_ratio.den); + put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYUNIT, MATROSKA_VIDEO_DISPLAYUNIT_DAR); + } } } else if (display_width_div != 1 || display_height_div != 1) { put_ebml_uint(pb, MATROSKA_ID_VIDEODISPLAYWIDTH , par->width / display_width_div);