FFmpeg
resample.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVRESAMPLE_RESAMPLE_H
22 #define AVRESAMPLE_RESAMPLE_H
23 
24 #include "avresample.h"
25 #include "internal.h"
26 #include "audio_data.h"
27 
28 struct ResampleContext {
34  int dst_incr;
35  unsigned int index;
36  int frac;
37  int src_incr;
41  int linear;
44  void (*set_filter)(void *filter, double *tab, int phase, int tap_count);
45  void (*resample_one)(struct ResampleContext *c, void *dst0,
46  int dst_index, const void *src0,
47  unsigned int index, int frac);
48  void (*resample_nearest)(void *dst0, int dst_index,
49  const void *src0, unsigned int index);
55 };
56 
57 /**
58  * Allocate and initialize a ResampleContext.
59  *
60  * The parameters in the AVAudioResampleContext are used to initialize the
61  * ResampleContext.
62  *
63  * @param avr AVAudioResampleContext
64  * @return newly-allocated ResampleContext
65  */
67 
68 /**
69  * Free a ResampleContext.
70  *
71  * @param c ResampleContext
72  */
74 
75 /**
76  * Resample audio data.
77  *
78  * Changes the sample rate.
79  *
80  * @par
81  * All samples in the source data may not be consumed depending on the
82  * resampling parameters and the size of the output buffer. The unconsumed
83  * samples are automatically added to the start of the source in the next call.
84  * If the destination data can be reallocated, that may be done in this function
85  * in order to fit all available output. If it cannot be reallocated, fewer
86  * input samples will be consumed in order to have the output fit in the
87  * destination data buffers.
88  *
89  * @param c ResampleContext
90  * @param dst destination audio data
91  * @param src source audio data
92  * @return 0 on success, negative AVERROR code on failure
93  */
95 
96 #endif /* AVRESAMPLE_RESAMPLE_H */
ResampleContext::frac
int frac
Definition: resample.h:36
ResampleContext::set_filter
void(* set_filter)(void *filter, double *tab, int phase, int tap_count)
Definition: resample.h:44
avresample.h
filter
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
Definition: filter_design.txt:228
ResampleContext::kaiser_beta
int kaiser_beta
Definition: resample.h:43
ResampleContext::dst_incr
int dst_incr
Definition: resample.h:34
ResampleContext::resample_nearest
void(* resample_nearest)(void *dst0, int dst_index, const void *src0, unsigned int index)
Definition: resample.h:48
AudioData
Audio buffer used for intermediate storage between conversion phases.
Definition: audio_data.h:37
AVAudioResampleContext
Definition: internal.h:53
ResampleContext::filter_length
int filter_length
Definition: resample.h:32
tab
static const struct twinvq_data tab
Definition: twinvq_data.h:10345
ResampleContext::final_padding_filled
int final_padding_filled
Definition: resample.h:53
ResampleContext::ideal_dst_incr
int ideal_dst_incr
Definition: resample.h:33
ResampleContext::resample_one
void(* resample_one)(struct ResampleContext *c, void *dst0, int dst_index, const void *src0, unsigned int index, int frac)
Definition: resample.h:45
ResampleContext
Definition: af_resample.c:38
ResampleContext::filter_bank
uint8_t * filter_bank
Definition: resample.h:31
ResampleContext::final_padding_samples
int final_padding_samples
Definition: resample.h:54
ff_audio_resample_free
void ff_audio_resample_free(ResampleContext **c)
Free a ResampleContext.
Definition: resample.c:224
src
#define src
Definition: vp8dsp.c:255
internal.h
audio_data.h
ff_audio_resample
int ff_audio_resample(ResampleContext *c, AudioData *dst, AudioData *src)
Resample audio data.
Definition: resample.c:334
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
ResampleContext::phase_mask
int phase_mask
Definition: resample.h:40
ResampleContext::padding_size
int padding_size
Definition: resample.h:50
ResampleContext::initial_padding_filled
int initial_padding_filled
Definition: resample.h:51
AVResampleFilterType
enum attribute_deprecated AVResampleFilterType
Definition: avresample.h:123
ResampleContext::linear
int linear
Definition: resample.h:41
ResampleContext::initial_padding_samples
int initial_padding_samples
Definition: resample.h:52
ff_audio_resample_init
ResampleContext * ff_audio_resample_init(AVAudioResampleContext *avr)
Allocate and initialize a ResampleContext.
Definition: resample.c:120
src0
#define src0
Definition: h264pred.c:139
ResampleContext::buffer
AudioData * buffer
Definition: resample.h:30
uint8_t
uint8_t
Definition: audio_convert.c:194
ResampleContext::filter_type
enum AVResampleFilterType filter_type
Definition: resample.h:42
ResampleContext::phase_shift
int phase_shift
Definition: resample.h:39
ResampleContext::avr
AVAudioResampleContext * avr
Definition: af_resample.c:40
ResampleContext::compensation_distance
int compensation_distance
Definition: resample.h:38
ResampleContext::index
unsigned int index
Definition: resample.h:35
ResampleContext::src_incr
int src_incr
Definition: resample.h:37