From patchwork Tue Sep 3 01:02:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 14857 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 EC525449F2B for ; Tue, 3 Sep 2019 04:03:12 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB767687FAD; Tue, 3 Sep 2019 04:03:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f195.google.com (mail-oi1-f195.google.com [209.85.167.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 64208680D42 for ; Tue, 3 Sep 2019 04:03:10 +0300 (EEST) Received: by mail-oi1-f195.google.com with SMTP id l2so11565714oil.0 for ; Mon, 02 Sep 2019 18:03:10 -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=VMHrEJoHUYktCp9fkqbcjsggSu4MAH1ahU2jR3Z6tlo=; b=ktJd33mPwV0oS1f0dUXzzHNoft4Myj5HMVD6xr0s6qlB0pM6cW5PI/PUHmahSv/ocV u9/CYPn84xNqBUTtYKJ/WW6tuv1q8PHo+3RXRfDpek5TtCrOefqrZYEnTIELO8Ly1+WN HFqk8wkxo3sl6Yf5S2ADjOdLJ+JqJNfbzuzPXfuzOjP3k06GWBku4ogkN8+97gkAYEPJ ZLerAu0yd58qztXc5NJn/NdOUflptC20aK1rbiYNXzduQb80i3Ym2cpCLcGSGy+7X3a5 6Vs/SHvKIWfDo53f2JnKAbKB4DSZuqsixuvVQlEoXhxwLohxygPBqjq2G83oA2Dk1E2a 8qAw== 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=VMHrEJoHUYktCp9fkqbcjsggSu4MAH1ahU2jR3Z6tlo=; b=mu0ArSVyYGDFMJpIDJZ/NmXn7qZKbdBFwonYdeRl4IjuhTsn3jqjoMf8i7RbiAfmbG VIweqq/ByqRMlpF+Ax8JxoDCTvrx0808W+91SkqACo4FIAn6M0tgi+xNWYCVSv5lA8Nm yuID0zu5Nd9Pl1oMhSWIt1Z5jChIMSay4S6gTixHLO+fXLiT25lsaq5v3NfB21Dp6AaW Z/jRRbpnV4J+g9AEhie4pgblydrzEZOhtNtvAzk6h5FXxqfxYrad5zwFyG/ZjylrEV2J U/6S+mS90KXxTyaspgoy/5pQbh2dPoIO3TlvYb6/a4KuwYNtJSCJdXi2dcyoHkDrkBZp IAvQ== X-Gm-Message-State: APjAAAUI/AEdFJtgYFY/DAae42O04A7LkHxYnZ5aWnE/6hLmOu2T3Tpn Kwsu6/vqdegQfQYeoo7wROJI0h02Ryc= X-Google-Smtp-Source: APXvYqxiG6Hiq/UAlNxIdXU+aH1alwE4T1uWVswVUOUK+WA/+xhpXmnm27jJr9Sb4HpM+T4FCtXdoA== X-Received: by 2002:aca:c697:: with SMTP id w145mr12008407oif.61.1567472588739; Mon, 02 Sep 2019 18:03:08 -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.03.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 02 Sep 2019 18:03:08 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Mon, 2 Sep 2019 18:02:18 -0700 Message-Id: <20190903010230.96236-14-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 13/25] avcodec/v4l2_buffers: split out v4l2_buf_increase_ref helper 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: Lukas Rusak Signed-off-by: Aman Gupta --- libavcodec/v4l2_buffers.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c index 721e01420b..f90c50db80 100644 --- a/libavcodec/v4l2_buffers.c +++ b/libavcodec/v4l2_buffers.c @@ -228,27 +228,17 @@ static void v4l2_free_buffer(void *opaque, uint8_t *unused) } } -static int v4l2_buf_to_bufref(V4L2Buffer *in, int plane, AVBufferRef **buf) +static int v4l2_buf_increase_ref(V4L2Buffer *in) { V4L2m2mContext *s = buf_to_m2mctx(in); - if (plane >= in->num_planes) - return AVERROR(EINVAL); - - /* even though most encoders return 0 in data_offset encoding vp8 does require this value */ - *buf = av_buffer_create((char *)in->plane_info[plane].mm_addr + in->planes[plane].data_offset, - in->plane_info[plane].length, v4l2_free_buffer, in, 0); - if (!*buf) - return AVERROR(ENOMEM); - if (in->context_ref) atomic_fetch_add(&in->context_refcount, 1); else { in->context_ref = av_buffer_ref(s->self_ref); - if (!in->context_ref) { - av_buffer_unref(buf); + if (!in->context_ref) return AVERROR(ENOMEM); - } + in->context_refcount = 1; } @@ -258,6 +248,26 @@ static int v4l2_buf_to_bufref(V4L2Buffer *in, int plane, AVBufferRef **buf) return 0; } +static int v4l2_buf_to_bufref(V4L2Buffer *in, int plane, AVBufferRef **buf) +{ + int ret; + + if (plane >= in->num_planes) + return AVERROR(EINVAL); + + /* even though most encoders return 0 in data_offset encoding vp8 does require this value */ + *buf = av_buffer_create((char *)in->plane_info[plane].mm_addr + in->planes[plane].data_offset, + in->plane_info[plane].length, v4l2_free_buffer, in, 0); + if (!*buf) + return AVERROR(ENOMEM); + + ret = v4l2_buf_increase_ref(in); + if (ret) + av_buffer_unref(buf); + + return ret; +} + static int v4l2_bufref_to_buf(V4L2Buffer *out, int plane, const uint8_t* data, int size, int offset, AVBufferRef* bref) { unsigned int bytesused, length;