diff options
author | jbrjake <jb.rubin@gmail.com> | 2009-08-01 14:09:02 +0000 |
---|---|---|
committer | jbrjake <jb.rubin@gmail.com> | 2009-08-01 14:09:02 +0000 |
commit | d55b8f438a3607993492e718a6cf2e7f255bb453 (patch) | |
tree | ffe3ef26a1a2fbe6610d3a85f17c1edb774d530b /macosx | |
parent | c0642a767ce8fab4e4f4aaba19d72eee2220daf5 (diff) |
- Bumps x264 to r1195-5d75a9b. x264 has new default settings: subme 6->7, bframes 0->3, 8x8dct 0->1, psnr 1->0, ssim 1->0, ref 1->3, mixed-refs 0->1, trellis 0->1, weightb 0->1
- Explicitly enables SSIM and PSNR metrics for all x264 encodes
- MacGui: Updates Advanced tab for new x264 defaults
- MacGui and CLI: Updates built-in presets to produce the same output given the new default x264 settings
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2742 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'macosx')
-rw-r--r-- | macosx/HBAdvancedController.m | 40 | ||||
-rw-r--r-- | macosx/HBPresets.m | 18 |
2 files changed, 30 insertions, 28 deletions
diff --git a/macosx/HBAdvancedController.m b/macosx/HBAdvancedController.m index eabb09af4..7555ee5a4 100644 --- a/macosx/HBAdvancedController.m +++ b/macosx/HBAdvancedController.m @@ -109,19 +109,19 @@ /*B-Frames fX264optBframesPopUp*/ int i; [fX264optBframesPopUp removeAllItems]; - [fX264optBframesPopUp addItemWithTitle:@"Default (0)"]; + [fX264optBframesPopUp addItemWithTitle:@"Default (3)"]; for (i=0; i<17;i++) { [fX264optBframesPopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; } toolTip = - @"Sane values are 1-6. B-Frames are smaller than other frames, so they let you pack in more quality at the same bitrate. Use more of them with animated material: 9-16."; + @"Sane values are 1-6. B-Frames are smaller than other frames, so they let you pack in more quality at the same bitrate. Use more of them with animated material."; [fX264optBframesPopUp setToolTip: toolTip]; [fX264optBframesLabel setToolTip: toolTip]; /*Reference Frames fX264optRefPopUp*/ [fX264optRefPopUp removeAllItems]; - [fX264optRefPopUp addItemWithTitle:@"Default (1)"]; + [fX264optRefPopUp addItemWithTitle:@"Default (3)"]; for (i=0; i<17;i++) { [fX264optRefPopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; @@ -147,19 +147,19 @@ /*Sub Me fX264optSubmePopUp*/ [fX264optSubmePopUp removeAllItems]; - [fX264optSubmePopUp addItemWithTitle:@"Default (6)"]; + [fX264optSubmePopUp addItemWithTitle:@"Default (7)"]; for (i=0; i<10;i++) { [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; } toolTip = - @"This setting is finer-grained than the motion estimation settings above. Instead of dealing with whole pixels, it deals with 4 fractional pixels, or quarter pixels (qpel). Higher levels increase quality by further refining the motion prediction for these quarter pixels, but take longer to encode.\n\nThe default, 6, turns on a feature called rate distortion optimization, including psychovisual enhancements. 7 enables that rate distortion for B-frames. 8 refines those decisions for I and P frames, and 9 adds on refinement for B-frames as well."; + @"This setting is finer-grained than the motion estimation settings above. Instead of dealing with whole pixels, it deals with 4 fractional pixels, or quarter pixels (qpel). Higher levels increase quality by further refining the motion prediction for these quarter pixels, but take longer to encode.\n\nLevel 6, turns on a feature called rate distortion optimization, including psychovisual enhancements. 7, the default, enables that rate distortion for B-frames. 8 refines those decisions for I and P frames, and 9 adds on refinement for B-frames as well."; [fX264optSubmePopUp setToolTip: toolTip]; [fX264optSubmeLabel setToolTip: toolTip]; /*Trellis fX264optTrellisPopUp*/ [fX264optTrellisPopUp removeAllItems]; - [fX264optTrellisPopUp addItemWithTitle:@"Default (0)"]; + [fX264optTrellisPopUp addItemWithTitle:@"Default (1)"]; for (i=0; i<3;i++) { [fX264optTrellisPopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; @@ -171,7 +171,7 @@ [fX264optTrellisLabel setToolTip: toolTip]; /*Mixed-references fX264optMixedRefsSwitch BOOLEAN*/ - [fX264optMixedRefsSwitch setState:0]; + [fX264optMixedRefsSwitch setState:1]; [fX264optMixedRefsSwitch setWantsLayer:YES]; toolTip = @"With this on, different references can be used for different parts of each 16x16 pixel macroblock, increasing quality."; @@ -204,10 +204,10 @@ [fX264optMERangeLabel setToolTip: toolTip]; /*Weighted B-Frame Prediction fX264optWeightBSwitch BOOLEAN*/ - [fX264optWeightBSwitch setState:0]; + [fX264optWeightBSwitch setState:1]; [fX264optWeightBSwitch setWantsLayer:YES]; toolTip = - @"Sometimes x264 will base a B-frame's motion compensation on frames both before and after. With weighted B-frames, the amount of influence each frame has is related to its distance from the frame being encoded, instead of both having equal influence."; + @"Sometimes x264 will base a B-frame's motion compensation on frames both before and after. With weighted B-frames, the amount of influence each frame has is related to its distance from the frame being encoded, instead of both having equal influence. The AppleTV can have issues with this."; [fX264optWeightBSwitch setToolTip: toolTip]; [fX264optWeightBLabel setToolTip: toolTip]; @@ -277,7 +277,7 @@ [fX264optAnalyseLabel setToolTip: toolTip]; /* 8x8 DCT fX264op8x8dctSwitch */ - [fX264opt8x8dctSwitch setState:0]; + [fX264opt8x8dctSwitch setState:1]; [fX264opt8x8dctSwitch setWantsLayer:YES]; toolTip = @"Checking this box lets x264 break key frames down into 8x8 blocks of pixels for analysis. This is a high profile feature of H.264, which makes it less compatible. It should slightly decrease bitrate or improve quality. Turn it on whenever possible."; @@ -483,7 +483,8 @@ if( sender == fX264optBframesPopUp || sender == nil || sender == fDisplayX264Options ) { - if ( [fX264optBframesPopUp indexOfSelectedItem ] < 2) + if ( [fX264optBframesPopUp indexOfSelectedItem ] > 0 && + [fX264optBframesPopUp indexOfSelectedItem ] < 2) { /* If the b-frame widget is at 0 or 1, the user has chosen not to use b-frames at all. So disable the options @@ -629,7 +630,8 @@ if( sender == fX264optRefPopUp || sender == nil || sender == fDisplayX264Options ) { - if ( [fX264optRefPopUp indexOfSelectedItem] < 3) + if ( [fX264optRefPopUp indexOfSelectedItem] > 0 && + [fX264optRefPopUp indexOfSelectedItem] < 3 ) { if( [fX264optMixedRefsSwitch isHidden] == false ) { @@ -714,7 +716,7 @@ [[fX264optPsyRDLabel animator] setHidden:NO]; } - if( [fX264optTrellisPopUp indexOfSelectedItem] >= 2 && [fX264optCabacSwitch state] == true && [fX264optPsyTrellisSlider isHidden] == true ) + if( ( [fX264optTrellisPopUp indexOfSelectedItem] == 0 || [fX264optTrellisPopUp indexOfSelectedItem] >= 2 ) && [fX264optCabacSwitch state] == true && [fX264optPsyTrellisSlider isHidden] == true ) { [[fX264optPsyTrellisSlider animator] setHidden:NO]; [[fX264optPsyTrellisLabel animator] setHidden:NO]; @@ -724,7 +726,7 @@ if( sender == fX264optTrellisPopUp || sender == nil || sender == fDisplayX264Options ) { - if( [fX264optTrellisPopUp indexOfSelectedItem] < 2 ) + if( [fX264optTrellisPopUp indexOfSelectedItem] > 0 && [fX264optTrellisPopUp indexOfSelectedItem] < 2 ) { if( [fX264optPsyTrellisSlider isHidden] == false ) { @@ -1079,7 +1081,7 @@ } } - else if /*Boolean Switches*/ ([optName isEqualToString:@"mixed-refs"] || [optName isEqualToString:@"weightb"] || [optName isEqualToString:@"b-pyramid"] || [optName isEqualToString:@"no-fast-pskip"] || [optName isEqualToString:@"no-dct-decimate"] || [optName isEqualToString:@"8x8dct"] ) + else if /*Boolean Switches*/ ( [optName isEqualToString:@"b-pyramid"] || [optName isEqualToString:@"no-fast-pskip"] || [optName isEqualToString:@"no-dct-decimate"] ) { /* Here is where we take care of the boolean options that work overtly: no-dct-decimate being on means no-dct-decimate=1, etc. Some options @@ -1097,10 +1099,10 @@ } } - else if ([optName isEqualToString:@"cabac"]) + else if ( [optName isEqualToString:@"8x8dct"] || [optName isEqualToString:@"weightb"] || [optName isEqualToString:@"mixed-refs"] || [optName isEqualToString:@"cabac"] ) { - /* CABAC is odd, in that it defaults to being on. That means - it only needs to be included in the string when turned off. */ + /* These options default to being on. That means they + only need to be included in the string when turned off. */ if ([sender state] == 1) { /* It's true so don't include it. */ @@ -1108,7 +1110,7 @@ } else { - /* Otherwise, include cabac=0 in the string to enable CAVLC. */ + /* Otherwise, include cabac=0, etc, in the string. */ thisOpt = [NSString stringWithFormat:@"%@=%d",optName,0]; } } diff --git a/macosx/HBPresets.m b/macosx/HBPresets.m index 56d643030..9092f4bd6 100644 --- a/macosx/HBPresets.m +++ b/macosx/HBPresets.m @@ -182,7 +182,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String (We can use this to tweak the appleTV output)*/ - [preset setObject:@"cabac=0:ref=2:mixed-refs=1:bframes=3:me=umh:subme=7:b-adapt=2:8x8dct=1" forKey:@"x264Option"]; + [preset setObject:@"cabac=0:ref=2:me=umh:b-adapt=2:weightb=0:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; @@ -293,7 +293,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String (We can use this to tweak the appleTV output)*/ - [preset setObject:@"bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:cabac=0" forKey:@"x264Option"]; + [preset setObject:@"ref=1:subme=5:me=umh:no-fast-pskip=1:cabac=0:weightb=0:8x8dct=0:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"]; @@ -405,7 +405,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String (We can use this to tweak the appleTV output)*/ - [preset setObject:@"cabac=0:ref=2:mixed-refs=1:me=umh" forKey:@"x264Option"]; + [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:8x8dct=0:trellis=0:subme=6" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; @@ -607,7 +607,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String */ - [preset setObject:@"ref=3:mixed-refs:bframes=3:weightb:b-pyramid:b-adapt=2:me=umh:subme=9:analyse=all:8x8dct" forKey:@"x264Option"]; + [preset setObject:@"b-pyramid:b-adapt=2:me=umh:subme=9:analyse=all:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; @@ -716,7 +716,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* x264 Option String */ - [preset setObject:@"cabac=0:ref=2:mixed-refs:me=umh" forKey:@"x264Option"]; + [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; @@ -810,7 +810,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"]; /* x264 Option String */ - [preset setObject:@"level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0" forKey:@"x264Option"]; + [preset setObject:@"level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:bframes=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"]; @@ -904,7 +904,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"]; /* x264 Option String */ - [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0" forKey:@"x264Option"]; + [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"]; @@ -998,7 +998,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"]; /* x264 Option String */ - [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1" forKey:@"x264Option"]; + [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"]; @@ -1092,7 +1092,7 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String */ - [preset setObject:@"ref=2:bframes=2:me=umh" forKey:@"x264Option"]; + [preset setObject:@"ref=2:bframes=2:me=umh:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0" forKey:@"x264Option"]; /* Video quality */ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; |