summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libhb/render.c5
-rw-r--r--libhb/work.c8
2 files changed, 6 insertions, 7 deletions
diff --git a/libhb/render.c b/libhb/render.c
index 0fc5816a9..1989199fb 100644
--- a/libhb/render.c
+++ b/libhb/render.c
@@ -208,13 +208,14 @@ int renderWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
hb_buffer_t * in = *buf_in, * buf_tmp_in = *buf_in;
hb_buffer_t * ivtc_buffer = NULL;
- if(!in->data)
+ if( in->size <= 0 )
{
/* If the input buffer is end of stream, send out an empty one
* to the next stage as well. Note that this will result in us
* losing the current contents of the delay queue.
*/
- *buf_out = job->indepth_scan? NULL : hb_buffer_init(0);
+ *buf_out = in;
+ *buf_in = NULL;
return HB_WORK_DONE;
}
diff --git a/libhb/work.c b/libhb/work.c
index 243b6b2e7..f7d050b6a 100644
--- a/libhb/work.c
+++ b/libhb/work.c
@@ -659,7 +659,7 @@ static void do_job( hb_job_t * job, int cpu_count )
// The muxer requires track information that's set up by the encoder
// init routines so we have to init the muxer last.
- job->muxer = hb_muxer_init( job );
+ job->muxer = job->indepth_scan? NULL : hb_muxer_init( job );
done = 0;
w = hb_list_item( job->list_work, 0 );
@@ -667,13 +667,11 @@ static void do_job( hb_job_t * job, int cpu_count )
w->init( w, job );
while( !*job->die )
{
- if( ( w->status = w->work( w, NULL, NULL ) ) == HB_WORK_DONE )
+ if ( !done && ( w->status = w->work( w, NULL, NULL ) ) == HB_WORK_DONE )
{
done = 1;
}
- if( done &&
- final_w->status == HB_WORK_DONE &&
- !hb_fifo_size( job->fifo_mpeg4 ) )
+ if( done && final_w->status == HB_WORK_DONE )
{
break;
}