All pastes #970216 Raw Edit

more codecs than tracks

public diff v1 · immutable
·published 2008-04-03 21:57 UTC
rendered paste body
Index: test/test.c===================================================================--- test/test.c	(revision 1372)+++ test/test.c	(working copy)@@ -465,23 +465,6 @@                  if (!strcmp(preset_name, "AppleTV"))                 {-                    hb_audio_config_t * first_audio;-                    if (hb_list_count(audios) == 0)-                    {-                        first_audio = calloc(1, sizeof(*first_audio));-                        hb_audio_config_init(first_audio);-                        first_audio->in.track = first_audio->out.track = 0;-                        hb_list_add(audios, first_audio);-                    }-                    if( hb_list_count( audios ) <= 1 )-                    {-                        first_audio = hb_list_item( audios, 0 );-                        audio = calloc(1, sizeof(*audio));-                        hb_audio_config_init(audio);-                        audio->in.track = first_audio->in.track;-                        audio->out.track = 1;-                        hb_list_add(audios, audio);-                    }                     if (!acodecs)                     {                         acodecs = strdup("faac,ac3");@@ -912,11 +895,27 @@                         fprintf(stderr, "Invalid codec %s, using default for container.\n", token);                         acodec = default_acodec;                     }-                    audio = hb_list_audio_config_item(job->list_audio, i);-                    audio->out.codec = acodec;-                    if( (++i) >= num_audio_tracks )-                        break;  /* We have more inputs than audio tracks, oops */+                    if( i < num_audio_tracks )+                    {+                        audio = hb_list_audio_config_item(job->list_audio, i);                        +                        audio->out.codec = acodec;+                    }+                    if( i >= num_audio_tracks )+                    {+                        int last_track = hb_list_count(job->list_audio);+                        fprintf(stderr, "More audio codecs than audio tracks, copying track %i and using encoder %s\n",+                            last_track, token);+                        hb_audio_config_t * last_audio = hb_list_audio_config_item( job->list_audio, last_track - 1 );+                        audio = calloc(1, sizeof(*audio));+                        hb_audio_config_init(audio);+                        audio->in.track = last_audio->in.track;+                        audio->out.track = num_audio_tracks++;+                        audio->out.codec = acodec;+                        hb_audio_add(job, audio);+                        free( audio );+                    }                     token = strtok(NULL, ",");+                    i++;                 }             }             if( i < num_audio_tracks )