]> granicus.if.org Git - handbrake/commitdiff
fix a crash in HandBrakeCLI
authorjstebbins <jstebbins.hb@gmail.com>
Tue, 27 Sep 2011 15:58:35 +0000 (15:58 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Tue, 27 Sep 2011 15:58:35 +0000 (15:58 +0000)
When the audio tracks are omitted (no -a), the cli uses the first source
audio track and replicates it for each audio output codec.  The way it
knows what to replicate is to look at audio->in.track for the last audio
that was added to the job.  This track number was being copied from the
title's in.track. But title track numbers are not guaranteed to be
sequential (e.g. scan drops tracks it can't decode).  So when adding an
audio to a job, set in.track to the value of in.track that is passed in
the audio_config structure passed to hb_audio_add.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4260 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/common.c

index 51a5139fe70c99141638b038aabbc89a673b4707..01884f02bd8cc049e682657ece27b4d8db4788f6 100644 (file)
@@ -1358,6 +1358,12 @@ int hb_audio_add(const hb_job_t * job, const hb_audio_config_t * audiocfg)
         return 0;
     }
 
+    /* Set the job's "in track" to the value passed in audiocfg.
+     * HandBrakeCLI assumes this value is preserved in the jobs
+     * audio list, but in.track in the title's audio list is not 
+     * required to be the same. */
+    audio->config.in.track = audiocfg->in.track;
+
     /* Really shouldn't ignore the passed out track, but there is currently no
      * way to handle duplicates or out-of-order track numbers. */
     audio->config.out.track = hb_list_count(job->list_audio) + 1;