+ /* Create file, write headers */
+ if( mux->m )
+ {
+ mux->m->init( mux->m );
+ }
+ }
+
+ /* Initialize the work objects that will receive fifo data */
+
+ muxer = hb_get_work( WORK_MUX );
+ muxer->private_data = calloc( sizeof( hb_work_private_t ), 1 );
+ muxer->private_data->job = job;
+ muxer->private_data->mux = mux;
+ mux->ref++;
+ muxer->private_data->track = mux->ntracks;
+ muxer->fifo_in = job->fifo_mpeg4;
+ add_mux_track( mux, job->mux_data, 1 );
+ muxer->done = &muxer->private_data->mux->done;
+
+ for( i = 0; i < hb_list_count( title->list_audio ); i++ )
+ {
+ hb_audio_t *audio = hb_list_item( title->list_audio, i );
+
+ w = hb_get_work( WORK_MUX );
+ w->private_data = calloc( sizeof( hb_work_private_t ), 1 );
+ w->private_data->job = job;
+ w->private_data->mux = mux;
+ mux->ref++;
+ w->private_data->track = mux->ntracks;
+ w->fifo_in = audio->priv.fifo_out;
+ add_mux_track( mux, audio->priv.mux_data, 1 );
+ w->done = &job->done;
+ hb_list_add( job->list_work, w );
+ w->thread = hb_thread_init( w->name, mux_loop, w, HB_NORMAL_PRIORITY );