From patchwork Fri Nov 1 12:03:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 16059 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 D30D544A366 for ; Fri, 1 Nov 2019 14:03:38 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A0C3068B0B2; Fri, 1 Nov 2019 14:03:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0D23868B0B2 for ; Fri, 1 Nov 2019 14:03:31 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1572609806; bh=mhcx+BlfREL6ePF6sJrV/4qfGB3+xcczTTuYO43ZU6c=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=hiFhx88mzIRC8P6IUB8iH++PEChLjvdjR59GtPUIrt1fyFFSQYYLOiEkpKlteUcVF yVxiSrVSzi0ny3II4TCSqZDzSpIpJPZcNgKgujmVrPnMDJd9Re6YL+mDW4OhbSX/MD bIkmPLJ7koKtk2eEoZVp27eG98IN+4lYyW173pJg= X-QQ-mid: esmtp5t1572609806tcj28yzwe Received: from ZHILIZHAO-MB1.tencent.com (unknown [14.17.22.42]) by esmtp4.qq.com (ESMTP) with id ; Fri, 01 Nov 2019 20:03:25 +0800 (CST) X-QQ-SSF: 01000000000000N0UF2005000000002 X-QQ-FEAT: EUGmOqWjSYJlShVceuQcDaCewzYbSieNahjPMXlL6pVDHogK7rK2BiQt+Scxz hrbTgy5zmBSIX6mBaPCIlkylzy8vGPEkm6ITeQ9ghBxOd1A6thc5PClgDP91XBGG7IuS+gc czxypQUUrYtwqGj4005WWaRCoJ5eDVht2mikd0MoV2CHtFhRrqTlugQnbB4VFDwfGpTOBOn 7D4Yxtv4mMRfi9tuv+Tgx2mA3dss+Tdej/6S1lrYPyyGzFGXmXfUgAoueJjmHsuQfYuwHou VWOXmM8Ez8StqkAfXVx7SuMQCEupVbRPmjRBmn1cXynA1I X-QQ-GoodBg: 0 From: quinkblack@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 Nov 2019 20:03:11 +0800 Message-Id: <20191101120314.88956-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: esmtp:foxmail.com:bgforeign:bgforeign2 X-QQ-Bgrelay: 1 Subject: [FFmpeg-devel] [PATCH v2 1/4] frame: handle add side data with the same type 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Zhao Zhili --- libavutil/frame.c | 13 +++++++++++++ libavutil/frame.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index dcf1fc3d17..bb20e99331 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -692,10 +692,23 @@ AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, AVBufferRef *buf) { AVFrameSideData *ret, **tmp; + int i; if (!buf) return NULL; + for (i = 0; i < frame->nb_side_data; i++) { + AVFrameSideData *sd = frame->side_data[i]; + if (sd->type == type) { + av_buffer_unref(&sd->buf); + av_dict_free(&sd->metadata); + sd->buf = buf; + sd->data = buf->data; + sd->size = buf->size; + return sd; + } + } + if (frame->nb_side_data > INT_MAX / sizeof(*frame->side_data) - 1) return NULL; diff --git a/libavutil/frame.h b/libavutil/frame.h index 5d3231e7bb..906143f894 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -886,6 +886,8 @@ AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane); /** * Add a new side data to a frame. * + * @note replace existing side data of the same type + * * @param frame a frame to which the side data should be added * @param type type of the added side data * @param size size of the side data @@ -899,6 +901,8 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame, /** * Add a new side data to a frame from an existing AVBufferRef * + * @note replace existing side data of the same type + * * @param frame a frame to which the side data should be added * @param type the type of the added side data * @param buf an AVBufferRef to add as side data. The ownership of