FFmpeg
Loading...
Searching...
No Matches
wavpackenc.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/channel_layout.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "codec_internal.h"
#include "encode.h"
#include "put_bits.h"
#include "bytestream.h"
#include "wavpackenc.h"
#include "wavpack.h"

Go to the source code of this file.

Data Structures

struct  WavPackExtraInfo
 
struct  WavPackWords
 
struct  WavPackEncodeContext
 

Macros

#define BITSTREAM_WRITER_LE
 
#define UPDATE_WEIGHT(weight, delta, source, result)
 
#define APPLY_WEIGHT_F(weight, sample)
 
#define APPLY_WEIGHT_I(weight, sample)
 
#define APPLY_WEIGHT(weight, sample)
 
#define CLEAR(destin)
 
#define SHIFT_LSB   13
 
#define SHIFT_MASK   (0x1FU << SHIFT_LSB)
 
#define MAG_LSB   18
 
#define MAG_MASK   (0x1FU << MAG_LSB)
 
#define SRATE_LSB   23
 
#define SRATE_MASK   (0xFU << SRATE_LSB)
 
#define EXTRA_TRY_DELTAS   1
 
#define EXTRA_ADJUST_DELTAS   2
 
#define EXTRA_SORT_FIRST   4
 
#define EXTRA_BRANCHES   8
 
#define EXTRA_SORT_LAST   16
 
#define FLOAT_SHIFT_ONES   1
 
#define FLOAT_SHIFT_SAME   2
 
#define FLOAT_SHIFT_SENT   4
 
#define FLOAT_ZEROS_SENT   8
 
#define FLOAT_NEG_ZEROS   0x10
 
#define FLOAT_EXCEPTIONS   0x20
 
#define get_mantissa(f)
 
#define get_exponent(f)
 
#define get_sign(f)
 
#define count_bits(av)
 
#define update_weight_d2(weight, delta, source, result)
 
#define update_weight_clip_d2(weight, delta, source, result)
 
#define WRITE_DECWEIGHT(type)
 
#define WRITE_DECSAMPLE(type)
 
#define WRITE_CHAN_ENTROPY(chan)
 
#define COPY_SAMPLES(type, offset, shift)
 
#define OFFSET(x)
 
#define FLAGS   AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM
 

Functions

static av_cold int wavpack_encode_init (AVCodecContext *avctx)
 
static void shift_mono (int32_t *samples, int nb_samples, int shift)
 
static void shift_stereo (int32_t *left, int32_t *right, int nb_samples, int shift)
 
static void process_float (WavPackEncodeContext *s, int32_t *sample)
 
static int scan_float (WavPackEncodeContext *s, int32_t *samples_l, int32_t *samples_r, int nb_samples)
 
static void scan_int23 (WavPackEncodeContext *s, int32_t *samples_l, int32_t *samples_r, int nb_samples)
 
static int scan_int32 (WavPackEncodeContext *s, int32_t *samples_l, int32_t *samples_r, int nb_samples)
 
static int8_t store_weight (int weight)
 
static int restore_weight (int8_t weight)
 
static int log2s (int32_t value)
 
static void decorr_mono (int32_t *in_samples, int32_t *out_samples, int nb_samples, struct Decorr *dpp, int dir)
 
static void reverse_mono_decorr (struct Decorr *dpp)
 
static uint32_t log2sample (uint32_t v, int limit, uint32_t *result)
 
static uint32_t log2mono (int32_t *samples, int nb_samples, int limit)
 
static uint32_t log2stereo (int32_t *samples_l, int32_t *samples_r, int nb_samples, int limit)
 
static void decorr_mono_buffer (int32_t *samples, int32_t *outsamples, int nb_samples, struct Decorr *dpp, int tindex)
 
static void recurse_mono (WavPackEncodeContext *s, WavPackExtraInfo *info, int depth, int delta, uint32_t input_bits)
 
static void sort_mono (WavPackEncodeContext *s, WavPackExtraInfo *info)
 
static void delta_mono (WavPackEncodeContext *s, WavPackExtraInfo *info)
 
static int allocate_buffers2 (WavPackEncodeContext *s, int nterms)
 
