#include "libavutil/mathematics.h"
#include "nellymoser.h"
#include "avcodec.h"
#include "dsputil.h"
#include "fft.h"
#include "sinewin.h"
#include "put_bits.h"
Go to the source code of this file.
Data Structures | |
struct | NellyMoserEncodeContext |
Defines | |
#define | BITSTREAM_WRITER_LE |
#define | POW_TABLE_SIZE (1<<11) |
#define | POW_TABLE_OFFSET 3 |
#define | OPT_SIZE ((1<<15) + 3000) |
#define | find_best(val, table, LUT, LUT_add, LUT_size) |
Functions | |
static void | apply_mdct (NellyMoserEncodeContext *s) |
static av_cold int | encode_init (AVCodecContext *avctx) |
static av_cold int | encode_end (AVCodecContext *avctx) |
static void | get_exponent_greedy (NellyMoserEncodeContext *s, float *cand, int *idx_table) |
static float | distance (float x, float y, int band) |
static void | get_exponent_dynamic (NellyMoserEncodeContext *s, float *cand, int *idx_table) |
static void | encode_block (NellyMoserEncodeContext *s, unsigned char *output, int output_size) |
Encode NELLY_SAMPLES samples. | |
static int | encode_frame (AVCodecContext *avctx, uint8_t *frame, int buf_size, void *data) |
Variables | |
static float | pow_table [POW_TABLE_SIZE] |
-pow(2, -i / 2048.0 - 3.0); | |
static const uint8_t | sf_lut [96] |
static const uint8_t | sf_delta_lut [78] |
static const uint8_t | quant_lut [230] |
static const float | quant_lut_mul [7] = { 0.0, 0.0, 2.0, 2.0, 5.0, 12.0, 36.6 } |
static const float | quant_lut_add [7] = { 0.0, 0.0, 2.0, 7.0, 21.0, 56.0, 157.0 } |
static const uint8_t | quant_lut_offset [8] = { 0, 0, 1, 4, 11, 32, 81, 230 } |
AVCodec | ff_nellymoser_encoder |
Generic codec information: libavcodec/nellymoserdec.c
Some information also from: http://samples.mplayerhq.hu/A-codecs/Nelly_Moser/ASAO/ASAO.zip (Copyright Joseph Artsimovich and UAB "DKD")
for more information about nellymoser format, visit: http://wiki.multimedia.cx/index.php?title=Nellymoser
Definition in file nellymoserenc.c.
#define BITSTREAM_WRITER_LE |
Definition at line 45 of file nellymoserenc.c.
#define find_best | ( | val, | |||
table, | |||||
LUT, | |||||
LUT_add, | |||||
LUT_size | ) |
Value:
best_idx = \ LUT[av_clip ((lrintf(val) >> 8) + LUT_add, 0, LUT_size - 1)]; \ if (fabs(val - table[best_idx]) > fabs(val - table[best_idx + 1])) \ best_idx++;
Definition at line 180 of file nellymoserenc.c.
Referenced by config(), get_exponent_greedy(), and query_format().
#define OPT_SIZE ((1<<15) + 3000) |
Definition at line 50 of file nellymoserenc.c.
Referenced by encode_init(), and get_exponent_dynamic().
#define POW_TABLE_OFFSET 3 |
#define POW_TABLE_SIZE (1<<11) |
static void apply_mdct | ( | NellyMoserEncodeContext * | s | ) | [static] |
Definition at line 116 of file nellymoserenc.c.
static float distance | ( | float | x, | |
float | y, | |||
int | band | |||
) | [inline, static] |
Definition at line 204 of file nellymoserenc.c.
Referenced by ff_er_frame_end(), ff_gen_syncpoint_search(), get_exponent_dynamic(), guess_dc(), mov_build_index(), mov_read_trun(), put_vector(), and render_charset().
static void encode_block | ( | NellyMoserEncodeContext * | s, | |
unsigned char * | output, | |||
int | output_size | |||
) | [static] |
Encode NELLY_SAMPLES samples.
It assumes, that samples contains 3 * NELLY_BUF_LEN values
s | encoder context | |
output | output buffer | |
output_size | size of output buffer |
Definition at line 280 of file nellymoserenc.c.
static av_cold int encode_end | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 166 of file nellymoserenc.c.
static int encode_frame | ( | AVCodecContext * | avctx, | |
uint8_t * | frame, | |||
int | buf_size, | |||
void * | data | |||
) | [static] |
Definition at line 353 of file nellymoserenc.c.
static av_cold int encode_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 130 of file nellymoserenc.c.
static void get_exponent_dynamic | ( | NellyMoserEncodeContext * | s, | |
float * | cand, | |||
int * | idx_table | |||
) | [static] |
static void get_exponent_greedy | ( | NellyMoserEncodeContext * | s, | |
float * | cand, | |||
int * | idx_table | |||
) | [static] |
Initial value:
{ .name = "nellymoser", .type = AVMEDIA_TYPE_AUDIO, .id = CODEC_ID_NELLYMOSER, .priv_data_size = sizeof(NellyMoserEncodeContext), .init = encode_init, .encode = encode_frame, .close = encode_end, .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY, .long_name = NULL_IF_CONFIG_SMALL("Nellymoser Asao"), .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_FLT,AV_SAMPLE_FMT_NONE}, }
Definition at line 385 of file nellymoserenc.c.
float pow_table[POW_TABLE_SIZE] [static] |
-pow(2, -i / 2048.0 - 3.0);
Definition at line 66 of file nellymoserenc.c.
Referenced by encode_block(), and encode_init().
const uint8_t quant_lut[230] [static] |
Initial value:
{ 0, 0, 1, 2, 0, 1, 2, 3, 4, 5, 6, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 13, 13, 14, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 29, 30, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 20, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 26, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 42, 43, 44, 44, 45, 45, 46, 47, 47, 48, 48, 49, 49, 50, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 62, }
Definition at line 85 of file nellymoserenc.c.
Referenced by encode_block().
const float quant_lut_add[7] = { 0.0, 0.0, 2.0, 7.0, 21.0, 56.0, 157.0 } [static] |
const float quant_lut_mul[7] = { 0.0, 0.0, 2.0, 2.0, 5.0, 12.0, 36.6 } [static] |
const uint8_t quant_lut_offset[8] = { 0, 0, 1, 4, 11, 32, 81, 230 } [static] |
const uint8_t sf_delta_lut[78] [static] |
Initial value:
{ 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11, 12, 13, 13, 14, 15, 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, }
Definition at line 77 of file nellymoserenc.c.
Referenced by get_exponent_greedy().
const uint8_t sf_lut[96] [static] |
Initial value:
{ 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7, 8, 8, 9, 10, 11, 11, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20, 21, 22, 22, 23, 24, 25, 26, 27, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 41, 42, 43, 44, 45, 45, 46, 47, 48, 49, 50, 51, 52, 52, 53, 54, 55, 55, 56, 57, 57, 58, 59, 59, 60, 60, 60, 61, 61, 61, 62, }
Definition at line 68 of file nellymoserenc.c.
Referenced by get_exponent_greedy().