[FFmpeg-cvslog] r21527 - in trunk/libavcodec: vorbis.h vorbis_data.c vorbis_dec.c
superdump
subversion
Fri Jan 29 14:51:26 CET 2010
Author: superdump
Date: Fri Jan 29 14:51:25 2010
New Revision: 21527
Log:
Add support for vorbis 6.1 and 7.1 channel configurations as per the new spec
http://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9
Modified:
trunk/libavcodec/vorbis.h
trunk/libavcodec/vorbis_data.c
trunk/libavcodec/vorbis_dec.c
Modified: trunk/libavcodec/vorbis.h
==============================================================================
--- trunk/libavcodec/vorbis.h Fri Jan 29 07:38:00 2010 (r21526)
+++ trunk/libavcodec/vorbis.h Fri Jan 29 14:51:25 2010 (r21527)
@@ -25,8 +25,8 @@
extern const float ff_vorbis_floor1_inverse_db_table[256];
extern const float * const ff_vorbis_vwin[8];
-extern const uint8_t ff_vorbis_channel_layout_offsets[6][6];
-extern const int64_t ff_vorbis_channel_layouts[7];
+extern const uint8_t ff_vorbis_channel_layout_offsets[8][8];
+extern const int64_t ff_vorbis_channel_layouts[9];
typedef struct {
uint_fast16_t x;
Modified: trunk/libavcodec/vorbis_data.c
==============================================================================
--- trunk/libavcodec/vorbis_data.c Fri Jan 29 07:38:00 2010 (r21526)
+++ trunk/libavcodec/vorbis_data.c Fri Jan 29 14:51:25 2010 (r21527)
@@ -21,22 +21,26 @@
#include "dsputil.h"
#include "vorbis.h"
-const uint8_t ff_vorbis_channel_layout_offsets[6][6] = {
+const uint8_t ff_vorbis_channel_layout_offsets[8][8] = {
{ 0, },
{ 0, 1, },
{ 0, 2, 1, },
{ 0, 1, 2, 3, },
{ 0, 2, 1, 3, 4, },
- { 0, 2, 1, 5, 3, 4, }
+ { 0, 2, 1, 5, 3, 4, },
+ { 0, 2, 1, 6, 5, 3, 4, },
+ { 0, 2, 1, 7, 5, 6, 3, 4},
};
-const int64_t ff_vorbis_channel_layouts[7] = {
+const int64_t ff_vorbis_channel_layouts[9] = {
CH_LAYOUT_MONO,
CH_LAYOUT_STEREO,
CH_LAYOUT_SURROUND,
CH_LAYOUT_QUAD,
CH_LAYOUT_5POINT0_BACK,
CH_LAYOUT_5POINT1_BACK,
+ CH_LAYOUT_5POINT1|CH_BACK_CENTER,
+ CH_LAYOUT_7POINT1,
0
};
Modified: trunk/libavcodec/vorbis_dec.c
==============================================================================
--- trunk/libavcodec/vorbis_dec.c Fri Jan 29 07:38:00 2010 (r21526)
+++ trunk/libavcodec/vorbis_dec.c Fri Jan 29 14:51:25 2010 (r21527)
@@ -984,7 +984,7 @@ static av_cold int vorbis_decode_init(AV
return -1;
}
- if (vc->audio_channels > 6)
+ if (vc->audio_channels > 8)
avccontext->channel_layout = 0;
else
avccontext->channel_layout = ff_vorbis_channel_layouts[vc->audio_channels - 1];
@@ -1616,7 +1616,7 @@ static int vorbis_decode_frame(AVCodecCo
AV_DEBUG("parsed %d bytes %d bits, returned %d samples (*ch*bits) \n", get_bits_count(gb)/8, get_bits_count(gb)%8, len);
- if (vc->audio_channels > 6) {
+ if (vc->audio_channels > 8) {
for (i = 0; i < vc->audio_channels; i++)
channel_ptrs[i] = vc->channel_floors + i * len;
} else {
More information about the ffmpeg-cvslog
mailing list