+ char * token;
+ int i, pos;
+
+ pos = 0;
+ for ( i = 0; subtracks[i] != NULL; i++ )
+ {
+ pos++;
+ token = subtracks[i];
+ if( strcasecmp(token, "scan" ) == 0 )
+ {
+ int burn = 0, force = 0, def = 0;
+
+ if ( subburn != NULL )
+ {
+ burn = ( pos == 1 && subburn[0] == 0 ) ||
+ ( strcmp( "scan", subburn ) == 0 );
+ }
+ if ( subdefault != NULL )
+ {
+ def = ( pos == 1 && subdefault[0] == 0 ) ||
+ ( strcmp( "scan", subdefault ) == 0 );
+ }
+ force = test_sub_list( subforce, "scan", pos );
+
+ if ( !burn && mux == HB_MUX_MKV )
+ {
+ job->select_subtitle_config.dest = PASSTHRUSUB;
+ }
+ else if ( burn )
+ {
+ if ( sub_burned )
+ {
+ continue;
+ }
+ sub_burned = 1;
+ }
+ if ( !( !burn && mux == HB_MUX_MP4 ) )
+ {
+ job->select_subtitle_config.force = force;
+ job->select_subtitle_config.default_track = def;
+ subtitle_scan = 1;
+ } else {
+ fprintf( stderr, "Warning: Subtitle Scan for MP4 requires the '--subtitle-burn' option to be selected\n");
+ }
+ }
+ else
+ {
+ hb_subtitle_t * subtitle;
+ hb_subtitle_config_t sub_config;
+ int track;
+ int burn = 0, force = 0, def = 0;
+
+ track = atoi(token) - 1;
+ subtitle = hb_list_item(title->list_subtitle, track);
+ if( subtitle == NULL )
+ {
+ fprintf( stderr, "Warning: Could not find subtitle track %d, skipped\n", track+1 );
+ continue;
+ }
+ sub_config = subtitle->config;
+
+ if ( subburn != NULL )
+ {
+ burn = ( pos == 1 && subburn[0] == 0 ) ||
+ ( strcmp( token, subburn ) == 0 );
+ }
+ if ( subdefault != NULL )
+ {
+ def = ( pos == 1 && subdefault[0] == 0 ) ||
+ ( strcmp( token, subdefault ) == 0 );
+ }
+
+ force = test_sub_list(subforce, token, pos);
+
+ if ( !burn && mux == HB_MUX_MKV &&
+ subtitle->format == PICTURESUB)
+ {
+ sub_config.dest = PASSTHRUSUB;
+ }
+ else if (!burn && mux == HB_MUX_MP4 &&
+ subtitle->format == PICTURESUB)
+ {
+ // Skip any non-burned vobsubs when output is mp4
+ fprintf( stderr, "Warning: Skipping subtitle track %d, can't pass-through VOBSUBs in an MP4 container,\nadd '--subtitle-burn %d' to the command line\n", track+1, track+1 );
+ continue;
+ }
+ else if ( burn && subtitle->format == PICTURESUB )
+ {
+ // Only allow one subtitle to be burned into video
+ if ( sub_burned )
+ {
+ fprintf( stderr, "Warning: Skipping subtitle track %d, can't have more than one track burnt in\n", track+1 );
+ continue;
+ }
+ sub_burned = 1;
+ }
+ sub_config.force = force;
+ sub_config.default_track = def;
+ hb_subtitle_add( job, &sub_config, track );