OSDN Git Service

update baseline presets with weightp=0
[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 createiPadPreset]];
65     [childrenArray addObject:[self createAppleTVPreset]];
66
67     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
68     
69     [childrenArray autorelease];
70
71
72
73     [preset autorelease];
74     return preset;
75 }
76
77 - (NSDictionary *)createRegularPresetFolder
78 {
79     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
80 /*Set whether or not this is a folder, 1 is bool for folder*/
81     [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
82
83
84     /* Get the New Preset Name from the field in the AddPresetPanel */
85     [preset setObject:@"Regular" forKey:@"PresetName"];
86
87     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
88     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
89
90     /*Set whether or not this is default, at creation set to 0*/
91     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
92     
93     /* Lets initalize the child array of dictionaries for folders, this
94      is an array of dictionaries much like the root level of presets and
95      may contain folders and presets alike, etc.*/
96     NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
97     /* we actually call the methods for the nests here */
98     [childrenArray addObject:[self createNormalPreset]];
99     [childrenArray addObject:[self createHighProfilePreset]];
100     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
101     
102     [childrenArray autorelease];
103
104
105
106     [preset autorelease];
107     return preset;
108 }
109
110 - (NSDictionary *)createLegacyPresetFolder
111 {
112     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
113 /*Set whether or not this is a folder, 1 is bool for folder*/
114     [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
115
116
117     /* Get the New Preset Name from the field in the AddPresetPanel */
118     [preset setObject:@"Legacy" forKey:@"PresetName"];
119
120     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
121     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
122
123     /*Set whether or not this is default, at creation set to 0*/
124     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
125     
126     /* Lets initalize the child array of dictionaries for folders, this
127      is an array of dictionaries much like the root level of presets and
128      may contain folders and presets alike, etc.*/
129     NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
130     /* we actually call the methods for the nests here */
131     [childrenArray addObject:[self createClassicPreset]];
132     [childrenArray addObject:[self createAppleTVLegacyPreset]];
133     [childrenArray addObject:[self createiPhoneLegacyPreset]];
134     [childrenArray addObject:[self createIpodHighPreset]];
135     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
136     
137     [childrenArray autorelease];
138
139
140
141     [preset autorelease];
142     return preset;
143 }
144
145
146 #pragma mark -
147
148 #pragma mark Built In Preset Definitions
149
150 /* These NSDictionary Buit-In Preset definitions contain all of the settings for one built in preset */
151 /* Note: For now, you can no longer have reference to any main window fields in your key values */
152
153 - (NSDictionary *)createAppleTVPreset
154 {
155     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
156
157     /* Get the New Preset Name from the field in the AddPresetPanel */
158     [preset setObject:@"AppleTV" forKey:@"PresetName"];
159
160     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
161     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
162     /*Set whether or not this is a folder, 1 is bool for folder*/
163     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
164     /*Set whether or not this is default, at creation set to 0*/
165     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
166
167     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
168     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
169
170     /* Get the New Preset Description from the field in the AddPresetPanel */
171     [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"];
172
173     /* File Format */
174     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
175
176     /* 64-bit MP4 file */
177     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
178
179     /* Chapter Markers*/
180      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
181
182     /* Video encoder */
183     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
184
185     /* x264 Option String (We can use this to tweak the appleTV output)*/
186     [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"];
187
188     /* Video quality */
189     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
190     [preset setObject:@"700" forKey:@"VideoTargetSize"];
191     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
192     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
193
194     /* Video framerate */
195     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
196
197     /* GrayScale */
198     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
199
200     /* 2 Pass Encoding */
201     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
202
203     /* Basic Picture Settings */
204     /* Use Max Picture settings for whatever the dvd is.*/
205     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
206     [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"];
207     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
208     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
209     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
210
211     /* Explicitly set the filters for built-in presets */
212     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
213     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
214     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
215     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
216     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
217     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
218
219     /* Set crop settings here */
220     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
221     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
222     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
223     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
224     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
225     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
226
227     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
228      * not listed will be set to "None" and not encoded */
229     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
230     
231     /* Track 1 */        
232     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
233     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
234     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
235     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
236     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
237     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
238     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
239     [audioTrack1Array autorelease];
240     [audioListArray addObject:audioTrack1Array];
241
242     /* Track 2 */
243     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
244     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
245     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
246     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
247     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
248     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
249     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
250      * the sources bitrate, however we need to initially set the value to something so
251      * the macgui doesnt barf, so 160 seems as good as anything */
252     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
253     [audioTrack2Array autorelease];
254     [audioListArray addObject:audioTrack2Array];
255
256     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
257
258     /* Subtitles*/
259     [preset setObject:@"None" forKey:@"Subtitles"];
260
261     [preset autorelease];
262     return preset;
263 }
264
265 - (NSDictionary *)createAppleTVLegacyPreset
266 {
267     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
268
269     /* Get the New Preset Name from the field in the AddPresetPanel */
270     [preset setObject:@"AppleTV Legacy" forKey:@"PresetName"];
271
272     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
273     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
274
275     /*Set whether or not this is default, at creation set to 0*/
276     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
277
278     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
279     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
280
281     /* Get the New Preset Description from the field in the AddPresetPanel */
282     [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"];
283
284     /* File Format */
285     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
286
287     /* 64-bit MP4 file */
288     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
289
290     /* Chapter Markers*/
291      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
292
293     /* Video encoder */
294     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
295
296     /* x264 Option String (We can use this to tweak the appleTV output)*/
297     [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"];
298
299     /* Video quality */
300     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
301     [preset setObject:@"700" forKey:@"VideoTargetSize"];
302     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
303     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
304
305     /* Video framerate */
306     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
307
308     /* GrayScale */
309     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
310
311     /* 2 Pass Encoding */
312     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
313
314     /* Basic Picture Settings */
315     /* Use Max Picture settings for whatever the dvd is.*/
316     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
317     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
318     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
319     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"];
320
321     /* Explicitly set the filters for built-in presets */
322     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
323     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
324     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
325     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
326     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
327     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
328
329     /* Set crop settings here */
330     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
331     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
332     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
333     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
334     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
335     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
336
337     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
338      * not listed will be set to "None" and not encoded */
339     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
340     
341     /* Track 1 */        
342     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
343     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
344     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
345     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
346     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
347     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
348     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
349     [audioTrack1Array autorelease];
350     [audioListArray addObject:audioTrack1Array];
351
352     /* Track 2 */
353     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
354     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
355     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
356     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
357     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
358     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
359     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
360      * the sources bitrate, however we need to initially set the value to something so
361      * the macgui doesnt barf, so 160 seems as good as anything */
362     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
363     [audioTrack2Array autorelease];
364     [audioListArray addObject:audioTrack2Array];
365
366     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
367
368     /* Subtitles*/
369     [preset setObject:@"None" forKey:@"Subtitles"];
370
371     [preset autorelease];
372     return preset;
373 }
374
375 - (NSDictionary *)createAppleUniversalPreset
376 {
377     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
378
379     /* Get the New Preset Name from the field in the AddPresetPanel */
380     [preset setObject:@"Universal" forKey:@"PresetName"];
381
382     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
383     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
384     /*Set whether or not this is a folder, 1 is bool for folder*/
385     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
386     /*Set whether or not this is default, at creation set to 0*/
387     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
388
389     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
390     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
391
392     /* Get the New Preset Description from the field in the AddPresetPanel */
393     [preset setObject:@"HandBrake's universally compatible, full resolution settings for all current Apple devices: iPod (6G and up), iPhone, AppleTV, and Macs" forKey:@"PresetDescription"];
394
395     /* File Format */
396     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
397
398     /* 64-bit MP4 file */
399     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
400
401     /* Chapter Markers*/
402      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
403
404     /* Video encoder */
405     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
406
407     /* x264 Option String (We can use this to tweak the appleTV output)*/
408     [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:8x8dct=0:trellis=0:subme=6" forKey:@"x264Option"];
409
410     /* Video quality */
411     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
412     [preset setObject:@"700" forKey:@"VideoTargetSize"];
413     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
414     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
415
416     /* Video framerate */
417     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
418
419     /* GrayScale */
420     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
421
422     /* 2 Pass Encoding */
423     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
424
425     /* Basic Picture Settings */
426     /* Use Max Picture settings for whatever the dvd is.*/
427     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
428     [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"];
429     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
430     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
431     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
432
433     /* Explicitly set the filters for built-in presets */
434     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
435     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
436     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
437     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
438     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
439     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
440
441     /* Set crop settings here */
442     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
443     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
444     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
445     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
446     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
447     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
448
449     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
450      * not listed will be set to "None" and not encoded */
451     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
452     
453     /* Track 1 */        
454     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
455     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
456     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
457     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
458     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
459     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
460     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
461     [audioTrack1Array autorelease];
462     [audioListArray addObject:audioTrack1Array];
463
464     /* Track 2 */
465     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
466     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
467     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
468     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
469     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
470     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
471     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
472      * the sources bitrate, however we need to initially set the value to something so
473      * the macgui doesnt barf, so 160 seems as good as anything */
474     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
475     [audioTrack2Array autorelease];
476     [audioListArray addObject:audioTrack2Array];
477
478     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
479
480     /* Subtitles*/
481     [preset setObject:@"None" forKey:@"Subtitles"];
482
483     [preset autorelease];
484     return preset;
485 }
486
487 - (NSDictionary *)createiPadPreset
488 {
489     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
490
491     /* Get the New Preset Name from the field in the AddPresetPanel */
492     [preset setObject:@"iPad" forKey:@"PresetName"];
493
494     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
495     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
496     /*Set whether or not this is a folder, 1 is bool for folder*/
497     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
498     /*Set whether or not this is default, at creation set to 0*/
499     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
500
501     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
502     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
503
504     /* Get the New Preset Description from the field in the AddPresetPanel */
505     [preset setObject:@"HandBrake's preset for the iPad (1st gen) is optimized for viewing on its 1024x768 display." forKey:@"PresetDescription"];
506
507     /* File Format */
508     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
509
510     /* 64-bit MP4 file */
511     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
512
513     /* Chapter Markers*/
514      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
515
516     /* Video encoder */
517     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
518
519     /* x264 Option String (We can use this to tweak the output)*/
520     [preset setObject:@"" forKey:@"x264Option"];
521
522     /* Video quality */
523     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
524     [preset setObject:@"700" forKey:@"VideoTargetSize"];
525     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
526     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
527
528     /* Video framerate */
529     [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"];
530     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoFrameratePFR"];
531     
532     /* GrayScale */
533     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
534
535     /* 2 Pass Encoding */
536     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
537
538     /* Basic Picture Settings */
539     /* Use Max Picture settings for whatever the dvd is.*/
540     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
541     [preset setObject:[NSNumber numberWithInt:1024] forKey:@"PictureWidth"];
542     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
543     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
544     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
545
546     /* Explicitly set the filters for built-in presets */
547     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
548     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
549     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
550     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
551     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
552     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
553
554     /* Set crop settings here */
555     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
556     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
557     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
558     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
559     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
560     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
561
562     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
563      * not listed will be set to "None" and not encoded */
564     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
565     
566     /* Track 1 */        
567     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
568     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
569     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
570     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
571     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
572     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
573     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
574     [audioTrack1Array autorelease];
575     [audioListArray addObject:audioTrack1Array];
576
577     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
578
579     /* Subtitles*/
580     [preset setObject:@"None" forKey:@"Subtitles"];
581
582     [preset autorelease];
583     return preset;
584 }
585
586 - (NSDictionary *)createClassicPreset
587 {
588     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
589
590     /* Get the New Preset Name from the field in the AddPresetPanel */
591     [preset setObject:@"Classic" forKey:@"PresetName"];
592
593     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
594     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
595
596     /*Set whether or not this is default, at creation set to 0*/
597     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
598
599     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
600     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
601
602     /* Get the New Preset Description from the field in the AddPresetPanel */
603     [preset setObject:@"HandBrake's traditional, faster, lower-quality settings." forKey:@"PresetDescription"];
604
605     /* File Format */
606     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
607
608     /* Chapter Markers*/
609      [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"];
610
611     /* Video encoder */
612     [preset setObject:@"MPEG-4 (FFmpeg)" forKey:@"VideoEncoder"];
613
614     /* x264 Option String */
615     [preset setObject:@"" forKey:@"x264Option"];
616
617     /* Video quality */
618     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
619     [preset setObject:@"700"  forKey:@"VideoTargetSize"];
620     [preset setObject:@"1000" forKey:@"VideoAvgBitrate"];
621     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
622
623     /* Video framerate */
624     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
625
626     /* GrayScale */
627     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
628
629     /* 2 Pass Encoding */
630     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
631
632     /*Picture Settings*/
633     /* Use Max Picture settings for whatever the dvd is.*/
634     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
635     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
636     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
637     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
638     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
639
640     /* Explicitly set the filters for built-in presets */
641     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
642     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
643     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
644     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
645     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
646     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
647
648     /* Set crop settings here */
649     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
650     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
651     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
652     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
653     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
654     
655     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
656      * not listed will be set to "None" and not encoded */
657     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
658     
659     /* Track 1 */        
660     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
661     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
662     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
663     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
664     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
665     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
666     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
667     [audioTrack1Array autorelease];
668     [audioListArray addObject:audioTrack1Array];
669
670     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
671
672     /* Subtitles*/
673     [preset setObject:@"None" forKey:@"Subtitles"];
674
675     [preset autorelease];
676     return preset;
677 }
678
679 - (NSDictionary *)createHighProfilePreset
680 {
681     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
682
683     /* Get the New Preset Name from the field in the AddPresetPanel */
684     [preset setObject:@"High Profile" forKey:@"PresetName"];
685
686     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
687     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
688
689     /*Set whether or not this is default, at creation set to 0*/
690     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
691
692     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
693     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
694
695     /* Get the New Preset Description from the field in the AddPresetPanel */
696     [preset setObject:@"HandBrake's general-purpose preset for High Profile H.264 video, with all the bells and whistles." forKey:@"PresetDescription"];
697
698     /* File Format */
699     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
700
701     /* Chapter Markers*/
702      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
703
704     /* Video encoder */
705     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
706
707     /* x264 Option String */
708     [preset setObject:@"b-adapt=2:rc-lookahead=50" forKey:@"x264Option"];
709
710     /* Video quality */
711     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
712     [preset setObject:@"700" forKey:@"VideoTargetSize"];
713     [preset setObject:@"1800" forKey:@"VideoAvgBitrate"];
714     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
715
716     /* Video framerate */
717     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
718
719     /* GrayScale */
720     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
721
722     /* 2 Pass Encoding */
723     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
724     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
725
726     /*Picture Settings*/
727     /* Use Max Picture settings for whatever the dvd is.*/
728     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
729     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
730     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
731     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
732     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
733
734     /* Explicitly set the filters for built-in presets */
735     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
736     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"];
737     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
738     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
739     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
740     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureDetelecine"];
741     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureDecomb"];
742
743     /* Set crop settings here */
744     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
745     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
746     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
747     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
748     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
749
750     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
751      * not listed will be set to "None" and not encoded */
752     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
753     
754     /* Track 1 */        
755     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
756     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
757     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
758     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
759     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
760     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
761     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
762     [audioTrack1Array autorelease];
763     [audioListArray addObject:audioTrack1Array];
764
765     /* Track 2 */
766     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
767     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
768     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
769     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
770     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
771     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
772     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
773      * the sources bitrate, however we need to initially set the value to something so
774      * the macgui doesnt barf, so 160 seems as good as anything */
775     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
776     [audioTrack2Array autorelease];
777     [audioListArray addObject:audioTrack2Array];
778
779     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
780
781     /* Subtitles*/
782     [preset setObject:@"None" forKey:@"Subtitles"];
783
784     [preset autorelease];
785     return preset;
786 }
787
788 - (NSDictionary *)createiPhonePreset
789 {
790     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
791
792     /* Get the New Preset Name from the field in the AddPresetPanel */
793     [preset setObject:@"iPhone & iPod Touch" forKey:@"PresetName"];
794
795     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
796     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
797
798     /*Set whether or not this is default, at creation set to 0*/
799     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
800
801     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
802     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
803
804     /* Get the New Preset Description from the field in the AddPresetPanel */
805     [preset setObject:@"HandBrake's settings for all iPhones and iPod Touches going back to the original iPhone 2G." forKey:@"PresetDescription"];
806
807     /* File Format */
808     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
809
810     /* Chapter Markers*/
811      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
812
813     /* Video encoder */
814     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
815     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
816     /* x264 Option String */
817     [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
818
819     /* Video quality */
820     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
821     [preset setObject:@"700" forKey:@"VideoTargetSize"];
822     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
823     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
824
825     /* Video framerate */
826     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
827
828     /* GrayScale */
829     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
830
831     /* 2 Pass Encoding */
832     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
833
834     /*Picture Settings*/
835     /* Use a width of 480 for the iPhone*/
836     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
837     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
838     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
839     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
840
841     /* Explicitly set the filters for built-in presets */
842     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
843     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
844     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
845     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
846     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
847     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
848
849     /* Set crop settings here */
850     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
851     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
852     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
853     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
854     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
855     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
856
857     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
858      * not listed will be set to "None" and not encoded */
859     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
860     
861     /* Track 1 */        
862     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
863     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
864     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
865     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
866     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
867     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
868     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
869     [audioTrack1Array autorelease];
870     [audioListArray addObject:audioTrack1Array];
871
872     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
873
874     /* Subtitles*/
875     [preset setObject:@"None" forKey:@"Subtitles"];
876
877     [preset autorelease];
878     return preset;
879 }
880
881 - (NSDictionary *)createiPhoneLegacyPreset
882 {
883     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
884
885     /* Get the New Preset Name from the field in the AddPresetPanel */
886     [preset setObject:@"iPhone Legacy" forKey:@"PresetName"];
887
888     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
889     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
890
891     /*Set whether or not this is default, at creation set to 0*/
892     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
893
894     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
895     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
896
897     /* Get the New Preset Description from the field in the AddPresetPanel */
898     [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"];
899
900     /* File Format */
901     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
902
903     /* Chapter Markers*/
904      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
905
906     /* Video encoder */
907     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
908     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
909     /* x264 Option String */
910     [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"];
911
912     /* Video quality */
913     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
914     [preset setObject:@"700" forKey:@"VideoTargetSize"];
915     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
916     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
917
918     /* Video framerate */
919     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
920
921     /* GrayScale */
922     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
923
924     /* 2 Pass Encoding */
925     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
926
927     /*Picture Settings*/
928     /* Use a width of 480 for the iPhone*/
929     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
930     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
931     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
932     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
933
934     /* Explicitly set the filters for built-in presets */
935     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
936     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
937     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
938     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
939     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
940     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
941
942     /* Set crop settings here */
943     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
944     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
945     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
946     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
947     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
948     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
949
950     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
951      * not listed will be set to "None" and not encoded */
952     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
953     
954     /* Track 1 */        
955     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
956     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
957     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
958     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
959     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
960     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
961     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
962     [audioTrack1Array autorelease];
963     [audioListArray addObject:audioTrack1Array];
964
965     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
966
967     /* Subtitles*/
968     [preset setObject:@"None" forKey:@"Subtitles"];
969
970     [preset autorelease];
971     return preset;
972 }
973
974 - (NSDictionary *)createIpodHighPreset
975 {
976     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
977
978     /* Get the New Preset Name from the field in the AddPresetPanel */
979     [preset setObject:@"iPod Legacy" forKey:@"PresetName"];
980
981     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
982     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
983
984     /*Set whether or not this is default, at creation set to 0*/
985     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
986
987     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
988     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
989
990     /* Get the New Preset Description from the field in the AddPresetPanel */
991     [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"];
992
993     /* File Format */
994     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
995
996     /* Chapter Markers*/
997      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
998
999     /* Video encoder */
1000     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1001     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
1002     /* x264 Option String */
1003     [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"];
1004
1005     /* Video quality */
1006     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
1007     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1008     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
1009     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
1010
1011     /* Video framerate */
1012     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1013
1014     /* GrayScale */
1015     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1016
1017     /* 2 Pass Encoding */
1018     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1019
1020     /*Picture Settings*/
1021     /* Use a width of 640 for iPod TV-out */
1022     [preset setObject:[NSNumber numberWithInt:640] forKey:@"PictureWidth"];
1023     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1024     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
1025     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
1026
1027     /* Explicitly set the filters for built-in presets */
1028     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1029     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1030     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1031     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1032     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1033     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1034
1035     /* Set crop settings here */
1036     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1037     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1038     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1039     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1040     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1041     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1042
1043     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1044      * not listed will be set to "None" and not encoded */
1045     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1046     
1047     /* Track 1 */        
1048     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1049     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1050     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1051     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1052     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1053     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1054     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1055     [audioTrack1Array autorelease];
1056     [audioListArray addObject:audioTrack1Array];
1057
1058     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1059
1060     /* Subtitles*/
1061     [preset setObject:@"None" forKey:@"Subtitles"];
1062
1063     [preset autorelease];
1064     return preset;
1065 }
1066
1067 - (NSDictionary *)createIpodLowPreset
1068 {
1069     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1070
1071     /* Get the New Preset Name from the field in the AddPresetPanel */
1072     [preset setObject:@"iPod" forKey:@"PresetName"];
1073
1074     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1075     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1076
1077     /*Set whether or not this is default, at creation set to 0*/
1078     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
1079
1080     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1081     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
1082
1083     /* Get the New Preset Description from the field in the AddPresetPanel */
1084     [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"];
1085
1086     /* File Format */
1087     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1088
1089     /* Chapter Markers*/
1090      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1091
1092     /* Video encoder */
1093     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1094     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
1095     /* x264 Option String */
1096     [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"];
1097
1098     /* Video quality */
1099     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
1100     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1101     [preset setObject:@"700" forKey:@"VideoAvgBitrate"];
1102     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
1103
1104     /* Video framerate */
1105     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1106
1107     /* GrayScale */
1108     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1109
1110     /* 2 Pass Encoding */
1111     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1112
1113     /*Picture Settings*/
1114     /* Use a width of 320 for the iPod screen */
1115     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1116     [preset setObject:[NSNumber numberWithInt:320] forKey:@"PictureWidth"];
1117     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1118     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
1119     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
1120
1121     /* Explicitly set the filters for built-in presets */
1122     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1123     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1124     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1125     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1126     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1127     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1128
1129     /* Set crop settings here */
1130     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1131     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1132     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1133     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1134     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1135
1136     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1137      * not listed will be set to "None" and not encoded */
1138     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1139     
1140     /* Track 1 */        
1141     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1142     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1143     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1144     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1145     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1146     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1147     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1148     [audioTrack1Array autorelease];
1149     [audioListArray addObject:audioTrack1Array];
1150
1151     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1152
1153     /* Subtitles*/
1154     [preset setObject:@"None" forKey:@"Subtitles"];
1155
1156     [preset autorelease];
1157     return preset;
1158 }
1159
1160 - (NSDictionary *)createNormalPreset
1161 {
1162     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1163
1164     /* Get the New Preset Name from the field in the AddPresetPanel */
1165     [preset setObject:@"Normal" forKey:@"PresetName"];
1166
1167     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1168     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1169
1170     /*Set whether or not this is default, at creation set to 0*/
1171     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Default"];
1172
1173     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1174     [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
1175
1176     /* Get the New Preset Description from the field in the AddPresetPanel */
1177     [preset setObject:@"HandBrake's normal, default settings." forKey:@"PresetDescription"];
1178
1179     /* File Format */
1180     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1181
1182     /* Chapter Markers*/
1183      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1184
1185     /* Video encoder */
1186     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1187
1188     /* x264 Option String */
1189     [preset setObject:@"ref=2:bframes=2:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0" forKey:@"x264Option"];
1190
1191     /* Video quality */
1192     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
1193     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1194     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
1195     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
1196
1197     /* Video framerate */
1198     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1199
1200     /* GrayScale */
1201     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1202
1203     /* 2 Pass Encoding */
1204     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1205     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
1206
1207     /*Picture Settings*/
1208     /* Use Max Picture settings for whatever the dvd is.*/
1209     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1210     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
1211     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1212     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
1213     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"];
1214
1215     /* Explicitly set the filters for built-in presets */
1216     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1217     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1218     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1219     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1220     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1221     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1222
1223     /* Set crop settings here */
1224     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1225     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1226     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1227     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1228     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1229
1230     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1231      * not listed will be set to "None" and not encoded */
1232     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1233     
1234     /* Track 1 */        
1235     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1236     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1237     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1238     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1239     [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
1240     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1241     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1242     [audioTrack1Array autorelease];
1243     [audioListArray addObject:audioTrack1Array];
1244
1245     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1246
1247     /* Subtitles*/
1248     [preset setObject:@"None" forKey:@"Subtitles"];
1249
1250     [preset autorelease];
1251     return preset;
1252 }
1253
1254
1255 @end