[FFmpeg-devel] [PATCH] opus_celt: rename structures to better names and reorganize them

James Almer jamrial at gmail.com
Fri Nov 11 04:25:09 EET 2016


On 11/10/2016 1:17 PM, Rostislav Pehlivanov wrote:
> This is meant to be applied on top of my previous patch which
> split PVQ into celt_pvq.c and made opus_celt.h
> 
> Essentially nothing has been changed other than renaming CeltFrame
> to CeltBlock (CeltFrame had absolutely nothing at all to do with
> a frame) and CeltContext to CeltFrame.
> 3 variables have been put in CeltFrame as they make more sense
> there rather than being passed around as arguments.
> The coefficients have been moved to the CeltBlock structure
> (why the hell were they in CeltContext and not in CeltFrame??).
> 
> Now the encoder would be able to use the exact context the decoder
> uses (plus a couple of extra fields in there).
> 
> FATE passes, no slowdowns, etc.
> 
> Signed-off-by: Rostislav Pehlivanov <atomnuker at gmail.com>
> ---
>  libavcodec/opus.h      |  14 +-
>  libavcodec/opus_celt.c | 719 +++++++++++++++++++++++++------------------------
>  libavcodec/opus_celt.h |  82 +++---
>  libavcodec/opus_pvq.c  |  50 ++--
>  libavcodec/opus_pvq.h  |   8 +-
>  libavcodec/opus_rc.c   |  12 +-
>  libavcodec/opus_rc.h   |   6 +-
>  libavcodec/opusdec.c   |   1 +
>  8 files changed, 449 insertions(+), 443 deletions(-)
> 
> diff --git a/libavcodec/opus.h b/libavcodec/opus.h
> index be04249..e8d13df 100644
> --- a/libavcodec/opus.h
> +++ b/libavcodec/opus.h
> @@ -75,7 +75,7 @@ enum OpusBandwidth {
>  
>  typedef struct SilkContext SilkContext;
>  
> -typedef struct CeltContext CeltContext;
> +typedef struct CeltFrame CeltFrame;

[...]

> diff --git a/libavcodec/opus_celt.h b/libavcodec/opus_celt.h
> index 8a15c8d..5bce8fc 100644
> --- a/libavcodec/opus_celt.h
> +++ b/libavcodec/opus_celt.h
> @@ -37,7 +37,16 @@ enum CeltSpread {
>      CELT_SPREAD_AGGRESSIVE
>  };
>  
> -typedef struct CeltFrame {
> +enum CeltBlockSize {
> +    CELT_BLOCK_120,
> +    CELT_BLOCK_240,
> +    CELT_BLOCK_480,
> +    CELT_BLOCK_960,
> +
> +    CELT_BLOCK_NB
> +};
> +
> +typedef struct CeltBlock {
>      float energy[CELT_MAX_BANDS];
>      float prev_energy[2][CELT_MAX_BANDS];
>  
> @@ -45,50 +54,46 @@ typedef struct CeltFrame {
>  
>      /* buffer for mdct output + postfilter */
>      DECLARE_ALIGNED(32, float, buf)[2048];
> +    DECLARE_ALIGNED(32, float, coeffs)[CELT_MAX_FRAME_SIZE];
>  
>      /* postfilter parameters */
> -    int pf_period_new;
> +    int   pf_period_new;
>      float pf_gains_new[3];
> -    int pf_period;
> +    int   pf_period;
>      float pf_gains[3];
> -    int pf_period_old;
> +    int   pf_period_old;
>      float pf_gains_old[3];
>  
> -    float deemph_coeff;
> -} CeltFrame;
> +    float emph_coeff;
> +} CeltBlock;
>  
> -struct CeltContext {
> +typedef struct CeltFrame {

You're typedefing CeltFrame again here. Keep it the same as CeltContext used to be.

>      // constant values that do not change during context lifetime
> -    AVCodecContext    *avctx;
> -    IMDCT15Context    *imdct[4];
> -    AVFloatDSPContext  *dsp;
> +    AVCodecContext      *avctx;
> +    IMDCT15Context      *imdct[4];
> +    AVFloatDSPContext   *dsp;

Leave cosmetics for another patch, so actual changes are easier to review.



More information about the ffmpeg-devel mailing list