#include "libavutil/crc.h"
#include "libavutil/md5.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "get_bits.h"
#include "golomb.h"
#include "lpc.h"
#include "flac.h"
#include "flacdata.h"
Go to the source code of this file.
Data Structures | |
struct | CompressionOptions |
struct | RiceContext |
struct | FlacSubframe |
struct | FlacFrame |
struct | FlacEncodeContext |
Macros | |
#define | FLAC_SUBFRAME_CONSTANT 0 |
FLAC audio encoder Copyright (c) 2006 Justin Ruggles justi n.ru ggles @gma il.co m | |
#define | FLAC_SUBFRAME_VERBATIM 1 |
#define | FLAC_SUBFRAME_FIXED 8 |
#define | FLAC_SUBFRAME_LPC 32 |
#define | MAX_FIXED_ORDER 4 |
#define | MAX_PARTITION_ORDER 8 |
#define | MAX_PARTITIONS (1 << MAX_PARTITION_ORDER) |
#define | MAX_LPC_PRECISION 15 |
#define | MAX_LPC_SHIFT 15 |
#define | MAX_RICE_PARAM 14 |
#define | rice_encode_count(sum, n, k) (((n)*((k)+1))+((sum-(n>>1))>>(k))) |
#define | LPC1(x) |
#define | FLAGS AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM |
Typedefs | |
typedef struct CompressionOptions | CompressionOptions |
typedef struct RiceContext | RiceContext |
typedef struct FlacSubframe | FlacSubframe |
typedef struct FlacFrame | FlacFrame |
typedef struct FlacEncodeContext | FlacEncodeContext |
Functions | |
static void | write_streaminfo (FlacEncodeContext *s, uint8_t *header) |
Write streaminfo metadata block to byte array. | |
static int | select_blocksize (int samplerate, int block_time_ms) |
Set blocksize based on samplerate. | |
static av_cold void | dprint_compression_options (FlacEncodeContext *s) |
static av_cold int | flac_encode_init (AVCodecContext *avctx) |
static void | init_frame (FlacEncodeContext *s) |
static void | copy_samples (FlacEncodeContext *s, const int16_t *samples) |
Copy channel-interleaved input samples into separate subframes. | |
static int | rice_count_exact (int32_t *res, int n, int k) |
static int | subframe_count_exact (FlacEncodeContext *s, FlacSubframe *sub, int pred_order) |
static int | find_optimal_param (uint32_t sum, int n) |
Solve for d/dk(rice_encode_count) = n-((sum-(n>>1))>>(k+1)) = 0. | |
static uint32_t | calc_optimal_rice_params (RiceContext *rc, int porder, uint32_t *sums, int n, int pred_order) |
static void | calc_sums (int pmin, int pmax, uint32_t *data, int n, int pred_order, uint32_t sums[][MAX_PARTITIONS]) |
static uint32_t | calc_rice_params (RiceContext *rc, int pmin, int pmax, int32_t *data, int n, int pred_order) |
static int | get_max_p_order (int max_porder, int n, int order) |
static uint32_t | find_subframe_rice_params (FlacEncodeContext *s, FlacSubframe *sub, int pred_order) |
static void | encode_residual_fixed (int32_t *res, const int32_t *smp, int n, int order) |
static av_always_inline void | encode_residual_lpc_unrolled (int32_t *res, const int32_t *smp, int n, int order, const int32_t *coefs, int shift, int big) |
static void | encode_residual_lpc (int32_t *res, const int32_t *smp, int n, int order, const int32_t *coefs, int shift) |
static int | encode_residual_ch (FlacEncodeContext *s, int ch) |
static int | count_frame_header (FlacEncodeContext *s) |
static int | encode_frame (FlacEncodeContext *s) |
static int | estimate_stereo_mode (int32_t *left_ch, int32_t *right_ch, int n) |
static void | channel_decorrelation (FlacEncodeContext *s) |
Perform stereo channel decorrelation. | |
static void | write_utf8 (PutBitContext *pb, uint32_t val) |
static void | write_frame_header (FlacEncodeContext *s) |
static void | write_subframes (FlacEncodeContext *s) |
static void | write_frame_footer (FlacEncodeContext *s) |
static int | write_frame (FlacEncodeContext *s, uint8_t *frame, int buf_size) |
static void | update_md5_sum (FlacEncodeContext *s, const int16_t *samples) |
static int | flac_encode_frame (AVCodecContext *avctx, uint8_t *frame, int buf_size, void *data) |
static av_cold int | flac_encode_close (AVCodecContext *avctx) |
Variables | |
static const AVOption | options [] |
static const AVClass | flac_encoder_class |
AVCodec | ff_flac_encoder |
#define FLAC_SUBFRAME_CONSTANT 0 |
FLAC audio encoder Copyright (c) 2006 Justin Ruggles justi n.ru ggles @gma il.co m
This file is part of Libav.
Libav is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
Libav is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with Libav; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Definition at line 32 of file flacenc.c.
Referenced by encode_residual_ch(), subframe_count_exact(), and write_subframes().
#define FLAC_SUBFRAME_FIXED 8 |
Definition at line 34 of file flacenc.c.
Referenced by encode_residual_ch().
#define FLAC_SUBFRAME_LPC 32 |
Definition at line 35 of file flacenc.c.
Referenced by encode_residual_ch(), find_subframe_rice_params(), subframe_count_exact(), and write_subframes().
#define FLAC_SUBFRAME_VERBATIM 1 |
Definition at line 33 of file flacenc.c.
Referenced by encode_residual_ch(), subframe_count_exact(), and write_subframes().
#define FLAGS AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM |
#define LPC1 | ( | x | ) |
Definition at line 741 of file flacenc.c.
Referenced by encode_residual_lpc_unrolled().
#define MAX_FIXED_ORDER 4 |
Definition at line 37 of file flacenc.c.
Referenced by encode_residual_ch(), and flac_encode_init().
#define MAX_LPC_PRECISION 15 |
Definition at line 40 of file flacenc.c.
Referenced by flac_encode_init().
#define MAX_LPC_SHIFT 15 |
Definition at line 41 of file flacenc.c.
Referenced by encode_residual_ch().
#define MAX_PARTITION_ORDER 8 |
Definition at line 38 of file flacenc.c.
Referenced by calc_rice_params(), and flac_encode_init().
#define MAX_PARTITIONS (1 << MAX_PARTITION_ORDER) |
Definition at line 39 of file flacenc.c.
Referenced by calc_rice_params().
#define MAX_RICE_PARAM 14 |
Definition at line 42 of file flacenc.c.
Referenced by find_optimal_param().
#define rice_encode_count | ( | sum, | |
n, | |||
k | |||
) | (((n)*((k)+1))+((sum-(n>>1))>>(k))) |
Definition at line 560 of file flacenc.c.
Referenced by calc_optimal_rice_params(), and estimate_stereo_mode().
typedef struct CompressionOptions CompressionOptions |
typedef struct FlacEncodeContext FlacEncodeContext |
typedef struct FlacSubframe FlacSubframe |
typedef struct RiceContext RiceContext |
|
static |
Definition at line 578 of file flacenc.c.
Referenced by calc_rice_params().
|
static |
Definition at line 629 of file flacenc.c.
Referenced by find_subframe_rice_params().
|
static |
Definition at line 602 of file flacenc.c.
Referenced by calc_rice_params().
|
static |
Perform stereo channel decorrelation.
Definition at line 1085 of file flacenc.c.
Referenced by flac_encode_frame().
|
static |
Copy channel-interleaved input samples into separate subframes.
Definition at line 487 of file flacenc.c.
Referenced by flac_encode_frame().
|
static |
Definition at line 983 of file flacenc.c.
Referenced by encode_frame().
|
static |
Definition at line 153 of file flacenc.c.
Referenced by flac_encode_init().
|
static |
|
static |
Definition at line 845 of file flacenc.c.
Referenced by encode_frame().
|
static |
Definition at line 690 of file flacenc.c.
Referenced by encode_residual_ch().
|
static |
Definition at line 809 of file flacenc.c.
Referenced by encode_residual_ch().
|
static |
Definition at line 748 of file flacenc.c.
Referenced by encode_residual_lpc().
|
static |
Definition at line 1035 of file flacenc.c.
Referenced by channel_decorrelation().
|
static |
Solve for d/dk(rice_encode_count) = n-((sum-(n>>1))>>(k+1)) = 0.
Definition at line 565 of file flacenc.c.
Referenced by calc_optimal_rice_params(), and estimate_stereo_mode().
|
static |
Definition at line 673 of file flacenc.c.
Referenced by encode_residual_ch().
|
static |
|
static |
|
static |
|
static |
Definition at line 664 of file flacenc.c.
Referenced by find_subframe_rice_params().
|
static |
Definition at line 451 of file flacenc.c.
Referenced by flac_encode_frame().
|
static |
Definition at line 499 of file flacenc.c.
Referenced by subframe_count_exact().
|
static |
Set blocksize based on samplerate.
Choose the closest predefined blocksize >= BLOCK_TIME_MS milliseconds.
Definition at line 134 of file flacenc.c.
Referenced by flac_encode_init().
|
static |
Definition at line 513 of file flacenc.c.
Referenced by encode_residual_ch().
|
static |
Definition at line 1249 of file flacenc.c.
Referenced by flac_encode_frame().
|
static |
Definition at line 1239 of file flacenc.c.
Referenced by flac_encode_frame().
|
static |
Definition at line 1228 of file flacenc.c.
Referenced by write_frame().
|
static |
Definition at line 1133 of file flacenc.c.
Referenced by write_frame().
|
static |
Write streaminfo metadata block to byte array.
Definition at line 107 of file flacenc.c.
Referenced by flac_encode_frame(), and flac_encode_init().
|
static |
Definition at line 1170 of file flacenc.c.
Referenced by write_frame().
|
static |
Definition at line 1126 of file flacenc.c.
Referenced by write_frame_header().
AVCodec ff_flac_encoder |
|
static |
|
static |