Originally committed as revision 25787 to svn://svn.ffmpeg.org/ffmpeg/trunktags/n0.8
| @@ -13,6 +13,15 @@ libavutil: 2009-03-08 | |||
| API changes, most recent first: | |||
| 2010-11-21 - r25787 - lavcore 0.14.0 - audioconvert.h | |||
| Add a public audio channel API in audioconvert.h, and deprecate the | |||
| corresponding functions in libavcodec: | |||
| avcodec_get_channel_name() | |||
| avcodec_get_channel_layout() | |||
| avcodec_get_channel_layout_string() | |||
| avcodec_channel_layout_num_channels() | |||
| and the CH_* macros defined in libavcodec/avcodec.h. | |||
| 2010-11-21 - r25777 - lavf 52.85.0 - avformat.h | |||
| Add av_append_packet(). | |||
| @@ -48,21 +48,6 @@ void avcodec_sample_fmt_string (char *buf, int buf_size, int sample_fmt) | |||
| } | |||
| #endif | |||
| static const char* const channel_names[]={ | |||
| "FL", "FR", "FC", "LFE", "BL", "BR", "FLC", "FRC", | |||
| "BC", "SL", "SR", "TC", "TFL", "TFC", "TFR", "TBL", | |||
| "TBC", "TBR", | |||
| [29] = "DL", | |||
| [30] = "DR", | |||
| }; | |||
| static const char *get_channel_name(int channel_id) | |||
| { | |||
| if (channel_id<0 || channel_id>=FF_ARRAY_ELEMS(channel_names)) | |||
| return NULL; | |||
| return channel_names[channel_id]; | |||
| } | |||
| int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name) | |||
| { | |||
| switch(nb_channels) { | |||
| @@ -77,75 +62,22 @@ int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, con | |||
| } | |||
| } | |||
| static const struct { | |||
| const char *name; | |||
| int nb_channels; | |||
| int64_t layout; | |||
| } channel_layout_map[] = { | |||
| { "mono", 1, CH_LAYOUT_MONO }, | |||
| { "stereo", 2, CH_LAYOUT_STEREO }, | |||
| { "4.0", 4, CH_LAYOUT_4POINT0 }, | |||
| { "quad", 4, CH_LAYOUT_QUAD }, | |||
| { "5.0", 5, CH_LAYOUT_5POINT0 }, | |||
| { "5.0", 5, CH_LAYOUT_5POINT0_BACK }, | |||
| { "5.1", 6, CH_LAYOUT_5POINT1 }, | |||
| { "5.1", 6, CH_LAYOUT_5POINT1_BACK }, | |||
| { "5.1+downmix", 8, CH_LAYOUT_5POINT1|CH_LAYOUT_STEREO_DOWNMIX, }, | |||
| { "7.1", 8, CH_LAYOUT_7POINT1 }, | |||
| { "7.1(wide)", 8, CH_LAYOUT_7POINT1_WIDE }, | |||
| { "7.1+downmix", 10, CH_LAYOUT_7POINT1|CH_LAYOUT_STEREO_DOWNMIX, }, | |||
| { 0 } | |||
| }; | |||
| #if FF_API_OLD_AUDIOCONVERT | |||
| int64_t avcodec_get_channel_layout(const char *name) | |||
| { | |||
| int i = 0; | |||
| do { | |||
| if (!strcmp(channel_layout_map[i].name, name)) | |||
| return channel_layout_map[i].layout; | |||
| i++; | |||
| } while (channel_layout_map[i].name); | |||
| return 0; | |||
| return av_get_channel_layout(name); | |||
| } | |||
| void avcodec_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout) | |||
| { | |||
| int i; | |||
| for (i=0; channel_layout_map[i].name; i++) | |||
| if (nb_channels == channel_layout_map[i].nb_channels && | |||
| channel_layout == channel_layout_map[i].layout) { | |||
| av_strlcpy(buf, channel_layout_map[i].name, buf_size); | |||
| return; | |||
| } | |||
| snprintf(buf, buf_size, "%d channels", nb_channels); | |||
| if (channel_layout) { | |||
| int i,ch; | |||
| av_strlcat(buf, " (", buf_size); | |||
| for(i=0,ch=0; i<64; i++) { | |||
| if ((channel_layout & (1L<<i))) { | |||
| const char *name = get_channel_name(i); | |||
| if (name) { | |||
| if (ch>0) av_strlcat(buf, "|", buf_size); | |||
| av_strlcat(buf, name, buf_size); | |||
| } | |||
| ch++; | |||
| } | |||
| } | |||
| av_strlcat(buf, ")", buf_size); | |||
| } | |||
| av_get_channel_layout_string(buf, buf_size, nb_channels, channel_layout); | |||
| } | |||
| int avcodec_channel_layout_num_channels(int64_t channel_layout) | |||
| { | |||
| int count; | |||
| uint64_t x = channel_layout; | |||
| for (count = 0; x; count++) | |||
| x &= x-1; // unset lowest set bit | |||
| return count; | |||
| return av_get_channel_layout_nb_channels(channel_layout); | |||
| } | |||
| #endif | |||
| struct AVAudioConvert { | |||
| int in_channels, out_channels; | |||
| @@ -52,21 +52,29 @@ attribute_deprecated | |||
| enum AVSampleFormat avcodec_get_sample_fmt(const char* name); | |||
| #endif | |||
| /** | |||
| * @return NULL on error | |||
| */ | |||
| #if FF_API_OLD_AUDIOCONVERT | |||
| attribute_deprecated | |||
| const char *avcodec_get_channel_name(int channel_id); | |||
| /** | |||
| * @return channel layout that matches name, 0 if no match | |||
| * @deprecated Use av_get_channel_layout() instead. | |||
| */ | |||
| attribute_deprecated | |||
| int64_t avcodec_get_channel_layout(const char *name); | |||
| /** | |||
| * Return description of channel layout | |||
| * @deprecated Use av_get_channel_layout_string() instead. | |||
| */ | |||
| attribute_deprecated | |||
| void avcodec_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout); | |||
| /** | |||
| * @deprecated Use av_get_channel_layout_nb_channels() instead. | |||
| */ | |||
| attribute_deprecated | |||
| int avcodec_channel_layout_num_channels(int64_t channel_layout); | |||
| #endif | |||
| /** | |||
| * Guess the channel layout | |||
| * @param nb_channels | |||
| @@ -76,11 +84,6 @@ void avcodec_get_channel_layout_string(char *buf, int buf_size, int nb_channels, | |||
| */ | |||
| int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name); | |||
| /** | |||
| * @return the number of channels in the channel layout. | |||
| */ | |||
| int avcodec_channel_layout_num_channels(int64_t channel_layout); | |||
| struct AVAudioConvert; | |||
| typedef struct AVAudioConvert AVAudioConvert; | |||
| @@ -33,7 +33,7 @@ | |||
| #define LIBAVCODEC_VERSION_MAJOR 52 | |||
| #define LIBAVCODEC_VERSION_MINOR 97 | |||
| #define LIBAVCODEC_VERSION_MICRO 0 | |||
| #define LIBAVCODEC_VERSION_MICRO 1 | |||
| #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | |||
| LIBAVCODEC_VERSION_MINOR, \ | |||
| @@ -79,6 +79,9 @@ | |||
| #ifndef FF_API_OLD_SAMPLE_FMT | |||
| #define FF_API_OLD_SAMPLE_FMT (LIBAVCODEC_VERSION_MAJOR < 53) | |||
| #endif | |||
| #ifndef FF_API_OLD_AUDIOCONVERT | |||
| #define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 54) | |||
| #endif | |||
| #define AV_NOPTS_VALUE INT64_C(0x8000000000000000) | |||
| #define AV_TIME_BASE 1000000 | |||
| @@ -426,50 +429,53 @@ enum CodecID { | |||
| #define SAMPLE_FMT_NB AV_SAMPLE_FMT_NB | |||
| #endif | |||
| #if FF_API_OLD_AUDIOCONVERT | |||
| #include "libavcore/audioconvert.h" | |||
| /* Audio channel masks */ | |||
| #define CH_FRONT_LEFT 0x00000001 | |||
| #define CH_FRONT_RIGHT 0x00000002 | |||
| #define CH_FRONT_CENTER 0x00000004 | |||
| #define CH_LOW_FREQUENCY 0x00000008 | |||
| #define CH_BACK_LEFT 0x00000010 | |||
| #define CH_BACK_RIGHT 0x00000020 | |||
| #define CH_FRONT_LEFT_OF_CENTER 0x00000040 | |||
| #define CH_FRONT_RIGHT_OF_CENTER 0x00000080 | |||
| #define CH_BACK_CENTER 0x00000100 | |||
| #define CH_SIDE_LEFT 0x00000200 | |||
| #define CH_SIDE_RIGHT 0x00000400 | |||
| #define CH_TOP_CENTER 0x00000800 | |||
| #define CH_TOP_FRONT_LEFT 0x00001000 | |||
| #define CH_TOP_FRONT_CENTER 0x00002000 | |||
| #define CH_TOP_FRONT_RIGHT 0x00004000 | |||
| #define CH_TOP_BACK_LEFT 0x00008000 | |||
| #define CH_TOP_BACK_CENTER 0x00010000 | |||
| #define CH_TOP_BACK_RIGHT 0x00020000 | |||
| #define CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. | |||
| #define CH_STEREO_RIGHT 0x40000000 ///< See CH_STEREO_LEFT. | |||
| #define CH_FRONT_LEFT AV_CH_FRONT_LEFT | |||
| #define CH_FRONT_RIGHT AV_CH_FRONT_RIGHT | |||
| #define CH_FRONT_CENTER AV_CH_FRONT_CENTER | |||
| #define CH_LOW_FREQUENCY AV_CH_LOW_FREQUENCY | |||
| #define CH_BACK_LEFT AV_CH_BACK_LEFT | |||
| #define CH_BACK_RIGHT AV_CH_BACK_RIGHT | |||
| #define CH_FRONT_LEFT_OF_CENTER AV_CH_FRONT_LEFT_OF_CENTER | |||
| #define CH_FRONT_RIGHT_OF_CENTER AV_CH_FRONT_RIGHT_OF_CENTER | |||
| #define CH_BACK_CENTER AV_CH_BACK_CENTER | |||
| #define CH_SIDE_LEFT AV_CH_SIDE_LEFT | |||
| #define CH_SIDE_RIGHT AV_CH_SIDE_RIGHT | |||
| #define CH_TOP_CENTER AV_CH_TOP_CENTER | |||
| #define CH_TOP_FRONT_LEFT AV_CH_TOP_FRONT_LEFT | |||
| #define CH_TOP_FRONT_CENTER AV_CH_TOP_FRONT_CENTER | |||
| #define CH_TOP_FRONT_RIGHT AV_CH_TOP_FRONT_RIGHT | |||
| #define CH_TOP_BACK_LEFT AV_CH_TOP_BACK_LEFT | |||
| #define CH_TOP_BACK_CENTER AV_CH_TOP_BACK_CENTER | |||
| #define CH_TOP_BACK_RIGHT AV_CH_TOP_BACK_RIGHT | |||
| #define CH_STEREO_LEFT AV_CH_STEREO_LEFT | |||
| #define CH_STEREO_RIGHT AV_CH_STEREO_RIGHT | |||
| /** Channel mask value used for AVCodecContext.request_channel_layout | |||
| to indicate that the user requests the channel order of the decoder output | |||
| to be the native codec channel order. */ | |||
| #define CH_LAYOUT_NATIVE 0x8000000000000000LL | |||
| #define CH_LAYOUT_NATIVE AV_CH_LAYOUT_NATIVE | |||
| /* Audio channel convenience macros */ | |||
| #define CH_LAYOUT_MONO (CH_FRONT_CENTER) | |||
| #define CH_LAYOUT_STEREO (CH_FRONT_LEFT|CH_FRONT_RIGHT) | |||
| #define CH_LAYOUT_2_1 (CH_LAYOUT_STEREO|CH_BACK_CENTER) | |||
| #define CH_LAYOUT_SURROUND (CH_LAYOUT_STEREO|CH_FRONT_CENTER) | |||
| #define CH_LAYOUT_4POINT0 (CH_LAYOUT_SURROUND|CH_BACK_CENTER) | |||
| #define CH_LAYOUT_2_2 (CH_LAYOUT_STEREO|CH_SIDE_LEFT|CH_SIDE_RIGHT) | |||
| #define CH_LAYOUT_QUAD (CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT) | |||
| #define CH_LAYOUT_5POINT0 (CH_LAYOUT_SURROUND|CH_SIDE_LEFT|CH_SIDE_RIGHT) | |||
| #define CH_LAYOUT_5POINT1 (CH_LAYOUT_5POINT0|CH_LOW_FREQUENCY) | |||
| #define CH_LAYOUT_5POINT0_BACK (CH_LAYOUT_SURROUND|CH_BACK_LEFT|CH_BACK_RIGHT) | |||
| #define CH_LAYOUT_5POINT1_BACK (CH_LAYOUT_5POINT0_BACK|CH_LOW_FREQUENCY) | |||
| #define CH_LAYOUT_7POINT0 (CH_LAYOUT_5POINT0|CH_BACK_LEFT|CH_BACK_RIGHT) | |||
| #define CH_LAYOUT_7POINT1 (CH_LAYOUT_5POINT1|CH_BACK_LEFT|CH_BACK_RIGHT) | |||
| #define CH_LAYOUT_7POINT1_WIDE (CH_LAYOUT_5POINT1_BACK|\ | |||
| CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER) | |||
| #define CH_LAYOUT_STEREO_DOWNMIX (CH_STEREO_LEFT|CH_STEREO_RIGHT) | |||
| #define CH_LAYOUT_MONO AV_CH_LAYOUT_MONO | |||
| #define CH_LAYOUT_STEREO AV_CH_LAYOUT_STEREO | |||
| #define CH_LAYOUT_2_1 AV_CH_LAYOUT_2_1 | |||
| #define CH_LAYOUT_SURROUND AV_CH_LAYOUT_SURROUND | |||
| #define CH_LAYOUT_4POINT0 AV_CH_LAYOUT_4POINT0 | |||
| #define CH_LAYOUT_2_2 AV_CH_LAYOUT_2_2 | |||
| #define CH_LAYOUT_QUAD AV_CH_LAYOUT_QUAD | |||
| #define CH_LAYOUT_5POINT0 AV_CH_LAYOUT_5POINT0 | |||
| #define CH_LAYOUT_5POINT1 AV_CH_LAYOUT_5POINT1 | |||
| #define CH_LAYOUT_5POINT0_BACK AV_CH_LAYOUT_5POINT0_BACK | |||
| #define CH_LAYOUT_5POINT1_BACK AV_CH_LAYOUT_5POINT1_BACK | |||
| #define CH_LAYOUT_7POINT0 AV_CH_LAYOUT_7POINT0 | |||
| #define CH_LAYOUT_7POINT1 AV_CH_LAYOUT_7POINT1 | |||
| #define CH_LAYOUT_7POINT1_WIDE AV_CH_LAYOUT_7POINT1_WIDE | |||
| #define CH_LAYOUT_STEREO_DOWNMIX AV_CH_LAYOUT_STEREO_DOWNMIX | |||
| #endif | |||
| /* in bytes */ | |||
| #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio | |||
| @@ -3,12 +3,16 @@ include $(SUBDIR)../config.mak | |||
| NAME = avcore | |||
| FFLIBS = avutil | |||
| HEADERS = avcore.h \ | |||
| HEADERS = \ | |||
| audioconvert.h \ | |||
| avcore.h \ | |||
| imgutils.h \ | |||
| parseutils.h \ | |||
| samplefmt.h \ | |||
| OBJS = imgutils.o \ | |||
| OBJS = \ | |||
| audioconvert.o \ | |||
| imgutils.o \ | |||
| parseutils.o \ | |||
| samplefmt.o \ | |||
| utils.o \ | |||
| @@ -0,0 +1,113 @@ | |||
| /* | |||
| * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> | |||
| * | |||
| * This file is part of FFmpeg. | |||
| * | |||
| * FFmpeg is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation; either | |||
| * version 2.1 of the License, or (at your option) any later version. | |||
| * | |||
| * FFmpeg is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
| * Lesser General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Lesser General Public | |||
| * License along with FFmpeg; if not, write to the Free Software | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| /** | |||
| * @file | |||
| * audio conversion routines | |||
| */ | |||
| #include "libavutil/avstring.h" | |||
| #include "audioconvert.h" | |||
| static const char * const channel_names[] = { | |||
| "FL", "FR", "FC", "LFE", "BL", "BR", "FLC", "FRC", | |||
| "BC", "SL", "SR", "TC", "TFL", "TFC", "TFR", "TBL", | |||
| "TBC", "TBR", | |||
| [29] = "DL", | |||
| [30] = "DR", | |||
| }; | |||
| static const char *get_channel_name(int channel_id) | |||
| { | |||
| if (channel_id < 0 || channel_id >= FF_ARRAY_ELEMS(channel_names)) | |||
| return NULL; | |||
| return channel_names[channel_id]; | |||
| } | |||
| static const struct { | |||
| const char *name; | |||
| int nb_channels; | |||
| int64_t layout; | |||
| } channel_layout_map[] = { | |||
| { "mono", 1, AV_CH_LAYOUT_MONO }, | |||
| { "stereo", 2, AV_CH_LAYOUT_STEREO }, | |||
| { "4.0", 4, AV_CH_LAYOUT_4POINT0 }, | |||
| { "quad", 4, AV_CH_LAYOUT_QUAD }, | |||
| { "5.0", 5, AV_CH_LAYOUT_5POINT0 }, | |||
| { "5.0", 5, AV_CH_LAYOUT_5POINT0_BACK }, | |||
| { "5.1", 6, AV_CH_LAYOUT_5POINT1 }, | |||
| { "5.1", 6, AV_CH_LAYOUT_5POINT1_BACK }, | |||
| { "5.1+downmix", 8, AV_CH_LAYOUT_5POINT1|AV_CH_LAYOUT_STEREO_DOWNMIX, }, | |||
| { "7.1", 8, AV_CH_LAYOUT_7POINT1 }, | |||
| { "7.1(wide)", 8, AV_CH_LAYOUT_7POINT1_WIDE }, | |||
| { "7.1+downmix", 10, AV_CH_LAYOUT_7POINT1|AV_CH_LAYOUT_STEREO_DOWNMIX, }, | |||
| { 0 } | |||
| }; | |||
| int64_t av_get_channel_layout(const char *name) | |||
| { | |||
| int i = 0; | |||
| do { | |||
| if (!strcmp(channel_layout_map[i].name, name)) | |||
| return channel_layout_map[i].layout; | |||
| i++; | |||
| } while (channel_layout_map[i].name); | |||
| return 0; | |||
| } | |||
| void av_get_channel_layout_string(char *buf, int buf_size, | |||
| int nb_channels, int64_t channel_layout) | |||
| { | |||
| int i; | |||
| for (i = 0; channel_layout_map[i].name; i++) | |||
| if (nb_channels == channel_layout_map[i].nb_channels && | |||
| channel_layout == channel_layout_map[i].layout) { | |||
| av_strlcpy(buf, channel_layout_map[i].name, buf_size); | |||
| return; | |||
| } | |||
| snprintf(buf, buf_size, "%d channels", nb_channels); | |||
| if (channel_layout) { | |||
| int i,ch; | |||
| av_strlcat(buf, " (", buf_size); | |||
| for(i=0,ch=0; i<64; i++) { | |||
| if ((channel_layout & (1L<<i))) { | |||
| const char *name = get_channel_name(i); | |||
| if (name) { | |||
| if (ch>0) av_strlcat(buf, "|", buf_size); | |||
| av_strlcat(buf, name, buf_size); | |||
| } | |||
| ch++; | |||
| } | |||
| } | |||
| av_strlcat(buf, ")", buf_size); | |||
| } | |||
| } | |||
| int av_get_channel_layout_nb_channels(int64_t channel_layout) | |||
| { | |||
| int count; | |||
| uint64_t x = channel_layout; | |||
| for (count = 0; x; count++) | |||
| x &= x-1; // unset lowest set bit | |||
| return count; | |||
| } | |||
| @@ -0,0 +1,94 @@ | |||
| /* | |||
| * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> | |||
| * Copyright (c) 2008 Peter Ross | |||
| * | |||
| * This file is part of FFmpeg. | |||
| * | |||
| * FFmpeg is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation; either | |||
| * version 2.1 of the License, or (at your option) any later version. | |||
| * | |||
| * FFmpeg is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
| * Lesser General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Lesser General Public | |||
| * License along with FFmpeg; if not, write to the Free Software | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AVCORE_AUDIOCONVERT_H | |||
| #define AVCORE_AUDIOCONVERT_H | |||
| /** | |||
| * @file | |||
| * audio conversion routines | |||
| */ | |||
| #include "avcore.h" | |||
| /* Audio channel masks */ | |||
| #define AV_CH_FRONT_LEFT 0x00000001 | |||
| #define AV_CH_FRONT_RIGHT 0x00000002 | |||
| #define AV_CH_FRONT_CENTER 0x00000004 | |||
| #define AV_CH_LOW_FREQUENCY 0x00000008 | |||
| #define AV_CH_BACK_LEFT 0x00000010 | |||
| #define AV_CH_BACK_RIGHT 0x00000020 | |||
| #define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040 | |||
| #define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080 | |||
| #define AV_CH_BACK_CENTER 0x00000100 | |||
| #define AV_CH_SIDE_LEFT 0x00000200 | |||
| #define AV_CH_SIDE_RIGHT 0x00000400 | |||
| #define AV_CH_TOP_CENTER 0x00000800 | |||
| #define AV_CH_TOP_FRONT_LEFT 0x00001000 | |||
| #define AV_CH_TOP_FRONT_CENTER 0x00002000 | |||
| #define AV_CH_TOP_FRONT_RIGHT 0x00004000 | |||
| #define AV_CH_TOP_BACK_LEFT 0x00008000 | |||
| #define AV_CH_TOP_BACK_CENTER 0x00010000 | |||
| #define AV_CH_TOP_BACK_RIGHT 0x00020000 | |||
| #define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. | |||
| #define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT. | |||
| /** Channel mask value used for AVCodecContext.request_channel_layout | |||
| to indicate that the user requests the channel order of the decoder output | |||
| to be the native codec channel order. */ | |||
| #define AV_CH_LAYOUT_NATIVE 0x8000000000000000LL | |||
| /* Audio channel convenience macros */ | |||
| #define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) | |||
| #define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) | |||
| #define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) | |||
| #define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) | |||
| #define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) | |||
| #define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) | |||
| #define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) | |||
| #define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) | |||
| #define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) | |||
| #define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) | |||
| #define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) | |||
| #define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) | |||
| #define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) | |||
| #define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) | |||
| #define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) | |||
| /** | |||
| * Return a channel layout id that matches name, 0 if no match. | |||
| */ | |||
| int64_t av_get_channel_layout(const char *name); | |||
| /** | |||
| * Return a description of a channel layout. | |||
| * | |||
| * @param buf put here the string containing the channel layout | |||
| * @param buf_size size in bytes of the buffer | |||
| */ | |||
| void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout); | |||
| /** | |||
| * Return the number of channels in the channel layout. | |||
| */ | |||
| int av_get_channel_layout_nb_channels(int64_t channel_layout); | |||
| #endif /* AVCORE_AUDIOCONVERT_H */ | |||
| @@ -27,7 +27,7 @@ | |||
| #include "libavutil/avutil.h" | |||
| #define LIBAVCORE_VERSION_MAJOR 0 | |||
| #define LIBAVCORE_VERSION_MINOR 13 | |||
| #define LIBAVCORE_VERSION_MINOR 14 | |||
| #define LIBAVCORE_VERSION_MICRO 0 | |||
| #define LIBAVCORE_VERSION_INT AV_VERSION_INT(LIBAVCORE_VERSION_MAJOR, \ | |||