From patchwork Wed Jun 15 12:01:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36241 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp318609pzb; Wed, 15 Jun 2022 05:02:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxI0++tZ3zKVuxt13OLVmN8Kme/T/He52vBRjFIV5sldrc5n2CQoAF6NOH+GV6xujYanuDf X-Received: by 2002:a17:906:73d2:b0:712:2fed:3473 with SMTP id n18-20020a17090673d200b007122fed3473mr8389497ejl.361.1655294535962; Wed, 15 Jun 2022 05:02:15 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ds20-20020a170907725400b00715702f1e9esi14367984ejc.799.2022.06.15.05.02.15; Wed, 15 Jun 2022 05:02:15 -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=@outlook.com header.s=selector1 header.b=ukkcs6Fr; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 613E168B745; Wed, 15 Jun 2022 15:01:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2017.outbound.protection.outlook.com [40.92.89.17]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63F8268B70B for ; Wed, 15 Jun 2022 15:01:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PJ8BXZ04W7CKsQC37kpWI/XO2lSAud4UJwi9huBxB4a3I9F/E/3/7U8KxDll+CyVaafN1b2bQW2KfZVE2qbnztHliwIFkpHxTGmVcg2AcPlkyAxbEVcYQYFGdeA81OHObqzx3GcE5UftJJS4FFssrl0u3qxGT5cbV+RcU9s+flXOK90ppztsgk6YUJealuqwHjkDffe8LfmftFWaIziO5ag9N5zD2injjdJVud9OfHSAMYNDTS9R4Qv+Hc7WHKnWK9kmgvrSZwOux/v3VNnKVnQnFBjj5gp0IBkimu3cX5msCtfmLvBiSMu9CssdyDiWul8tmjsRYGznvAnlPjLfNg== 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=04QEcRe8oXk074qmSEF0m9UQxaoDOvVPGaLQ/XTFVjg=; b=ZzGlDVYJhlhnYWbaorGI8ls/jv9VRmt+pFqz2m0r7XFHc5dbJfKOgrXHnKXVl5RZqUBjBbOb8SX3NgbN5Vk70GkcW858QD0thsotJ0mvarxvkXbByReqS94lHDhtiMC/tOWMdtShSn5tIsb3a+ZzxvT+T7C9Gdrz0P5PqbLFTLK0C/GElJVIzWpHQU1kz4OwX0/qpqU685jAKAPMwZ4weXoXcbUOCvPzdkgx0LqogsAJ2L4yyB4rVIY8tTNQFv9qNW4RJfw4dpkoGHayd7gD1U7+GxGzGJq8eN6Lg4XjSkmdJecdPQCy5KLNbHCkkgf3BiSRzhjzq8/T9n0MhNPTnQ== 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=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=04QEcRe8oXk074qmSEF0m9UQxaoDOvVPGaLQ/XTFVjg=; b=ukkcs6FrxGm/aZ4qF5TdLP14wCtL6s1L0QBM53HjOq6+jvv1Q79qDe0/UfRhQkx0r8ca3xCSGw4oHivJ65A73O5ehVirfI4hwLa09m2N7O+3P9q6c32aS7zomcaFb/QUnSiXoldT+qtev5FokvwVYKF4mmHit3sHMmKYvuaj4SXJIwim8U1iOPD2iEWHCSyyFAXrT7vtgmWfVoyn37v8AiZqN8G7Et/jUtHMuU1ueoT/WOo+3uMbitRugF43UcQ8w0Pnxr0zVRlqJ6ZRU9wPF2ZYj4IKj4S5XaSculonI7ZHYBETT158SSdqLTV0/Fp4Y6lpfSBU+4yyGdygmST7TQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PA4PR01MB9139.eurprd01.prod.exchangelabs.com (2603:10a6:102:2ae::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.20; Wed, 15 Jun 2022 12:01:45 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.021; Wed, 15 Jun 2022 12:01:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jun 2022 14:01:16 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [J+jqHIu45P1CQ0Y6ZmGIjTDtJqa3jvwn] X-ClientProxiedBy: ZR0P278CA0117.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::14) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220615120116.2983646-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e20bf9d6-4f70-4cb3-995f-08da4ec6d152 X-MS-Exchange-SLBlob-MailProps: ZTmCor6bjd/E+eOKjrS5N6RWPMj7VMouq8EaojiHVhFI/2YYMp8I/2eqdNregbqEcLx/pLUJAoux9a3N7b1w7SHOm2VoW/5XL7wZ4Qfcn4GgQyk6o3msteBJuqMVNjlMt/BqWR80p6Ef/G5/4rjtlPbPfwvPtj6JlW4DLHu+fSUibQJPpLGVKu1ETLftOj/7iGsYcNiXHVlTXi/D3gDfTMpdgZZZ6W498HovftIzRAgQa2or5f7h3dI+++IfBLMhTy5DqNIryGzwjSBI1Hct8YAifBzsNPICW/1Ro6jpO6hJeteUTDF9DyT8+enWK0nESPMZT2oNsnTM/yxi8tcMfDoh25CYIlfBrX+Vd5Jcbp/mMC54/ooNzthoF69m4FOjvCEUDIzNo+GIoyoyeNmEtm12lY1Ng+rYKOFv6PG/yPt5oQibhMsm0iS0dfkrQLYA98RHZiPBy0TV63mqhLnhbop/yozrm9/Yuphpe4Nz48lyjWNiGAte1OdlADgFHTi52FAZ61581iCQFAQwtlijYo8oWxAMjOYRpvCcu69PxJ81kT+nmXDiEhmXg+7PwhZlXijkpzJQoatmHjusZ49z6PE8CBWTgQwQusmaXMkw6SQd2VM4ECHpUdWqama8JXHoI7gZcykqr8S/hwfUM1G/SlEPgI9XPkIm72Kny6fQKVE//6f+eXzggMZDfKMgeQSxr91KWoANDKCw5mmcRnoH6WiVf1PuxqLY9bRoEamFnoABjAEd+uoFlyvmJgCyVaokpFRuc+HiQGUY0qt1ZsM0S1vG/VDZKyyd7wfSkntDMo5TX3yVueGLnxhLhpEPCAWS X-MS-TrafficTypeDiagnostic: PA4PR01MB9139:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: p0OJsUlU9tA0t1wOj/UmIn9skbvVOPvL6olNHqE0ZnPwKyktxND+k7m0DZldM3dUaWhIl5dOIoA8rA1rIdXHkyop3BJxkMZh5Ye/5e7F1ddkjOgbGq+6lyY9/EdFwt6hi76CbLRmwjyqW1Vm4AhYOdk0CEbY4Oc6x28Nw0+m2yV8c/m0FNpQvnYJKZEejUukWOq91dkqSH4cbvrkQjn04iX49pHRm49jVI/0rNuQSgGWNgsyVdmol3d0kE1LiB9/SBifImQGbM1ZtYMs2YIsLHGoV0AoMMInSJs10CCJH820LIqIuPQMdd9CAgka2U6HNXItXmpQYYKp5q6ZQwrK+2FqkSrlAbjftDwbT6dciGmrvUFBePEygfwLu/qfO5fz+PW3rk76w95r3SURaL5owIUI3NxejHKSlDQpzlg3SuwHn9LgTHQCda6/gLn/D1Xjif8evi2rFQOxYa/YJrwH4Jt0SSAcAqSo3MPqTydjTmgnIEZcnUAnNU9BvU3xGPa4MgRfixNyqpShgn/UW+7ePMxFUu+QqBq3P117Cga7aYAZy2MvRQoD+kSWayOFGaTwViWAG2tAOhBYulkwpRw0/xO6Z0IJvZo4ThpNkS376XlRuNmPBL5NGxedn4L3ybmr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /y4SImv23aEWZxrUaHfsajtyvr7XB0ABEOtwoBtxulu8ZTX9Z70n9v2QqOg2iObNf8GgNGCP7fOcoVwv5Icz4NBPNR0v5+Mys2lgsZc7PPiroAaVotSlfBAaS25xlVP6EJzSAKjBPShsPf0TAA1bUXPuI6yN9vBoXyZgnE4IvWQHdf7FSpS7rX4YB/E/Ci/LLWXfMFgHVFsgvdOvO3H49xuuwxAr3WnGbGfzLS9oVuR7c0T8y51lu3qkFk/67vNwxtzGucDs3SpDtrKrqpvfq3p+pI68ox7PemUgphmFMRuATktd4aC7y6sq8yXfcXoG4mevq466gTxeTeQkHcmEA91nLUGTgEozvtZv/FaS4o2S2L7yXroevDxe/E6MtxsB234RmHXHBugRP1sCKHVOdRLdqKC2dSpuKRqH+ksoCKEIn0fJcGy+M1iV6T/rUoe8AINcYv4Y1tjvm8ey35jHZ3r2/V6HFabffBRtET1svIiHsnwsaqXzeyMNXGZjGYzVANifHmzVngBirYmPRC8S9Lq5zICnqYxB1tBaGTH/tcQoJ+Zv7uqN9VMyNsTt+bctwUYw4ulmDE2MlJ80Llbti0C3MwVF9N5DdDMlJJTxK6tyE1FaIKr7nhSqJ6C31ODw5thrtzNGX+f9ZojauQL4zEwzE4Ymv4iFZx57T8AQaq14FoftxbEDLUXlZVQGrdE5thUwybZGB76Oxb4qg+FB64ytEbcnnQ3ftUdxa/Q9JhOzPCaKF0gS3lcyKSq6QWGIXz+0uFIdVVAAfrlmOU3GJZHWMJhN0nmj0MsnjJK7+j2wM9zOzdpHuJ0mYyJDsqg4o6e+2F9j9EZ13xsl2DgmLd0/6V/j0M8OXkkca8A8RG8tToiUzaeFGF4RLOuMiGL+Xqn4oCYOz++3XVLpUMVUCxNuzaoGlapiR+hfdh/PUks2TSHnooN1UX6CPsTh5O09bR3CWCaA6uhSsPsPY8IGIHpOoa5hiyYzZulH0xPTg9cMnj/Xm6rJguslzGR8sYGZ6tGnGTVVlPaIdFnIvb1OAFnMNIXHd/5CqnWBkNR4Zf1tdXkkuXKObB1N7UmdTpHN42pb3CPbECJHPw/d/psxGszyxZ+YvxDy1eGydrRynkaW81LL1SXGRKa2E/pvB6Ck2IMVUEoVnWH+udBHMfQDfdgW0UEm1FDap4LQUzfn95F6mV9suioSXnTOcPjad8KfoXq3NTfjA8JzGw7+eP4pzAoX+iyZB0lW1ZzKO8lKd8qPMtcfvIG/t4n6wbocQlp7c7/o1GALeRcC/840mLRbUtGFM2BpAMgOw0gvbn2dool4jdDa7e5e36nTVlqpm85dGyQSUoJ7iLA/UTQuJFHaBHa9oy1yC50Lv+ZtNQrOMamo4ppew8+c+UQ8pOpRI8vSGv7x190B57pxXKf860yRCbise1/umC++zh3hR/Yf7dHjst1WJTDWTLilyRsgpRUYTvPPDo54YZgxFYYdP+5fYA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e20bf9d6-4f70-4cb3-995f-08da4ec6d152 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 12:01:45.1657 (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: PA4PR01MB9139 Subject: [FFmpeg-devel] [PATCH 4/4] avformat/matroskaenc: Reuse dynamic buffer 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: N7XlJv6utaPc Avoids some allocations. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index f1385c6b21..60647869ca 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -220,7 +220,8 @@ typedef struct MatroskaMuxContext { * to write the length field of EBML Masters. * Every user has to reset the buffer after using it and * different uses may not overlap. It is currently used in - * mkv_write_tag(). */ + * mkv_write_tag(), in mkv_assemble_cues() as well as in + * mkv_check_new_extra_data(). */ AVIOContext *tmp_bc; AVPacket *cur_audio_pkt; @@ -929,17 +930,10 @@ static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int stream, int64_t ts, return 0; } -static int mkv_assemble_cues(AVStream **streams, AVIOContext *dyn_cp, +static int mkv_assemble_cues(AVStream **streams, AVIOContext *dyn_cp, AVIOContext *cuepoint, const mkv_cues *cues, mkv_track *tracks, int num_tracks, uint64_t offset) { - AVIOContext *cuepoint; - int ret; - - ret = avio_open_dyn_buf(&cuepoint); - if (ret < 0) - return ret; - for (mkv_cuepoint *entry = cues->entries, *end = entry + cues->num_entries; entry < end;) { uint64_t pts = entry->pts; @@ -969,14 +963,13 @@ static int mkv_assemble_cues(AVStream **streams, AVIOContext *dyn_cp, end_ebml_master(cuepoint, track_positions); } while (++entry < end && entry->pts == pts); size = avio_get_dyn_buf(cuepoint, &buf); - if ((ret = cuepoint->error) < 0) - break; + if (cuepoint->error < 0) + return cuepoint->error; put_ebml_binary(dyn_cp, MATROSKA_ID_POINTENTRY, buf, size); ffio_reset_dyn_buf(cuepoint); } - ffio_free_dyn_buf(&cuepoint); - return ret; + return 0; } static int put_xiph_codecpriv(AVFormatContext *s, AVIOContext *pb, @@ -2648,23 +2641,20 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt) // See https://bugs.chromium.org/p/aomedia/issues/detail?id=2012 case AV_CODEC_ID_AV1: if (side_data_size && mkv->track.bc && !par->extradata_size) { - AVIOContext *dyn_cp; + AVIOContext *const dyn_cp = mkv->tmp_bc; uint8_t *codecpriv; int codecpriv_size; - ret = avio_open_dyn_buf(&dyn_cp); - if (ret < 0) - return ret; ff_isom_write_av1c(dyn_cp, side_data, side_data_size, 1); codecpriv_size = avio_get_dyn_buf(dyn_cp, &codecpriv); if ((ret = dyn_cp->error) < 0 || !codecpriv_size && (ret = AVERROR_INVALIDDATA)) { - ffio_free_dyn_buf(&dyn_cp); + ffio_reset_dyn_buf(dyn_cp); return ret; } avio_seek(mkv->track.bc, track->codecpriv_offset, SEEK_SET); // Do not write the OBUs as we don't have space saved for them put_ebml_binary(mkv->track.bc, MATROSKA_ID_CODECPRIVATE, codecpriv, 4); - ffio_free_dyn_buf(&dyn_cp); + ffio_reset_dyn_buf(dyn_cp); ret = ff_alloc_extradata(par, side_data_size); if (ret < 0) return ret; @@ -2891,7 +2881,7 @@ redo_cues: if (ret < 0) return ret; - ret = mkv_assemble_cues(s->streams, cues, &mkv->cues, + ret = mkv_assemble_cues(s->streams, cues, mkv->tmp_bc, &mkv->cues, mkv->tracks, s->nb_streams, offset); if (ret < 0) { ffio_free_dyn_buf(&cues);