annotate audioconvert.h @ 12425:d23e48091c51 libavcodec

Implement avcodec_get_channel_layout(). Patch by S.N. Hemanth Meenakshisundaram smeenaks:ucsd+edu.
author stefano
date Thu, 26 Aug 2010 00:38:25 +0000
parents d796f05e90f5
children a5ddb39627fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7459
diff changeset
23 #ifndef AVCODEC_AUDIOCONVERT_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7459
diff changeset
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
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
57 /**
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
58 * @return NULL on error
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
59 */
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
60 const char *avcodec_get_channel_name(int channel_id);
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
61
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
62 /**
12425
d23e48091c51 Implement avcodec_get_channel_layout().
stefano
parents: 11755
diff changeset
63 * @return channel layout that matches name, 0 if no match
d23e48091c51 Implement avcodec_get_channel_layout().
stefano
parents: 11755
diff changeset
64 */
d23e48091c51 Implement avcodec_get_channel_layout().
stefano
parents: 11755
diff changeset
65 int64_t avcodec_get_channel_layout(const char *name);
d23e48091c51 Implement avcodec_get_channel_layout().
stefano
parents: 11755
diff changeset
66
d23e48091c51 Implement avcodec_get_channel_layout().
stefano
parents: 11755
diff changeset
67 /**
8098
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
68 * Return description of channel layout
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
69 */
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
70 void avcodec_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout);
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
71
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
72 /**
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
73 * Guess the channel layout
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
74 * @param nb_channels
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
75 * @param codec_id Codec identifier, or CODEC_ID_NONE if unknown
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
76 * @param fmt_name Format name, or NULL if unknown
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
77 * @return Channel layout mask
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
78 */
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
79 int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name);
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
80
9511
c2dba7ed94dc Check that channel layout is compatible with number of channels for
jbr
parents: 8718
diff changeset
81 /**
c2dba7ed94dc Check that channel layout is compatible with number of channels for
jbr
parents: 8718
diff changeset
82 * @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
83 */
c2dba7ed94dc Check that channel layout is compatible with number of channels for
jbr
parents: 8718
diff changeset
84 int avcodec_channel_layout_num_channels(int64_t channel_layout);
8098
c2ab7a8958ed Add audio channel layout API to libavcodec.
pross
parents: 7760
diff changeset
85
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
86 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
87 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
88
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 /**
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 * 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
91 * @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
92 * @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
93 * @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
94 * @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
95 * @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
96 * @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
97 * @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
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 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
100 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
101 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
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 * 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
105 */
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
106 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
107
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
108 /**
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 * 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
110 * @param[in] out array of output buffers for each channel. set to NULL to ignore processing of the given channel.
11755
d796f05e90f5 Fix documentation of av_audio_convert.
cehoyos
parents: 11644
diff changeset
111 * @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
112 * @param[in] in array of input buffers for each channel
11755
d796f05e90f5 Fix documentation of av_audio_convert.
cehoyos
parents: 11644
diff changeset
113 * @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
114 * @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
115 */
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
116 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
117 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
118 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
119
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7459
diff changeset
120 #endif /* AVCODEC_AUDIOCONVERT_H */