From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 9/9] avcodec/opus_pvq: Avoid indirection when possible Date: Fri, 7 Oct 2022 22:25:08 +0200 Message-ID: <GV1P250MB07373644657196CADE10BE488F5F9@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM> (raw) In-Reply-To: <GV1P250MB0737F6A03249BF948291E39F8F5F9@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/opus_pvq.c | 4 ++-- libavcodec/opus_pvq.h | 3 +++ libavcodec/opus_pvq_template.c | 35 ++++++++++++++++++---------------- libavcodec/opusenc_psy.c | 12 ++++++------ 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/libavcodec/opus_pvq.c b/libavcodec/opus_pvq.c index 8ef0f85a81..26d4e436e1 100644 --- a/libavcodec/opus_pvq.c +++ b/libavcodec/opus_pvq.c @@ -511,9 +511,9 @@ int av_cold ff_celt_pvq_init(CeltPVQ **pvq, int encode) #if CONFIG_OPUS_ENCODER #if CONFIG_OPUS_DECODER - s->quant_band = encode ? pvq_quant_band_enc : pvq_quant_band_dec; + s->quant_band = encode ? ff_pvq_quant_band_enc : pvq_quant_band_dec; #else - s->quant_band = pvq_quant_band_enc; + s->quant_band = ff_pvq_quant_band_enc; #endif s->pvq_search = ppp_pvq_search_c; #if ARCH_X86 diff --git a/libavcodec/opus_pvq.h b/libavcodec/opus_pvq.h index b71bc49034..4907025125 100644 --- a/libavcodec/opus_pvq.h +++ b/libavcodec/opus_pvq.h @@ -26,6 +26,7 @@ #include "libavutil/mem_internal.h" #include "opus_celt.h" +#include "opus_rc.h" #define QUANT_FN(name) uint32_t (name)(struct CeltPVQ *pvq, CeltFrame *f, \ OpusRangeCoder *rc, const int band, float *X, \ @@ -47,4 +48,6 @@ void ff_celt_pvq_init_x86(struct CeltPVQ *s); int ff_celt_pvq_init(struct CeltPVQ **pvq, int encode); void ff_celt_pvq_uninit(struct CeltPVQ **pvq); +QUANT_FN(ff_pvq_quant_band_enc); + #endif /* AVCODEC_OPUS_PVQ_H */ diff --git a/libavcodec/opus_pvq_template.c b/libavcodec/opus_pvq_template.c index 5f03f3d415..79e8e4ca52 100644 --- a/libavcodec/opus_pvq_template.c +++ b/libavcodec/opus_pvq_template.c @@ -24,14 +24,17 @@ */ #undef FUNC +#undef STATIC #if ENCODING -#define FUNC(name) name ## _enc +#define STATIC +#define FUNC(name) ff_ ## name ## _enc #else +#define STATIC static #define FUNC(name) name ## _dec #endif -static +STATIC uint32_t FUNC(pvq_quant_band)(CeltPVQ *const pvq, CeltFrame *const f, OpusRangeCoder *const rc, const int band, float *X, @@ -256,8 +259,8 @@ uint32_t FUNC(pvq_quant_band)(CeltPVQ *const pvq, CeltFrame *const f, sign = 1 - 2 * sign; /* We use orig_fill here because we want to fold the side, but if itheta==16384, we'll have cleared the low bits of fill. */ - cm = pvq->quant_band(pvq, f, rc, band, x2, NULL, N, mbits, blocks, lowband, duration, - lowband_out, level, gain, lowband_scratch, orig_fill); + cm = FUNC(pvq_quant_band)(pvq, f, rc, band, x2, NULL, N, mbits, blocks, lowband, duration, + lowband_out, level, gain, lowband_scratch, orig_fill); /* We don't split N=2 bands, so cm is either 1 or 0 (for a fold-collapse), and there's no need to worry about mixing with the other channel. */ y2[0] = -sign * x2[1]; @@ -309,25 +312,25 @@ uint32_t FUNC(pvq_quant_band)(CeltPVQ *const pvq, CeltFrame *const f, if (mbits >= sbits) { /* In stereo mode, we do not apply a scaling to the mid * because we need the normalized mid for folding later */ - cm = pvq->quant_band(pvq, f, rc, band, X, NULL, N, mbits, blocks, - lowband, duration, next_lowband_out1, next_level, - stereo ? 1.0f : (gain * mid), lowband_scratch, fill); + cm = FUNC(pvq_quant_band)(pvq, f, rc, band, X, NULL, N, mbits, blocks, + lowband, duration, next_lowband_out1, next_level, + stereo ? 1.0f : (gain * mid), lowband_scratch, fill); rebalance = mbits - (rebalance - f->remaining2); if (rebalance > 3 << 3 && itheta != 0) sbits += rebalance - (3 << 3); /* For a stereo split, the high bits of fill are always zero, * so no folding will be done to the side. */ - cmt = pvq->quant_band(pvq, f, rc, band, Y, NULL, N, sbits, blocks, - next_lowband2, duration, NULL, next_level, - gain * side, NULL, fill >> blocks); + cmt = FUNC(pvq_quant_band)(pvq, f, rc, band, Y, NULL, N, sbits, blocks, + next_lowband2, duration, NULL, next_level, + gain * side, NULL, fill >> blocks); cm |= cmt << ((B0 >> 1) & (stereo - 1)); } else { /* For a stereo split, the high bits of fill are always zero, * so no folding will be done to the side. */ - cm = pvq->quant_band(pvq, f, rc, band, Y, NULL, N, sbits, blocks, - next_lowband2, duration, NULL, next_level, - gain * side, NULL, fill >> blocks); + cm = FUNC(pvq_quant_band)(pvq, f, rc, band, Y, NULL, N, sbits, blocks, + next_lowband2, duration, NULL, next_level, + gain * side, NULL, fill >> blocks); cm <<= ((B0 >> 1) & (stereo - 1)); rebalance = sbits - (rebalance - f->remaining2); if (rebalance > 3 << 3 && itheta != 16384) @@ -335,9 +338,9 @@ uint32_t FUNC(pvq_quant_band)(CeltPVQ *const pvq, CeltFrame *const f, /* In stereo mode, we do not apply a scaling to the mid because * we need the normalized mid for folding later */ - cm |= pvq->quant_band(pvq, f, rc, band, X, NULL, N, mbits, blocks, - lowband, duration, next_lowband_out1, next_level, - stereo ? 1.0f : (gain * mid), lowband_scratch, fill); + cm |= FUNC(pvq_quant_band)(pvq, f, rc, band, X, NULL, N, mbits, blocks, + lowband, duration, next_lowband_out1, next_level, + stereo ? 1.0f : (gain * mid), lowband_scratch, fill); } } } else { diff --git a/libavcodec/opusenc_psy.c b/libavcodec/opusenc_psy.c index 17a2efd8d5..0ec915d3c5 100644 --- a/libavcodec/opusenc_psy.c +++ b/libavcodec/opusenc_psy.c @@ -54,14 +54,14 @@ static float pvq_band_cost(CeltPVQ *pvq, CeltFrame *f, OpusEncRangeCoder *rce, i } if (f->dual_stereo) { - pvq->quant_band(pvq, f, rc, band, X, NULL, band_size, b / 2, f->blocks, NULL, - f->size, norm1, 0, 1.0f, lowband_scratch, cm[0]); + ff_pvq_quant_band_enc(pvq, f, rc, band, X, NULL, band_size, b / 2, f->blocks, NULL, + f->size, norm1, 0, 1.0f, lowband_scratch, cm[0]); - pvq->quant_band(pvq, f, rc, band, Y, NULL, band_size, b / 2, f->blocks, NULL, - f->size, norm2, 0, 1.0f, lowband_scratch, cm[1]); + ff_pvq_quant_band_enc(pvq, f, rc, band, Y, NULL, band_size, b / 2, f->blocks, NULL, + f->size, norm2, 0, 1.0f, lowband_scratch, cm[1]); } else { - pvq->quant_band(pvq, f, rc, band, X, Y, band_size, b, f->blocks, NULL, f->size, - norm1, 0, 1.0f, lowband_scratch, cm[0] | cm[1]); + ff_pvq_quant_band_enc(pvq, f, rc, band, X, Y, band_size, b, f->blocks, NULL, f->size, + norm1, 0, 1.0f, lowband_scratch, cm[0] | cm[1]); } for (i = 0; i < band_size; i++) { -- 2.34.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".
next prev parent reply other threads:[~2022-10-07 20:26 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-10-07 20:20 [FFmpeg-devel] [PATCH 1/9] avcodec/opus_rc: Remove write-only waste from OpusRangeCoder Andreas Rheinhardt 2022-10-07 20:25 ` [FFmpeg-devel] [PATCH 2/9] avcodec/opusenc_psy: Remove unused function parameter Andreas Rheinhardt 2022-10-07 20:25 ` [FFmpeg-devel] [PATCH 3/9] avcodec/opusenc_psy: Remove unused/write-only context members Andreas Rheinhardt 2022-10-07 20:25 ` [FFmpeg-devel] [PATCH 4/9] avcodec/opus: Use prefix for defines Andreas Rheinhardt 2022-10-07 20:25 ` [FFmpeg-devel] [PATCH 5/9] avcodec/opus_rc: Don't duplicate define Andreas Rheinhardt 2022-10-07 20:25 ` [FFmpeg-devel] [PATCH 6/9] avcodec/opus_pvq: Don't build ppp_pvq_search_c when unused Andreas Rheinhardt 2022-10-07 20:25 ` [FFmpeg-devel] [PATCH 7/9] avcodec/opus_rc: Split de/encoder-only parts off OpusRangeContext Andreas Rheinhardt 2022-10-07 20:25 ` [FFmpeg-devel] [PATCH 8/9] avcodec/opus: Rename opus.c->opus_celt.c, opus_celt.c->opusdec_celt.c Andreas Rheinhardt 2022-10-07 20:25 ` Andreas Rheinhardt [this message] 2022-10-08 3:25 ` [FFmpeg-devel] [PATCH 1/9] avcodec/opus_rc: Remove write-only waste from OpusRangeCoder Lynne
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=GV1P250MB07373644657196CADE10BE488F5F9@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git