OSDN Git Service

- Some DVB programs have a lot of streams (20 for BBC HD) so up max from 16 to 32
[handbrake-jp/handbrake-jp-git.git] / macosx / Controller.mm
index da04ca2..712622a 100644 (file)
@@ -37,6 +37,15 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
     {
         return nil;
     }
+
+    /* replace bundled app icon with one which is 32/64-bit savvy */
+#if defined( __LP64__ )
+    fApplicationIcon = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:@"HandBrake-64.icns"]];
+#else
+    fApplicationIcon = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:@"HandBrake.icns"]];
+#endif
+    if( fApplicationIcon != nil )
+        [NSApp setApplicationIconImage:fApplicationIcon];
     
     [HBPreferencesController registerUserDefaults];
     fHandle = NULL;
@@ -310,7 +319,8 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
        [fQueueController release];
     [fPreviewController release];
     [fPictureController release];
-    
+    [fApplicationIcon release];
+
        hb_close(&fHandle);
     hb_close(&fQueueEncodeLibhb);
 }
@@ -549,7 +559,6 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
  **********************************************************************/
 - (void) UpdateDockIcon: (float) progress
 {
-    NSImage * icon;
     NSData * tiff;
     NSBitmapImageRep * bmp;
     uint32_t * pen;
@@ -559,17 +568,14 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
     int row_start, row_end;
     int i, j;
 
-    /* Get application original icon */
-    icon = [NSImage imageNamed: @"NSApplicationIcon"];
-
     if( progress < 0.0 || progress > 1.0 )
     {
-        [NSApp setApplicationIconImage: icon];
+        [NSApp setApplicationIconImage: fApplicationIcon];
         return;
     }
 
     /* Get it in a raw bitmap form */
-    tiff = [icon TIFFRepresentationUsingCompression:
+    tiff = [fApplicationIcon TIFFRepresentationUsingCompression:
             NSTIFFCompressionNone factor: 1.0];
     bmp = [NSBitmapImageRep imageRepWithData: tiff];
     
@@ -618,7 +624,7 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
     /* Now update the dock icon */
     tiff = [bmp TIFFRepresentationUsingCompression:
             NSTIFFCompressionNone factor: 1.0];
-    icon = [[NSImage alloc] initWithData: tiff];
+    NSImage* icon = [[NSImage alloc] initWithData: tiff];
     [NSApp setApplicationIconImage: icon];
     [icon release];
 }
@@ -713,7 +719,6 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
        if( checkScanCount > currentScanCount )
        {
                currentScanCount = checkScanCount;
-        [self writeToActivityLog:"currentScanCount received from fQueueEncodeLibhb"];
        }
     
     //hb_state_t s;
@@ -753,8 +758,25 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
         case HB_STATE_WORKING:
         {
             NSMutableString * string;
+            NSString * pass_desc;
                        /* Update text field */
-                       string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: pass %d of %d, %.2f %%", @"" ), p.job_cur, p.job_count, 100.0 * p.progress];
+            if (p.job_cur == 1 && p.job_count > 1)
+            {
+                if ([[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SubtitleList"] && [[[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex]objectForKey:@"SubtitleList"] objectAtIndex:0] objectForKey:@"subtitleSourceTrackNum"] intValue] == 1)
+                {
+                    pass_desc = @"(subtitle scan)";   
+                }
+                else
+                {
+                    pass_desc = @"";
+                }
+            }
+            else
+            {
+                pass_desc = @"";
+            }
+            
+                       string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: pass %d %@ of %d, %.2f %%", @"" ), p.job_cur, pass_desc, p.job_count, 100.0 * p.progress];
             
                        if( p.seconds > -1 )
             {
@@ -1431,6 +1453,15 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
     }
 }
 
+- (IBAction)showAboutPanel:(id)sender
+{
+    NSMutableDictionary* d = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
+        fApplicationIcon, @"ApplicationIcon",
+        nil ];
+    [NSApp orderFrontStandardAboutPanelWithOptions:d];
+    [d release];
+}
+
 /* Here we open the title selection sheet where we can specify an exact title to be scanned */
 - (IBAction) showSourceTitleScanPanel: (id) sender
 {
@@ -1489,7 +1520,7 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
         path = [detector devicePath];
         [self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]];
         
-#ifdef __LP64__
+#if defined( __LP64__ )
         /* If we are 64 bit, we cannot read encrypted dvd's as vlc is 32 bit only */
         cancelScanDecrypt = 1;
         [self writeToActivityLog: "64 bit mode cannot read dvd's, scan cancelled"];
@@ -2836,12 +2867,6 @@ bool one_burned = FALSE;
          */
         if (subtitle > 0)
         {
-            hb_subtitle_t * subt;
-            hb_subtitle_config_t sub_config;
-            
-            subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
-            sub_config = subt->config;
-            
             /* if i is 0, then we are in the first item of the subtitles which we need to 
              * check for the "Foreign Audio Search" which would be subtitleSourceTrackNum of 1
              * bearing in mind that for all tracks subtitleSourceTrackNum of 0 is None.
@@ -2853,7 +2878,7 @@ bool one_burned = FALSE;
                 /* NOTE: Currently foreign language search is borked for preview.
                  * Commented out but left in for initial commit. */
                 
-                /*
+                
                 [self writeToActivityLog: "Foreign Language Search: %d", 1];
                 
                 job->indepth_scan = 1;
@@ -2863,12 +2888,16 @@ bool one_burned = FALSE;
                     {
                         job->select_subtitle_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
                     }
+                    else
+                    {
+                        job->select_subtitle_config.dest = hb_subtitle_config_s::RENDERSUB;
+                    }
                     
                     job->select_subtitle_config.force = force;
                     job->select_subtitle_config.default_track = def;
                     
                 }
-               */ 
+                
                 
             }
             else
@@ -2892,14 +2921,14 @@ bool one_burned = FALSE;
                 
                 /* We are setting a source subtitle so access the source subtitle info */  
                 hb_subtitle_t * subt;
-                hb_subtitle_config_t sub_config;
                 
                 subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
-                sub_config = subt->config;
                 
                 if (subt != NULL)
                 {
                     [self writeToActivityLog: "Setting Subtitle: %s", subt];
+
+                    hb_subtitle_config_t sub_config = subt->config;
                     
                     if (!burned && job->mux == HB_MUX_MKV && 
                         subt->format == hb_subtitle_s::PICTURESUB)
@@ -3359,12 +3388,6 @@ bool one_burned = FALSE;
          */
         if (subtitle > 0)
         {
-            hb_subtitle_t * subt;
-            hb_subtitle_config_t sub_config;
-            
-            subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
-            sub_config = subt->config;
-            
             /* if i is 0, then we are in the first item of the subtitles which we need to 
              * check for the "Foreign Audio Search" which would be subtitleSourceTrackNum of 1
              * bearing in mind that for all tracks subtitleSourceTrackNum of 0 is None.
@@ -3382,6 +3405,10 @@ bool one_burned = FALSE;
                     {
                         job->select_subtitle_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
                     }
+                    else
+                    {
+                        job->select_subtitle_config.dest = hb_subtitle_config_s::RENDERSUB;
+                    }
                     
                     job->select_subtitle_config.force = force;
                     job->select_subtitle_config.default_track = def;
@@ -3410,14 +3437,14 @@ bool one_burned = FALSE;
                 
                 /* We are setting a source subtitle so access the source subtitle info */  
                 hb_subtitle_t * subt;
-                hb_subtitle_config_t sub_config;
                 
                 subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
-                sub_config = subt->config;
                 
                 if (subt != NULL)
                 {
                     [self writeToActivityLog: "Setting Subtitle: %s", subt];
+
+                    hb_subtitle_config_t sub_config = subt->config;
                     
                     if (!burned && job->mux == HB_MUX_MKV && 
                         subt->format == hb_subtitle_s::PICTURESUB)
@@ -6110,7 +6137,16 @@ return YES;
         }
         else
         {
-            [fVidQualitySlider setFloatValue:([fVidQualitySlider maxValue] - [fVidQualitySlider minValue]) - [[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]];
+            /* Since theora's qp value goes up from left to right, we can just set the slider float value */
+            if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_THEORA)
+            {
+                [fVidQualitySlider setFloatValue:[[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]];
+            }
+            else
+            {
+                /* since ffmpeg and x264 use an "inverted" slider (lower qp/rf values indicate a higher quality) we invert the value on the slider */
+                [fVidQualitySlider setFloatValue:([fVidQualitySlider maxValue] + [fVidQualitySlider minValue]) - [[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]];
+            }
         }
         
         [self videoMatrixChanged:nil];
@@ -6883,11 +6919,12 @@ return YES;
         [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
 
         
-        
+        /* Temporarily remove subtitles from creating a new preset as it has to be converted over to use the new
+         * subititle array code. */
         /* Subtitles*/
-        [preset setObject:[fSubPopUp titleOfSelectedItem] forKey:@"Subtitles"];
+        //[preset setObject:[fSubPopUp titleOfSelectedItem] forKey:@"Subtitles"];
         /* Forced Subtitles */
-        [preset setObject:[NSNumber numberWithInt:[fSubForcedCheck state]] forKey:@"SubtitlesForced"];
+        //[preset setObject:[NSNumber numberWithInt:[fSubForcedCheck state]] forKey:@"SubtitlesForced"];
     }
     [preset autorelease];
     return preset;