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 ESMTPS id BAD394D250 for ; Tue, 18 Feb 2025 19:29:34 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CB57268BBE4; Tue, 18 Feb 2025 21:29:30 +0200 (EET) Received: from mail-vs1-f47.google.com (mail-vs1-f47.google.com [209.85.217.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 12B3168B5C8 for ; Tue, 18 Feb 2025 21:29:24 +0200 (EET) Received: by mail-vs1-f47.google.com with SMTP id ada2fe7eead31-4be78f8255fso69028137.1 for ; Tue, 18 Feb 2025 11:29:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739906962; x=1740511762; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=3yf9zTsXFPbtw4Ij+F9+tRtWOlzFZ9lFmCZrY43MXPI=; b=hrgoRZ8VmEFk1WQRRb+B3FXdb0u6DFXTOUtwRdEeFyge8bB3o+giw23rfWJepSdzk1 BWuXmAAYsPXTCeq2SYadTXdqxcu2aKavvI+Ys+LxGOWJdtYEx8Qhw4c3KCKJP03D5ZOL SVpJOQ0q5TrO/Gzo2yVylJU+Kvcj9cwAIT9rX612+1RPeZRVeDHtoTRBovcLAzDekoXO jEUD9tHK9DveHws++y2aFlPtYgO7Bc0r2sadg6QMleqKT26FKC85nVQgOIrA6zXg6W6e vdrRLjA8U+PfRzzqWsTx9fCescekCMTsPQfENllAzG3eY4P4cLsSgf76hsi2YnkRQJcp PS+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739906962; x=1740511762; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3yf9zTsXFPbtw4Ij+F9+tRtWOlzFZ9lFmCZrY43MXPI=; b=BcJhD59ogzUR1SltfzHrmw0Ya1wUqtLuZ7CKmBuuluWpD01n/Ej42xTHjwMrwfQXIv MO3oebwUDUPokm6zLL3IRxuwp/pEfAMEIDu0oZ7kGQibjkrL9enbVCRcoZLdlHHZHa0o 9oEHM7DhkapWWfopcA+SHGJvXXCzK/BKH2Rfewvm7M/fNGGM1lm3/T9dRB22y1ofjTD1 MMn05U0ZFE68f8DuqeX8NGsVdzEaInc2Vo8uL6a0j0VI2z9/x3VP2xCyd3qUxemRMtZx pVUam6XE32OKXzGVr5aErBMJslrGkmUPsvkrjopTX1jQ30XdI5Qy1GuuDTddUs2N9wD3 xvjg== X-Gm-Message-State: AOJu0YxGL2NUsxEMizSmJn4qJst0zdxsgGg0nDXCY6DQ22ACs3KaX4E6 AoMZb66PcqXqVCPys1lav0VhSJ2MdX54KesnC8hRP5KkO3hyC6EiZeH6d+/U X-Gm-Gg: ASbGncuRHYavFsX3MXe/cewt8F7gpJASd6UrxWAPU8bHYLu0WmWeIHE0beETmmN437e HtOHnRo4tGvf5TBQJXTyJ/srkUGnRcxLyr41+M3g58sU50PXH2SXWoxNXwe7D8JEP6mCsRPtkVI yM/zt+T+ujsx4WZqpyegH96tXJKLChqHSowENo3hMAB2dW6itQDRa0A52DRDz3ND2wdIbDN8mc5 xlArqUQYPBi9nijU5URHEvQmBQPBH87wKxCK6EavPLo8+xm2E9yCCj85EEnjRGx8HsUBjRzrDCc KRNuH2y43E2qnlAF6kjf21SfgFWKcA== X-Google-Smtp-Source: AGHT+IEjWJM2bmkHC05xjRx/FOZM9kJssReI1/IUSfqE+OhN7bZozsTiTzYLj+ccdrX4+RrIwlc5Ug== X-Received: by 2002:a05:6102:4188:b0:4bd:379c:4037 with SMTP id ada2fe7eead31-4be845116femr813303137.9.1739906961893; Tue, 18 Feb 2025 11:29:21 -0800 (PST) Received: from localhost.localdomain ([2800:2121:b040:c:a0a7:974:71c7:ca89]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-868e86cc1fdsm2601468241.33.2025.02.18.11.29.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 11:29:21 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 18 Feb 2025 16:28:58 -0300 Message-ID: <20250218192858.10756-1-jamrial@gmail.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/sbcenc: port to AVCodec.get_supported_config() 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 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: Signed-off-by: James Almer --- libavcodec/sbcenc.c | 50 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/libavcodec/sbcenc.c b/libavcodec/sbcenc.c index f2c4fbe329..d85ab76cb0 100644 --- a/libavcodec/sbcenc.c +++ b/libavcodec/sbcenc.c @@ -194,6 +194,8 @@ static size_t sbc_pack_frame(AVPacket *avpkt, struct sbc_frame *frame, return put_bytes_output(&pb); } +static const int sbc_supported_samplerates[] = { 16000, 32000, 44100, 48000, 0 }; + static int sbc_encode_init(AVCodecContext *avctx) { SBCEncContext *sbc = avctx->priv_data; @@ -260,8 +262,8 @@ static int sbc_encode_init(AVCodecContext *avctx) avctx->frame_size = 4*((frame->subbands >> 3) + 1) * 4*(frame->blocks >> 2); } - for (int i = 0; avctx->codec->supported_samplerates[i]; i++) - if (avctx->sample_rate == avctx->codec->supported_samplerates[i]) + for (int i = 0; sbc_supported_samplerates[i]; i++) + if (avctx->sample_rate == sbc_supported_samplerates[i]) frame->frequency = i; frame->channels = avctx->ch_layout.nb_channels; @@ -326,6 +328,41 @@ static int sbc_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, return 0; } +static const enum AVSampleFormat sbc_sample_fmts[] = { + AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_NONE +}; + +static const AVChannelLayout sbc_ch_layouts[] = { + AV_CHANNEL_LAYOUT_MONO, + AV_CHANNEL_LAYOUT_STEREO, + { 0 } +}; + +static int sbc_get_supported_config(const AVCodecContext *avctx, + const AVCodec *codec, + enum AVCodecConfig config, + unsigned flags, const void **out, + int *out_num) +{ + switch (config) { + case AV_CODEC_CONFIG_SAMPLE_RATE: + *out = sbc_supported_samplerates; + *out_num = FF_ARRAY_ELEMS(sbc_supported_samplerates) - 1; + return 0; + case AV_CODEC_CONFIG_SAMPLE_FORMAT: + *out = sbc_sample_fmts; + *out_num = FF_ARRAY_ELEMS(sbc_sample_fmts) - 1; + return 0; + case AV_CODEC_CONFIG_CHANNEL_LAYOUT: + *out = sbc_ch_layouts; + *out_num = FF_ARRAY_ELEMS(sbc_ch_layouts) - 1; + return 0; + } + + return ff_default_get_supported_config(avctx, codec, config, flags, out, out_num); +} + #define OFFSET(x) offsetof(SBCEncContext, x) #define AE AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { @@ -344,7 +381,7 @@ static const AVClass sbc_class = { .version = LIBAVUTIL_VERSION_INT, }; -const FFCodec ff_sbc_encoder = { +FFCodec ff_sbc_encoder = { .p.name = "sbc", CODEC_LONG_NAME("SBC (low-complexity subband codec)"), .p.type = AVMEDIA_TYPE_AUDIO, @@ -354,12 +391,7 @@ const FFCodec ff_sbc_encoder = { .priv_data_size = sizeof(SBCEncContext), .init = sbc_encode_init, FF_CODEC_ENCODE_CB(sbc_encode_frame), - .p.ch_layouts = (const AVChannelLayout[]) { AV_CHANNEL_LAYOUT_MONO, - AV_CHANNEL_LAYOUT_STEREO, - { 0 } }, - .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, - AV_SAMPLE_FMT_NONE }, - .p.supported_samplerates = (const int[]) { 16000, 32000, 44100, 48000, 0 }, + .get_supported_config = sbc_get_supported_config, .p.priv_class = &sbc_class, .p.profiles = NULL_IF_CONFIG_SMALL(ff_sbc_profiles), }; -- 2.48.1 _______________________________________________ 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".