From patchwork Mon Jan 24 14:46:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33784 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:e71a:0:0:0:0:0 with SMTP id b26csp388407ioh; Mon, 24 Jan 2022 06:50:00 -0800 (PST) X-Google-Smtp-Source: ABdhPJzVJR4SNaygzkzjXecdIPGN0VPzPJ5jvJqC7jrmFS/u+2CC473pSz7YxCS+T3bsuj3FhbMn X-Received: by 2002:a05:6402:7cf:: with SMTP id u15mr16409987edy.325.1643035800772; Mon, 24 Jan 2022 06:50:00 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p26si8456472eds.322.2022.01.24.06.50.00; Mon, 24 Jan 2022 06:50:00 -0800 (PST) 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=gCNPilig; 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 89BFD68B150; Mon, 24 Jan 2022 16:48:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-oln040092070033.outbound.protection.outlook.com [40.92.70.33]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B250468B155 for ; Mon, 24 Jan 2022 16:48:08 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hq14/RxwCnJiTR6EnJpMt2cHBIENt8y4y47s0a75I2GZwJ7yPBiDoxu3cn3xU4o0f6NEBY/H3qR4CRTPAFPkNpiBJpCxegpiH26QwMN52yNAtGWV5DVPNqIXuG1wip6RllP8zbDf4IaFT3q15NNbbGfQZpWdhFrIulaZsHpUb2NcsmgVCcp+1JPUJXR3AylI3kylF6doupaE63dnuDEO7Zq0WocE6SZr2mD6dhDdpOzaqfigy5QFI/D89nXr/0oaKJ6izrWhYdMXU6unFcl3wT31APohmpCdoy0uMSiPMP+WUUtl+4RC+iAjl9nO336dtOR7ScyU6G8ba5bAvkAeMQ== 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=HAWLTLs78MC1sJDD6wLx+fG3QABrZXpMx6aLBsQQ4hs=; b=Yw41mRxnpCjQJxINsT+QcWE0NsS71sl8CSqemyb8gbr/pVPjF//ForTught4bqfFNflhSFUug2FEfPwmfBt0I3kRdj5/1h614TVaAR/JmAsKraf00ZjxCstoUPYAVWGXwFZL480ioD/2c/LPYrfy1nleaJjNhuY47e/waBF6oSmi06DlZEpXEeeHbsfLOaeSOJ42Ukebice7RsoGjnpk8YmdG5obnHRVMjRUQxSgRi5fcyFIeHUrEtpHkDddPL4OOD1LF75lCTtpBjuODulMECgqhO46eMkJG+gTARQ4PNX7XsMCzzT2WYq5MRpx4Xrk3rLH76y52i7TfGUxTGuS5w== 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=HAWLTLs78MC1sJDD6wLx+fG3QABrZXpMx6aLBsQQ4hs=; b=gCNPiliglGr0khzawTEiSvbvSVb2Be99olDiuisF1qW3sSwfvVNuoAC0yWmtdZzFgN+rUhsG4fx7EgJW7PWikzlqLIttExVKY7iQEj4Dc1WKITwCt/htxI+/CSbjiz/QvdeaPf10avcn+iAGL+l9d9JgFH+bl79Uudwp6P11/CdsbHTL1KsUzWvUEZGliG1GWtaAz7dTRPck0teRqaUG1iiI/C1L/VHvmEXil14mOD67ylbtmzi/B/7BDtfNZFdoJksmEankpli+wCXnnlArdIUY0YPLhsQ1jjnBRYMNgf9BDzUwRST01hSbCzYjHOIK1gxBRejvVLe9AehMHm+wgQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5236.eurprd03.prod.outlook.com (2603:10a6:20b:c4::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.17; Mon, 24 Jan 2022 14:48:07 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%4]) with mapi id 15.20.4909.017; Mon, 24 Jan 2022 14:48:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 24 Jan 2022 15:46:05 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [vpipyoyHNhmfWbmRN/fV7gqB/7IrcSmk] X-ClientProxiedBy: AM5PR0201CA0016.eurprd02.prod.outlook.com (2603:10a6:203:3d::26) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220124144616.559446-20-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d82c8467-afc6-412e-c35a-08d9df488892 X-MS-TrafficTypeDiagnostic: AM6PR03MB5236:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Jom9DL0ZGw6kw11je/3ZjwW43czhaZXUV362EXWSYIy9jwZEOI9CHzMzwSmKPKM999IutJhP52h436mh0hgIWEBN3aeiKwJ0Z+VW9Y0ukpxwtOZqWeUYG8fn3lvbHH4IV9WduBRlGybzMaGQNzro8cJczVaAfcATh84EtRtvYnsDrYE4Qc1C7K/uvLOOhdbv6REui3VgETwHuXm/0cPR0XfWIj39eph7ScT1lKexW3dFJ2r3NFQpzpQ2s4qDEw2ISXghsbeWxmTkg5VH8VKXgKRKcXxSHYnrfnZOQOtrioZpXkWW2i3wqxwESduH+YUTMCTXlW7xOM2D6C2rsCOn5tqL6KTpRmy1oZ+OroK8Ralob+PtpNr8xEt91RqjLHvVh5Cg5O8KfGBfhUHGrpIUsBxjn9E9IehLxnln27jiD1EmxtUnoT5VYF9N2Gg1NzSx/W3k7gDiOkMfcz01HHMfGokwH8VHzD9PZ1byHck8c9z8NK626Wr4s4bxiat5c2cN9H4Qn0hiFiLyyUgXXf5w4uAq+zcX2srw5BST8On++0C6zbLp5it+FuNV8CJLq18EFiYtd7SS7R38PS5ArnqzSA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: p69vapuQ4UoR4Z+l+xrs58jpqCkOFeFlODMrJlEh+hrrmWirDp/lfdvnlIlhix0Qld5swEKh1Sl1oadmkhuQzATjmM3AdHA33wMQvZGPBmVWf6rGSj2HVOrcpzqFnQTbM2IRYp3pIU/unGVesbQ419L3ABGjP6fpMGHAWUIWIR+XSbvmuMxvvanovK4y8Kcut5qCE7xE0D5fDD4iOzD73c74JfNTgTjNueanwqeiIv/NArZaXCTgNS58Y5ozWiQxMqOLk/GGaUyNSc5Yh49Iv+E4Hd/dSxmUAJMhwHpoWAWPX8OyA/DniZv6L5QlXyMcqK3Jb2l2a4kIJan+Rx6gGyY86rheffNv0Ytf/68vRtKThsaqIgqbHUBmxhwKASqQCnG3dleFIcPkaRYGeWJvLfC/Er3Ofe/+xBzZ+Abn0+lOv880iFcD8s2AgIgLLtSBhZvPRL8ixd/x43o8x/mFxuxidn0kp6KDEhjyX48h2T1kebYwlgi8KRdnPbKlF7QnM+3FfkFoWAXksXxlS4m7siQhiu+rkZQaBkaWVo6XNJS7zvcD1NIufnGHPS+zZ0Gu0mGQ6JkyCOx4QzJNmnj22EDkXgqzoXms+uk61W4hEOw2N0vuBhGunXEzNN0GNyGXAOZVVWQsyM6JwrxgUlBLOEqWhlNE8NCfLp4tEYt2W7UdYcwbGb/HA9QWAPvd8ER0JoQ1O8l/1ktdjEJ4C7+ZbCiOKl2PE1m53fx19+h7zpROlTc0AQC6DnCOMt0MbERb/e4cOh+KQ0g2rKxFoad/bxmdArLC+bNQaRe3SngoKlUWQhhDumavwdHvUGzWjZFT2ND/gKJzHjMM0Zms7QGqS74jDS8ijsovv0kyfziEo7ya2pVYK1eW73aFo5Mmqc23McypRJLnn467urj1VKvguQ6bOLfRaaGiPevLjfsRwisc3Vh/dmG90cqRWht7vhPV3ZynS5y37AbXocD3rHbrFw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d82c8467-afc6-412e-c35a-08d9df488892 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2022 14:48:07.3625 (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: AM6PR03MB5236 Subject: [FFmpeg-devel] [PATCH v2 20/31] lavf/swfenc: switch to new FIFO API 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: Anton Khirnov Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: l/gIux49layW From: Anton Khirnov --- libavformat/swfenc.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/libavformat/swfenc.c b/libavformat/swfenc.c index 1fd2ad81a3..9eb22ee9b3 100644 --- a/libavformat/swfenc.c +++ b/libavformat/swfenc.c @@ -38,7 +38,7 @@ typedef struct SWFEncContext { int swf_frame_number; int video_frame_number; int tag; - AVFifoBuffer *audio_fifo; + AVFifo *audio_fifo; AVCodecParameters *audio_par, *video_par; AVStream *video_st; } SWFEncContext; @@ -211,7 +211,7 @@ static int swf_write_header(AVFormatContext *s) } if (par->codec_id == AV_CODEC_ID_MP3) { swf->audio_par = par; - swf->audio_fifo= av_fifo_alloc(AUDIO_FIFO_SIZE); + swf->audio_fifo = av_fifo_alloc2(AUDIO_FIFO_SIZE, 1, 0); if (!swf->audio_fifo) return AVERROR(ENOMEM); } else { @@ -362,6 +362,12 @@ static int swf_write_header(AVFormatContext *s) return 0; } +static int fifo_avio_wrapper(void *opaque, void *buf, size_t *nb_elems) +{ + avio_write(opaque, buf, *nb_elems); + return 0; +} + static int swf_write_video(AVFormatContext *s, AVCodecParameters *par, const uint8_t *buf, int size, unsigned pkt_flags) { @@ -454,12 +460,12 @@ static int swf_write_video(AVFormatContext *s, swf->swf_frame_number++; /* streaming sound always should be placed just before showframe tags */ - if (swf->audio_par && av_fifo_size(swf->audio_fifo)) { - int frame_size = av_fifo_size(swf->audio_fifo); + if (swf->audio_par && av_fifo_can_read(swf->audio_fifo)) { + size_t frame_size = av_fifo_can_read(swf->audio_fifo); put_swf_tag(s, TAG_STREAMBLOCK | TAG_LONG); avio_wl16(pb, swf->sound_samples); avio_wl16(pb, 0); // seek samples - av_fifo_generic_read(swf->audio_fifo, pb, frame_size, (void*)avio_write); + av_fifo_read_to_cb(swf->audio_fifo, fifo_avio_wrapper, pb, &frame_size); put_swf_end_tag(s); /* update FIFO */ @@ -482,12 +488,12 @@ static int swf_write_audio(AVFormatContext *s, if (swf->swf_frame_number == 16000) av_log(s, AV_LOG_INFO, "warning: Flash Player limit of 16000 frames reached\n"); - if (av_fifo_size(swf->audio_fifo) + size > AUDIO_FIFO_SIZE) { + if (av_fifo_can_write(swf->audio_fifo) < size) { av_log(s, AV_LOG_ERROR, "audio fifo too small to mux audio essence\n"); return -1; } - av_fifo_generic_write(swf->audio_fifo, buf, size, NULL); + av_fifo_write(swf->audio_fifo, buf, size); swf->sound_samples += av_get_audio_frame_duration2(par, size); /* if audio only stream make sure we add swf frames */ @@ -535,7 +541,7 @@ static void swf_deinit(AVFormatContext *s) { SWFEncContext *swf = s->priv_data; - av_fifo_freep(&swf->audio_fifo); + av_fifo_freep2(&swf->audio_fifo); } #if CONFIG_SWF_MUXER