static int allocate_buffers (WavPackEncodeContext *s)
 
static void analyze_mono (WavPackEncodeContext *s, int32_t *samples, int do_samples)
 
static void scan_word (WavPackEncodeContext *s, WvChannel *c, int32_t *samples, int nb_samples, int dir)
 
static int wv_mono (WavPackEncodeContext *s, int32_t *samples, int no_history, int do_samples)
 
static void decorr_stereo (int32_t *in_left, int32_t *in_right, int32_t *out_left, int32_t *out_right, int nb_samples, struct Decorr *dpp, int dir)
 
static void reverse_decorr (struct Decorr *dpp)
 
static void decorr_stereo_quick (int32_t *in_left, int32_t *in_right, int32_t *out_left, int32_t *out_right, int nb_samples, struct Decorr *dpp)
 
static void decorr_stereo_buffer (WavPackExtraInfo *info, int32_t *in_left, int32_t *in_right, int32_t *out_left, int32_t *out_right, int nb_samples, int tindex)
 
static void sort_stereo (WavPackEncodeContext *s, WavPackExtraInfo *info)
 
static void delta_stereo (WavPackEncodeContext *s, WavPackExtraInfo *info)
 
static void recurse_stereo (WavPackEncodeContext *s, WavPackExtraInfo *info, int depth, int delta, uint32_t input_bits)
 
static void analyze_stereo (WavPackEncodeContext *s, int32_t *in_left, int32_t *in_right, int do_samples)
 
static int wv_stereo (WavPackEncodeContext *s, int32_t *samples_l, int32_t *samples_r, int no_history, int do_samples)
 
static void encode_flush (WavPackEncodeContext *s)
 
static void wavpack_encode_sample (WavPackEncodeContext *s, WvChannel *c, int32_t sample)
 
static void pack_int32 (WavPackEncodeContext *s, int32_t *samples_l, int32_t *samples_r, int nb_samples)
 
static void pack_float_sample (WavPackEncodeContext *s, int32_t *sample)
 
static void pack_float (WavPackEncodeContext *s, int32_t *samples_l, int32_t *samples_r, int nb_samples)
 
static void decorr_stereo_pass2 (struct Decorr *dpp, int32_t *samples_l, int32_t *samples_r, int nb_samples)
 
static void decorr_stereo_pass_id2 (struct Decorr *dpp, int32_t *samples_l, int32_t *samples_r, int nb_samples)
 
static void put_metadata_block (PutByteContext *pb, int flags, int size)
 
static int wavpack_encode_block (WavPackEncodeContext *s, int32_t *samples_l, int32_t *samples_r, uint8_t *out, int out_size)
 
static void fill_buffer (WavPackEncodeContext *s, const int8_t *src, int32_t *dst, int nb_samples)
 
static void set_samplerate (WavPackEncodeContext *s)
 
static int wavpack_encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 
static av_cold int wavpack_encode_close (AVCodecContext *avctx)
 

Variables

static const AVOption options []
 
static const AVClass wavpack_encoder_class
 
const FFCodec ff_wavpack_encoder
 

Macro Definition Documentation

◆ BITSTREAM_WRITER_LE

#define BITSTREAM_WRITER_LE

Definition at line 22 of file wavpackenc.c.

◆ UPDATE_WEIGHT

#define UPDATE_WEIGHT ( weight,
delta,
source,
result )
Value:
if ((source) && (result)) { \
int32_t s = (int32_t) ((source) ^ (result)) >> 31; \
weight = ((delta) ^ s) + ((weight) - s); \
}
int32_t
#define s(width, name)
Definition cbs_vp9.c:198
const h264_weight_func weight
float delta

Definition at line 36 of file wavpackenc.c.

Referenced by decorr_mono(), decorr_stereo(), decorr_stereo_pass2(), decorr_stereo_quick(), and wavpack_encode_block().

◆ APPLY_WEIGHT_F

#define APPLY_WEIGHT_F ( weight,
sample )
Value:
((((((sample) & 0xffff) * (weight)) >> 9) + \
((((sample) & ~0xffff) >> 9) * (weight)) + 1) >> 1)
#define sample

