From patchwork Tue Sep 3 01:02:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 14876 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id BD7AA44A4A6 for ; Tue, 3 Sep 2019 04:10:32 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A3B38688052; Tue, 3 Sep 2019 04:10:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f193.google.com (mail-oi1-f193.google.com [209.85.167.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E0AD688050 for ; Tue, 3 Sep 2019 04:10:26 +0300 (EEST) Received: by mail-oi1-f193.google.com with SMTP id h4so8117151oih.8 for ; Mon, 02 Sep 2019 18:10:26 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=+8lthg+BtGy+iTe87Tr3tuRgo8Sd1BxoF2tX9nG3SQI=; b=qnk6pkvw0FVsX0gmpmzLCCwCayP/SHCcnfIbL2v/c245VzberYBDt4S1Qgb+cV/1u3 itq94bDjEgLgULl235+bUEQ4p7tdEeeibORcZxE+zTZ/IXgF3uIosGrge3smCEFozdEj 0CACzc0WNqCJv8H1AnoGVs5TvCV1xHd+ZY3dZr1GLKpCB8+dLYmjMo1qnFyiOirX/NJO t7RcnIiYtbYg5C5rcgPBHciI/MtIq+hm03G+iEPsMixtv24cq3tPXChAC7qPUT/fO5Kx F4LFAx9EIO+K2WWBPDzXlDVohqPjxzWxCPSq5+emGq3g8Cx+1e/eEHXZopwtaygxyl9U h7lg== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=+8lthg+BtGy+iTe87Tr3tuRgo8Sd1BxoF2tX9nG3SQI=; b=VA1af8+cmNG/AOfSbvWibudZ2QDgPRww4nPPKZenEIoBb3jzmlYPRwDcxwUD/mKzw8 nmBVIEFIuzaSZQK4tw0OZsvhBpcuCyORpYf5julGWIgeq5HkZqk4WvnAsVtDwENHO9oa yDY3FZtKTFYUbpuN7xpodGM0Ju4nttyHOFbLxC/CDrX788ax08m3Bdp9GzwXG8WB9yNS VC4BexOuAxd0NVIgut9R/3+z/fb+B6wJ05IH7YNohEz8JzrkOK/iWtrtyUE95Fvz0nsC Zaf7tUURZ8+6qOnMA8vimga74eV8D8+70oEU578BKlcVQcFTgcmGa7WZvqP1q9I1F0Tz c8oQ== X-Gm-Message-State: APjAAAUwmyHWownHB8PSyNEyVpA52oGw5cuxg2BNGfTljloaAtYzUBMO 2SkPK5n9eMYCvOuR+ZmlSIw2RV2nhYU= X-Google-Smtp-Source: APXvYqxwB9x98lA0t7j3Bwd26rO0CbrC/4kIt6Ete3J+FzNona5/II4pWkSbcFFybLjGHyOlzTpbiw== X-Received: by 2002:aca:3015:: with SMTP id w21mr20004798oiw.105.1567472578236; Mon, 02 Sep 2019 18:02:58 -0700 (PDT) Received: from tmm1-imac.lan (ip184-189-221-177.sb.sd.cox.net. [184.189.221.177]) by smtp.gmail.com with ESMTPSA id a21sm4299633oie.9.2019.09.02.18.02.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 02 Sep 2019 18:02:57 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Mon, 2 Sep 2019 18:02:11 -0700 Message-Id: <20190903010230.96236-7-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190903010230.96236-1-ffmpeg@tmm1.net> References: <20190903010230.96236-1-ffmpeg@tmm1.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/25] avcodec/v4l2_buffers: Add handling for NV21 and YUV420P 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: lorusak@gmail.com, Aman Gupta , jorge.ramirez.ortiz@gmail.com, Aman Gupta Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Dave Stevenson The single planar support was for NV12 only. Add NV21 and YUV420P support. Signed-off-by: Aman Gupta --- libavcodec/v4l2_buffers.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c index 17228fe36d..e7234d3ca7 100644 --- a/libavcodec/v4l2_buffers.c +++ b/libavcodec/v4l2_buffers.c @@ -366,11 +366,20 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf) /* 1.1 fixup special cases */ switch (avbuf->context->av_pix_fmt) { case AV_PIX_FMT_NV12: + case AV_PIX_FMT_NV21: if (avbuf->num_planes > 1) break; frame->linesize[1] = avbuf->plane_info[0].bytesperline; frame->data[1] = frame->buf[0]->data + avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height; break; + case AV_PIX_FMT_YUV420P: + if (avbuf->num_planes > 1) + break; + frame->linesize[1] = avbuf->plane_info[0].bytesperline >> 1; + frame->linesize[2] = avbuf->plane_info[0].bytesperline >> 1; + frame->data[1] = frame->buf[0]->data + avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height; + frame->data[2] = frame->data[1] + ((avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height) >> 2); + break; default: break; }