if (buf != NULL)
{
hb_list_rem(stream->in_queue, buf);
+ signalBuffer(stream);
if (!stream->first_frame)
{
if (buf->s.start >= 0)
fifo_push(stream->fifo_out, hb_buffer_eof_init());
fifo_push(stream->fifo_in, hb_buffer_eof_init());
stream->done = 1;
+ signalBuffer(stream);
}
}
{
buf = hb_list_item(out_stream->in_queue, 0);
hb_list_rem(out_stream->in_queue, buf);
+ signalBuffer(out_stream);
hb_buffer_close(&buf);
continue;
}
out_stream->done = 1;
fifo_push(out_stream->fifo_out, hb_buffer_eof_init());
terminateSubtitleStreams(common);
+ signalBuffer(out_stream);
return;
}
if (out_stream->type == SYNC_TYPE_VIDEO &&
out_stream->done = 1;
fifo_push(out_stream->fifo_out, hb_buffer_eof_init());
terminateSubtitleStreams(common);
+ signalBuffer(out_stream);
return;
}
{
hb_lock(stream->common->mutex);
- while (hb_list_count(stream->in_queue) > stream->max_len)
+ while (hb_list_count(stream->in_queue) > stream->max_len &&
+ !stream->done && !stream->common->job->done &&
+ !*stream->common->job->die)
{
if (!stream->common->start_found)
{