From patchwork Mon Oct 11 07:41:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 31044 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp3428344ioa; Mon, 11 Oct 2021 00:42:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwpRGdGKAg4l7xIoAmVU0MXVQwRS+Mucqt8ELrwJ7Ru3dm5Q0XS/n/Q+zHX1TILyAEhurl4 X-Received: by 2002:a05:6402:5c8:: with SMTP id n8mr11200575edx.62.1633938126691; Mon, 11 Oct 2021 00:42:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633938126; cv=none; d=google.com; s=arc-20160816; b=xAzkVUfZtzis6P4datInrpOJXHQG7B/6fhuBmx0qXb4LAoVG1qrSQVWVV3o/WoVE8G OetZbvYBbRsCmWiLbWjrtskK37mHcSH/yDUQWKNL/aWzEpuL4KCa+V3tURfXyW/TFeaB 91i9P/e3vL1cBHZ9h9MB5a+7QarNOYbJnkRClwAdQZK2h1jjmI1V3rM3OsDkjU3Rvoll KsuvjEC8Mf3T23VZ2XFsrG5RcYeKh2TI/g5Q8QX+cryljrROyxmxyFPpoCT8v9w1QHQE /1Waa+NfL6/TWEmyogQsz7jhXoHGYAS7o7HA8z8FKfvY/FaYuvbzL6Ish0HIAPsCp3wb czCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=gggof1c7QvKEsa/L34F40mPVKiB+0SZ/zYR8KwHN3qQ=; b=bR1Kks/mh0PMczxQBAP0BQmKRX6761s5g589LXMD+tPyyGHGdtWPFUjL/eSgYCf1VJ R8UGAv03Bj1a75gKcnucetlPv+nKpUW8sVGmEeFSV6lnRpwZjSqgE0bObZdOKnUr2ACV UPQKxlIHuGU+UaiRP3A7CXskG28P6V1rP7MC1BmA5oJFZrjPCfy3M1TQu9NXEab5UWZT 22f54/pAbnaKfOw5R0qxIuRLGSulLavtTPc6ZvSlvDPVPjmfPBRnPCGrigbziZGiMpwe OZkt/+Z0cXj+nr5V2g8A23K9nYzG9vWiiY1XS+v22mVXlyBMvqJyyewi//xZ6TY+ztnz P40w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=UzO4nX8k; 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=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v3si9724462edb.420.2021.10.11.00.42.06; Mon, 11 Oct 2021 00:42:06 -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=@foxmail.com header.s=s201512 header.b=UzO4nX8k; 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=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5965D68A842; Mon, 11 Oct 2021 10:42:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-27.mail.qq.com (out203-205-251-27.mail.qq.com [203.205.251.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D0BE680C21 for ; Mon, 11 Oct 2021 10:41:55 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1633938110; bh=xhnqhlyK/VFhvrRSaskarKPWy94eEYBMoRoZ3C6kG7E=; h=From:To:Cc:Subject:Date; b=UzO4nX8kdWO67g67VTV6LE2xNasxvH610HRoiwufBD+z6turYyxnSK1W5jI4KbOI4 qXfV3+DxiJK8mTEgUrojxCwA2i4IFoCxvhddy9nhpfWGzguNTPvM7LK1LGAuqiLWME WkGW22dvA8Bwv5Sc6vCAwlUZfoUTBSBZDhMXCL4c= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.65]) by newxmesmtplogicsvrszc9.qq.com (NewEsmtp) with SMTP id A70AA014; Mon, 11 Oct 2021 15:41:48 +0800 X-QQ-mid: xmsmtpt1633938108trxisucxv Message-ID: X-QQ-XMAILINFO: NVHSO8Akn7PSkbPHBDWmVRRkVfjaT3FL3DxkyZn+tET8nT3+jsI1YkranpC/yo 6Z1rcV1cEFZr20X1s6oBX0m7GInhaOIM/Tx6KdaS3c+K1ONje3JPSmBJYwymleLgJzh8Fu3k878a Z2Q4/HSrrt5316R5Su9Yt3QCxxghnsAo3n/KrEljCVunjEXcKI5NcVWlTGe2b6Q4M3kWD0+gfqxe Ox6TjQrNWKNLIZCjIVNWJQSeJ8+O3FkYU61En5ogrzrmNmGMGLVkblRZsm0kU2UaDv9CZ1xvwJ9B SoI5/h/GY5uUp8rm4gYU3+besbSaXG7/Np5dao5HMLu6hf1Uc4KFZiu5363TROtRgq6qUU2lw383 9gRHMGEz96AqJ8hTf06e5OOrWOMYiP4AjzrlqQDZw9uiFkmKUccGtqDVC+lk8SxH1prssW/8tJv2 G1yc2PjIjmIDrrq2X8pGqP0mkAcI3M1R0plS6MgwcNP2+FZ69FMm3INrfU+7ChrQSKDyC7QzvrqH 94P+S4r0a5BaU8kPl6i71gGy0Nd8mvx4Tt8D6uLgSgRxz314BF6arvAiS6tvNwW4nS67dbvaq1gw yHAz4/+DWb89P1U0rSwXhtS7oF05KHTA5FYHgUMgR/ldNy8KLh6rZHvDZhUaKqcl49yfGZfLd/dj Bp9uCYqEv9gqrKKWGiQADhGJD8oVmLLi7zogpzyN/ZviPJd89AK0IFyshx7Ylm24yF1RPIYzMx7R yVmUws3aS5CZn9B6yspD+2JbZQ3pqV5DJ0FilFF1KDh1jkqmbeHmYY5twHpkGwKRufzWO1b9pPuk LdY8Uyl8SzAjAyErmpABDrg3WbhFwXvT5UDh2i9hr4xnSe6m0HPTiH+eb9pg4uhZTcLk1UdoAkCQ == From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Mon, 11 Oct 2021 15:41:48 +0800 X-OQ-MSGID: <20211011074148.53395-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavcodec/avpacket: add av_packet_remove_side_data X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: M2iFDaQk3m1z --- doc/APIchanges | 3 +++ libavcodec/avpacket.c | 15 +++++++++++++++ libavcodec/packet.h | 5 +++++ libavcodec/tests/avpacket.c | 9 +++++++++ libavcodec/version.h | 2 +- 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 7b267a79ac..2c6b369ea9 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,9 @@ libavutil: 2021-04-27 API changes, most recent first: +2021-10-11 - xxxxxxxxxx - lavc 59.13.100 - packet.h + Add av_packet_remove_side_data() + 2021-09-21 - xxxxxxxxxx - lavu 57.7.100 - pixfmt.h Add AV_PIX_FMT_X2BGR10. diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index d8d8fef3b9..2a9123e5fa 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -179,6 +179,21 @@ int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size) return 0; } +void av_packet_remove_side_data(AVPacket *pkt, enum AVPacketSideDataType type) +{ + for (int i = 0; i < pkt->side_data_elems; i++) { + if (pkt->side_data[i].type == type) { + av_freep(&pkt->side_data[i].data); + pkt->side_data[i] = pkt->side_data[pkt->side_data_elems - 1]; + pkt->side_data_elems--; + /* Better keep side_data sync to side_data_elems */ + if (!pkt->side_data_elems) + av_freep(&pkt->side_data); + break; + } + } +} + void av_packet_free_side_data(AVPacket *pkt) { int i; diff --git a/libavcodec/packet.h b/libavcodec/packet.h index 9baff24635..85edf87211 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -571,6 +571,11 @@ uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, uint8_t *data, size_t size); +/** + * Remove and free side data instances of the given type. + */ +void av_packet_remove_side_data(AVPacket *pkt, enum AVPacketSideDataType type); + /** * Shrink the already allocated side data buffer * diff --git a/libavcodec/tests/avpacket.c b/libavcodec/tests/avpacket.c index 7a70ade4c3..710a964915 100644 --- a/libavcodec/tests/avpacket.c +++ b/libavcodec/tests/avpacket.c @@ -124,6 +124,15 @@ int main(void) "when \"size\" parameter is too large.\n" ); ret = 1; } + /* test remove side data */ + av_packet_remove_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA); + for (int i = 0; i < avpkt->side_data_elems; i++) { + if (avpkt->side_data[i].type == AV_PKT_DATA_NEW_EXTRADATA) { + printf("av_packet_remove_side_data failed to remove side data"); + ret = 1; + } + } + /*clean up*/ av_packet_free(&avpkt_clone); av_packet_free(&avpkt); diff --git a/libavcodec/version.h b/libavcodec/version.h index 74b8baa5f3..76af066d32 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -28,7 +28,7 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 59 -#define LIBAVCODEC_VERSION_MINOR 12 +#define LIBAVCODEC_VERSION_MINOR 13 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \