From patchwork Mon Jun 1 16:04:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 20059 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 B0AB844BCF6 for ; Mon, 1 Jun 2020 19:05:00 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8B270687ECE; Mon, 1 Jun 2020 19:05:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f194.google.com (mail-qk1-f194.google.com [209.85.222.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49DC968034C for ; Mon, 1 Jun 2020 19:04:54 +0300 (EEST) Received: by mail-qk1-f194.google.com with SMTP id w1so9538581qkw.5 for ; Mon, 01 Jun 2020 09:04:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=3drotSVKgjX+xSWfz35lDbfVCPHcxdLn/451f721fE4=; b=PelTuZHj69t1uO3QTWQOI7EeCXflnMrKRvHBtWM1HLtZUOzboQAPm6BAefa/AExdZT OISwbXyIJzNVcrkIfTsj7fJhJz6yc4BPHDq4Z7Fh0/ZCPbrJOtJ5rJF7tG5AJfIkfsLY kp0LH384X5Tvg5DndUJEz8KpyEu2L2hFcBUBtaY6X+PjBSEtHLzFlckGCkIwtWqLWMBC UKXjbeF37OequeOtGruZAPYUOacz18LZejC9FLp7zWcIICfMEyw8fCaIy8hOfWwm9nLV PwdloYK92i3+Dg3C9WPfLqbHUOY098Y8K4v0Zwg8Gt3NOfulKupPgSCUqepAS3jFdPHk bAvA== 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:mime-version :content-transfer-encoding; bh=3drotSVKgjX+xSWfz35lDbfVCPHcxdLn/451f721fE4=; b=GTdbZryS4PcnMCJjcrya+kfV/QAxNTPXWtKQKf8bQ5lxmrCpxOEIpxAzPCOIjAF79I C5xRFCo8fqqID2yc5pX5QC3ElC1ZMN0HJkyn0Wfvz+L8TrGi7DOdXo8ZLpEYqqub+c/f byvDJuQ6pp/Fe+UotWj5pVS1egHHbomBP0wS4H/2KAWBF+cQNdX0yQU9Yr7XyqY7G8AP cPw7AAs77Q3e+bd3Or+MhS31GgMinTTuQr4b0DSxLZNVbfyR3c0pmpPcCUY7Vw5h4sCs /CAFXFIeLX911//1BFeQxX+UaS4JusEdGNPmHMaHnIXPja/hsOtTLscNvEvR4Dz7hFA9 xvSw== X-Gm-Message-State: AOAM531xiTg2iMbUxUjNgA3nAPdAdiV1MqHv+fFyfVocO9fJzVYmQCNQ JKKeKFIudbW3FD1XU1BuyF8x0p0T X-Google-Smtp-Source: ABdhPJyEY4RwS9TZSrcv59jLlUYkWWzBoHhBpIrqLRcYN1vZzYkU1aAsN1UoqvcVmq3jo4VeCUUccw== X-Received: by 2002:a05:620a:526:: with SMTP id h6mr20280558qkh.338.1591027492592; Mon, 01 Jun 2020 09:04:52 -0700 (PDT) Received: from localhost.localdomain ([181.23.72.208]) by smtp.gmail.com with ESMTPSA id w204sm15270248qka.41.2020.06.01.09.04.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2020 09:04:51 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jun 2020 13:04:35 -0300 Message-Id: <20200601160435.9689-1-jamrial@gmail.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avutil/buffer: separate public and internal flags inside AVBuffers 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" It's better to not mix user provided flags and internal flags set by AVBufferRef helper functions. Signed-off-by: James Almer --- libavutil/buffer.c | 7 +++---- libavutil/buffer_internal.h | 13 +++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavutil/buffer.c b/libavutil/buffer.c index 6d9cb7428e..7ff6adc2ec 100644 --- a/libavutil/buffer.c +++ b/libavutil/buffer.c @@ -44,8 +44,7 @@ AVBufferRef *av_buffer_create(uint8_t *data, int size, atomic_init(&buf->refcount, 1); - if (flags & AV_BUFFER_FLAG_READONLY) - buf->flags |= BUFFER_FLAG_READONLY; + buf->flags = flags; ref = av_mallocz(sizeof(*ref)); if (!ref) { @@ -185,14 +184,14 @@ int av_buffer_realloc(AVBufferRef **pbuf, int size) return AVERROR(ENOMEM); } - buf->buffer->flags |= BUFFER_FLAG_REALLOCATABLE; + buf->buffer->flags_internal |= BUFFER_FLAG_REALLOCATABLE; *pbuf = buf; return 0; } else if (buf->size == size) return 0; - if (!(buf->buffer->flags & BUFFER_FLAG_REALLOCATABLE) || + if (!(buf->buffer->flags_internal & BUFFER_FLAG_REALLOCATABLE) || !av_buffer_is_writable(buf) || buf->data != buf->buffer->data) { /* cannot realloc, allocate a new reallocable buffer and copy data */ AVBufferRef *new = NULL; diff --git a/libavutil/buffer_internal.h b/libavutil/buffer_internal.h index 54b67047e5..70d2615a06 100644 --- a/libavutil/buffer_internal.h +++ b/libavutil/buffer_internal.h @@ -25,14 +25,10 @@ #include "buffer.h" #include "thread.h" -/** - * The buffer is always treated as read-only. - */ -#define BUFFER_FLAG_READONLY (1 << 0) /** * The buffer was av_realloc()ed, so it is reallocatable. */ -#define BUFFER_FLAG_REALLOCATABLE (1 << 1) +#define BUFFER_FLAG_REALLOCATABLE (1 << 0) struct AVBuffer { uint8_t *data; /**< data described by this buffer */ @@ -54,9 +50,14 @@ struct AVBuffer { void *opaque; /** - * A combination of BUFFER_FLAG_* + * A combination of AV_BUFFER_FLAG_* */ int flags; + + /** + * A combination of BUFFER_FLAG_* + */ + int flags_internal; }; typedef struct BufferPoolEntry {