};
// VOBSUB
-static int vobsub_init( hb_filter_object_t * filter, hb_filter_init_t * init );
+static int vobsub_post_init( hb_filter_object_t * filter, hb_job_t * job );
static int vobsub_work( hb_filter_object_t * filter,
hb_buffer_t ** buf_in,
// SSA
-static int ssa_init( hb_filter_object_t * filter, hb_filter_init_t * init );
+static int ssa_post_init( hb_filter_object_t * filter, hb_job_t * job );
static int ssa_work( hb_filter_object_t * filter,
hb_buffer_t ** buf_in,
// SRT
-static int textsub_init( hb_filter_object_t * filter, hb_filter_init_t * init );
+static int textsub_post_init( hb_filter_object_t * filter, hb_job_t * job );
static int textsub_work( hb_filter_object_t * filter,
hb_buffer_t ** buf_in,
// PGS
-static int pgssub_init ( hb_filter_object_t * filter, hb_filter_init_t * init );
+static int pgssub_post_init( hb_filter_object_t * filter, hb_job_t * job );
static int pgssub_work ( hb_filter_object_t * filter,
hb_buffer_t ** buf_in,
}
}
-static int vobsub_init( hb_filter_object_t * filter,
- hb_filter_init_t * init )
+static int vobsub_post_init( hb_filter_object_t * filter, hb_job_t * job )
{
hb_filter_private_t * pv = filter->private_data;
}
}
-static int ssa_init( hb_filter_object_t * filter,
- hb_filter_init_t * init )
+static int ssa_post_init( hb_filter_object_t * filter, hb_job_t * job )
{
hb_filter_private_t * pv = filter->private_data;
ass_set_message_cb( pv->ssa, ssa_log, NULL );
// Load embedded fonts
- hb_list_t * list_attachment = init->job->list_attachment;
+ hb_list_t * list_attachment = job->list_attachment;
int i;
for ( i = 0; i < hb_list_count(list_attachment); i++ )
{
return 1;
}
- int width = init->geometry.width - ( pv->crop[2] + pv->crop[3] );
- int height = init->geometry.height - ( pv->crop[0] + pv->crop[1] );
- ass_set_frame_size( pv->renderer, width, height);
+ ass_set_frame_size( pv->renderer, job->width, job->height);
- double par = (double)init->geometry.par.num / init->geometry.par.den;
+ double par = (double)job->par.num / job->par.den;
ass_set_aspect_ratio( pv->renderer, 1, par );
return 0;
if (!pv->script_initialized)
{
// NOTE: The codec extradata is expected to be in MKV format
- // I would like to initialize this in ssa_init, but when we are
+ // I would like to initialize this in ssa_post_init, but when we are
// transcoding text subtitles to SSA, the extradata does not
// get initialized until the decoder is initialized. Since
// decoder initialization happens after filter initialization,
return HB_FILTER_OK;
}
-static int textsub_init( hb_filter_object_t * filter,
- hb_filter_init_t * init )
+static int textsub_post_init( hb_filter_object_t * filter, hb_job_t * job )
{
- hb_filter_private_t * pv = filter->private_data;
-
- int width = init->geometry.width - pv->crop[2] - pv->crop[3];
- int height = init->geometry.height - pv->crop[0] - pv->crop[1];
-
// Text subtitles for which we create a dummy ASS header need
// to have the header rewritten with the correct dimensions.
- hb_subtitle_add_ssa_header(filter->subtitle, width, height);
- return ssa_init(filter, init);
+ hb_subtitle_add_ssa_header(filter->subtitle, job->width, job->height);
+ return ssa_post_init(filter, job);
}
static void textsub_close( hb_filter_object_t * filter )
}
}
-static int pgssub_init( hb_filter_object_t * filter,
- hb_filter_init_t * init )
+static int pgssub_post_init( hb_filter_object_t * filter, hb_job_t * job )
{
hb_filter_private_t * pv = filter->private_data;
hb_log("rendersub: no subtitle marked for burn");
return 1;
}
+ return 0;
+}
+
+static int hb_rendersub_post_init( hb_filter_object_t * filter, hb_job_t *job )
+{
+ hb_filter_private_t * pv = filter->private_data;
+
+ if (pv->crop[0] == -1)
+ pv->crop[0] = job->crop[0];
+ if (pv->crop[1] == -1)
+ pv->crop[1] = job->crop[1];
+ if (pv->crop[2] == -1)
+ pv->crop[2] = job->crop[2];
+ if (pv->crop[3] == -1)
+ pv->crop[3] = job->crop[3];
switch( pv->type )
{
case VOBSUB:
{
- return vobsub_init( filter, init );
+ return vobsub_post_init( filter, job );
} break;
case SSASUB:
{
- return ssa_init( filter, init );
+ return ssa_post_init( filter, job );
} break;
case SRTSUB:
case UTF8SUB:
case TX3GSUB:
{
- return textsub_init( filter, init );
+ return textsub_post_init( filter, job );
} break;
case PGSSUB:
{
- return pgssub_init( filter, init );
+ return pgssub_post_init( filter, job );
} break;
default:
return 1;
} break;
}
-}
-
-static int hb_rendersub_post_init( hb_filter_object_t * filter, hb_job_t *job )
-{
- hb_filter_private_t * pv = filter->private_data;
-
- if (pv->crop[0] == -1)
- pv->crop[0] = job->crop[0];
- if (pv->crop[1] == -1)
- pv->crop[1] = job->crop[1];
- if (pv->crop[2] == -1)
- pv->crop[2] = job->crop[2];
- if (pv->crop[3] == -1)
- pv->crop[3] = job->crop[3];
-
return 0;
}