Definition at line 42 of file wavpackenc.c.

◆ APPLY_WEIGHT_I

#define APPLY_WEIGHT_I ( weight,
sample )
Value:
(((weight) * (sample) + 512) >> 10)

Definition at line 45 of file wavpackenc.c.

Referenced by decorr_stereo_pass_id2(), and decorr_stereo_quick().

◆ APPLY_WEIGHT

#define APPLY_WEIGHT ( weight,
sample )
Value:
((sample) != (short) (sample) ? \
APPLY_WEIGHT_F(weight, sample) : APPLY_WEIGHT_I (weight, sample))
#define APPLY_WEIGHT_I(weight, sample)
Definition wavpackenc.c:45

Definition at line 47 of file wavpackenc.c.

Referenced by decorr_mono(), decorr_stereo(), decorr_stereo_pass2(), and wavpack_encode_block().

◆ CLEAR

◆ SHIFT_LSB

#define SHIFT_LSB   13

Definition at line 52 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ SHIFT_MASK

#define SHIFT_MASK   (0x1FU << SHIFT_LSB)

Definition at line 53 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ MAG_LSB

◆ MAG_MASK

#define MAG_MASK   (0x1FU << MAG_LSB)

◆ SRATE_LSB

#define SRATE_LSB   23

Definition at line 58 of file wavpackenc.c.

Referenced by set_samplerate().

◆ SRATE_MASK

#define SRATE_MASK   (0xFU << SRATE_LSB)

Definition at line 59 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ EXTRA_TRY_DELTAS

#define EXTRA_TRY_DELTAS   1

Definition at line 61 of file wavpackenc.c.

Referenced by analyze_mono(), analyze_stereo(), and wavpack_encode_init().

◆ EXTRA_ADJUST_DELTAS

#define EXTRA_ADJUST_DELTAS   2

Definition at line 62 of file wavpackenc.c.

Referenced by analyze_mono(), analyze_stereo(), and wavpack_encode_init().

◆ EXTRA_SORT_FIRST

#define EXTRA_SORT_FIRST   4

Definition at line 63 of file wavpackenc.c.

Referenced by analyze_mono(), analyze_stereo(), and wavpack_encode_init().

◆ EXTRA_BRANCHES

#define EXTRA_BRANCHES   8

Definition at line 64 of file wavpackenc.c.

Referenced by analyze_mono(), analyze_stereo(), and wavpack_encode_init().

◆ EXTRA_SORT_LAST

#define EXTRA_SORT_LAST   16

Definition at line 65 of file wavpackenc.c.

Referenced by analyze_mono(), analyze_stereo(), and wavpack_encode_init().

◆ FLOAT_SHIFT_ONES

#define FLOAT_SHIFT_ONES   1

Definition at line 216 of file wavpackenc.c.

Referenced by scan_float().

◆ FLOAT_SHIFT_SAME

#define FLOAT_SHIFT_SAME   2

Definition at line 217 of file wavpackenc.c.

Referenced by pack_float_sample(), and scan_float().

◆ FLOAT_SHIFT_SENT

#define FLOAT_SHIFT_SENT   4

Definition at line 218 of file wavpackenc.c.

Referenced by pack_float_sample(), and scan_float().

◆ FLOAT_ZEROS_SENT

#define FLOAT_ZEROS_SENT   8

Definition at line 219 of file wavpackenc.c.

Referenced by pack_float_sample(), and scan_float().

◆ FLOAT_NEG_ZEROS

#define FLOAT_NEG_ZEROS   0x10

Definition at line 220 of file wavpackenc.c.

Referenced by pack_float_sample(), and scan_float().

◆ FLOAT_EXCEPTIONS

#define FLOAT_EXCEPTIONS   0x20

Definition at line 221 of file wavpackenc.c.

Referenced by process_float(), and scan_float().

◆ get_mantissa

#define get_mantissa ( f)
Value:
((f) & 0x7fffff)
#define f(width, name)
Definition cbs_vp8.c:236

Definition at line 223 of file wavpackenc.c.

