OSDN Git Service

Implemented audio and subtitle selection
authortiter <titer@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Mon, 17 Apr 2006 19:34:42 +0000 (19:34 +0000)
committertiter <titer@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Mon, 17 Apr 2006 19:34:42 +0000 (19:34 +0000)
git-svn-id: svn://localhost/HandBrake/trunk@62 b64f7644-9d1e-0410-96f1-a4d463321fa5

Jamfile
libhb/common.h
libhb/dvd.c
macosx/English.lproj/Express.nib/classes.nib
macosx/English.lproj/Express.nib/info.nib
macosx/English.lproj/Express.nib/keyedobjects.nib
macosx/ExpressController.h
macosx/ExpressController.m

diff --git a/Jamfile b/Jamfile
index fb1229a..090798e 100644 (file)
--- a/Jamfile
+++ b/Jamfile
@@ -49,7 +49,12 @@ if $(OS) = MACOSX
               macosx/English.lproj/InfoPlist.strings
               macosx/English.lproj/MainMenu.nib/classes.nib
               macosx/English.lproj/MainMenu.nib/info.nib
-              macosx/English.lproj/MainMenu.nib/keyedobjects.nib ;
+              macosx/English.lproj/MainMenu.nib/keyedobjects.nib
+              macosx/ExpressController.h macosx/ExpressController.m
+              macosx/English.lproj/Express.nib/classes.nib
+              macosx/English.lproj/Express.nib/info.nib
+              macosx/English.lproj/Express.nib/keyedobjects.nib ;
+              
     OSXApp HandBrake.app : $(OSX_SRC) $(HB_LIBS) ;
     
     # Package
index a0c22ff..f5af73c 100644 (file)
@@ -189,6 +189,7 @@ struct hb_audio_s
 {
     int  id;
     char lang[1024];
+    char lang_simple[1024];
     int  codec;
     int  rate;
     int  bitrate;
index 54b5e5e..f0cc521 100644 (file)
@@ -247,6 +247,8 @@ hb_title_t * hb_dvd_title_scan( hb_dvd_t * d, int t )
             lang_for_code( vts->vtsi_mat->vts_audio_attr[i].lang_code ),
             audio->codec == HB_ACODEC_AC3 ? "AC3" : ( audio->codec ==
                 HB_ACODEC_MPGA ? "MPEG" : "LPCM" ) );
+        snprintf( audio->lang_simple, sizeof( audio->lang_simple ), "%s",
+                  lang_for_code( vts->vtsi_mat->vts_audio_attr[i].lang_code ) );
 
         hb_log( "scan: id=%x, lang=%s", audio->id,
                 audio->lang );
