rendered paste bodyIndex: work.c===================================================================--- work.c (revision 1546)+++ work.c (working copy)@@ -297,9 +297,12 @@ final_w = w; } - /* Video encoder */- switch( job->vcodec )+ if( !job->indepth_scan ) {++ /* Video encoder */+ switch( job->vcodec )+ { case HB_VCODEC_FFMPEG: hb_log( " + encoder FFmpeg" ); w = hb_get_work( WORK_ENCAVCODEC );@@ -318,14 +321,13 @@ hb_log( " + encoder Theora" ); w = hb_get_work( WORK_ENCTHEORA ); break;- }- w->fifo_in = job->fifo_render;- w->fifo_out = job->fifo_mpeg4;- w->config = &job->config;+ }+ w->fifo_in = job->fifo_render;+ w->fifo_out = job->fifo_mpeg4;+ w->config = &job->config; - hb_list_add( job->list_work, w );- if ( !job->indepth_scan )- {+ hb_list_add( job->list_work, w );+ /* * if we're not doing a subtitle scan the last thread in the * processing pipeline is the encoder - remember it so we can@@ -386,6 +388,8 @@ } } + if( !job->indepth_scan )+ { /* if we are doing passthru, and the input codec is not the same as the output * codec, then remove this audio from the job */ /* otherwise, Bad Things will happen */@@ -628,6 +632,8 @@ } } + }+ /* Init read & write threads */ job->reader = hb_reader_init( job ); @@ -642,7 +648,12 @@ w = hb_list_item( job->list_work, i ); w->done = &job->done; w->thread_sleep_interval = 10;- w->init( w, job );+ if( w->init( w, job ) )+ {+ hb_error( "Failure to initialise thread '%s'", w->name );+ *job->die = 1;+ goto cleanup;+ } w->thread = hb_thread_init( w->name, work_loop, w, HB_LOW_PRIORITY ); }