Referenced by pack_float_sample(), process_float(), and scan_float().

◆ get_exponent

#define get_exponent ( f)
Value:
(((f) >> 23) & 0xff)

Definition at line 224 of file wavpackenc.c.

Referenced by pack_float_sample(), process_float(), and scan_float().

◆ get_sign

#define get_sign ( f)
Value:
(((f) >> 31) & 0x1)

Definition at line 225 of file wavpackenc.c.

Referenced by pack_float_sample(), process_float(), and scan_float().

◆ count_bits

#define count_bits ( av)
Value:
((av) ? 32 - ff_clz(av) : 0)
#define ff_clz
Definition intmath.h:141

Definition at line 644 of file wavpackenc.c.

Referenced by encode_flush(), log2sample(), and wavpack_encode_sample().

◆ update_weight_d2

#define update_weight_d2 ( weight,
delta,
source,
result )
Value:
if (source && result) \
weight -= (((source ^ result) >> 29) & 4) - 2;

Definition at line 2341 of file wavpackenc.c.

Referenced by decorr_stereo_pass_id2().

◆ update_weight_clip_d2

#define update_weight_clip_d2 ( weight,
delta,
source,
result )
Value:
if (source && result) { \
const int32_t s = (source ^ result) >> 31; \
if ((weight = (weight ^ s) + (2 - s)) > 1024) weight = 1024; \
weight = (weight ^ s) - s; \
}

Definition at line 2345 of file wavpackenc.c.

Referenced by decorr_stereo_pass_id2().

◆ WRITE_DECWEIGHT

#define WRITE_DECWEIGHT ( type)
Value:
do { \
bytestream2_put_byte(&pb, temp); \
} while (0)
cl_device_type type
else temp
Definition vf_mcdeint.c:275
static int8_t store_weight(int weight)
Definition wavpackenc.c:525
static int restore_weight(int8_t weight)
Definition wavpackenc.c:534

Referenced by wavpack_encode_block().

◆ WRITE_DECSAMPLE

#define WRITE_DECSAMPLE ( type)
Value:
do { \
temp = log2s(type); \
bytestream2_put_le16(&pb, temp); \
} while (0)
static av_always_inline int wp_exp2(int16_t val)
Definition wavpack.h:134
static int log2s(int32_t value)
Definition wavpackenc.c:544

Referenced by wavpack_encode_block().

◆ WRITE_CHAN_ENTROPY

#define WRITE_CHAN_ENTROPY ( chan)
Value:
do { \
for (i = 0; i < 3; i++) { \
temp = wp_log2(s->w.c[chan].median[i]); \
bytestream2_put_le16(&pb, temp); \
s->w.c[chan].median[i] = wp_exp2(temp); \
} \
} while (0)
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
static av_always_inline int wp_log2(uint32_t val)
Definition wavpack.h:151

Referenced by wavpack_encode_block().

◆ COPY_SAMPLES

#define COPY_SAMPLES ( type,
offset,
shift )
Value:
do { \
const type *sptr = (const type *)src; \
for (i = 0; i < nb_samples; i++) \
dst[i] = (sptr[i] - offset) >> shift; \
} while (0)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
unsigned offset
Definition libaomenc.c:763
static int shift(int a, int b)
Definition bonk.c:261
#define src
Definition vp8dsp.c:248

Referenced by fill_buffer().

◆ OFFSET

#define OFFSET ( x)
Value:

Definition at line 2958 of file wavpackenc.c.

◆ FLAGS

Definition at line 2959 of file wavpackenc.c.

Function Documentation

◆ wavpack_encode_init()

static av_cold int wavpack_encode_init ( AVCodecContext * avctx)
static

Definition at line 129 of file wavpackenc.c.

◆ shift_mono()

static void shift_mono ( int32_t * samples,
int nb_samples,
int shift )
static

Definition at line 199 of file wavpackenc.c.

Referenced by scan_float(), scan_int23(), scan_int32(), and wavpack_encode_block().

◆ shift_stereo()

static void shift_stereo ( int32_t * left,
int32_t * right,
int nb_samples,
int shift )
static

Definition at line 206 of file wavpackenc.c.

