From patchwork Wed Mar 22 23:34:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 3067 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.50.79 with SMTP id y76csp543537vsy; Wed, 22 Mar 2017 16:35:01 -0700 (PDT) X-Received: by 10.223.138.250 with SMTP id z55mr41375752wrz.130.1490225701797; Wed, 22 Mar 2017 16:35:01 -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 l2si4353654wrb.253.2017.03.22.16.35.01; Wed, 22 Mar 2017 16:35:01 -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 sp=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 A80C96883B0; Thu, 23 Mar 2017 01:34:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C4AEB6805A7 for ; Thu, 23 Mar 2017 01:34:31 +0200 (EET) Received: by mail-qt0-f193.google.com with SMTP id n37so27320208qtb.3 for ; Wed, 22 Mar 2017 16:34:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=YHF563/63CtmLMuUhE2a3Hu4u89cIE6CADKpQVeMSG0=; b=DwbZCOXwoIgiNRcmUeVjiCJQiy7ZrMdJnFWYLbZ7rElwGudeBE60u8FUFb1w/r5CEO UZ9j3lNKtk4Cq26oeqxDoXPAMwurj003tT4NWfNWsOds9sV06o3r3faFjipKYfTScdwi xc1p8rrkibzcaT2DgVvfWFJu5d8efAYyeaMv4SKFRPK471n7bjjlogUfqeGoCtjLgHv0 xlxPT05x2NH6YPxHEC3Hp/frasXAmwBceuRW2mlwAElKE3ehNa8q2fMdQEPEiDRpeIEX EIFSq4P83OqKohvYYdT5KmDc4IS3uByDSR1zuA9kTpZYLLttCNeAobwInC5DEm7rKArV Ambg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=YHF563/63CtmLMuUhE2a3Hu4u89cIE6CADKpQVeMSG0=; b=i5h/hEv4q1BejlHq/7lsf9ufXuEeHvuk7GNuhwU1t/WBO5ve7f6xTD4P80EKg9BjyX 5uRA31itFdjuaZSyNC79IYzBVxCanA7/Vf8likihm4QkiKWQcc/xCrnxCRVw04VxCw9B QHAVV3l1cF5ixJm1Tbxo9GqTXv1IYUv6gKcLw3P5IMrOGpjjoWsEw0fCc1MUNe6s0Fal Lv2A5PLDPz6nAbyG3TEPFPceAGT9BNLMykv6yewAfiG3Aw2K7koNI76d4Y1/uPVM66wN JxkJrRrBgjtXRlHP12X2p0C0GurnIxK3K1rqBAbSdzzfAXcvwAWuT6948NJf7MQWMSxg JUKw== X-Gm-Message-State: AFeK/H1eWtYqjUE8sPXQ0qUuNob1irK4xPMAcSyYIXHYGD1sWk7aVJZ7BaIRdDjDPrOI4g== X-Received: by 10.200.3.214 with SMTP id z22mr43211401qtg.3.1490225689398; Wed, 22 Mar 2017 16:34:49 -0700 (PDT) Received: from localhost.localdomain ([181.231.62.139]) by smtp.gmail.com with ESMTPSA id w55sm2055133qtw.9.2017.03.22.16.34.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 22 Mar 2017 16:34:49 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Mar 2017 20:34:06 -0300 Message-Id: <20170322233412.6952-2-jamrial@gmail.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170322233412.6952-1-jamrial@gmail.com> References: <20170322233412.6952-1-jamrial@gmail.com> Subject: [FFmpeg-devel] [PATCH 1/7] avcodec/mediacodec: convert to stdatomic 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" Signed-off-by: James Almer --- Untested. libavcodec/mediacodec.c | 5 ++--- libavcodec/mediacodecdec.c | 1 - libavcodec/mediacodecdec_common.c | 14 ++++++-------- libavcodec/mediacodecdec_common.h | 5 +++-- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/libavcodec/mediacodec.c b/libavcodec/mediacodec.c index 4ad5921bc2..91f725621d 100644 --- a/libavcodec/mediacodec.c +++ b/libavcodec/mediacodec.c @@ -31,7 +31,6 @@ #include #include "libavcodec/avcodec.h" -#include "libavutil/atomic.h" #include "libavutil/mem.h" #include "ffjni.h" @@ -90,9 +89,9 @@ void av_mediacodec_default_free(AVCodecContext *avctx) int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render) { MediaCodecDecContext *ctx = buffer->ctx; - int released = avpriv_atomic_int_add_and_fetch(&buffer->released, 1); + atomic_int released = atomic_fetch_add(&buffer->released, 1); - if (released == 1) { + if (!released) { return ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, render); } diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c index 2e645caafd..3ada3fa698 100644 --- a/libavcodec/mediacodecdec.c +++ b/libavcodec/mediacodecdec.c @@ -29,7 +29,6 @@ #include "libavutil/opt.h" #include "libavutil/intreadwrite.h" #include "libavutil/pixfmt.h" -#include "libavutil/atomic.h" #include "avcodec.h" #include "h264_parse.h" diff --git a/libavcodec/mediacodecdec_common.c b/libavcodec/mediacodecdec_common.c index dfc7f5514a..87f032876d 100644 --- a/libavcodec/mediacodecdec_common.c +++ b/libavcodec/mediacodecdec_common.c @@ -23,7 +23,6 @@ #include #include -#include "libavutil/atomic.h" #include "libavutil/common.h" #include "libavutil/mem.h" #include "libavutil/log.h" @@ -143,7 +142,7 @@ static enum AVPixelFormat mcdec_map_color_format(AVCodecContext *avctx, static void ff_mediacodec_dec_ref(MediaCodecDecContext *s) { - avpriv_atomic_int_add_and_fetch(&s->refcount, 1); + atomic_fetch_add(&s->refcount, 1); } static void ff_mediacodec_dec_unref(MediaCodecDecContext *s) @@ -151,7 +150,7 @@ static void ff_mediacodec_dec_unref(MediaCodecDecContext *s) if (!s) return; - if (!avpriv_atomic_int_add_and_fetch(&s->refcount, -1)) { + if (atomic_fetch_sub(&s->refcount, 1) == 1) { if (s->codec) { ff_AMediaCodec_delete(s->codec); s->codec = NULL; @@ -176,9 +175,8 @@ static void mediacodec_buffer_release(void *opaque, uint8_t *data) { AVMediaCodecBuffer *buffer = opaque; MediaCodecDecContext *ctx = buffer->ctx; - int released = avpriv_atomic_int_get(&buffer->released); - if (!released) { + if (!atomic_load(&buffer->released)) { ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, 0); } @@ -221,7 +219,7 @@ FF_ENABLE_DEPRECATION_WARNINGS goto fail; } - buffer->released = 0; + atomic_init(&buffer->released, 0); frame->buf[0] = av_buffer_create(NULL, 0, @@ -465,7 +463,7 @@ int ff_mediacodec_dec_init(AVCodecContext *avctx, MediaCodecDecContext *s, AV_PIX_FMT_NONE, }; - s->refcount = 1; + atomic_init(&s->refcount, 1); pix_fmt = ff_get_format(avctx, pix_fmts); if (pix_fmt == AV_PIX_FMT_MEDIACODEC) { @@ -725,7 +723,7 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s, int ff_mediacodec_dec_flush(AVCodecContext *avctx, MediaCodecDecContext *s) { - if (!s->surface || avpriv_atomic_int_get(&s->refcount) == 1) { + if (!s->surface || atomic_load(&s->refcount) == 1) { int ret; /* No frames (holding a reference to the codec) are retained by the diff --git a/libavcodec/mediacodecdec_common.h b/libavcodec/mediacodecdec_common.h index c00c2e89f3..10f38277b5 100644 --- a/libavcodec/mediacodecdec_common.h +++ b/libavcodec/mediacodecdec_common.h @@ -24,6 +24,7 @@ #define AVCODEC_MEDIACODECDEC_COMMON_H #include +#include #include #include "libavutil/frame.h" @@ -34,7 +35,7 @@ typedef struct MediaCodecDecContext { - volatile int refcount; + atomic_int refcount; char *codec_name; @@ -88,7 +89,7 @@ typedef struct MediaCodecBuffer { MediaCodecDecContext *ctx; ssize_t index; int64_t pts; - volatile int released; + atomic_int released; } MediaCodecBuffer;