annotate audioconvert.h @ 12454:f4355cd85faa libavcodec

Port latest x264 deblock asm (before they moved to using NV12 as internal format), LGPL'ed with permission from Jason and Loren. This includes mmx2 code, so remove inline asm from h264dsp_mmx.c accordingly.
author rbultje
date Fri, 03 Sep 2010 16:52:46 +0000
parents d23e48091c51
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 */