Referenced by scan_float(), scan_int23(), scan_int32(), and wavpack_encode_block().

◆ process_float()

static void process_float ( WavPackEncodeContext * s,
int32_t * sample )
static

Definition at line 227 of file wavpackenc.c.

Referenced by scan_float().

◆ scan_float()

static int scan_float ( WavPackEncodeContext * s,
int32_t * samples_l,
int32_t * samples_r,
int nb_samples )
static

Definition at line 268 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ scan_int23()

static void scan_int23 ( WavPackEncodeContext * s,
int32_t * samples_l,
int32_t * samples_r,
int nb_samples )
static

Definition at line 354 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ scan_int32()

static int scan_int32 ( WavPackEncodeContext * s,
int32_t * samples_l,
int32_t * samples_r,
int nb_samples )
static

Definition at line 435 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ store_weight()

static int8_t store_weight ( int weight)
static

◆ restore_weight()

static int restore_weight ( int8_t weight)
static

Definition at line 534 of file wavpackenc.c.

Referenced by decorr_mono(), decorr_stereo(), and decorr_stereo_quick().

◆ log2s()

static int log2s ( int32_t value)
static

Definition at line 544 of file wavpackenc.c.

Referenced by decorr_mono(), decorr_stereo(), and decorr_stereo_quick().

◆ decorr_mono()

static void decorr_mono ( int32_t * in_samples,
int32_t * out_samples,
int nb_samples,
struct Decorr * dpp,
int dir )
static

Definition at line 549 of file wavpackenc.c.

Referenced by analyze_mono(), decorr_mono_buffer(), and wv_mono().

◆ reverse_mono_decorr()

static void reverse_mono_decorr ( struct Decorr * dpp)
static

Definition at line 612 of file wavpackenc.c.

Referenced by decorr_mono_buffer(), and wv_mono().

◆ log2sample()

static uint32_t log2sample ( uint32_t v,
int limit,
uint32_t * result )
static

Definition at line 646 of file wavpackenc.c.

Referenced by log2mono(), and log2stereo().

◆ log2mono()

static uint32_t log2mono ( int32_t * samples,
int nb_samples,
int limit )
static

Definition at line 662 of file wavpackenc.c.

Referenced by analyze_mono(), delta_mono(), recurse_mono(), sort_mono(), and wv_mono().

◆ log2stereo()

static uint32_t log2stereo ( int32_t * samples_l,
int32_t * samples_r,
int nb_samples,
int limit )
static

Definition at line 672 of file wavpackenc.c.

Referenced by analyze_stereo(), delta_stereo(), recurse_stereo(), sort_stereo(), and wv_stereo().

◆ decorr_mono_buffer()

static void decorr_mono_buffer ( int32_t * samples,
int32_t * outsamples,
int nb_samples,
struct Decorr * dpp,
int tindex )
static

Definition at line 684 of file wavpackenc.c.

Referenced by delta_mono(), recurse_mono(), and sort_mono().

◆ recurse_mono()

static void recurse_mono ( WavPackEncodeContext * s,
WavPackExtraInfo * info,
int depth,
int delta,
uint32_t input_bits )
static

Definition at line 723 of file wavpackenc.c.

Referenced by analyze_mono(), and recurse_mono().

◆ sort_mono()

static void sort_mono ( WavPackEncodeContext * s,
WavPackExtraInfo * info )
static

Definition at line 786 of file wavpackenc.c.

Referenced by analyze_mono().

◆ delta_mono()

static void delta_mono ( WavPackEncodeContext * s,
WavPackExtraInfo * info )
static

Definition at line 833 of file wavpackenc.c.

Referenced by analyze_mono().

◆ allocate_buffers2()

static int allocate_buffers2 ( WavPackEncodeContext * s,
int nterms )
static

Definition at line 886 of file wavpackenc.c.

Referenced by analyze_mono(), and analyze_stereo().

◆ allocate_buffers()

static int allocate_buffers ( WavPackEncodeContext * s)
static

Definition at line 906 of file wavpackenc.c.

Referenced by wv_mono(), and wv_stereo().

◆ analyze_mono()

