pv->pts = in->start;
}
}
+ else
+ {
+ // bad size, must have lost sync
+ // force re-sync
+ if ( pv->buf != NULL )
+ hb_buffer_close( &pv->buf );
+ pv->size_sub = 0;
+ }
+
}
*buf_out = NULL;
void decsubClose( hb_work_object_t * w )
{
+ hb_work_private_t * pv = w->private_data;
+
+ if ( pv->buf )
+ hb_buffer_close( &pv->buf );
free( w->private_data );
}
/* Get infos about the subtitle */
ParseControls( w );
- if( job->indepth_scan || ( w->subtitle->force && pv->pts_forced == 0 ) )
+ if( job->indepth_scan || ( w->subtitle->config.force && pv->pts_forced == 0 ) )
{
/*
* Don't encode subtitles when doing a scan.
* When forcing subtitles, ignore all those that don't
* have the forced flag set.
*/
+ hb_buffer_close( &pv->buf );
return NULL;
}
- if (w->subtitle->dest == PASSTHRUSUB)
+ if (w->subtitle->config.dest == PASSTHRUSUB)
{
pv->buf->start = pv->pts_start;
pv->buf->stop = pv->pts_stop;
- return pv->buf;
+ buf = pv->buf;
+ pv->buf = NULL;
+ return buf;
}
/* Do the actual decoding now */