FFmpeg
Macros | Functions | Variables
sbcdsp_init_arm.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/cpu.h"
#include "libavutil/mem_internal.h"
#include "libavutil/arm/cpu.h"
#include "libavcodec/sbcdsp.h"

Go to the source code of this file.

Macros

#define PERM(a, b, c, d)
 

Functions

void ff_sbc_analyze_4_armv6 (const int16_t *in, int32_t *out, const int16_t *consts)
 
void ff_sbc_analyze_8_armv6 (const int16_t *in, int32_t *out, const int16_t *consts)
 
void ff_sbc_analyze_4_neon (const int16_t *in, int32_t *out, const int16_t *consts)
 
void ff_sbc_analyze_8_neon (const int16_t *in, int32_t *out, const int16_t *consts)
 
void ff_sbc_calc_scalefactors_neon (int32_t sb_sample_f[16][2][8], uint32_t scale_factor[2][8], int blocks, int channels, int subbands)
 
int ff_sbc_calc_scalefactors_j_neon (int32_t sb_sample_f[16][2][8], uint32_t scale_factor[2][8], int blocks, int subbands)
 
int ff_sbc_enc_process_input_4s_neon (int position, const uint8_t *pcm, int16_t X[2][SBC_X_BUFFER_SIZE], int nsamples, int nchannels)
 
int ff_sbc_enc_process_input_8s_neon (int position, const uint8_t *pcm, int16_t X[2][SBC_X_BUFFER_SIZE], int nsamples, int nchannels)
 
av_cold void ff_sbcdsp_init_arm (SBCDSPContext *s)
 

Variables

int32_t ff_sbcdsp_joint_bits_mask [8]
 
uint8_t ff_sbc_input_perm_4 [2][8]
 
uint8_t ff_sbc_input_perm_8 [4][8]
 

Detailed Description

SBC ARMv6 optimization for some basic "building bricks"

Definition in file sbcdsp_init_arm.c.

Macro Definition Documentation

◆ PERM

#define PERM (   a,
  b,
  c,
 
)
Value:
{ \
(a * 2) + 0, (a * 2) + 1, \
(b * 2) + 0, (b * 2) + 1, \
(c * 2) + 0, (c * 2) + 1, \
(d * 2) + 0, (d * 2) + 1 \
}

Definition at line 68 of file sbcdsp_init_arm.c.

Function Documentation

◆ ff_sbc_analyze_4_armv6()

void ff_sbc_analyze_4_armv6 ( const int16_t *  in,
int32_t out,
const int16_t *  consts 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbc_analyze_8_armv6()

void ff_sbc_analyze_8_armv6 ( const int16_t *  in,
int32_t out,
const int16_t *  consts 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbc_analyze_4_neon()

void ff_sbc_analyze_4_neon ( const int16_t *  in,
int32_t out,
const int16_t *  consts 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbc_analyze_8_neon()

void ff_sbc_analyze_8_neon ( const int16_t *  in,
int32_t out,
const int16_t *  consts 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbc_calc_scalefactors_neon()

void ff_sbc_calc_scalefactors_neon ( int32_t  sb_sample_f[16][2][8],
uint32_t  scale_factor[2][8],
int  blocks,
int  channels,
int  subbands 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbc_calc_scalefactors_j_neon()

int ff_sbc_calc_scalefactors_j_neon ( int32_t  sb_sample_f[16][2][8],
uint32_t  scale_factor[2][8],
int  blocks,
int  subbands 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbc_enc_process_input_4s_neon()

int ff_sbc_enc_process_input_4s_neon ( int  position,
const uint8_t *  pcm,
int16_t  X[2][SBC_X_BUFFER_SIZE],
int  nsamples,
int  nchannels 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbc_enc_process_input_8s_neon()

int ff_sbc_enc_process_input_8s_neon ( int  position,
const uint8_t *  pcm,
int16_t  X[2][SBC_X_BUFFER_SIZE],
int  nsamples,
int  nchannels 
)

Referenced by ff_sbcdsp_init_arm().

◆ ff_sbcdsp_init_arm()

av_cold void ff_sbcdsp_init_arm ( SBCDSPContext *  s)

Definition at line 88 of file sbcdsp_init_arm.c.

Referenced by ff_sbcdsp_init().

Variable Documentation

◆ ff_sbcdsp_joint_bits_mask

int32_t ff_sbcdsp_joint_bits_mask[8]
Initial value:
= {
8, 4, 2, 1, 128, 64, 32, 16
}

Definition at line 56 of file sbcdsp_init_arm.c.

◆ ff_sbc_input_perm_4

uint8_t ff_sbc_input_perm_4[2][8]
Initial value:
= {
PERM(7, 3, 6, 4),
}

Definition at line 76 of file sbcdsp_init_arm.c.

◆ ff_sbc_input_perm_8

uint8_t ff_sbc_input_perm_8[4][8]
Initial value:
= {
PERM(15, 7, 14, 8),
PERM(13, 9, 12, 10),
PERM(11, 3, 6, 0),
}

Definition at line 81 of file sbcdsp_init_arm.c.

PERM
#define PERM(a, b, c, d)
Definition: sbcdsp_init_arm.c:68
b
#define b
Definition: input.c:41
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41