static void analyze_mono ( WavPackEncodeContext * s,
int32_t * samples,
int do_samples )
static

Definition at line 936 of file wavpackenc.c.

Referenced by wv_mono().

◆ scan_word()

static void scan_word ( WavPackEncodeContext * s,
WvChannel * c,
int32_t * samples,
int nb_samples,
int dir )
static

Definition at line 988 of file wavpackenc.c.

Referenced by wv_mono(), and wv_stereo().

◆ wv_mono()

static int wv_mono ( WavPackEncodeContext * s,
int32_t * samples,
int no_history,
int do_samples )
static

Definition at line 1020 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ decorr_stereo()

static void decorr_stereo ( int32_t * in_left,
int32_t * in_right,
int32_t * out_left,
int32_t * out_right,
int nb_samples,
struct Decorr * dpp,
int dir )
static

Definition at line 1126 of file wavpackenc.c.

Referenced by analyze_stereo(), decorr_stereo_buffer(), and wv_stereo().

◆ reverse_decorr()

static void reverse_decorr ( struct Decorr * dpp)
static

Definition at line 1319 of file wavpackenc.c.

Referenced by decorr_stereo_buffer(), and wv_stereo().

◆ decorr_stereo_quick()

static void decorr_stereo_quick ( int32_t * in_left,
int32_t * in_right,
int32_t * out_left,
int32_t * out_right,
int nb_samples,
struct Decorr * dpp )
static

Definition at line 1363 of file wavpackenc.c.

Referenced by analyze_stereo(), decorr_stereo_buffer(), and wv_stereo().

◆ decorr_stereo_buffer()

static void decorr_stereo_buffer ( WavPackExtraInfo * info,
int32_t * in_left,
int32_t * in_right,
int32_t * out_left,
int32_t * out_right,
int nb_samples,
int tindex )
static

Definition at line 1499 of file wavpackenc.c.

Referenced by delta_stereo(), recurse_stereo(), and sort_stereo().

◆ sort_stereo()

static void sort_stereo ( WavPackEncodeContext * s,
WavPackExtraInfo * info )
static

Definition at line 1551 of file wavpackenc.c.

Referenced by analyze_stereo().

◆ delta_stereo()

static void delta_stereo ( WavPackEncodeContext * s,
WavPackExtraInfo * info )
static

Definition at line 1608 of file wavpackenc.c.

Referenced by analyze_stereo().

◆ recurse_stereo()

static void recurse_stereo ( WavPackEncodeContext * s,
WavPackExtraInfo * info,
int depth,
int delta,
uint32_t input_bits )
static

Definition at line 1668 of file wavpackenc.c.

Referenced by analyze_stereo(), and recurse_stereo().

◆ analyze_stereo()

static void analyze_stereo ( WavPackEncodeContext * s,
int32_t * in_left,
int32_t * in_right,
int do_samples )
static

Definition at line 1741 of file wavpackenc.c.

Referenced by wv_stereo().

◆ wv_stereo()

static int wv_stereo ( WavPackEncodeContext * s,
int32_t * samples_l,
int32_t * samples_r,
int no_history,
int do_samples )
static

Definition at line 1810 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ encode_flush()

static void encode_flush ( WavPackEncodeContext * s)
static

Definition at line 1970 of file wavpackenc.c.

Referenced by wavpack_encode_block(), and wavpack_encode_sample().

◆ wavpack_encode_sample()

static void wavpack_encode_sample ( WavPackEncodeContext * s,
WvChannel * c,
int32_t sample )
static

Definition at line 2043 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ pack_int32()

static void pack_int32 ( WavPackEncodeContext * s,
int32_t * samples_l,
int32_t * samples_r,
int nb_samples )
static

Definition at line 2136 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ pack_float_sample()

static void pack_float_sample ( WavPackEncodeContext * s,
int32_t * sample )
static

Definition at line 2161 of file wavpackenc.c.

Referenced by pack_float().

◆ pack_float()

static void pack_float ( WavPackEncodeContext * s,
int32_t * samples_l,
int32_t * samples_r,
int nb_samples )
static

