X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fencvorbis.c;h=f483a097f8bfcfd96351edfaa9741b36ce180da1;hb=37bbf6c1646ca3b539d1b6f1b5f2a1bb779042a2;hp=47a6077a0cc8d14d92159ac073d5f1c23a1da015;hpb=1d9c122201261c9f3098a417ed140106e0d6ba0d;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/encvorbis.c b/libhb/encvorbis.c index 47a6077a..f483a097 100644 --- a/libhb/encvorbis.c +++ b/libhb/encvorbis.c @@ -68,6 +68,12 @@ int encvorbisInit( hb_work_object_t * w, hb_job_t * job ) } /* 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 ) ) @@ -123,12 +129,25 @@ int encvorbisInit( hb_work_object_t * w, hb_job_t * job ) 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);