From patchwork Sat Nov 25 16:19:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rostislav Pehlivanov X-Patchwork-Id: 6350 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp3632419jah; Sat, 25 Nov 2017 08:28:00 -0800 (PST) X-Google-Smtp-Source: AGs4zMbGgZoAfKXDnbyJDxpeDhfbiSB+Yoq+47J4AAJO0ERQ9jpoqocosYmAIJSfbuw0Iy8RPIMP X-Received: by 10.223.196.179 with SMTP id m48mr29628277wrf.67.1511627280307; Sat, 25 Nov 2017 08:28:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511627280; cv=none; d=google.com; s=arc-20160816; b=CagdT/IlkJ9MJ0yJYiyYHGSgoTK55hoBn1QDnb1312JyT0/zJ2KbL74qCPnP7tBoaG eK2yARCzfx8wwp9aBymlFTmlZP6TfZbGy1UpLF059Ejuv/2OkWCkAzpDCdYGDvtfQHIB 7LZ9e8g574H3/aSjiWpBVZiSti5eBfpnhYMQpDJ4HBTD1e9KKkUHTVxP1rAoteDjUEhr WhyWW4PhBx2WV1iMNT+lBH4rowW1XzsNUJ9Ww6SZgoPmUF6FrznaTrkWYNYi2sbnkfFy Mwu8Y7fJwKMZwEFS6xj/7SRxg9FmyWKjUJSaRT3UIzx2VqottzYsNUiMz5jz2KXkhfEF C8LA== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=iLuwCgrXYh9tVyG2KrcUfTBB3fQzxttS/u3fihNBAeA=; b=K5jN0XmvesRvqIvQLqGaYzICo1ugKT6ZJuvz6419a8BfyUlgHbdZj/twwZFWHRuCzZ pVotm1cq06Cy1oWBQBxUobJcMLVkX9zxidg3b5YccMlm6z0Nx30lsVKZulRR3j2Oz7wI w0CUbrli829xSnmRIXotYDOapCGXROs0riI2j01JOlRYiReJdV9lYyJgFNjzeDzvi/eN bmSB6NPBwaZ55RwZU1ANnkNtAyM0Wqwk9XARqm1+HZKYHcKwRAVyuEE5lF5zSWbx2NQj BgSkQ/mL4WuIbe65c+P6uWlj/wETNLzuolcBEFrUcRhUKkTpAdyUA5rW/Zu7EVMro4sJ JybA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=VXGALAlc; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id m3si8475477wmc.29.2017.11.25.08.27.59; Sat, 25 Nov 2017 08:28:00 -0800 (PST) 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 header.s=20161025 header.b=VXGALAlc; 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 71C4668A314; Sat, 25 Nov 2017 18:27:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E455689C38 for ; Sat, 25 Nov 2017 18:27:50 +0200 (EET) Received: by mail-wr0-f195.google.com with SMTP id l22so22650870wrc.11 for ; Sat, 25 Nov 2017 08:27:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lRevwd8R1fSfOWPVKTAKFV8wL5Cap0HnBTjei/Il73s=; b=VXGALAlcYMpGtaQ52WAG4/+Y3Ql2iLroi4dt51VG7g+NuEuZ8YLDSkKcDm6uu6cXcS Z70SHbC0cN+4ILthy/zDPSWuqcPi6GCPgqumvz7f2l9ATuNm1LO23XRrFiepRlvCHk97 u3wTHHjMil6DRbbbk4E6XdVz8awcgaidixUthaU5wksZdRybVAq5fAHICE3jqmHFhnEl Md/W2i3dOXx1RPh0M/fSvDm6vrszfOmaw0fqGSSvK69EyvUXPIW2SejOLS08U4UM2VdS t2VVIjXwEJNv3lh3PES9NLY6sustG2sWD0JaOuBAS0QMtdCBVAQOz1uP0uXlOMfnBjL4 ICUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=lRevwd8R1fSfOWPVKTAKFV8wL5Cap0HnBTjei/Il73s=; b=cJ58qLgAB5OPrll9LR4iRleAkvqjz/WiXTPYGXq8BNrvbFU86bFPpwQgb3LM692PMO unwFy1VtemFkFJPY7FdzC/H3EtUEdZa2NUyTS/X/4U20N0WRgZeNV7g7JsZuM8tAHMIV MknxpnQ6JptXuXT9kcqcXYrWpaSEo69HU8tCAyA/YBcuGdfUWskWv907qJ+G90AseXB7 mK//+D/zRyLYRfaaWJXNyKfsgnDYZxVSnIxi45dwPR9TfbtSsdYHncZ06mBvneiINFwu XxnQ5tkul4mRqp+dYp8HlT4m3DHYNl+FSaXadZlY6cC/DjM+WT4bjwjf7Rhwbiq1ko6+ 1vlQ== X-Gm-Message-State: AJaThX7u9IwGdAquLhXluREaI10sLkGhgdRSrsbQjE4Depb//77qL1c6 Ke8EDv+XhAud8dDJ0QMLcPDFKWiH X-Received: by 10.223.186.197 with SMTP id w5mr6037456wrg.201.1511626774233; Sat, 25 Nov 2017 08:19:34 -0800 (PST) Received: from moonbase.pars.ee ([2a00:23c4:7c83:f700:8110:b6b7:54ec:1dae]) by smtp.gmail.com with ESMTPSA id c54sm39872144wra.84.2017.11.25.08.19.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Nov 2017 08:19:33 -0800 (PST) From: Rostislav Pehlivanov To: ffmpeg-devel@ffmpeg.org Date: Sat, 25 Nov 2017 16:19:31 +0000 Message-Id: <20171125161931.13525-1-atomnuker@gmail.com> X-Mailer: git-send-email 2.15.0.417.g466bffb3ac In-Reply-To: <9e209f4a-beb1-960b-9587-e380cc54c918@gmail.com> References: <9e209f4a-beb1-960b-9587-e380cc54c918@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2] error_resilience: remove avpriv_atomic usage 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: Rostislav Pehlivanov MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Rostislav Pehlivanov --- libavcodec/error_resilience.c | 18 +++++++++--------- libavcodec/error_resilience.h | 3 ++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c index 0c7f29d171..abd001ed72 100644 --- a/libavcodec/error_resilience.c +++ b/libavcodec/error_resilience.c @@ -852,20 +852,20 @@ void ff_er_add_slice(ERContext *s, int startx, int starty, mask &= ~VP_START; if (status & (ER_AC_ERROR | ER_AC_END)) { mask &= ~(ER_AC_ERROR | ER_AC_END); - avpriv_atomic_int_add_and_fetch(&s->error_count, start_i - end_i - 1); + atomic_fetch_add(&s->error_count, start_i - end_i - 1); } if (status & (ER_DC_ERROR | ER_DC_END)) { mask &= ~(ER_DC_ERROR | ER_DC_END); - avpriv_atomic_int_add_and_fetch(&s->error_count, start_i - end_i - 1); + atomic_fetch_add(&s->error_count, start_i - end_i - 1); } if (status & (ER_MV_ERROR | ER_MV_END)) { mask &= ~(ER_MV_ERROR | ER_MV_END); - avpriv_atomic_int_add_and_fetch(&s->error_count, start_i - end_i - 1); + atomic_fetch_add(&s->error_count, start_i - end_i - 1); } if (status & ER_MB_ERROR) { s->error_occurred = 1; - avpriv_atomic_int_set(&s->error_count, INT_MAX); + atomic_store(&s->error_count, INT_MAX); } if (mask == ~0x7F) { @@ -878,7 +878,7 @@ void ff_er_add_slice(ERContext *s, int startx, int starty, } if (end_i == s->mb_num) - avpriv_atomic_int_set(&s->error_count, INT_MAX); + atomic_store(&s->error_count, INT_MAX); else { s->error_status_table[end_xy] &= mask; s->error_status_table[end_xy] |= status; @@ -893,7 +893,7 @@ void ff_er_add_slice(ERContext *s, int startx, int starty, prev_status &= ~ VP_START; if (prev_status != (ER_MV_END | ER_DC_END | ER_AC_END)) { s->error_occurred = 1; - avpriv_atomic_int_set(&s->error_count, INT_MAX); + atomic_store(&s->error_count, INT_MAX); } } } @@ -910,10 +910,10 @@ void ff_er_frame_end(ERContext *s) /* We do not support ER of field pictures yet, * though it should not crash if enabled. */ - if (!s->avctx->error_concealment || s->error_count == 0 || + if (!s->avctx->error_concealment || !atomic_load(&s->error_count) || s->avctx->lowres || !er_supported(s) || - s->error_count == 3 * s->mb_width * + atomic_load(&s->error_count) == 3 * s->mb_width * (s->avctx->skip_top + s->avctx->skip_bottom)) { return; } @@ -927,7 +927,7 @@ void ff_er_frame_end(ERContext *s) if ( mb_x == s->mb_width && s->avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO && (FFALIGN(s->avctx->height, 16)&16) - && s->error_count == 3 * s->mb_width * (s->avctx->skip_top + s->avctx->skip_bottom + 1) + && atomic_load(&s->error_count) == 3 * s->mb_width * (s->avctx->skip_top + s->avctx->skip_bottom + 1) ) { av_log(s->avctx, AV_LOG_DEBUG, "ignoring last missing slice\n"); return; diff --git a/libavcodec/error_resilience.h b/libavcodec/error_resilience.h index 27c2008694..664a765659 100644 --- a/libavcodec/error_resilience.h +++ b/libavcodec/error_resilience.h @@ -20,6 +20,7 @@ #define AVCODEC_ERROR_RESILIENCE_H #include +#include #include "avcodec.h" #include "me_cmp.h" @@ -60,7 +61,7 @@ typedef struct ERContext { ptrdiff_t mb_stride; ptrdiff_t b8_stride; - volatile int error_count; + atomic_int error_count; int error_occurred; uint8_t *error_status_table; uint8_t *er_temp_buffer;