Definition at line 2216 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ decorr_stereo_pass2()

static void decorr_stereo_pass2 ( struct Decorr * dpp,
int32_t * samples_l,
int32_t * samples_r,
int nb_samples )
static

Definition at line 2233 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ decorr_stereo_pass_id2()

static void decorr_stereo_pass_id2 ( struct Decorr * dpp,
int32_t * samples_l,
int32_t * samples_r,
int nb_samples )
static

Definition at line 2352 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ put_metadata_block()

static void put_metadata_block ( PutByteContext * pb,
int flags,
int size )
static

Definition at line 2461 of file wavpackenc.c.

Referenced by wavpack_encode_block().

◆ wavpack_encode_block()

static int wavpack_encode_block ( WavPackEncodeContext * s,
int32_t * samples_l,
int32_t * samples_r,
uint8_t * out,
int out_size )
static

Definition at line 2470 of file wavpackenc.c.

Referenced by wavpack_encode_frame().

◆ fill_buffer()

static void fill_buffer ( WavPackEncodeContext * s,
const int8_t * src,
int32_t * dst,
int nb_samples )
static

Definition at line 2824 of file wavpackenc.c.

Referenced by wavpack_encode_frame().

◆ set_samplerate()

static void set_samplerate ( WavPackEncodeContext * s)
static

Definition at line 2854 of file wavpackenc.c.

Referenced by wavpack_encode_frame().

◆ wavpack_encode_frame()

static int wavpack_encode_frame ( AVCodecContext * avctx,
AVPacket * avpkt,
const AVFrame * frame,
int * got_packet_ptr )
static

Definition at line 2866 of file wavpackenc.c.

◆ wavpack_encode_close()

static av_cold int wavpack_encode_close ( AVCodecContext * avctx)
static

Definition at line 2924 of file wavpackenc.c.

Variable Documentation

◆ options

const AVOption options[]
static
Initial value:
= {
{ "joint_stereo", "", OFFSET(joint), AV_OPT_TYPE_BOOL, {.i64=-1}, -1, 1, FLAGS },
{ "optimize_mono", "", OFFSET(optimize_mono), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
{ NULL },
}
#define FLAGS
Definition cmdutils.c:598
#define NULL
Definition coverity.c:32
#define OFFSET(x)
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition opt.h:326

Definition at line 2960 of file wavpackenc.c.

◆ wavpack_encoder_class

const AVClass wavpack_encoder_class
static
Initial value:
= {
.class_name = "WavPack encoder",
.item_name = av_default_item_name,
.option = options,
}
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 2966 of file wavpackenc.c.

◆ ff_wavpack_encoder

const FFCodec ff_wavpack_encoder
Initial value:
= {
.p.name = "wavpack",
CODEC_LONG_NAME("WavPack"),
.p.type = AVMEDIA_TYPE_AUDIO,
.priv_data_size = sizeof(WavPackEncodeContext),
.p.priv_class = &wavpack_encoder_class,
}
#define FF_CODEC_ENCODE_CB(func)
#define CODEC_LONG_NAME(str)
#define CODEC_SAMPLEFMTS(...)
#define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE
This encoder can reorder user opaque values from input AVFrames and return them with corresponding ou...
Definition codec.h:147
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition codec.h:49
#define AV_CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
Definition codec.h:84
@ AV_CODEC_ID_WAVPACK
Definition codec_id.h:478
@ AVMEDIA_TYPE_AUDIO
Definition avutil.h:201
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition samplefmt.h:66
@ AV_SAMPLE_FMT_S16P
signed 16 bits, planar
Definition samplefmt.h:64
@ AV_SAMPLE_FMT_U8P
unsigned 8 bits, planar
Definition samplefmt.h:63
@ AV_SAMPLE_FMT_S32P
signed 32 bits, planar
Definition samplefmt.h:65
static av_cold int wavpack_encode_close(AVCodecContext *avctx)
static const AVClass wavpack_encoder_class
static av_cold int wavpack_encode_init(AVCodecContext *avctx)
Definition wavpackenc.c:129
static int wavpack_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)

Definition at line 2973 of file wavpackenc.c.