From patchwork Mon Mar 19 23:33:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 8050 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp3224272jad; Mon, 19 Mar 2018 16:33:57 -0700 (PDT) X-Google-Smtp-Source: AG47ELvEIbE4LF6DUfud6Z9fFkuyg9M8+Mth2P8nOFP4iMmWAyIM5NAKYOYfFvQYlWq0DkdD67ve X-Received: by 10.223.135.14 with SMTP id a14mr11496254wra.261.1521502436984; Mon, 19 Mar 2018 16:33:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521502436; cv=none; d=google.com; s=arc-20160816; b=sOncMzI7ifp/T4TZQ9sGXgiW9Eat5vgG5vlB2TpJn8aJmoioDmMe+v0ztLo6waoAeb qhFz1+27g7VyxSbcDegMy+r1jOtv8J9oh/fBwap7NEjRd4GXUU2HB9ERsYVyp6miGwqu RgHaH6vApkJXVvtbmgUomlPwldOaJTnplz4ySb9OEOIMCSLiPgcQ5nkMfIgDlnKWKB64 6ybm8wiEfEJWcQMtyvLfTvmXUIcM3H8arqd9DUtpRUUBzAyydgbgdTL+tmwzMijZ8YrY v1WPz+iKuflCzUHbYA1mtbgJP9IuoI0mOaZUeCiGcy+tOCtDs9nL0W172IhCs9MlOK2M D6dQ== 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:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=eAuaRP8afH6aqprr3hMfqmFKcdLYQ7/5breur2rRcog=; b=CKcquSMZOgxj0JpvRjEGwHkPyCKSbY5C/UWx3/x0DRlokQh3m7aQochoQiuH5Kf5Ge gVuwlesmrVQQvkieAgT65vMUAQNB0mPvu72xqBp/Rp0LI3yi6otdK1E8W+oeW0aWDB7x o8rJlVRXfOqsxs78K0D5TOnmMGnb21BMx4CvY3+CJTxFs9Sbqjjt6Zo3hLXdHrFjrKS5 FJ6UprwZyQeT7XHZtu8st8EMzz5Rm6jOvDrvl2jh+3l+QFGziA/G/kbNvw2Fl7XSKrua HVv4oWNtxs+abSiXZPlyQXB0hc4Sy0ft14+Cg0Fr7sERD4h72xCs1uANqZr4QU9knxRE fUDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=R+BSOIRZ; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y27si277491wrd.117.2018.03.19.16.33.56; Mon, 19 Mar 2018 16:33:56 -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=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=R+BSOIRZ; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1FFEC689FF2; Tue, 20 Mar 2018 01:33:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f174.google.com (mail-pf0-f174.google.com [209.85.192.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 58E87689F3E for ; Tue, 20 Mar 2018 01:33:34 +0200 (EET) Received: by mail-pf0-f174.google.com with SMTP id f80so7682547pfa.8 for ; Mon, 19 Mar 2018 16:33:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id; bh=4gZyk34lQebpYGtuxvFihFiDoRoy5xdkarSZDaetWkg=; b=R+BSOIRZ2apHn6/3tKCMPhIw8thSxShKDvSMzkMbvOsaJB2luZfNxCgUEUImYHdj2/ YMSysoQDbMynh+OnLTN5YOwtgN9Mxe3A9OTtQtLsPm5J9muoWQpKEAodsywoJUdKc+OY O2rYVlQhhwXFx1jHph03llW5/6kxfL3TqoWL86QD2ZXKzks51rrJoL7lbikY32OA5fZF ekKZrI/VsoRefKsnpdRAG3N+TIvLA/IHsHW6mG0x+RorTRKnDe3YX7/oADiqgasHeYky f+Supif4ocw45q9k0g3ZuuOBD7RAnzSJ/iGd9nvHAi8wqG0N8hiB12WW6smnUVPgztk/ vbCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=4gZyk34lQebpYGtuxvFihFiDoRoy5xdkarSZDaetWkg=; b=a9N1G44+Zo5zytm/yMqkjbsVYqHXyeENEPwNEm+W5uvqsbAXENWm3aK876eOLCcYxV H28PTS/K7/KDgA5lb7UfaEFp9GnUIanXDoE0im6P+nbnUmNmIYTCk9wJwRrzh+K1Bcex RLERPbIcwW8fDVa2r8Cbyvoq6FOExEL3fLsSCfAm/kStTZJxKyvINy3lr9sx75uSiYa1 1ffdE4S5eOgI8nhC0GH7zwNtsdE6xkdbHpr7xaNdjNlA7z9XysWtDm/xleVfDVatvcgn RdsUmKaAVXS+ATw7E0mfEjiJasiReYHsK2hBIU3nOrCkwug68Wkgyt+cNOhrhQUzoQYi QT2Q== X-Gm-Message-State: AElRT7E1J14yakk+UR1Z+MvdRIaqO4kUZ3td76CfQDW/aIwc02eMBecd 7XnQXvwGCwFzO7J1i1iuIjgR4Qlv X-Received: by 10.98.133.86 with SMTP id u83mr11765977pfd.172.1521502426484; Mon, 19 Mar 2018 16:33:46 -0700 (PDT) Received: from localhost.localdomain (c-69-181-54-242.hsd1.ca.comcast.net. [69.181.54.242]) by smtp.gmail.com with ESMTPSA id n7sm279340pgd.87.2018.03.19.16.33.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 19 Mar 2018 16:33:45 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Mar 2018 16:33:43 -0700 Message-Id: <20180319233343.19909-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 Subject: [FFmpeg-devel] [PATCH] avcodec/mediacodecdec: propagate SAR to h/w frames 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: matthieu.bouron@gmail.com, Aman Gupta MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta Allows consumers who are converting hardware buffers to OpenGL textures to render the frames at the intended display resolution. --- libavcodec/mediacodecdec_common.c | 13 +++++++++++++ libavcodec/mediacodecdec_common.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/libavcodec/mediacodecdec_common.c b/libavcodec/mediacodecdec_common.c index 635ee73486..437bffcd7c 100644 --- a/libavcodec/mediacodecdec_common.c +++ b/libavcodec/mediacodecdec_common.c @@ -205,6 +205,7 @@ static int mediacodec_wrap_hw_buffer(AVCodecContext *avctx, frame->width = avctx->width; frame->height = avctx->height; frame->format = avctx->pix_fmt; + frame->sample_aspect_ratio = avctx->sample_aspect_ratio; if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) { frame->pts = av_rescale_q(info->presentationTimeUs, @@ -414,6 +415,18 @@ static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecConte width = s->crop_right + 1 - s->crop_left; height = s->crop_bottom + 1 - s->crop_top; + AMEDIAFORMAT_GET_INT32(s->display_width, "display-width", 0); + AMEDIAFORMAT_GET_INT32(s->display_height, "display-height", 0); + + if (s->display_width && s->display_height) { + AVRational sar = av_div_q( + (AVRational){ s->display_width, s->display_height }, + (AVRational){ width, height }); + ff_set_sar(avctx, sar); + } else { + ff_set_sar(avctx, (AVRational){0,1}); + } + av_log(avctx, AV_LOG_INFO, "Output crop parameters top=%d bottom=%d left=%d right=%d, " "resulting dimensions width=%d height=%d\n", diff --git a/libavcodec/mediacodecdec_common.h b/libavcodec/mediacodecdec_common.h index 4f3b4f9fa5..023d4c5fa7 100644 --- a/libavcodec/mediacodecdec_common.h +++ b/libavcodec/mediacodecdec_common.h @@ -61,6 +61,8 @@ typedef struct MediaCodecDecContext { int crop_bottom; int crop_left; int crop_right; + int display_width; + int display_height; uint64_t output_buffer_count;