Mercurial > libavcodec.hg
annotate audioconvert.h @ 12187:fb3fcaf3c1b6 libavcodec
Fix memleak when using mp*float decoder.
Patch by flybird2k at gmail
author | cehoyos |
---|---|
date | Sun, 18 Jul 2010 19:53:24 +0000 |
parents | d796f05e90f5 |
children | d23e48091c51 |
rev | line source |
---|---|
7453
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
1 /* |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
2 * audio conversion |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
3 * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
4 * Copyright (c) 2008 Peter Ross |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
5 * |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
6 * This file is part of FFmpeg. |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
7 * |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
8 * FFmpeg is free software; you can redistribute it and/or |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
10 * License as published by the Free Software Foundation; either |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
11 * version 2.1 of the License, or (at your option) any later version. |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
12 * |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
13 * FFmpeg is distributed in the hope that it will be useful, |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
16 * Lesser General Public License for more details. |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
17 * |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
19 * License along with FFmpeg; if not, write to the Free Software |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
21 */ |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
22 |
7760 | 23 #ifndef AVCODEC_AUDIOCONVERT_H |
24 #define AVCODEC_AUDIOCONVERT_H | |
7453
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
25 |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
26 /** |
11644
7dd2a45249a9
Remove explicit filename from Doxygen @file commands.
diego
parents:
9511
diff
changeset
|
27 * @file |
7453
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
28 * Audio format conversion routines |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
29 */ |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
30 |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
31 |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
32 #include "avcodec.h" |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
33 |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
34 |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
35 /** |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
36 * Generate string corresponding to the sample format with |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
37 * number sample_fmt, or a header if sample_fmt is negative. |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
38 * |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
39 * @param[in] buf the buffer where to write the string |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
40 * @param[in] buf_size the size of buf |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
41 * @param[in] sample_fmt the number of the sample format to print the corresponding info string, or |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
42 * a negative value to print the corresponding header. |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
43 * Meaningful values for obtaining a sample format info vary from 0 to SAMPLE_FMT_NB -1. |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
44 */ |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
45 void avcodec_sample_fmt_string(char *buf, int buf_size, int sample_fmt); |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
46 |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
47 /** |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
48 * @return NULL on error |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
49 */ |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
50 const char *avcodec_get_sample_fmt_name(int sample_fmt); |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
51 |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
52 /** |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
53 * @return SAMPLE_FMT_NONE on error |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
54 */ |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
55 enum SampleFormat avcodec_get_sample_fmt(const char* name); |
d1d15f2dca4c
Add sample format support functions: avcodec_get_sample_fmt_name(), avcodec_get_sample_fmt(), avcodec_sample_fmt_string()
pross
parents:
diff
changeset
|
56 |
8098 | 57 /** |
58 * @return NULL on error | |
59 */ | |
60 const char *avcodec_get_channel_name(int channel_id); | |
61 | |
62 /** | |
63 * Return description of channel layout | |
64 */ | |
65 void avcodec_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout); | |
66 | |
67 /** | |
68 * Guess the channel layout | |
69 * @param nb_channels | |
70 * @param codec_id Codec identifier, or CODEC_ID_NONE if unknown | |
71 * @param fmt_name Format name, or NULL if unknown | |
72 * @return Channel layout mask | |
73 */ | |
74 int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name); | |
75 | |
9511
c2dba7ed94dc
Check that channel layout is compatible with number of channels for
jbr
parents:
8718
diff
changeset
|
76 /** |
c2dba7ed94dc
Check that channel layout is compatible with number of channels for
jbr
parents:
8718
diff
changeset
|
77 * @return the number of channels in the channel layout. |
c2dba7ed94dc
Check that channel layout is compatible with number of channels for
jbr
parents:
8718
diff
changeset
|
78 */ |
c2dba7ed94dc
Check that channel layout is compatible with number of channels for
jbr
parents:
8718
diff
changeset
|
79 int avcodec_channel_layout_num_channels(int64_t channel_layout); |
8098 | 80 |
7459
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
81 struct AVAudioConvert; |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
82 typedef struct AVAudioConvert AVAudioConvert; |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
83 |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
84 /** |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
85 * Create an audio sample format converter context |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
86 * @param out_fmt Output sample format |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
87 * @param out_channels Number of output channels |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
88 * @param in_fmt Input sample format |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
89 * @param in_channels Number of input channels |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
90 * @param[in] matrix Channel mixing matrix (of dimension in_channel*out_channels). Set to NULL to ignore. |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
91 * @param flags See FF_MM_xx |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
92 * @return NULL on error |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
93 */ |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
94 AVAudioConvert *av_audio_convert_alloc(enum SampleFormat out_fmt, int out_channels, |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
95 enum SampleFormat in_fmt, int in_channels, |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
96 const float *matrix, int flags); |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
97 |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
98 /** |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
99 * Free audio sample format converter context |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
100 */ |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
101 void av_audio_convert_free(AVAudioConvert *ctx); |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
102 |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
103 /** |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
104 * Convert between audio sample formats |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
105 * @param[in] out array of output buffers for each channel. set to NULL to ignore processing of the given channel. |
11755 | 106 * @param[in] out_stride distance between consecutive output samples (measured in bytes) |
7459
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
107 * @param[in] in array of input buffers for each channel |
11755 | 108 * @param[in] in_stride distance between consecutive input samples (measured in bytes) |
7459
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
109 * @param len length of audio frame size (measured in samples) |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
110 */ |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
111 int av_audio_convert(AVAudioConvert *ctx, |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
112 void * const out[6], const int out_stride[6], |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
113 const void * const in[6], const int in_stride[6], int len); |
283eeda62184
Modify av_audio_convert() to use AVAudioConvert context struct; add av_audio_convert_alloc() and av_audio_convert_free() support functions.
pross
parents:
7453
diff
changeset
|
114 |
7760 | 115 #endif /* AVCODEC_AUDIOCONVERT_H */ |