[vlc-commits] macosx: CAS: introduce functionality for keep checkboxes (close #8601)

David Fuhrmann git at videolan.org
Fri Jun 21 22:43:44 CEST 2013


vlc | branch: master | David Fuhrmann <david.fuhrmann at googlemail.com> | Fri Jun 21 22:05:51 2013 +0200| [508663821ce351b03c4d573914c17129e2b3f6f7] | committer: David Fuhrmann

macosx: CAS: introduce functionality for keep checkboxes (close #8601)

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=508663821ce351b03c4d573914c17129e2b3f6f7
---

 modules/gui/macosx/ConvertAndSave.m |   69 ++++++++++++++++++++++++++---------
 1 file changed, 51 insertions(+), 18 deletions(-)

diff --git a/modules/gui/macosx/ConvertAndSave.m b/modules/gui/macosx/ConvertAndSave.m
index 2dbb965..c6a2695 100644
--- a/modules/gui/macosx/ConvertAndSave.m
+++ b/modules/gui/macosx/ConvertAndSave.m
@@ -711,7 +711,9 @@ static VLCConvertAndSave *_o_sharedInstance = nil;
     NSArray * tempArray = [_videoCodecs objectAtIndex:1];
     NSUInteger count = [tempArray count];
     NSString * searchString = [components objectAtIndex:4];
-    if ([searchString isEqualToString:@"none"] || [searchString isEqualToString:@"0"]) {
+    int videoKeep = [searchString isEqualToString:@"copy"];
+    [_customize_vid_keep_ckb setState:videoKeep];
+    if ([searchString isEqualToString:@"none"] || [searchString isEqualToString:@"0"] || videoKeep) {
         [_customize_vid_codec_pop selectItemAtIndex:-1];
     } else {
         for (NSUInteger x = 0; x < count; x++) {
@@ -725,7 +727,9 @@ static VLCConvertAndSave *_o_sharedInstance = nil;
     tempArray = [_audioCodecs objectAtIndex:1];
     count = [tempArray count];
     searchString = [components objectAtIndex:10];
-    if ([searchString isEqualToString:@"none"] || [searchString isEqualToString:@"0"]) {
+    int audioKeep = [searchString isEqualToString:@"copy"];
+    [_customize_aud_keep_ckb setState:audioKeep];
+    if ([searchString isEqualToString:@"none"] || [searchString isEqualToString:@"0"] || audioKeep) {
         [_customize_aud_codec_pop selectItemAtIndex:-1];
     } else {
         for (NSUInteger x = 0; x < count; x++) {
@@ -862,10 +866,11 @@ static VLCConvertAndSave *_o_sharedInstance = nil;
 - (NSString *)composedOptions
 {
     NSMutableString *composedOptions = [[NSMutableString alloc] initWithString:@":sout=#transcode{"];
+    BOOL haveVideo = YES;
     if ([[self.currentProfile objectAtIndex:1] intValue]) {
         // video is enabled
+        if (![[self.currentProfile objectAtIndex:4] isEqualToString:@"copy"]) {
         [composedOptions appendFormat:@"vcodec=%@", [self.currentProfile objectAtIndex:4]];
-        if (![[self.currentProfile objectAtIndex:4] isEqualToString:@"none"]) {
             if ([[self.currentProfile objectAtIndex:5] intValue] > 0) // bitrate
                 [composedOptions appendFormat:@",vb=%@", [self.currentProfile objectAtIndex:5]];
             if ([[self.currentProfile objectAtIndex:6] floatValue] > 0.) // scale
@@ -876,28 +881,40 @@ static VLCConvertAndSave *_o_sharedInstance = nil;
                 [composedOptions appendFormat:@",width=%@", [self.currentProfile objectAtIndex:8]];
             if ([[self.currentProfile objectAtIndex:9] intValue] > 0) // height
                 [composedOptions appendFormat:@",height=%@", [self.currentProfile objectAtIndex:9]];
+        } else {
+            haveVideo = NO;
         }
     } else {
         [composedOptions appendString:@"vcodec=none"];
     }
 
-    [composedOptions appendString:@","];
-
+    BOOL haveAudio = YES;
     if ([[self.currentProfile objectAtIndex:2] intValue]) {
         // audio is enabled
+        if (![[self.currentProfile objectAtIndex:10] isEqualToString:@"copy"]) {
+            if(haveVideo)
+                [composedOptions appendString:@","];
+            [composedOptions appendFormat:@"acodec=%@", [self.currentProfile objectAtIndex:10]];
+
 
-        [composedOptions appendFormat:@"acodec=%@", [self.currentProfile objectAtIndex:10]];
-        if (![[self.currentProfile objectAtIndex:10] isEqualToString:@"none"]) {
+            [composedOptions appendFormat:@"acodec=%@", [self.currentProfile objectAtIndex:10]];
             [composedOptions appendFormat:@",ab=%@", [self.currentProfile objectAtIndex:11]]; // bitrate
             [composedOptions appendFormat:@",channels=%@", [self.currentProfile objectAtIndex:12]]; // channel number
             [composedOptions appendFormat:@",samplerate=%@", [self.currentProfile objectAtIndex:13]]; // sample rate
+        } else {
+            haveAudio = NO;
         }
     } else {
+        if(haveVideo)
+            [composedOptions appendString:@","];
+
         [composedOptions appendString:@"acodec=none"];
     }
     if ([self.currentProfile objectAtIndex:3]) {
+        if(haveVideo || haveAudio)
+            [composedOptions appendString:@","];
         // subtitles enabled
-        [composedOptions appendFormat:@",scodec=%@", [self.currentProfile objectAtIndex:14]];
+        [composedOptions appendFormat:@"scodec=%@", [self.currentProfile objectAtIndex:14]];
         if ([[self.currentProfile objectAtIndex:15] intValue])
             [composedOptions appendFormat:@",soverlay"];
     }
@@ -956,21 +973,37 @@ static VLCConvertAndSave *_o_sharedInstance = nil;
     [self.currentProfile addObject: [NSString stringWithFormat:@"%li", [_customize_vid_ckb state]]];
     [self.currentProfile addObject: [NSString stringWithFormat:@"%li", [_customize_aud_ckb state]]];
     [self.currentProfile addObject: [NSString stringWithFormat:@"%li", [_customize_subs_ckb state]]];
-    i = [_customize_vid_codec_pop indexOfSelectedItem];
-    if (i >= 0)
-        [self.currentProfile addObject: [[_videoCodecs objectAtIndex:1] objectAtIndex:i]];
-    else
-        [self.currentProfile addObject: @"none"];
+    
+    NSString *videoCodec;
+    if([_customize_vid_keep_ckb state] == NSOnState)
+        videoCodec = @"copy";
+    else {
+        i = [_customize_vid_codec_pop indexOfSelectedItem];
+        if (i >= 0)
+            videoCodec = [[_videoCodecs objectAtIndex:1] objectAtIndex:i];
+        else
+            videoCodec = @"none";
+    }
+    [self.currentProfile addObject: videoCodec];
+
     [self.currentProfile addObject: [NSString stringWithFormat:@"%i", [self vidBitrate]]];
     [self.currentProfile addObject: [NSString stringWithFormat:@"%i", [[[_customize_vid_scale_pop selectedItem] title] intValue]]];
     [self.currentProfile addObject: [NSString stringWithFormat:@"%i", [self vidFramerate]]];
     [self.currentProfile addObject: [NSString stringWithFormat:@"%i", [_customize_vid_width_fld intValue]]];
     [self.currentProfile addObject: [NSString stringWithFormat:@"%i", [_customize_vid_height_fld intValue]]];
-    i = [_customize_aud_codec_pop indexOfSelectedItem];
-    if (i >= 0)
-        [self.currentProfile addObject: [[_audioCodecs objectAtIndex:1] objectAtIndex:i]];
-    else
-        [self.currentProfile addObject: @"none"];
+
+    NSString *audioCodec;
+    if([_customize_aud_keep_ckb state] == NSOnState)
+        audioCodec = @"copy";
+    else {
+        i = [_customize_aud_codec_pop indexOfSelectedItem];
+        if (i >= 0)
+            audioCodec = [[_audioCodecs objectAtIndex:1] objectAtIndex:i];
+        else
+            audioCodec = @"none";
+    }
+    [self.currentProfile addObject: audioCodec];
+    
     [self.currentProfile addObject: [NSString stringWithFormat:@"%i", [self audBitrate]]];
     [self.currentProfile addObject: [NSString stringWithFormat:@"%i", [self audChannels]]];
     [self.currentProfile addObject: [[_customize_aud_samplerate_pop selectedItem] title]];



More information about the vlc-commits mailing list