}
/* init */
+ for( i = 0; i < 3; i++ )
+ {
+ // Zero vorbis headers so that we don't crash in mk_laceXiph
+ // when vorbis_encode_setup_managed fails.
+ memset( w->config->vorbis.headers[i], 0, sizeof( ogg_packet ) );
+ }
vorbis_info_init( &pv->vi );
if( vorbis_encode_setup_managed( &pv->vi, pv->out_discrete_channels,
audio->config.out.samplerate, -1, 1000 * audio->config.out.bitrate, -1 ) )
pv->channel_map[0] = 0;
break;
case 6:
- pv->channel_map[0] = 0;
- pv->channel_map[1] = 2;
- pv->channel_map[2] = 1;
- pv->channel_map[3] = 4;
- pv->channel_map[4] = 5;
- pv->channel_map[5] = 3;
+ // Vorbis use the following channels map = L C R Ls Rs Lfe
+ if( audio->config.in.codec == HB_ACODEC_AC3 )
+ {
+ pv->channel_map[0] = 1;
+ pv->channel_map[1] = 2;
+ pv->channel_map[2] = 3;
+ pv->channel_map[3] = 4;
+ pv->channel_map[4] = 5;
+ pv->channel_map[5] = 0;
+ }
+ else
+ {
+ pv->channel_map[0] = 1;
+ pv->channel_map[1] = 0;
+ pv->channel_map[2] = 2;
+ pv->channel_map[3] = 3;
+ pv->channel_map[4] = 4;
+ pv->channel_map[5] = 5;
+ }
break;
default:
hb_log("encvorbis.c: Unable to correctly proccess %d channels, assuming stereo.", pv->out_discrete_channels);