hb_log("job configuration:");
hb_log( " * source");
- hb_log( " + %s", title->dvd );
+ hb_log( " + %s", title->path );
hb_log( " + title %d, chapter(s) %d to %d", title->index,
job->chapter_start, job->chapter_end );
if( job->anamorphic.mode )
{
hb_log( " + %s anamorphic", job->anamorphic.mode == 1 ? "strict" : job->anamorphic.mode == 2? "loose" : "custom" );
+ if( job->anamorphic.mode == 3 && job->anamorphic.keep_display_aspect )
+ {
+ hb_log( " + keeping source display aspect ratio");
+ }
+ if( job->anamorphic.modulus != 16 )
+ {
+ hb_log( " + modulus: %i", job->anamorphic.modulus );
+ }
hb_log( " + storage dimensions: %d * %d -> %d * %d, crop %d/%d/%d/%d",
title->width, title->height, job->width, job->height,
job->crop[0], job->crop[1], job->crop[2], job->crop[3] );
+ if( job->anamorphic.itu_par )
+ {
+ hb_log( " + using ITU pixel aspect ratio values");
+ }
hb_log( " + pixel aspect ratio: %i / %i", job->anamorphic.par_width, job->anamorphic.par_height );
hb_log( " + display dimensions: %.0f * %i",
(float)( job->width * job->anamorphic.par_width / job->anamorphic.par_height ), job->height );
}
else if( job->vquality > 1 )
{
- hb_log( " + quality: %.2f %s", job->vquality, job->crf && job->vcodec == HB_VCODEC_X264 ? "(RF)" : "(QP)" );
+ hb_log( " + quality: %.2f %s", job->vquality, job->vcodec == HB_VCODEC_X264 ? "(RF)" : "(QP)" );
}
else
{
hb_interjob_t * interjob = hb_interjob_get( job->h );
- if( ( job->sequence_id & 0xFFFFFF ) != ( interjob->last_job ) )
+ if( ( job->sequence_id & 0xFFFFFF ) != ( interjob->last_job & 0xFFFFFF) )
return; // Interjob information is for a different encode.
/* Cache the original framerate before altering it. */
interjob->vrate_base = job->vrate_base;
real_frames = interjob->frame_count - interjob->render_dropped;
- job->vrate = job->vrate_base * ( real_frames / ( interjob->total_time / 90000 ) );
+
+ job->vrate = job->vrate_base * ( (double)real_frames * 90000 / interjob->total_time );
}
hb_title_t * title;
int i, j;
hb_work_object_t * w;
+ hb_interjob_t * interjob;
hb_audio_t * audio;
hb_subtitle_t * subtitle;
unsigned int subtitle_hit = 0;
title = job->title;
+ interjob = hb_interjob_get( job->h );
if( job->pass == 2 && !job->cfr )
{
/*
* Look for the scanned subtitle in the existing subtitle list
*/
- if ( !job->indepth_scan && job->select_subtitle && *(job->select_subtitle) )
+ if ( !job->indepth_scan && interjob->select_subtitle &&
+ ( job->pass == 0 || job->pass == 2 ) )
{
/*
* Disable forced subtitles if we didn't find any in the scan
*
* select_subtitle implies that we did a scan.
*/
- if( (*job->select_subtitle)->config.force &&
- (*job->select_subtitle)->forced_hits == 0 )
+ if( interjob->select_subtitle->config.force &&
+ interjob->select_subtitle->forced_hits == 0 )
{
- (*job->select_subtitle)->config.force = 0;
+ interjob->select_subtitle->config.force = 0;
}
for( i=0; i < hb_list_count(title->list_subtitle); i++ )
{
*
* select_subtitle implies that we did a scan.
*/
- if( (*job->select_subtitle)->id == subtitle->id )
+ if( interjob->select_subtitle->id == subtitle->id )
{
- *subtitle = *(*job->select_subtitle);
- free( *job->select_subtitle );
- free( job->select_subtitle );
- job->select_subtitle = NULL;
+ *subtitle = *(interjob->select_subtitle);
+ free( interjob->select_subtitle );
+ interjob->select_subtitle = NULL;
}
}
}
- if( job->select_subtitle )
+ if( interjob->select_subtitle )
{
/*
* Its not in the existing list
* add the subtitle that we found on the first pass for use in this
* pass.
*/
- hb_list_add( title->list_subtitle, *job->select_subtitle );
- free( job->select_subtitle );
- job->select_subtitle = NULL;
+ hb_list_add( title->list_subtitle, interjob->select_subtitle );
+ interjob->select_subtitle = NULL;
}
}
- else if ( !job->indepth_scan && job->select_subtitle )
- {
- free( job->select_subtitle );
- job->select_subtitle = NULL;
- }
for( i=0; i < hb_list_count(title->list_subtitle); i++ )
subtitle->fifo_sync = hb_fifo_init( FIFO_CPU_MULT * cpu_count );
subtitle->fifo_out = hb_fifo_init( FIFO_CPU_MULT * cpu_count );
- if( (!job->indepth_scan || subtitle->config.force) &&
+ if( (!job->indepth_scan || job->select_subtitle_config.force) &&
subtitle->source == VOBSUB ) {
/*
* Don't add threads for subtitles when we are scanning, unless
hb_list_add( job->list_work, w );
}
+ if( !job->indepth_scan && subtitle->source == SRTSUB )
+ {
+ w = hb_get_work( WORK_DECSRTSUB );
+ w->fifo_in = subtitle->fifo_in;
+ w->fifo_out = subtitle->fifo_raw;
+ w->subtitle = subtitle;
+ hb_list_add( job->list_work, w );
+ }
+
if( !job->indepth_scan &&
subtitle->format == PICTURESUB
&& subtitle->config.dest == PASSTHRUSUB )
}
}
- if( job->native_language ) {
+
+ if( subtitle_forced_id )
+ {
/*
- * We still have a native_language, so the audio and subtitles are
- * different, so in this case it is a foreign film and we want to
- * select the subtitle with the highest hits in our language.
+ * If there are any subtitle streams with forced subtitles
+ * then select it in preference to the lowest.
*/
- subtitle_hit = subtitle_highest_id;
- hb_log( "Found a native-language subtitle id 0x%x", subtitle_hit);
- } else {
- if( subtitle_forced_id )
- {
- /*
- * If there are any subtitle streams with forced subtitles
- * then select it in preference to the lowest.
- */
- subtitle_hit = subtitle_forced_id;
- hb_log("Found a subtitle candidate id 0x%x (contains forced subs)",
- subtitle_hit);
- } else if( subtitle_lowest < subtitle_highest )
+ subtitle_hit = subtitle_forced_id;
+ hb_log("Found a subtitle candidate id 0x%x (contains forced subs)",
+ subtitle_hit);
+ } else if( subtitle_lowest < subtitle_highest )
+ {
+ /*
+ * OK we have more than one, and the lowest is lower,
+ * but how much lower to qualify for turning it on by
+ * default?
+ *
+ * Let's say 10% as a default.
+ */
+ if( subtitle_lowest < ( subtitle_highest * 0.1 ) )
{
- /*
- * OK we have more than one, and the lowest is lower,
- * but how much lower to qualify for turning it on by
- * default?
- *
- * Let's say 10% as a default.
- */
- if( subtitle_lowest < ( subtitle_highest * 0.1 ) )
- {
- subtitle_hit = subtitle_lowest_id;
- hb_log( "Found a subtitle candidate id 0x%x",
- subtitle_hit );
- } else {
- hb_log( "No candidate subtitle detected during subtitle-scan");
- }
+ subtitle_hit = subtitle_lowest_id;
+ hb_log( "Found a subtitle candidate id 0x%x",
+ subtitle_hit );
+ } else {
+ hb_log( "No candidate subtitle detected during subtitle-scan");
}
}
}
- if( job->select_subtitle )
+ if( job->indepth_scan )
{
- if( job->indepth_scan )
+ for( i=0; i < hb_list_count( title->list_subtitle ); i++ )
{
- for( i=0; i < hb_list_count( title->list_subtitle ); i++ )
+ subtitle = hb_list_item( title->list_subtitle, i );
+ if( subtitle->id == subtitle_hit )
{
- subtitle = hb_list_item( title->list_subtitle, i );
- if( subtitle->id == subtitle_hit )
- {
- subtitle->config = job->select_subtitle_config;
- hb_list_rem( title->list_subtitle, subtitle );
- *job->select_subtitle = subtitle;
- break;
- }
+ subtitle->config = job->select_subtitle_config;
+ hb_list_rem( title->list_subtitle, subtitle );
+ interjob->select_subtitle = subtitle;
+ break;
}
}
}