index 5498cdf..6fd9650 100644 (file)
             LANGUAGE = ObjC; 
             OUTLETS = {
                 fConvertAspectPopUp = NSPopUpButton; 
+                fConvertAudioPopUp = NSPopUpButton; 
                 fConvertFolderPopUp = NSPopUpButton; 
                 fConvertFormatPopUp = NSPopUpButton; 
                 fConvertIndicator = NSProgressIndicator; 
                 fConvertInfoString = NSTextField; 
+                fConvertSubtitlePopUp = NSPopUpButton; 
                 fConvertTableView = NSTableView; 
                 fConvertView = NSView; 
                 fEmptyView = NSView; 
index ae8fc64..078c0be 100644 (file)
@@ -18,6 +18,6 @@
        <key>IBFramework Version</key>
        <string>443.0</string>
        <key>IBSystem Version</key>
-       <string>8G1454</string>
+       <string>8I1119</string>
 </dict>
 </plist>
index 960c3e0..59442d0 100644 (file)
Binary files a/macosx/English.lproj/Express.nib/keyedobjects.nib and b/macosx/English.lproj/Express.nib/keyedobjects.nib differ
index 303651b..9a2f407 100644 (file)
@@ -29,6 +29,8 @@
     IBOutlet NSPopUpButton       * fConvertFolderPopUp;
     IBOutlet NSPopUpButton       * fConvertFormatPopUp;
     IBOutlet NSPopUpButton       * fConvertAspectPopUp;
+    IBOutlet NSPopUpButton       * fConvertAudioPopUp;
+    IBOutlet NSPopUpButton       * fConvertSubtitlePopUp;
     IBOutlet NSTextField         * fConvertInfoString;
     IBOutlet NSProgressIndicator * fConvertIndicator;
     NSMutableArray               * fConvertCheckArray;
index 2ffddf5..f496acc 100644 (file)
 
 - (void) convertGo: (id) sender
 {
-    int i;
+    int i, j;
 
     for( i = 0; i < hb_list_count( fList ); i++ )
     {
         hb_set_size( job, aspect, pixels );
 
         job->vquality = -1.0;
-        job->file     = strdup( [[NSString stringWithFormat:
+
+        const char * lang;
+
+        /* Audio selection */
+        hb_audio_t * audio;
+        lang = [[fConvertAudioPopUp titleOfSelectedItem] UTF8String];
+        job->audios[0] = -1;
+        for( j = 0; j < hb_list_count( title->list_audio ); j++ )
+        {
+            /* Choose the first track that matches the language */
+            audio = hb_list_item( title->list_audio, j );
+            if( !strcmp( lang, audio->lang_simple ) )
+            {
+                job->audios[0] = j;
+                break;
+            }
+        }
+        if( job->audios[0] == -1 )
+        {
+            /* If the language isn't available in this title, choose
+               the first track */
+            job->audios[0] = 0;
+        }
+        job->audios[1] = -1;
+
+        /* Subtitle selection */
+        hb_subtitle_t * subtitle;
+        lang = [[fConvertSubtitlePopUp titleOfSelectedItem] UTF8String];
+        job->subtitle = -1;
+        for( j = 0; j < hb_list_count( title->list_subtitle ); j++ )
+        {
+            /* Choose the first track that matches the language */
+            subtitle = hb_list_item( title->list_subtitle, j );
+            if( !strcmp( lang, subtitle->lang ) )
+            {
+                job->subtitle = j;
+                break;
+            }
+        }
+        
+        job->file = strdup( [[NSString stringWithFormat:
             @"%@/%p - Title %d.mp4", fConvertFolderString, self,
             title->index] UTF8String] );
         hb_add( fHandle, job );
 
 - (void) convertShow
 {
-    int i;
+    int i, j;
 
     fConvertCheckArray = [[NSMutableArray alloc] initWithCapacity:
         hb_list_count( fList )];
+    [fConvertAudioPopUp removeAllItems];
+    [fConvertSubtitlePopUp removeAllItems];
+    [fConvertSubtitlePopUp addItemWithTitle: @"None"];
     for( i = 0; i < hb_list_count( fList ); i++ )
     {
         /* Default is to convert titles longer than 30 minutes. */
         hb_title_t * title = hb_list_item( fList, i );
         [fConvertCheckArray addObject: [NSNumber numberWithBool:
             ( 60 * title->hours + title->minutes > 30 )]];
+
+        /* Update audio popup */
+        hb_audio_t * audio;
+        for( j = 0; j < hb_list_count( title->list_audio ); j++ )
+        {
+            audio = hb_list_item( title->list_audio, j );
+            [fConvertAudioPopUp addItemWithTitle:
+                [NSString stringWithUTF8String: audio->lang_simple]];
+        }
+
+        /* Update subtitle popup */
+        hb_subtitle_t * subtitle;
+        for( j = 0; j < hb_list_count( title->list_subtitle ); j++ )
+        {
+            subtitle = hb_list_item( title->list_subtitle, j );
+            [fConvertSubtitlePopUp addItemWithTitle:
+                [NSString stringWithUTF8String: subtitle->lang]];
+        }
     }
     [fConvertTableView reloadData];