|
FFmpeg
|
#include <inttypes.h>#include "libavutil/avassert.h"#include "libavutil/channel_layout.h"#include "libavutil/crc.h"#include "libavutil/opt.h"#include "lossless_audiodsp.h"#include "avcodec.h"#include "bswapdsp.h"#include "bytestream.h"#include "internal.h"#include "get_bits.h"#include "unary.h"Go to the source code of this file.
Data Structures | |
| struct | APEFilter |
| Filters applied to the decoded data. More... | |
| struct | APERice |
| struct | APERangecoder |
| struct | APEPredictor |
| Filter histories. More... | |
| struct | APEPredictor64 |
| struct | APEContext |
| Decoder context. More... | |
Macros | |
| #define | MAX_CHANNELS 2 |
| #define | MAX_BYTESPERSAMPLE 3 |
| #define | APE_FRAMECODE_MONO_SILENCE 1 |
| #define | APE_FRAMECODE_STEREO_SILENCE 3 |
| #define | APE_FRAMECODE_PSEUDO_STEREO 4 |
| #define | HISTORY_SIZE 512 |
| #define | PREDICTOR_ORDER 8 |
| #define | PREDICTOR_SIZE 50 |
| Total size of all predictor histories. More... | |
| #define | YDELAYA (18 + PREDICTOR_ORDER*4) |
| #define | YDELAYB (18 + PREDICTOR_ORDER*3) |
| #define | XDELAYA (18 + PREDICTOR_ORDER*2) |
| #define | XDELAYB (18 + PREDICTOR_ORDER) |
| #define | YADAPTCOEFFSA 18 |
| #define | XADAPTCOEFFSA 14 |
| #define | YADAPTCOEFFSB 10 |
| #define | XADAPTCOEFFSB 5 |
| #define | APE_FILTER_LEVELS 3 |
| #define | OFFSET(x) offsetof(APEContext, x) |
| #define | PAR (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM) |
Enumerations | |
| enum | APECompressionLevel { COMPRESSION_LEVEL_FAST = 1000, COMPRESSION_LEVEL_NORMAL = 2000, COMPRESSION_LEVEL_HIGH = 3000, COMPRESSION_LEVEL_EXTRA_HIGH = 4000, COMPRESSION_LEVEL_INSANE = 5000 } |
| Possible compression levels. More... | |
Variables | |
| static const uint16_t | ape_filter_orders [5][APE_FILTER_LEVELS] |
| Filter orders depending on compression level. More... | |
| static const uint8_t | ape_filter_fracbits [5][APE_FILTER_LEVELS] |
| Filter fraction bits depending on compression level. More... | |
| static const int32_t | initial_coeffs_fast_3320 [1] |
| static const int32_t | initial_coeffs_a_3800 [3] |
| static const int32_t | initial_coeffs_b_3800 [2] |
| static const int32_t | initial_coeffs_3930 [4] |
| static const int64_t | initial_coeffs_3930_64bit [4] |
| static const AVOption | options [] |
| static const AVClass | ape_decoder_class |
| const AVCodec | ff_ape_decoder |
APE range decoding functions | |
| #define | CODE_BITS 32 |
| #define | TOP_VALUE ((unsigned int)1 << (CODE_BITS-1)) |
| #define | SHIFT_BITS (CODE_BITS - 9) |
| #define | EXTRA_BITS ((CODE_BITS-2) % 8 + 1) |
| #define | BOTTOM_VALUE (TOP_VALUE >> 8) |
| #define | MODEL_ELEMENTS 64 |
| static const uint16_t | counts_3970 [22] |
| Fixed probabilities for symbols in Monkey Audio version 3.97. More... | |
| static const uint16_t | counts_diff_3970 [21] |
| Probability ranges for symbols in Monkey Audio version 3.97. More... | |
| static const uint16_t | counts_3980 [22] |
| Fixed probabilities for symbols in Monkey Audio version 3.98. More... | |
| static const uint16_t | counts_diff_3980 [21] |
| Probability ranges for symbols in Monkey Audio version 3.98. More... | |
| static void | range_start_decoding (APEContext *ctx) |
| Start the decoder. More... | |
| static void | range_dec_normalize (APEContext *ctx) |
| Perform normalization. More... | |
| static int | range_decode_culfreq (APEContext *ctx, int tot_f) |
| Calculate cumulative frequency for next symbol. More... | |
| static int | range_decode_culshift (APEContext *ctx, int shift) |
| Decode value with given size in bits. More... | |
| static void | range_decode_update (APEContext *ctx, int sy_f, int lt_f) |
| Update decoding state. More... | |
| static int | range_decode_bits (APEContext *ctx, int n) |
| Decode n bits (n <= 16) without modelling. More... | |
| static int | range_get_symbol (APEContext *ctx, const uint16_t counts[], const uint16_t counts_diff[]) |
| Decode symbol. More... | |
Monkey's Audio lossless audio decoder
Definition in file apedec.c.
| #define PREDICTOR_SIZE 50 |
| #define YDELAYA (18 + PREDICTOR_ORDER*4) |
| #define YDELAYB (18 + PREDICTOR_ORDER*3) |
| #define XDELAYA (18 + PREDICTOR_ORDER*2) |
| #define XDELAYB (18 + PREDICTOR_ORDER) |
| #define OFFSET | ( | x | ) | offsetof(APEContext, x) |
| #define PAR (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM) |
| enum APECompressionLevel |
|
static |
Definition at line 1380 of file apedec.c.
Referenced by predictor_decode_mono_3930(), predictor_decode_mono_3950(), predictor_decode_stereo_3930(), and predictor_decode_stereo_3950().
|
static |
Definition at line 665 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 671 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 679 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 687 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 699 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 707 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 723 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 734 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 742 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 1041 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 986 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 1144 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 1116 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 1243 of file apedec.c.
Referenced by ape_decode_init().
|
static |
Definition at line 1214 of file apedec.c.
Referenced by ape_decode_init().
|
static |
|
static |
|
inlinestatic |
Start the decoder.
Definition at line 333 of file apedec.c.
Referenced by entropy_decode_stereo_3900(), and init_entropy_decoder().
|
inlinestatic |
Perform normalization.
Definition at line 341 of file apedec.c.
Referenced by entropy_decode_stereo_3900(), range_decode_culfreq(), and range_decode_culshift().
|
inlinestatic |
Calculate cumulative frequency for next symbol.
Does NO update!
| ctx | decoder context |
| tot_f | is the total frequency or (code_value)1<<shift |
Definition at line 362 of file apedec.c.
Referenced by ape_decode_value_3990().
|
inlinestatic |
Decode value with given size in bits.
| ctx | decoder context |
| shift | number of bits to decode |
Definition at line 374 of file apedec.c.
Referenced by range_decode_bits(), and range_get_symbol().
|
inlinestatic |
Update decoding state.
| ctx | decoder context |
| sy_f | the interval length (frequency of the symbol) |
| lt_f | the lower end (frequency sum of < symbols) |
Definition at line 388 of file apedec.c.
Referenced by ape_decode_value_3990(), range_decode_bits(), and range_get_symbol().
|
inlinestatic |
Decode n bits (n <= 16) without modelling.
Definition at line 395 of file apedec.c.
Referenced by ape_decode_value_3900(), and ape_decode_value_3990().
|
inlinestatic |
Decode symbol.
| ctx | decoder context |
| counts | probability range start position |
| counts_diff | probability range widths |
Definition at line 447 of file apedec.c.
Referenced by ape_decode_value_3900(), and ape_decode_value_3990().
Definition at line 471 of file apedec.c.
Referenced by ape_decode_value_3900(), and ape_decode_value_3990().
|
inlinestatic |
Definition at line 482 of file apedec.c.
Referenced by decode_array_0000().
|
inlinestatic |
Definition at line 494 of file apedec.c.
Referenced by entropy_decode_mono_3860(), and entropy_decode_stereo_3860().
|
inlinestatic |
Definition at line 527 of file apedec.c.
Referenced by entropy_decode_mono_3900(), entropy_decode_stereo_3900(), and entropy_decode_stereo_3930().
|
inlinestatic |
Definition at line 561 of file apedec.c.
Referenced by entropy_decode_mono_3990(), and entropy_decode_stereo_3990().
Definition at line 602 of file apedec.c.
Referenced by decode_array_0000().
|
static |
Definition at line 607 of file apedec.c.
Referenced by entropy_decode_mono_0000(), and entropy_decode_stereo_0000().
|
static |
Definition at line 753 of file apedec.c.
Referenced by init_frame_decoder().
|
static |
Definition at line 811 of file apedec.c.
Referenced by init_frame_decoder().
Get inverse sign of integer (-1 for positive, 1 for negative and 0 for zero)
Definition at line 864 of file apedec.c.
Referenced by do_apply_filter(), filter_3800(), long_filter_ehigh_3830(), long_filter_high_3800(), predictor_decode_mono_3950(), predictor_update_3930(), and predictor_update_filter().
|
static |
Definition at line 868 of file apedec.c.
Referenced by predictor_decode_mono_3800(), and predictor_decode_stereo_3800().
|
static |
Definition at line 894 of file apedec.c.
Referenced by predictor_decode_mono_3800(), and predictor_decode_stereo_3800().
Definition at line 939 of file apedec.c.
Referenced by predictor_decode_mono_3800(), and predictor_decode_stereo_3800().
Definition at line 965 of file apedec.c.
Referenced by predictor_decode_mono_3800(), and predictor_decode_stereo_3800().
|
static |
Definition at line 1086 of file apedec.c.
Referenced by predictor_decode_mono_3930(), and predictor_decode_stereo_3930().
|
static |
Definition at line 1166 of file apedec.c.
Referenced by predictor_decode_stereo_3950().
Definition at line 1291 of file apedec.c.
Referenced by init_filter().
|
static |
Definition at line 1303 of file apedec.c.
Referenced by init_frame_decoder().
|
static |
Definition at line 1309 of file apedec.c.
Referenced by apply_filter().
|
static |
Definition at line 1371 of file apedec.c.
Referenced by ape_apply_filters().
|
static |
Definition at line 1394 of file apedec.c.
Referenced by ape_decode_frame().
|
static |
Definition at line 1410 of file apedec.c.
Referenced by ape_decode_frame().
|
static |
Definition at line 1431 of file apedec.c.
Referenced by ape_decode_frame().
|
static |
|
static |
|
static |
Filter orders depending on compression level.
Definition at line 80 of file apedec.c.
Referenced by ape_apply_filters(), ape_decode_init(), and init_frame_decoder().
|
static |
Filter fraction bits depending on compression level.
Definition at line 89 of file apedec.c.
Referenced by ape_apply_filters().
|
static |
Fixed probabilities for symbols in Monkey Audio version 3.97.
Definition at line 408 of file apedec.c.
Referenced by ape_decode_value_3900().
|
static |
Probability ranges for symbols in Monkey Audio version 3.97.
Definition at line 417 of file apedec.c.
Referenced by ape_decode_value_3900().
|
static |
Fixed probabilities for symbols in Monkey Audio version 3.98.
Definition at line 426 of file apedec.c.
Referenced by ape_decode_value_3990().
|
static |
Probability ranges for symbols in Monkey Audio version 3.98.
Definition at line 435 of file apedec.c.
Referenced by ape_decode_value_3990().
|
static |
Definition at line 791 of file apedec.c.
Referenced by init_predictor_decoder().
|
static |
Definition at line 795 of file apedec.c.
Referenced by init_predictor_decoder().
|
static |
Definition at line 799 of file apedec.c.
Referenced by init_predictor_decoder().
|
static |
Definition at line 803 of file apedec.c.
Referenced by init_predictor_decoder().
|
static |
Definition at line 807 of file apedec.c.
Referenced by init_predictor_decoder().
|
static |
|
static |
| const AVCodec ff_ape_decoder |
1.8.17