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 98AD94CA12 for ; Sun, 23 Feb 2025 22:07:02 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 149B468CA14; Mon, 24 Feb 2025 00:06:51 +0200 (EET) Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FA5068CA49 for ; Mon, 24 Feb 2025 00:06:44 +0200 (EET) Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2f44353649aso5542394a91.0 for ; Sun, 23 Feb 2025 14:06:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740348401; x=1740953201; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Lhh5FZnRMpJVJCx/7jqiGaOO/IreG15sUVGjS++Elb0=; b=Tqtg1LVrf0VGkDYaED58jUoEF8qNlMn2FeRasjaj+cCM+gv67xN8/OfigpkSSx2nDQ MDlxw5PPbTcgXri0jBMii3RfRVm/ig/HVARf3o9qJGMEJs6kC7u2wNCNcIxmnGDdqsnO S+2HwpEwKLnMSb+GJVD8Q3bzObr7Y/jnH+9lAmEkTTMNFte/9pRzvJMk054xhdIuMl0x Sk0vqZvMnAjMopdvRNYa7vF93DXOdBktSqu3G6DvdkJI4CbvqnQgcyqnjkA3U2hRcgUn TGcDVEOnghxmgNEALIPfbLw7Jy7TTFugEq3/qL1jx9qnmwMLv9NPqGjz+L8BDnyGfY8O 7MPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740348401; x=1740953201; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Lhh5FZnRMpJVJCx/7jqiGaOO/IreG15sUVGjS++Elb0=; b=Gbb5t2cqQPBTeDBQfwoTXZKm0AlN31nLbykRTkUlxhkq55odxntG3rER5PlPN9mSyw WHkYStzkFwMMkKsoj6f3kv1pTloYOcEHJP15AE7qWE8It0QaeB+PBj0kn84fRWdZsoks FS4TtHrhaOmGwHj7RYEN3MnBB+3+94zKrNC19r2G5EWbPmBShQ2Se0jfFeHA8ju0oTxP QgMb8/Pi8iqaNcV+vKcAopZ9u/y1khphfbi0MCaH3OSQ9uKBX5HNShxK9DmUASn/btZm TircZ+0hQVw+HfeYPMDZcHlbVCT9HG3p15dn5MoPAjUHA4oaG9sL41b4IAE0mIg1mOBo HFrA== X-Gm-Message-State: AOJu0YwTCIHLnNqrwKtEPkVZLGIAbZq9ZHVgrrMTSoZ+aAOH3r82KTEq SNnTRMiVBCUVJHZnHwQQ6hbCWfduJ7swQprJAOX86ROqbpPwk86fsvALxXTj X-Gm-Gg: ASbGncsZgHSjwTyi0PjNIXXft7uItCihrgDJNWzkOxPPbcWi6vdWgo+5gqZM0r8whEd c2dpMJ7nY1xKDGkzwt1o9XfuYYMWmjA27xJQCPulL+c6UtXQNMOM4zfqW0YDzLBRlBO9vUsoRCf ODBKo39aNZpd7+rVGV8gI3G0iW6iEP0u/7TgBDhJ31GGLaorpUoRQN/z/MuHsxI7sGtUYCZOr7e ONkm0dScjYZbBcA0jMinhwb7gsSKMkC1w1qhn4iw6pzOw9RUehgz54PzGblwcL4RlpjhhpSMwh6 Bj73hEM4hME2zwpuVr2+SIvc9dMMNwbbdXLfLhNhOg== X-Google-Smtp-Source: AGHT+IHG1LzcLcluK46q96wXCKY3xyyaaWx+1Tnum6OBHuWJT5upzW18VjTpGYre9Sm5AbSA3PC+BQ== X-Received: by 2002:a17:90b:2e45:b0:2ee:8008:b583 with SMTP id 98e67ed59e1d1-2fce78b777fmr20713580a91.16.1740348401388; Sun, 23 Feb 2025 14:06:41 -0800 (PST) Received: from localhost.localdomain ([2800:2121:b040:c:b49d:85a5:a7d1:4da6]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fceb04bf70sm5091848a91.16.2025.02.23.14.06.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 14:06:40 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 23 Feb 2025 19:06:01 -0300 Message-ID: <20250223220630.18756-2-jamrial@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250223220630.18756-1-jamrial@gmail.com> References: <20250223220630.18756-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/30] avcodec: remove deprecated FF_API_SUBFRAMES 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: Deprecated since 2023-05-15. Signed-off-by: James Almer --- libavcodec/alsdec.c | 6 +----- libavcodec/apac.c | 3 --- libavcodec/apedec.c | 6 +----- libavcodec/atrac3.c | 12 ++---------- libavcodec/atrac9dec.c | 6 +----- libavcodec/bonk.c | 3 --- libavcodec/codec.h | 15 --------------- libavcodec/ftr.c | 6 +----- libavcodec/g723_1dec.c | 6 +----- libavcodec/g729dec.c | 12 ++---------- libavcodec/libspeexdec.c | 6 +----- libavcodec/misc4.c | 3 --- libavcodec/shorten.c | 3 --- libavcodec/version_major.h | 1 - libavcodec/wavarc.c | 3 --- libavcodec/wmalosslessdec.c | 6 +----- libavcodec/wmaprodec.c | 18 +++--------------- libavcodec/wmavoice.c | 6 +----- 18 files changed, 15 insertions(+), 106 deletions(-) diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index 28f2079985..734eec8bf8 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -2190,10 +2190,6 @@ const FFCodec ff_als_decoder = { .close = decode_end, FF_CODEC_DECODE_CB(decode_frame), .flush = flush, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; diff --git a/libavcodec/apac.c b/libavcodec/apac.c index eb05d38636..0ba944b4ca 100644 --- a/libavcodec/apac.c +++ b/libavcodec/apac.c @@ -269,9 +269,6 @@ const FFCodec ff_apac_decoder = { FF_CODEC_DECODE_CB(apac_decode), .close = apac_close, .p.capabilities = AV_CODEC_CAP_DELAY | -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_U8P, diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index d75a85f466..5b66b4ed2e 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -1759,11 +1759,7 @@ const FFCodec ff_ape_decoder = { .init = ape_decode_init, .close = ape_decode_close, FF_CODEC_DECODE_CB(ape_decode_frame), - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DELAY | + .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .flush = ape_flush, diff --git a/libavcodec/atrac3.c b/libavcodec/atrac3.c index 39ddfd9e45..3f804aa81d 100644 --- a/libavcodec/atrac3.c +++ b/libavcodec/atrac3.c @@ -1027,11 +1027,7 @@ const FFCodec ff_atrac3_decoder = { .init = atrac3_decode_init, .close = atrac3_decode_close, FF_CODEC_DECODE_CB(atrac3_decode_frame), - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1, + .p.capabilities = AV_CODEC_CAP_DR1, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE }, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, @@ -1046,11 +1042,7 @@ const FFCodec ff_atrac3al_decoder = { .init = atrac3_decode_init, .close = atrac3_decode_close, FF_CODEC_DECODE_CB(atrac3al_decode_frame), - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1, + .p.capabilities = AV_CODEC_CAP_DR1, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE }, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, diff --git a/libavcodec/atrac9dec.c b/libavcodec/atrac9dec.c index e375f46fd0..e37f88500b 100644 --- a/libavcodec/atrac9dec.c +++ b/libavcodec/atrac9dec.c @@ -1006,9 +1006,5 @@ const FFCodec ff_atrac9_decoder = { FF_CODEC_DECODE_CB(atrac9_decode_frame), .flush = atrac9_decode_flush, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, }; diff --git a/libavcodec/bonk.c b/libavcodec/bonk.c index 14b7457a1a..434d56c787 100644 --- a/libavcodec/bonk.c +++ b/libavcodec/bonk.c @@ -427,9 +427,6 @@ const FFCodec ff_bonk_decoder = { FF_CODEC_DECODE_CB(bonk_decode), .close = bonk_close, .p.capabilities = AV_CODEC_CAP_DELAY | -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, diff --git a/libavcodec/codec.h b/libavcodec/codec.h index f7541ffc42..f509e5d94e 100644 --- a/libavcodec/codec.h +++ b/libavcodec/codec.h @@ -80,21 +80,6 @@ */ #define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6) -#if FF_API_SUBFRAMES -/** - * Codec can output multiple frames per AVPacket - * Normally demuxers return one frame at a time, demuxers which do not do - * are connected to a parser to split what they return into proper frames. - * This flag is reserved to the very rare category of codecs which have a - * bitstream that cannot be split into frames without timeconsuming - * operations like full decoding. Demuxers carrying such bitstreams thus - * may return multiple frames in a packet. This has many disadvantages like - * prohibiting stream copy in many cases thus it should only be considered - * as a last resort. - */ -#define AV_CODEC_CAP_SUBFRAMES (1 << 8) -#endif - /** * Codec is experimental and is thus avoided in favor of non experimental * encoders diff --git a/libavcodec/ftr.c b/libavcodec/ftr.c index 7cf1b1586f..3e7ab92887 100644 --- a/libavcodec/ftr.c +++ b/libavcodec/ftr.c @@ -203,10 +203,6 @@ const FFCodec ff_ftr_decoder = { .close = ftr_close, .flush = ftr_flush, .priv_data_size = sizeof(FTRContext), - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1, + .p.capabilities = AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; diff --git a/libavcodec/g723_1dec.c b/libavcodec/g723_1dec.c index 5fe4a21d9b..67a5df55ff 100644 --- a/libavcodec/g723_1dec.c +++ b/libavcodec/g723_1dec.c @@ -1118,10 +1118,6 @@ const FFCodec ff_g723_1_decoder = { .priv_data_size = sizeof(G723_1_Context), .init = g723_1_decode_init, FF_CODEC_DECODE_CB(g723_1_decode_frame), - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1, + .p.capabilities = AV_CODEC_CAP_DR1, .p.priv_class = &g723_1dec_class, }; diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c index bf10a6dd33..7499ed7444 100644 --- a/libavcodec/g729dec.c +++ b/libavcodec/g729dec.c @@ -761,11 +761,7 @@ const FFCodec ff_g729_decoder = { .init = decoder_init, FF_CODEC_DECODE_CB(decode_frame), .close = decode_close, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1, + .p.capabilities = AV_CODEC_CAP_DR1, }; const FFCodec ff_acelp_kelvin_decoder = { @@ -777,9 +773,5 @@ const FFCodec ff_acelp_kelvin_decoder = { .init = decoder_init, FF_CODEC_DECODE_CB(decode_frame), .close = decode_close, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1, + .p.capabilities = AV_CODEC_CAP_DR1, }; diff --git a/libavcodec/libspeexdec.c b/libavcodec/libspeexdec.c index 84b308490a..46f65ab075 100644 --- a/libavcodec/libspeexdec.c +++ b/libavcodec/libspeexdec.c @@ -195,11 +195,7 @@ const FFCodec ff_libspeex_decoder = { CODEC_LONG_NAME("libspeex Speex"), .p.type = AVMEDIA_TYPE_AUDIO, .p.id = AV_CODEC_ID_SPEEX, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, + .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, .p.wrapper_name = "libspeex", .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE, .priv_data_size = sizeof(LibSpeexContext), diff --git a/libavcodec/misc4.c b/libavcodec/misc4.c index 72ac944e54..e91d4dce04 100644 --- a/libavcodec/misc4.c +++ b/libavcodec/misc4.c @@ -180,9 +180,6 @@ const FFCodec ff_misc4_decoder = { .init = misc4_init, FF_CODEC_DECODE_CB(misc4_decode), .p.capabilities = AV_CODEC_CAP_DR1 | -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif AV_CODEC_CAP_CHANNEL_CONF, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c index 46d3b7a615..852f3efe26 100644 --- a/libavcodec/shorten.c +++ b/libavcodec/shorten.c @@ -817,9 +817,6 @@ const FFCodec ff_shorten_decoder = { FF_CODEC_DECODE_CB(shorten_decode_frame), .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DELAY | -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif AV_CODEC_CAP_DR1, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_U8P, diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h index 35df5eb779..5b30be148c 100644 --- a/libavcodec/version_major.h +++ b/libavcodec/version_major.h @@ -38,7 +38,6 @@ */ #define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 62) -#define FF_API_SUBFRAMES (LIBAVCODEC_VERSION_MAJOR < 62) #define FF_API_TICKS_PER_FRAME (LIBAVCODEC_VERSION_MAJOR < 62) #define FF_API_DROPCHANGED (LIBAVCODEC_VERSION_MAJOR < 62) diff --git a/libavcodec/wavarc.c b/libavcodec/wavarc.c index 93b76c43e8..deb5df2097 100644 --- a/libavcodec/wavarc.c +++ b/libavcodec/wavarc.c @@ -881,9 +881,6 @@ const FFCodec ff_wavarc_decoder = { FF_CODEC_DECODE_CB(wavarc_decode), .close = wavarc_close, .p.capabilities = AV_CODEC_CAP_DR1 | -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif AV_CODEC_CAP_DELAY, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_U8P, AV_SAMPLE_FMT_S16P, diff --git a/libavcodec/wmalosslessdec.c b/libavcodec/wmalosslessdec.c index 9559fe1faf..31fc2d2d27 100644 --- a/libavcodec/wmalosslessdec.c +++ b/libavcodec/wmalosslessdec.c @@ -1335,11 +1335,7 @@ const FFCodec ff_wmalossless_decoder = { .close = decode_close, FF_CODEC_DECODE_CB(decode_packet), .flush = flush, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S32P, diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index a6c4a75632..d1cbadcf8a 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -2100,11 +2100,7 @@ const FFCodec ff_wmapro_decoder = { .init = wmapro_decode_init, .close = wmapro_decode_end, FF_CODEC_DECODE_CB(wmapro_decode_packet), - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1, + .p.capabilities = AV_CODEC_CAP_DR1, .flush = wmapro_flush, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE }, @@ -2121,11 +2117,7 @@ const FFCodec ff_xma1_decoder = { .close = xma_decode_end, FF_CODEC_DECODE_CB(xma_decode_packet), .flush = xma_flush, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE }, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, @@ -2141,11 +2133,7 @@ const FFCodec ff_xma2_decoder = { .close = xma_decode_end, FF_CODEC_DECODE_CB(xma_decode_packet), .flush = xma_flush, - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE }, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c index 39868e02b3..4fa794c8ac 100644 --- a/libavcodec/wmavoice.c +++ b/libavcodec/wmavoice.c @@ -2030,11 +2030,7 @@ const FFCodec ff_wmavoice_decoder = { .init = wmavoice_decode_init, .close = wmavoice_decode_end, FF_CODEC_DECODE_CB(wmavoice_decode_packet), - .p.capabilities = -#if FF_API_SUBFRAMES - AV_CODEC_CAP_SUBFRAMES | -#endif - AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .flush = wmavoice_flush, }; -- 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".