From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id CB2544063B for ; Sun, 26 Jun 2022 23:36:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 81D3868B80E; Mon, 27 Jun 2022 02:36:05 +0300 (EEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1anam02olkn2092.outbound.protection.outlook.com [40.92.44.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8B03768B6F5 for ; Mon, 27 Jun 2022 02:35:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LQazqXfObfS18vFvEdniPRKgQWD0x+xx1AEPYMUn0QUnXzPHHSjPkvOgkQLLehD52lOHSyKIh4MRRpb3NDMHs/UC+fPSr3Vu9p5lQ5oAyAo9ZIdVp69AhhJeo50EFM9BY+SuM/wXr+9Zs3HDcc/h0K6wqfsKyG9ic+J9ehw/sG1VK0USZ1DXdyZkPkdqFYz4ds87G1xbSzxPowzHN8JZAZoENSBwMFq+fFuYTo06hOXeM6YdCl2t05x1N/n9lzovAUSg4MymUr5RRykxEBVTyAaE2WZoLAkwkBLWrtBfysrrrmhVG8MJPfWt9OSNe5i0FelJy4aQVO1HpahPw2AUsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gv6RdXhqrRUqQf2753KFdz/Zw67TbdMyeIM0nLte0yg=; b=aV9JhrSnH13372WfADgqBKz4sR2pxC/8TkcPgWOMqe31vzdyEboAkQwkv/HdQPs9rFJFq4O9DqEZSw8Ij1GFZAKFtXZeMY37XACuwCyNsKqFtlVvcqWAQW2fNtCQUYYeOWM6A6RLsXDKr60ktmbu2OjcPd1oVeL/14eQi0/PvBk9dT5QgChewvbao1bfg+mDSN+3MCDEE6qYaD9EgZxSn5blX9WwvlTzKLWCC+4Dnfk1c3WV521WykDPgafuThfbBb+trDovf6u2/NUGihkLkTgt+8GaUy4K672sAJIr3yp+PcpHWCXq37e/ipX5ozbP+PPxxPQ2m7yS+ZGjEW22Ng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gv6RdXhqrRUqQf2753KFdz/Zw67TbdMyeIM0nLte0yg=; b=Cd2jQOBRh01HcLU8XmmnxbP+Zl0i1M5alMB0ACcbQL7gwa3Vp6OOMjbNkkgwC6bHBZvAzUK6xiWnSkc6ouuoYC7zi1JEdAP2fqGF3ApiwjGEBWtRD5afC0R/1zpeEQLP69RvoqYLq5iYD1tyTz13c0FvrsCeep4hzm/TKA9Bnn4D7ZDimuBbE5aN7chWZrgYbPWiI4/qMTsoehxWkIVImgqyyc8EwQ00lVtEjg0CTgtrcSrqVDYsfobtmBTBiL9ons2w/065ExYVjnBVvjafDum9jSySAwBkPUiJUnRDYMpcxXFG1t7gZq5prhS9/IYqMDCOy0v1lLfQr3RZ8V3zKA== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by CH0P223MB0265.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:f2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.17; Sun, 26 Jun 2022 23:35:51 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::d9e4:ced6:ab31:c231]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::d9e4:ced6:ab31:c231%2]) with mapi id 15.20.5373.018; Sun, 26 Jun 2022 23:35:51 +0000 From: Soft Works To: "Xiang, Haihao" , "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v3 1/6] avutil/frame: Add av_frame_copy_side_data() and av_frame_remove_all_side_data() Thread-Index: AQHYdeGsrzjC2ABG30GBpY1mQEzmJq1eRLiAgAQ4WUA= Date: Sun, 26 Jun 2022 23:35:51 +0000 Message-ID: References: <8cab34105f023f2d40811a79d05726df80ac707a.camel@intel.com> In-Reply-To: <8cab34105f023f2d40811a79d05726df80ac707a.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [l6wj75AmZNXSC2tqlKpQ0SqqbxZS441y] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3095d399-2add-4873-fdf6-08da57cc9aee x-ms-traffictypediagnostic: CH0P223MB0265:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hTV3ytom1kZKPcXGwbfTc1wLkYzwthADOXfjBa1vciNo4qSoq/LZE5XM7LpYeXZvDx3uDLFrAaDZvGCdGmr2uPOsVr6Kyt8UQIRIpkrZyyjUpKpZNQQvG0oravVUr2ECC4KSr6tLu/sYxCUralfA3HBjuCP2pnYhf2jGAqaJjMUsYeRgR9t+fEvg6opCZ+lQv8FiBOBWrFDCqp178NPFavu+5OoPHP8FggziN4BDjh864/Ld72kUPlUZFrKNV9uNMT8UrBfO9Hnzysb/XqOrKHo3W35Za861ehTjxmsmEZTDW5YjZWF2JXeXk4Y3Za5JcDjzzk8DNJRFrOQ8F6qU/G9/qHlx9OqUqpzYzxC+flQUDR/3WIk3TAGxQbMt+emfgePfEOLDx/8eReHDHEA868l4IKn2vChkCZsYAhjpHVWOyh3dO4Yf4zBC0q0x+zCKA8YpfXiS/Od5bhVI8TypTJpAHc1rm6F0B4SYa/fc+L1n7/Xp2C1Y569rGco3mf3XP+VT/JTiPwinkbDCEJf89S2WSV9G3d/EUeTVhZ14absFTNR2VcIGMnxwFGKSemPyKFMQSfGccSjrDCWqrV3fRS4I2omdhRNU2zMuFXnM049YXrQpVnyUwI+LwkaEY8Fh x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SWRsNjFMYUYrUFBNQzM1UTFhTVhJU1pnQ0tsRmZQbUsxNWNqUHBGc0xWSWtC?= =?utf-8?B?Y2xtWWhCN0Frdm5JRHdKakhuU0I5c1hwN0x5dTR4eHhXOFRxODRxb1JUNWRn?= =?utf-8?B?Y3hLOGE1RU16SGNwVTZyUXpWSjdQQXdzMzVBSFU0QzhKL251dXRvQjFsOG82?= =?utf-8?B?WGpWaVpZU3NQWFM1TGtPQUVHV1l1alJPekhJK3BVOHF6MkJhSDFQcGhHaHFo?= =?utf-8?B?QjVtL0RFMzU2MDFYakRPYysrTFBURHU4QUlBeG9WYTcvdVZ0enJuVTlxdmFq?= =?utf-8?B?Z3RERlJSSTNPYTZKNWFFR3c4blNUWVR0NEFoZXNJZnM2RFl3VW0wVVoxcGZM?= =?utf-8?B?bzhYQnYyTkd3WTRuMjlTMit0MU9qSG1odTNvY2UwZGhGSS9KbE41ZXNlb3h5?= =?utf-8?B?VEJzUHN6anAvQ3JibGtXS3NMdUFzYmZUN1VMdHNPbDJWWXJ6ZGY0UE1KVnhy?= =?utf-8?B?ckpXQVZJS2o0NnoxbXA1YXo3V1JDRTR3NCt6QVEwWXZrZWc2VFVRSHo5T0l4?= =?utf-8?B?N2lnaXlBbVVsaklZL0lEZGRFODlnNmkwZmJmaDFUNENvVis5dDAxT1RuZlQz?= =?utf-8?B?MFRBZEk3MUh4UHgxWng5R2RFamtIMm55Y3I3dzJTdnFjSmNyS2lSU0VDZFNs?= =?utf-8?B?VGczd1RuMzR5anZKbHh0bDMvUms1ZWhtOWJRVUxOZzQ4K1YrWlJ0RTNDVUlz?= =?utf-8?B?T242dWtLbVc2a0VCcEdQdldMVmVvRCs2UFR4QXdXbHp0NVVpUm5CWHNwc2RI?= =?utf-8?B?cVl2MUpMeVpHWjJ6MzBzRHJJaThldTNVVzB1Vm8zUWFNNlpPSGRJeVQwWXdT?= =?utf-8?B?VEN1WXAxalovZ2FZSGNoRUxpSzlQNUc3bGJTWE50Y1ZNZ1FmWGJ2dkR5Y0FM?= =?utf-8?B?b05YMlhsWTFSSUFndndLaTVNZW1pRTd4RzVINDNXTFBxem9Fa3hxLzArb05p?= =?utf-8?B?S0tlYmFTeUFJcTc3ZFpyREVjS3dOQWlxNlZoWjBudkNiZUxURU9wV2Y2YUY2?= =?utf-8?B?TE83MStPZXhZa3dJNVFNMS8wcHdIK2tRZVpleWhoMzg4VFRlT1hGQzEvaCtY?= =?utf-8?B?MVBTQmVINUFiSHhhSDFYRmFtbGd6K0ZjZ0dvK3NpY01OcGNWaXFaOUYrVnRU?= =?utf-8?B?Nm45MDA1YVU0dHJSMVpHZHptVDVUMTl4dVJvcjY0V1RqUEpUMTFuWVZ6NjNJ?= =?utf-8?B?VVZtL3g1WU9ubDZSV2tDcEdxNXdYTXZleTZ4V3hMSmhwWXNJYjZuOTFGajNH?= =?utf-8?B?RkRsWjFlRmMzbUFGSjBRTm9FZGhpNWpDWFR1MEFyVlk5bU40c3lTbllYdjJC?= =?utf-8?B?L1lWZWRzZWNqV243RTNBWXoyYU5zTk0yZTNmd1JrMjBMSGgzMTRBQXl0cm9E?= =?utf-8?B?OXk3bFU4NUI1Z05hYXJvTjFRSmM5OUkwMmhUWG9vQVFyMFEyTCtBMXV2ZklW?= =?utf-8?B?YzNGeHVQcjNlWGRmazh1djNtTUpzUzQ4c2hKZVRMdk93ZFZRS1hjeEpJQ242?= =?utf-8?B?R3JYSzdCSk5rOXZ6WWY3dTdTeVBmcGxaWE1vcnhScThQNURVYnRXdHZyeVZQ?= =?utf-8?B?eE13NmlVcWgvZlh2Mk9HL2NocmFYZVIxeXVSSXBuY2lQNElJNVU5SXllSjIz?= =?utf-8?B?amxjRTVQbHRKblBKRS9Id2hYVXBTZG9xSDl4MkMwLzVJOEdxZHl6Mm0xQ2tD?= =?utf-8?Q?2S0V5wWunbFD5+ErgcT0?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 3095d399-2add-4873-fdf6-08da57cc9aee X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jun 2022 23:35:51.0489 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0P223MB0265 Subject: Re: [FFmpeg-devel] [PATCH v3 1/6] avutil/frame: Add av_frame_copy_side_data() and av_frame_remove_all_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: "haihao.xiang-at-intel.com@ffmpeg.org" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: > -----Original Message----- > From: Xiang, Haihao > Sent: Friday, June 24, 2022 9:02 AM > To: ffmpeg-devel@ffmpeg.org > Cc: haihao.xiang-at-intel.com@ffmpeg.org; softworkz@hotmail.com > Subject: Re: [FFmpeg-devel] [PATCH v3 1/6] avutil/frame: Add > av_frame_copy_side_data() and av_frame_remove_all_side_data() > > On Wed, 2022-06-01 at 18:01 +0000, softworkz wrote: > > From: softworkz > > > > Signed-off-by: softworkz > > Signed-off-by: Anton Khirnov > > --- > > doc/APIchanges | 4 +++ > > libavutil/frame.c | 67 +++++++++++++++++++++++++++-------------- > ---- > > libavutil/frame.h | 32 ++++++++++++++++++++++ > > libavutil/version.h | 2 +- > > 4 files changed, 78 insertions(+), 27 deletions(-) > > > > diff --git a/doc/APIchanges b/doc/APIchanges > > index 337f1466d8..e5dd6f1e83 100644 > > --- a/doc/APIchanges > > +++ b/doc/APIchanges > > @@ -14,6 +14,10 @@ libavutil: 2021-04-27 > > > > API changes, most recent first: > > > > +2022-05-26 - xxxxxxxxx - lavu 57.26.100 - frame.h > > + Add av_frame_remove_all_side_data(), av_frame_copy_side_data(), > > + AV_FRAME_TRANSFER_SD_COPY, and AV_FRAME_TRANSFER_SD_FILTER. > > + > > 2022-05-23 - xxxxxxxxx - lavu 57.25.100 - avutil.h > > Deprecate av_fopen_utf8() without replacement. > > > > diff --git a/libavutil/frame.c b/libavutil/frame.c > > index fbb869fffa..bfe575612d 100644 > > --- a/libavutil/frame.c > > +++ b/libavutil/frame.c > > @@ -271,9 +271,45 @@ FF_ENABLE_DEPRECATION_WARNINGS > > return AVERROR(EINVAL); > > } > > > > +void av_frame_remove_all_side_data(AVFrame *frame) > > +{ > > + wipe_side_data(frame); > > +} > > + > > +int av_frame_copy_side_data(AVFrame* dst, const AVFrame* src, int > flags) > > +{ > > + for (unsigned i = 0; i < src->nb_side_data; i++) { > > + const AVFrameSideData *sd_src = src->side_data[i]; > > + AVFrameSideData *sd_dst; > > + if ((flags & AV_FRAME_TRANSFER_SD_FILTER) && > > + sd_src->type == AV_FRAME_DATA_PANSCAN && > > + (src->width != dst->width || src->height != dst- > >height)) > > + continue; > > + if (flags & AV_FRAME_TRANSFER_SD_COPY) { > > + sd_dst = av_frame_new_side_data(dst, sd_src->type, > > + sd_src->size); > > + if (!sd_dst) { > > + wipe_side_data(dst); > > + return AVERROR(ENOMEM); > > + } > > + memcpy(sd_dst->data, sd_src->data, sd_src->size); > > + } else { > > + AVBufferRef *ref = av_buffer_ref(sd_src->buf); > > + sd_dst = av_frame_new_side_data_from_buf(dst, sd_src- > >type, ref); > > + if (!sd_dst) { > > + av_buffer_unref(&ref); > > + wipe_side_data(dst); > > + return AVERROR(ENOMEM); > > + } > > + } > > + av_dict_copy(&sd_dst->metadata, sd_src->metadata, 0); > > + } > > + return 0; > > +} > > + > > static int frame_copy_props(AVFrame *dst, const AVFrame *src, int > force_copy) > > { > > - int ret, i; > > + int ret; > > > > dst->key_frame = src->key_frame; > > dst->pict_type = src->pict_type; > > @@ -309,31 +345,10 @@ static int frame_copy_props(AVFrame *dst, > const AVFrame > > *src, int force_copy) > > > > av_dict_copy(&dst->metadata, src->metadata, 0); > > > > - for (i = 0; i < src->nb_side_data; i++) { > > - const AVFrameSideData *sd_src = src->side_data[i]; > > - AVFrameSideData *sd_dst; > > - if ( sd_src->type == AV_FRAME_DATA_PANSCAN > > - && (src->width != dst->width || src->height != dst- > >height)) > > - continue; > > - if (force_copy) { > > - sd_dst = av_frame_new_side_data(dst, sd_src->type, > > - sd_src->size); > > - if (!sd_dst) { > > - wipe_side_data(dst); > > - return AVERROR(ENOMEM); > > - } > > - memcpy(sd_dst->data, sd_src->data, sd_src->size); > > - } else { > > - AVBufferRef *ref = av_buffer_ref(sd_src->buf); > > - sd_dst = av_frame_new_side_data_from_buf(dst, sd_src- > >type, ref); > > - if (!sd_dst) { > > - av_buffer_unref(&ref); > > - wipe_side_data(dst); > > - return AVERROR(ENOMEM); > > - } > > - } > > - av_dict_copy(&sd_dst->metadata, sd_src->metadata, 0); > > - } > > + if ((ret = av_frame_copy_side_data(dst, src, > > + (force_copy ? AV_FRAME_TRANSFER_SD_COPY : 0) | > > + AV_FRAME_TRANSFER_SD_FILTER) < 0)) > > + return ret; > > > > ret = av_buffer_replace(&dst->opaque_ref, src->opaque_ref); > > ret |= av_buffer_replace(&dst->private_ref, src->private_ref); > > diff --git a/libavutil/frame.h b/libavutil/frame.h > > index 33fac2054c..a868fa70d7 100644 > > --- a/libavutil/frame.h > > +++ b/libavutil/frame.h > > @@ -850,6 +850,30 @@ int av_frame_copy(AVFrame *dst, const AVFrame > *src); > > */ > > int av_frame_copy_props(AVFrame *dst, const AVFrame *src); > > > > + > > +/** > > + * Copy side data, rather than creating new references. > > + */ > > +#define AV_FRAME_TRANSFER_SD_COPY (1 << 0) > > +/** > > + * Filter out side data that does not match dst properties. > > + */ > > +#define AV_FRAME_TRANSFER_SD_FILTER (1 << 1) > > + > > +/** > > + * Copy all side-data from src to dst. > > + * > > + * @param dst a frame to which the side data should be copied. > > + * @param src a frame from which to copy the side data. > > + * @param flags a combination of AV_FRAME_TRANSFER_SD_* > > + * > > + * @return >= 0 on success, a negative AVERROR on error. > > Can it return a positive value on success ? I only see 0 is returned > on success > in av_frame_copy_side_data(). May I miss something about your patch ? I guess I had just copied that message from av_frame_copy() or av_frame_apply_cropping(). Both don't seem to return positive values either. But I don't want to talk it away - I'll submit an update with the typical doc message. Thanks, softworkz _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".