OSDN Git Service

MacGui: Remove Target Size as a rate control option as it doesn't really work correct...
[handbrake-jp/handbrake-jp-git.git] / macosx / HBPresets.m
1 /*  HBPresets.m $
2
3    This file is part of the HandBrake source code.
4    Homepage: <http://handbrake.fr/>.
5    It may be used under the terms of the GNU General Public License. */
6
7 #import "HBPresets.h"
8
9 @implementation HBPresets
10 - (id)init 
11 {
12     self = [super init];
13    return self;
14 }
15
16 /* Called by -addFactoryPresets in Controller.mm */
17 - (NSMutableArray *) generateBuiltinPresets: (NSMutableArray *) UserPresets
18 {
19     /* We receive the user presets array of dictionaries from controller.mm */
20     /* We re-create new built in presets programmatically and add them to our presets array */
21     
22     /* Note: the built in presets will *not* sort themselves alphabetically, so they will
23      * appear in the order you create them
24      */
25     /* Built in preset folders at the root of the hierarchy */
26     [UserPresets addObject:[self createApplePresetFolder]];
27     [UserPresets addObject:[self createRegularPresetFolder]];
28     [UserPresets addObject:[self createLegacyPresetFolder]];
29     
30     /* Independent presets at the root hierarchy level would go here */
31     
32     /* return the newly regenerated preset array back to Controller.mm */
33     return UserPresets;
34 }
35
36 #pragma mark -
37
38 #pragma mark Built In Preset Folder Definitions
39
40 - (NSDictionary *)createApplePresetFolder
41 {
42     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
43 /*Set whether or not this is a folder, 1 is bool for folder*/
44     [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
45
46
47     /* Get the New Preset Name from the field in the AddPresetPanel */
48     [preset setObject:@"Apple" forKey:@"PresetName"];
49
50     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
51     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
52
53     /*Set whether or not this is default, at creation set to 0*/
54     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
55     
56     /* Lets initalize the child array of dictionaries for folders, this
57      is an array of dictionaries much like the root level of presets and
58      may contain folders and presets alike, etc.*/
59     NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
60     /* we actually call the methods for the nests here */
61     [childrenArray addObject:[self createAppleUniversalPreset]];
62     [childrenArray addObject:[self createIpodLowPreset]];
63     [childrenArray addObject:[self createiPhonePreset]];
64         [childrenArray addObject:[self createiPhone4Preset]];
65     [childrenArray addObject:[self createiPadPreset]];
66     [childrenArray addObject:[self createAppleTVPreset]];
67         [childrenArray addObject:[self createAppleTv2Preset]];
68
69     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
70     
71     [childrenArray autorelease];
72
73
74
75     [preset autorelease];
76     return preset;
77 }
78
79 - (NSDictionary *)createRegularPresetFolder
80 {
81     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
82 /*Set whether or not this is a folder, 1 is bool for folder*/
83     [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
84
85
86     /* Get the New Preset Name from the field in the AddPresetPanel */
87     [preset setObject:@"Regular" forKey:@"PresetName"];
88
89     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
90     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
91
92     /*Set whether or not this is default, at creation set to 0*/
93     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
94     
95     /* Lets initalize the child array of dictionaries for folders, this
96      is an array of dictionaries much like the root level of presets and
97      may contain folders and presets alike, etc.*/
98     NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
99     /* we actually call the methods for the nests here */
100     [childrenArray addObject:[self createNormalPreset]];
101     [childrenArray addObject:[self createHighProfilePreset]];
102     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
103     
104     [childrenArray autorelease];
105
106
107
108     [preset autorelease];
109     return preset;
110 }
111
112 - (NSDictionary *)createLegacyPresetFolder
113 {
114     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
115 /*Set whether or not this is a folder, 1 is bool for folder*/
116     [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
117
118
119     /* Get the New Preset Name from the field in the AddPresetPanel */
120     [preset setObject:@"Legacy" forKey:@"PresetName"];
121
122     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
123     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
124
125     /*Set whether or not this is default, at creation set to 0*/
126     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
127     
128     /* Lets initalize the child array of dictionaries for folders, this
129      is an array of dictionaries much like the root level of presets and
130      may contain folders and presets alike, etc.*/
131     NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
132     /* we actually call the methods for the nests here */
133     [childrenArray addObject:[self createClassicPreset]];
134     [childrenArray addObject:[self createAppleTVLegacyPreset]];
135     [childrenArray addObject:[self createiPhoneLegacyPreset]];
136     [childrenArray addObject:[self createIpodHighPreset]];
137     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
138     
139     [childrenArray autorelease];
140
141
142
143     [preset autorelease];
144     return preset;
145 }
146
147
148 #pragma mark -
149
150 #pragma mark Built In Preset Definitions
151
152 /* These NSDictionary Buit-In Preset definitions contain all of the settings for one built in preset */
153 /* Note: For now, you can no longer have reference to any main window fields in your key values */
154
155 - (NSDictionary *)createAppleTVPreset
156 {
157     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
158
159     /* Get the New Preset Name from the field in the AddPresetPanel */
160     [preset setObject:@"AppleTV" forKey:@"PresetName"];
161
162     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
163     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
164     /*Set whether or not this is a folder, 1 is bool for folder*/
165     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
166     /*Set whether or not this is default, at creation set to 0*/
167     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
168
169     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
170     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
171
172     /* Get the New Preset Description from the field in the AddPresetPanel */
173     [preset setObject:@"HandBrake's settings for the AppleTV and 2009's iPhone and iPod Touch lineup. Provides a good balance between quality and file size, and pushes the devices to their limits. Includes Dolby Digital 5.1 AC3 sound for the AppleTV." forKey:@"PresetDescription"];
174
175     /* File Format */
176     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
177
178     /* 64-bit MP4 file */
179     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
180
181     /* Chapter Markers*/
182      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
183
184     /* Video encoder */
185     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
186
187     /* x264 Option String (We can use this to tweak the appleTV output)*/
188     [preset setObject:@"cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500" forKey:@"x264Option"];
189
190     /* Video quality */
191     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
192     [preset setObject:@"700" forKey:@"VideoTargetSize"];
193     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
194     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
195
196     /* Video framerate */
197     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
198
199     /* GrayScale */
200     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
201
202     /* 2 Pass Encoding */
203     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
204
205     /* Basic Picture Settings */
206     /* Use Max Picture settings for whatever the dvd is.*/
207     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
208     [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"];
209     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
210     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
211     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
212
213     /* Explicitly set the filters for built-in presets */
214     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
215     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
216     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
217     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
218     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
219     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
220
221     /* Set crop settings here */
222     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
223     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
224     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
225     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
226     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
227     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
228
229     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
230      * not listed will be set to "None" and not encoded */
231     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
232     
233     /* Track 1 */        
234     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
235     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
236     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
237     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
238     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
239     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
240     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
241     [audioTrack1Array autorelease];
242     [audioListArray addObject:audioTrack1Array];
243
244     /* Track 2 */
245     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
246     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
247     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
248     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
249     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
250     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
251     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
252      * the sources bitrate, however we need to initially set the value to something so
253      * the macgui doesnt barf, so 160 seems as good as anything */
254     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
255     [audioTrack2Array autorelease];
256     [audioListArray addObject:audioTrack2Array];
257
258     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
259
260     /* Subtitles*/
261     [preset setObject:@"None" forKey:@"Subtitles"];
262
263     [preset autorelease];
264     return preset;
265 }
266
267 - (NSDictionary *)createAppleTVLegacyPreset
268 {
269     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
270
271     /* Get the New Preset Name from the field in the AddPresetPanel */
272     [preset setObject:@"AppleTV Legacy" forKey:@"PresetName"];
273
274     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
275     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
276
277     /*Set whether or not this is default, at creation set to 0*/
278     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
279
280     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
281     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
282
283     /* Get the New Preset Description from the field in the AddPresetPanel */
284     [preset setObject:@"HandBrake's deprecated settings for the AppleTV, including Dolby Digital 5.1 AC3 sound. Provides a good balance between quality and file size, and optimizes performance. This is the AppleTV preset from HandBrake 0.9.2, and while it is offered as a service to legacy users, it is no longer supported." forKey:@"PresetDescription"];
285
286     /* File Format */
287     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
288
289     /* 64-bit MP4 file */
290     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
291
292     /* Chapter Markers*/
293      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
294
295     /* Video encoder */
296     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
297
298     /* x264 Option String (We can use this to tweak the appleTV output)*/
299     [preset setObject:@"ref=1:b-pyramid=none:weightp=0:subme=5:me=umh:no-fast-pskip=1:cabac=0:weightb=0:8x8dct=0:trellis=0" forKey:@"x264Option"];
300
301     /* Video quality */
302     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
303     [preset setObject:@"700" forKey:@"VideoTargetSize"];
304     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
305     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
306
307     /* Video framerate */
308     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
309
310     /* GrayScale */
311     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
312
313     /* 2 Pass Encoding */
314     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
315
316     /* Basic Picture Settings */
317     /* Use Max Picture settings for whatever the dvd is.*/
318     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
319     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
320     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
321     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"];
322
323     /* Explicitly set the filters for built-in presets */
324     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
325     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
326     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
327     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
328     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
329     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
330
331     /* Set crop settings here */
332     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
333     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
334     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
335     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
336     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
337     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
338
339     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
340      * not listed will be set to "None" and not encoded */
341     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
342     
343     /* Track 1 */        
344     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
345     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
346     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
347     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
348     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
349     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
350     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
351     [audioTrack1Array autorelease];
352     [audioListArray addObject:audioTrack1Array];
353
354     /* Track 2 */
355     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
356     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
357     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
358     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
359     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
360     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
361     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
362      * the sources bitrate, however we need to initially set the value to something so
363      * the macgui doesnt barf, so 160 seems as good as anything */
364     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
365     [audioTrack2Array autorelease];
366     [audioListArray addObject:audioTrack2Array];
367
368     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
369
370     /* Subtitles*/
371     [preset setObject:@"None" forKey:@"Subtitles"];
372
373     [preset autorelease];
374     return preset;
375 }
376
377 - (NSDictionary *)createAppleUniversalPreset
378 {
379     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
380
381     /* Get the New Preset Name from the field in the AddPresetPanel */
382     [preset setObject:@"Universal" forKey:@"PresetName"];
383
384     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
385     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
386     /*Set whether or not this is a folder, 1 is bool for folder*/
387     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
388     /*Set whether or not this is default, at creation set to 0*/
389     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
390
391     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
392     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
393
394     /* Get the New Preset Description from the field in the AddPresetPanel */
395     [preset setObject:@"HandBrake's universally compatible, full resolution settings for all current Apple devices: iPod (6G and up), iPhone, AppleTV, and Macs" forKey:@"PresetDescription"];
396
397     /* File Format */
398     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
399
400     /* 64-bit MP4 file */
401     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
402
403     /* Chapter Markers*/
404      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
405
406     /* Video encoder */
407     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
408
409     /* x264 Option String (We can use this to tweak the appleTV output)*/
410     [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:8x8dct=0:trellis=0:subme=6" forKey:@"x264Option"];
411
412     /* Video quality */
413     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
414     [preset setObject:@"700" forKey:@"VideoTargetSize"];
415     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
416     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
417
418     /* Video framerate */
419     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
420
421     /* GrayScale */
422     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
423
424     /* 2 Pass Encoding */
425     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
426
427     /* Basic Picture Settings */
428     /* Use Max Picture settings for whatever the dvd is.*/
429     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
430     [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"];
431     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
432     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
433     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
434
435     /* Explicitly set the filters for built-in presets */
436     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
437     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
438     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
439     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
440     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
441     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
442
443     /* Set crop settings here */
444     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
445     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
446     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
447     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
448     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
449     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
450
451     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
452      * not listed will be set to "None" and not encoded */
453     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
454     
455     /* Track 1 */        
456     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
457     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
458     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
459     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
460     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
461     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
462     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
463     [audioTrack1Array autorelease];
464     [audioListArray addObject:audioTrack1Array];
465
466     /* Track 2 */
467     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
468     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
469     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
470     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
471     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
472     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
473     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
474      * the sources bitrate, however we need to initially set the value to something so
475      * the macgui doesnt barf, so 160 seems as good as anything */
476     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
477     [audioTrack2Array autorelease];
478     [audioListArray addObject:audioTrack2Array];
479
480     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
481
482     /* Subtitles*/
483     [preset setObject:@"None" forKey:@"Subtitles"];
484
485     [preset autorelease];
486     return preset;
487 }
488
489 - (NSDictionary *)createiPadPreset
490 {
491     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
492
493     /* Get the New Preset Name from the field in the AddPresetPanel */
494     [preset setObject:@"iPad" forKey:@"PresetName"];
495
496     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
497     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
498     /*Set whether or not this is a folder, 1 is bool for folder*/
499     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
500     /*Set whether or not this is default, at creation set to 0*/
501     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
502
503     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
504     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
505
506     /* Get the New Preset Description from the field in the AddPresetPanel */
507     [preset setObject:@"HandBrake's preset for the iPad (1st gen) is optimized for viewing on its 1024x768 display." forKey:@"PresetDescription"];
508
509     /* File Format */
510     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
511
512     /* 64-bit MP4 file */
513     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
514
515     /* Chapter Markers*/
516      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
517
518     /* Video encoder */
519     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
520
521     /* x264 Option String (We can use this to tweak the output)*/
522     [preset setObject:@"" forKey:@"x264Option"];
523
524     /* Video quality */
525     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
526     [preset setObject:@"700" forKey:@"VideoTargetSize"];
527     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
528     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
529
530     /* Video framerate */
531     [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"];
532     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoFrameratePFR"];
533     
534     /* GrayScale */
535     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
536
537     /* 2 Pass Encoding */
538     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
539
540     /* Basic Picture Settings */
541     /* Use Max Picture settings for whatever the dvd is.*/
542     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
543     [preset setObject:[NSNumber numberWithInt:1024] forKey:@"PictureWidth"];
544     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
545     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
546     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
547
548     /* Explicitly set the filters for built-in presets */
549     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
550     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
551     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
552     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
553     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
554     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
555
556     /* Set crop settings here */
557     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
558     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
559     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
560     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
561     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
562     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
563
564     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
565      * not listed will be set to "None" and not encoded */
566     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
567     
568     /* Track 1 */        
569     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
570     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
571     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
572     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
573     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
574     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
575     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
576     [audioTrack1Array autorelease];
577     [audioListArray addObject:audioTrack1Array];
578
579     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
580
581     /* Subtitles*/
582     [preset setObject:@"None" forKey:@"Subtitles"];
583
584     [preset autorelease];
585     return preset;
586 }
587
588 - (NSDictionary *)createiPhone4Preset
589 {
590     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
591         
592     /* Get the New Preset Name from the field in the AddPresetPanel */
593     [preset setObject:@"iPhone 4" forKey:@"PresetName"];
594         
595     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
596     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
597     /*Set whether or not this is a folder, 1 is bool for folder*/
598     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
599     /*Set whether or not this is default, at creation set to 0*/
600     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
601         
602     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
603     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
604         
605     /* Get the New Preset Description from the field in the AddPresetPanel */
606     [preset setObject:@"HandBrake's preset for the iPhone 4 is optimized for viewing on its 960x480 display." forKey:@"PresetDescription"];
607         
608     /* File Format */
609     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
610         
611     /* 64-bit MP4 file */
612     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
613         
614     /* Chapter Markers*/
615         [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
616         
617     /* Video encoder */
618     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
619         
620     /* x264 Option String (We can use this to tweak the output)*/
621     [preset setObject:@"" forKey:@"x264Option"];
622         
623     /* Video quality */
624     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
625     [preset setObject:@"700" forKey:@"VideoTargetSize"];
626     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
627     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
628         
629     /* Video framerate */
630     [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"];
631     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoFrameratePFR"];
632     
633     /* GrayScale */
634     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
635         
636     /* 2 Pass Encoding */
637     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
638         
639     /* Basic Picture Settings */
640     /* Use Max Picture settings for whatever the dvd is.*/
641     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
642     [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"];
643     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
644     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
645     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
646         
647     /* Explicitly set the filters for built-in presets */
648     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
649     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
650     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
651     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
652     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
653     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
654         
655     /* Set crop settings here */
656     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
657     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
658     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
659     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
660     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
661     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
662         
663     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
664      * not listed will be set to "None" and not encoded */
665     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
666     
667     /* Track 1 */        
668     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
669     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
670     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
671     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
672     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
673     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
674     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
675     [audioTrack1Array autorelease];
676     [audioListArray addObject:audioTrack1Array];
677         
678     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
679         
680     /* Subtitles*/
681     [preset setObject:@"None" forKey:@"Subtitles"];
682         
683     [preset autorelease];
684     return preset;
685 }
686
687 - (NSDictionary *)createAppleTv2Preset
688 {
689     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
690         
691     /* Get the New Preset Name from the field in the AddPresetPanel */
692     [preset setObject:@"AppleTV 2" forKey:@"PresetName"];
693         
694     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
695     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
696     /*Set whether or not this is a folder, 1 is bool for folder*/
697     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
698     /*Set whether or not this is default, at creation set to 0*/
699     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
700         
701     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
702     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
703         
704     /* Get the New Preset Description from the field in the AddPresetPanel */
705     [preset setObject:@"HandBrake's preset for the Apple TV (2nd gen) is optimized for viewing on its 1280x720 display." forKey:@"PresetDescription"];
706         
707     /* File Format */
708     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
709         
710     /* 64-bit MP4 file */
711     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
712         
713     /* Chapter Markers*/
714         [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
715         
716     /* Video encoder */
717     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
718         
719     /* x264 Option String (We can use this to tweak the output)*/
720     [preset setObject:@"" forKey:@"x264Option"];
721         
722     /* Video quality */
723     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
724     [preset setObject:@"700" forKey:@"VideoTargetSize"];
725     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
726     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
727         
728     /* Video framerate */
729     [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"];
730     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoFrameratePFR"];
731     
732     /* GrayScale */
733     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
734         
735     /* 2 Pass Encoding */
736     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
737         
738     /* Basic Picture Settings */
739     /* Use Max Picture settings for whatever the dvd is.*/
740     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
741     [preset setObject:[NSNumber numberWithInt:1280] forKey:@"PictureWidth"];
742     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
743     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
744     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
745         
746     /* Explicitly set the filters for built-in presets */
747     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
748     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
749     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
750     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
751     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
752     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
753         
754     /* Set crop settings here */
755     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
756     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
757     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
758     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
759     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
760     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
761         
762     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
763      * not listed will be set to "None" and not encoded */
764     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
765     
766     /* Track 1 */        
767     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
768     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
769     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
770     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
771     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
772     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
773     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
774     [audioTrack1Array autorelease];
775     [audioListArray addObject:audioTrack1Array];
776         
777     /* Track 2 */
778     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
779     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
780     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
781     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
782     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
783     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
784     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
785      * the sources bitrate, however we need to initially set the value to something so
786      * the macgui doesnt barf, so 160 seems as good as anything */
787     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
788     [audioTrack2Array autorelease];
789     [audioListArray addObject:audioTrack2Array];
790         
791         
792     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
793         
794     /* Subtitles*/
795     [preset setObject:@"None" forKey:@"Subtitles"];
796         
797     [preset autorelease];
798     return preset;
799 }
800
801 - (NSDictionary *)createClassicPreset
802 {
803     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
804
805     /* Get the New Preset Name from the field in the AddPresetPanel */
806     [preset setObject:@"Classic" forKey:@"PresetName"];
807
808     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
809     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
810
811     /*Set whether or not this is default, at creation set to 0*/
812     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
813
814     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
815     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
816
817     /* Get the New Preset Description from the field in the AddPresetPanel */
818     [preset setObject:@"HandBrake's traditional, faster, lower-quality settings." forKey:@"PresetDescription"];
819
820     /* File Format */
821     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
822
823     /* Chapter Markers*/
824      [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"];
825
826     /* Video encoder */
827     [preset setObject:@"MPEG-4 (FFmpeg)" forKey:@"VideoEncoder"];
828
829     /* x264 Option String */
830     [preset setObject:@"" forKey:@"x264Option"];
831
832     /* Video quality */
833     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
834     [preset setObject:@"700"  forKey:@"VideoTargetSize"];
835     [preset setObject:@"1000" forKey:@"VideoAvgBitrate"];
836     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
837
838     /* Video framerate */
839     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
840
841     /* GrayScale */
842     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
843
844     /* 2 Pass Encoding */
845     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
846
847     /*Picture Settings*/
848     /* Use Max Picture settings for whatever the dvd is.*/
849     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
850     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
851     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
852     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
853     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
854
855     /* Explicitly set the filters for built-in presets */
856     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
857     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
858     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
859     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
860     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
861     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
862
863     /* Set crop settings here */
864     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
865     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
866     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
867     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
868     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
869     
870     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
871      * not listed will be set to "None" and not encoded */
872     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
873     
874     /* Track 1 */        
875     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
876     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
877     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
878     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
879     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
880     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
881     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
882     [audioTrack1Array autorelease];
883     [audioListArray addObject:audioTrack1Array];
884
885     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
886
887     /* Subtitles*/
888     [preset setObject:@"None" forKey:@"Subtitles"];
889
890     [preset autorelease];
891     return preset;
892 }
893
894 - (NSDictionary *)createHighProfilePreset
895 {
896     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
897
898     /* Get the New Preset Name from the field in the AddPresetPanel */
899     [preset setObject:@"High Profile" forKey:@"PresetName"];
900
901     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
902     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
903
904     /*Set whether or not this is default, at creation set to 0*/
905     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
906
907     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
908     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
909
910     /* Get the New Preset Description from the field in the AddPresetPanel */
911     [preset setObject:@"HandBrake's general-purpose preset for High Profile H.264 video, with all the bells and whistles." forKey:@"PresetDescription"];
912
913     /* File Format */
914     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
915
916     /* Chapter Markers*/
917      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
918
919     /* Video encoder */
920     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
921
922     /* x264 Option String */
923     [preset setObject:@"b-adapt=2:rc-lookahead=50" forKey:@"x264Option"];
924
925     /* Video quality */
926     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
927     [preset setObject:@"700" forKey:@"VideoTargetSize"];
928     [preset setObject:@"1800" forKey:@"VideoAvgBitrate"];
929     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
930
931     /* Video framerate */
932     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
933
934     /* GrayScale */
935     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
936
937     /* 2 Pass Encoding */
938     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
939     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
940
941     /*Picture Settings*/
942     /* Use Max Picture settings for whatever the dvd is.*/
943     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
944     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
945     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
946     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
947     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
948
949     /* Explicitly set the filters for built-in presets */
950     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
951     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"];
952     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
953     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
954     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
955     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureDetelecine"];
956     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureDecomb"];
957
958     /* Set crop settings here */
959     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
960     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
961     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
962     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
963     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
964
965     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
966      * not listed will be set to "None" and not encoded */
967     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
968     
969     /* Track 1 */        
970     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
971     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
972     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
973     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
974     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
975     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
976     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
977     [audioTrack1Array autorelease];
978     [audioListArray addObject:audioTrack1Array];
979
980     /* Track 2 */
981     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
982     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
983     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
984     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
985     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
986     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
987     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
988      * the sources bitrate, however we need to initially set the value to something so
989      * the macgui doesnt barf, so 160 seems as good as anything */
990     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
991     [audioTrack2Array autorelease];
992     [audioListArray addObject:audioTrack2Array];
993
994     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
995
996     /* Subtitles*/
997     [preset setObject:@"None" forKey:@"Subtitles"];
998
999     [preset autorelease];
1000     return preset;
1001 }
1002
1003 - (NSDictionary *)createiPhonePreset
1004 {
1005     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1006
1007     /* Get the New Preset Name from the field in the AddPresetPanel */
1008     [preset setObject:@"iPhone & iPod Touch" forKey:@"PresetName"];
1009
1010     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1011     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1012
1013     /*Set whether or not this is default, at creation set to 0*/
1014     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
1015
1016     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1017     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
1018
1019     /* Get the New Preset Description from the field in the AddPresetPanel */
1020     [preset setObject:@"HandBrake's settings for all iPhones and iPod Touches going back to the original iPhone 2G." forKey:@"PresetDescription"];
1021
1022     /* File Format */
1023     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1024
1025     /* Chapter Markers*/
1026      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1027
1028     /* Video encoder */
1029     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1030     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
1031     /* x264 Option String */
1032     [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
1033
1034     /* Video quality */
1035     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
1036     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1037     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
1038     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
1039
1040     /* Video framerate */
1041     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1042
1043     /* GrayScale */
1044     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1045
1046     /* 2 Pass Encoding */
1047     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1048
1049     /*Picture Settings*/
1050     /* Use a width of 480 for the iPhone*/
1051     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
1052     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1053     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
1054     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
1055
1056     /* Explicitly set the filters for built-in presets */
1057     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1058     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1059     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1060     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1061     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1062     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1063
1064     /* Set crop settings here */
1065     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1066     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1067     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1068     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1069     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1070     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1071
1072     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1073      * not listed will be set to "None" and not encoded */
1074     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1075     
1076     /* Track 1 */        
1077     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1078     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1079     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1080     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1081     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1082     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
1083     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1084     [audioTrack1Array autorelease];
1085     [audioListArray addObject:audioTrack1Array];
1086
1087     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1088
1089     /* Subtitles*/
1090     [preset setObject:@"None" forKey:@"Subtitles"];
1091
1092     [preset autorelease];
1093     return preset;
1094 }
1095
1096 - (NSDictionary *)createiPhoneLegacyPreset
1097 {
1098     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1099
1100     /* Get the New Preset Name from the field in the AddPresetPanel */
1101     [preset setObject:@"iPhone Legacy" forKey:@"PresetName"];
1102
1103     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1104     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1105
1106     /*Set whether or not this is default, at creation set to 0*/
1107     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
1108
1109     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1110     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
1111
1112     /* Get the New Preset Description from the field in the AddPresetPanel */
1113     [preset setObject:@"HandBrake's deprecated settings for the iPhone and iPod Touch. This is the iPhone preset from HandBrake 0.9.2, and while it is offered as a service to legacy users, it is no longer supported." forKey:@"PresetDescription"];
1114
1115     /* File Format */
1116     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1117
1118     /* Chapter Markers*/
1119      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1120
1121     /* Video encoder */
1122     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1123     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
1124     /* x264 Option String */
1125     [preset setObject:@"level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
1126
1127     /* Video quality */
1128     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
1129     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1130     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
1131     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
1132
1133     /* Video framerate */
1134     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1135
1136     /* GrayScale */
1137     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1138
1139     /* 2 Pass Encoding */
1140     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1141
1142     /*Picture Settings*/
1143     /* Use a width of 480 for the iPhone*/
1144     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
1145     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1146     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
1147     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
1148
1149     /* Explicitly set the filters for built-in presets */
1150     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1151     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1152     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1153     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1154     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1155     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1156
1157     /* Set crop settings here */
1158     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1159     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1160     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1161     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1162     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1163     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1164
1165     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1166      * not listed will be set to "None" and not encoded */
1167     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1168     
1169     /* Track 1 */        
1170     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1171     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1172     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1173     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1174     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1175     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
1176     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1177     [audioTrack1Array autorelease];
1178     [audioListArray addObject:audioTrack1Array];
1179
1180     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1181
1182     /* Subtitles*/
1183     [preset setObject:@"None" forKey:@"Subtitles"];
1184
1185     [preset autorelease];
1186     return preset;
1187 }
1188
1189 - (NSDictionary *)createIpodHighPreset
1190 {
1191     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1192
1193     /* Get the New Preset Name from the field in the AddPresetPanel */
1194     [preset setObject:@"iPod Legacy" forKey:@"PresetName"];
1195
1196     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1197     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1198
1199     /*Set whether or not this is default, at creation set to 0*/
1200     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
1201
1202     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1203     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
1204
1205     /* Get the New Preset Description from the field in the AddPresetPanel */
1206     [preset setObject:@"HandBrake's high resolution settings for older 5 and 5.5G iPods. Good video quality, great for viewing on a TV using your iPod. This is the iPod High-Rez preset from 0.9.2." forKey:@"PresetDescription"];
1207
1208     /* File Format */
1209     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1210
1211     /* Chapter Markers*/
1212      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1213
1214     /* Video encoder */
1215     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1216     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
1217     /* x264 Option String */
1218     [preset setObject:@"level=30:bframes=0:weightp=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"];
1219
1220     /* Video quality */
1221     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
1222     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1223     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
1224     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
1225
1226     /* Video framerate */
1227     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1228
1229     /* GrayScale */
1230     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1231
1232     /* 2 Pass Encoding */
1233     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1234
1235     /*Picture Settings*/
1236     /* Use a width of 640 for iPod TV-out */
1237     [preset setObject:[NSNumber numberWithInt:640] forKey:@"PictureWidth"];
1238     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1239     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
1240     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
1241
1242     /* Explicitly set the filters for built-in presets */
1243     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1244     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1245     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1246     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1247     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1248     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1249
1250     /* Set crop settings here */
1251     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1252     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1253     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1254     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1255     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1256     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1257
1258     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1259      * not listed will be set to "None" and not encoded */
1260     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1261     
1262     /* Track 1 */        
1263     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1264     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1265     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1266     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1267     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1268     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1269     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1270     [audioTrack1Array autorelease];
1271     [audioListArray addObject:audioTrack1Array];
1272
1273     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1274
1275     /* Subtitles*/
1276     [preset setObject:@"None" forKey:@"Subtitles"];
1277
1278     [preset autorelease];
1279     return preset;
1280 }
1281
1282 - (NSDictionary *)createIpodLowPreset
1283 {
1284     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1285
1286     /* Get the New Preset Name from the field in the AddPresetPanel */
1287     [preset setObject:@"iPod" forKey:@"PresetName"];
1288
1289     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1290     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1291
1292     /*Set whether or not this is default, at creation set to 0*/
1293     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
1294
1295     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1296     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
1297
1298     /* Get the New Preset Description from the field in the AddPresetPanel */
1299     [preset setObject:@"HandBrake's low resolution settings for the iPod (5G and up). Optimized for great playback on the iPod screen, with smaller file size." forKey:@"PresetDescription"];
1300
1301     /* File Format */
1302     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1303
1304     /* Chapter Markers*/
1305      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1306
1307     /* Video encoder */
1308     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1309     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
1310     /* x264 Option String */
1311     [preset setObject:@"level=30:bframes=0:weightp=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"];
1312
1313     /* Video quality */
1314     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
1315     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1316     [preset setObject:@"700" forKey:@"VideoAvgBitrate"];
1317     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
1318
1319     /* Video framerate */
1320     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1321
1322     /* GrayScale */
1323     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1324
1325     /* 2 Pass Encoding */
1326     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1327
1328     /*Picture Settings*/
1329     /* Use a width of 320 for the iPod screen */
1330     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1331     [preset setObject:[NSNumber numberWithInt:320] forKey:@"PictureWidth"];
1332     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1333     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
1334     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
1335
1336     /* Explicitly set the filters for built-in presets */
1337     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1338     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1339     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1340     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1341     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1342     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1343
1344     /* Set crop settings here */
1345     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1346     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1347     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1348     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1349     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1350
1351     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1352      * not listed will be set to "None" and not encoded */
1353     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1354     
1355     /* Track 1 */        
1356     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1357     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1358     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1359     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1360     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1361     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1362     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1363     [audioTrack1Array autorelease];
1364     [audioListArray addObject:audioTrack1Array];
1365
1366     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1367
1368     /* Subtitles*/
1369     [preset setObject:@"None" forKey:@"Subtitles"];
1370
1371     [preset autorelease];
1372     return preset;
1373 }
1374
1375 - (NSDictionary *)createNormalPreset
1376 {
1377     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1378
1379     /* Get the New Preset Name from the field in the AddPresetPanel */
1380     [preset setObject:@"Normal" forKey:@"PresetName"];
1381
1382     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1383     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1384
1385     /*Set whether or not this is default, at creation set to 0*/
1386     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Default"];
1387
1388     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1389     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
1390
1391     /* Get the New Preset Description from the field in the AddPresetPanel */
1392     [preset setObject:@"HandBrake's normal, default settings." forKey:@"PresetDescription"];
1393
1394     /* File Format */
1395     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1396
1397     /* Chapter Markers*/
1398      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1399
1400     /* Video encoder */
1401     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1402
1403     /* x264 Option String */
1404     [preset setObject:@"ref=2:bframes=2:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0" forKey:@"x264Option"];
1405
1406     /* Video quality */
1407     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
1408     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1409     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
1410     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
1411
1412     /* Video framerate */
1413     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1414
1415     /* GrayScale */
1416     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1417
1418     /* 2 Pass Encoding */
1419     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1420     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
1421
1422     /*Picture Settings*/
1423     /* Use Max Picture settings for whatever the dvd is.*/
1424     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1425     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
1426     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1427     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
1428     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"];
1429
1430     /* Explicitly set the filters for built-in presets */
1431     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1432     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1433     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1434     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1435     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1436     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1437
1438     /* Set crop settings here */
1439     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1440     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1441     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1442     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1443     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1444
1445     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1446      * not listed will be set to "None" and not encoded */
1447     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1448     
1449     /* Track 1 */        
1450     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1451     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1452     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1453     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1454     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1455     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1456     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1457     [audioTrack1Array autorelease];
1458     [audioListArray addObject:audioTrack1Array];
1459
1460     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1461
1462     /* Subtitles*/
1463     [preset setObject:@"None" forKey:@"Subtitles"];
1464
1465     [preset autorelease];
1466     return preset;
1467 }
1468
1469
1470 @end