OSDN Git Service

CLI: Missed file from SubRip - a symptom of too many views and patches
[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 createAppleTVPreset]];
65
66     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
67     
68     [childrenArray autorelease];
69
70
71
72     [preset autorelease];
73     return preset;
74 }
75
76 - (NSDictionary *)createRegularPresetFolder
77 {
78     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
79 /*Set whether or not this is a folder, 1 is bool for folder*/
80     [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
81
82
83     /* Get the New Preset Name from the field in the AddPresetPanel */
84     [preset setObject:@"Regular" forKey:@"PresetName"];
85
86     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
87     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
88
89     /*Set whether or not this is default, at creation set to 0*/
90     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
91     
92     /* Lets initalize the child array of dictionaries for folders, this
93      is an array of dictionaries much like the root level of presets and
94      may contain folders and presets alike, etc.*/
95     NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
96     /* we actually call the methods for the nests here */
97     [childrenArray addObject:[self createNormalPreset]];
98     [childrenArray addObject:[self createHighProfilePreset]];
99     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
100     
101     [childrenArray autorelease];
102
103
104
105     [preset autorelease];
106     return preset;
107 }
108
109 - (NSDictionary *)createLegacyPresetFolder
110 {
111     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
112 /*Set whether or not this is a folder, 1 is bool for folder*/
113     [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
114
115
116     /* Get the New Preset Name from the field in the AddPresetPanel */
117     [preset setObject:@"Legacy" forKey:@"PresetName"];
118
119     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
120     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
121
122     /*Set whether or not this is default, at creation set to 0*/
123     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
124     
125     /* Lets initalize the child array of dictionaries for folders, this
126      is an array of dictionaries much like the root level of presets and
127      may contain folders and presets alike, etc.*/
128     NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
129     /* we actually call the methods for the nests here */
130     [childrenArray addObject:[self createClassicPreset]];
131     [childrenArray addObject:[self createAppleTVLegacyPreset]];
132     [childrenArray addObject:[self createiPhoneLegacyPreset]];
133     [childrenArray addObject:[self createIpodHighPreset]];
134     [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
135     
136     [childrenArray autorelease];
137
138
139
140     [preset autorelease];
141     return preset;
142 }
143
144
145 #pragma mark -
146
147 #pragma mark Built In Preset Definitions
148
149 /* These NSDictionary Buit-In Preset definitions contain all of the settings for one built in preset */
150 /* Note: For now, you can no longer have reference to any main window fields in your key values */
151
152 - (NSDictionary *)createAppleTVPreset
153 {
154     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
155
156     /* Get the New Preset Name from the field in the AddPresetPanel */
157     [preset setObject:@"AppleTV" forKey:@"PresetName"];
158
159     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
160     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
161     /*Set whether or not this is a folder, 1 is bool for folder*/
162     [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
163     /*Set whether or not this is default, at creation set to 0*/
164     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
165
166     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
167     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
168
169     /* Get the New Preset Description from the field in the AddPresetPanel */
170     [preset setObject:@"HandBrake's settings for the AppleTV, including Dolby Digital 5.1 AC3 sound. Provides a good balance between quality and file size, and pushes the AppleTV to its limits." forKey:@"PresetDescription"];
171
172     /* File Format */
173     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
174
175     /* 64-bit MP4 file */
176     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
177
178     /* Chapter Markers*/
179      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
180
181     /* Video encoder */
182     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
183
184     /* x264 Option String (We can use this to tweak the appleTV output)*/
185     [preset setObject:@"cabac=0:ref=2:mixed-refs=1:bframes=3:me=umh:subme=7:b-adapt=2:8x8dct=1" forKey:@"x264Option"];
186
187     /* Video quality */
188     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
189     [preset setObject:@"700" forKey:@"VideoTargetSize"];
190     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
191     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
192
193     /* Video framerate */
194     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
195
196     /* GrayScale */
197     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
198
199     /* 2 Pass Encoding */
200     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
201
202     /* Basic Picture Settings */
203     /* Use Max Picture settings for whatever the dvd is.*/
204     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
205     [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"];
206     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
207     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
208     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
209
210     /* Explicitly set the filters for built-in presets */
211     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
212     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
213     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
214     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
215     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
216     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
217
218     /* Set crop settings here */
219     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
220     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];    
221     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
222     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
223     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
224     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
225
226     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
227      * not listed will be set to "None" and not encoded */
228     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
229     
230     /* Track 1 */        
231     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
232     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
233     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
234     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
235     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
236     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
237     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
238     [audioTrack1Array autorelease];
239     [audioListArray addObject:audioTrack1Array];
240
241     /* Track 2 */
242     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
243     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
244     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
245     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
246     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
247     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
248     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
249      * the sources bitrate, however we need to initially set the value to something so
250      * the macgui doesnt barf, so 160 seems as good as anything */
251     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
252     [audioTrack2Array autorelease];
253     [audioListArray addObject:audioTrack2Array];
254
255     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
256
257     /* Subtitles*/
258     [preset setObject:@"None" forKey:@"Subtitles"];
259
260     [preset autorelease];
261     return preset;
262 }
263
264 - (NSDictionary *)createAppleTVLegacyPreset
265 {
266     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
267
268     /* Get the New Preset Name from the field in the AddPresetPanel */
269     [preset setObject:@"AppleTV Legacy" forKey:@"PresetName"];
270
271     /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
272     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
273
274     /*Set whether or not this is default, at creation set to 0*/
275     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
276
277     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
278     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
279
280     /* Get the New Preset Description from the field in the AddPresetPanel */
281     [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"];
282
283     /* File Format */
284     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
285
286     /* 64-bit MP4 file */
287     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
288
289     /* Chapter Markers*/
290      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
291
292     /* Video encoder */
293     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
294
295     /* x264 Option String (We can use this to tweak the appleTV output)*/
296     [preset setObject:@"bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:cabac=0" forKey:@"x264Option"];
297
298     /* Video quality */
299     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
300     [preset setObject:@"700" forKey:@"VideoTargetSize"];
301     [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
302     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
303
304     /* Video framerate */
305     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
306
307     /* GrayScale */
308     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
309
310     /* 2 Pass Encoding */
311     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
312
313     /* Basic Picture Settings */
314     /* Use Max Picture settings for whatever the dvd is.*/
315     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesMaxPictureSettings"];
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:@"48" 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:mixed-refs=1:me=umh" 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:@"48" 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 *)createClassicPreset
488 {
489     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
490
491     /* Get the New Preset Name from the field in the AddPresetPanel */
492     [preset setObject:@"Classic" forKey:@"PresetName"];
493
494     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
495     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
496
497     /*Set whether or not this is default, at creation set to 0*/
498     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
499
500     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
501     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
502
503     /* Get the New Preset Description from the field in the AddPresetPanel */
504     [preset setObject:@"HandBrake's traditional, faster, lower-quality settings." forKey:@"PresetDescription"];
505
506     /* File Format */
507     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
508
509     /* Chapter Markers*/
510      [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"];
511
512     /* Video encoder */
513     [preset setObject:@"MPEG-4 (FFmpeg)" forKey:@"VideoEncoder"];
514
515     /* x264 Option String */
516     [preset setObject:@"" forKey:@"x264Option"];
517
518     /* Video quality */
519     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
520     [preset setObject:@"700"  forKey:@"VideoTargetSize"];
521     [preset setObject:@"1000" forKey:@"VideoAvgBitrate"];
522     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
523
524     /* Video framerate */
525     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
526
527     /* GrayScale */
528     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
529
530     /* 2 Pass Encoding */
531     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
532
533     /*Picture Settings*/
534     /* Use Max Picture settings for whatever the dvd is.*/
535     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesMaxPictureSettings"];
536     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
537     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
538     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
539     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
540     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
541
542     /* Explicitly set the filters for built-in presets */
543     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
544     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
545     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
546     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
547     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
548     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
549
550     /* Set crop settings here */
551     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
552     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
553     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
554     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
555     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
556     
557     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
558      * not listed will be set to "None" and not encoded */
559     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
560     
561     /* Track 1 */        
562     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
563     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
564     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
565     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
566     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
567     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
568     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
569     [audioTrack1Array autorelease];
570     [audioListArray addObject:audioTrack1Array];
571
572     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
573
574     /* Subtitles*/
575     [preset setObject:@"None" forKey:@"Subtitles"];
576
577     [preset autorelease];
578     return preset;
579 }
580
581 - (NSDictionary *)createHighProfilePreset
582 {
583     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
584
585     /* Get the New Preset Name from the field in the AddPresetPanel */
586     [preset setObject:@"High Profile" forKey:@"PresetName"];
587
588     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
589     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
590
591     /*Set whether or not this is default, at creation set to 0*/
592     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
593
594     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
595     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
596
597     /* Get the New Preset Description from the field in the AddPresetPanel */
598     [preset setObject:@"HandBrake's general-purpose preset for High Profile H.264 video, with all the bells and whistles." forKey:@"PresetDescription"];
599
600     /* File Format */
601     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
602
603     /* Chapter Markers*/
604      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
605
606     /* Video encoder */
607     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
608
609     /* x264 Option String */
610     [preset setObject:@"ref=3:mixed-refs:bframes=3:weightb:b-pyramid:b-adapt=2:me=umh:subme=9:analyse=all:8x8dct" forKey:@"x264Option"];
611
612     /* Video quality */
613     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
614     [preset setObject:@"700" forKey:@"VideoTargetSize"];
615     [preset setObject:@"1800" forKey:@"VideoAvgBitrate"];
616     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
617
618     /* Video framerate */
619     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
620
621     /* GrayScale */
622     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
623
624     /* 2 Pass Encoding */
625     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
626     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
627
628     /*Picture Settings*/
629     /* Use Max Picture settings for whatever the dvd is.*/
630     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesMaxPictureSettings"];
631     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
632     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
633     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
634     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
635     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
636
637     /* Explicitly set the filters for built-in presets */
638     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
639     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
640     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
641     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
642     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDetelecine"];
643     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecomb"];
644
645     /* Set crop settings here */
646     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
647     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
648     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
649     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
650     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
651
652     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
653      * not listed will be set to "None" and not encoded */
654     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
655     
656     /* Track 1 */        
657     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
658     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
659     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
660     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
661     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
662     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
663     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
664     [audioTrack1Array autorelease];
665     [audioListArray addObject:audioTrack1Array];
666
667     /* Track 2 */
668     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
669     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
670     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
671     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
672     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
673     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
674     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
675      * the sources bitrate, however we need to initially set the value to something so
676      * the macgui doesnt barf, so 160 seems as good as anything */
677     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
678     [audioTrack2Array autorelease];
679     [audioListArray addObject:audioTrack2Array];
680
681     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
682
683     /* Subtitles*/
684     [preset setObject:@"None" forKey:@"Subtitles"];
685
686     [preset autorelease];
687     return preset;
688 }
689
690 - (NSDictionary *)createiPhonePreset
691 {
692     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
693
694     /* Get the New Preset Name from the field in the AddPresetPanel */
695     [preset setObject:@"iPhone & iPod Touch" forKey:@"PresetName"];
696
697     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
698     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
699
700     /*Set whether or not this is default, at creation set to 0*/
701     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
702
703     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
704     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
705
706     /* Get the New Preset Description from the field in the AddPresetPanel */
707     [preset setObject:@"HandBrake's settings for the iPhone and iPod Touch." forKey:@"PresetDescription"];
708
709     /* File Format */
710     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
711
712     /* Chapter Markers*/
713      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
714
715     /* Video encoder */
716     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
717     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
718     /* x264 Option String */
719     [preset setObject:@"cabac=0:ref=2:mixed-refs:me=umh" forKey:@"x264Option"];
720
721     /* Video quality */
722     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
723     [preset setObject:@"700" forKey:@"VideoTargetSize"];
724     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
725     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
726
727     /* Video framerate */
728     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
729
730     /* GrayScale */
731     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
732
733     /* 2 Pass Encoding */
734     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
735
736     /*Picture Settings*/
737     /* Use a width of 480 for the iPhone*/
738     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
739     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
740     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
741     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
742     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
743
744     /* Explicitly set the filters for built-in presets */
745     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
746     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
747     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
748     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
749     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
750     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
751
752     /* Set crop settings here */
753     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
754     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
755     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
756     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
757     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
758     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
759
760     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
761      * not listed will be set to "None" and not encoded */
762     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
763     
764     /* Track 1 */        
765     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
766     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
767     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
768     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
769     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
770     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
771     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
772     [audioTrack1Array autorelease];
773     [audioListArray addObject:audioTrack1Array];
774
775     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
776
777     /* Subtitles*/
778     [preset setObject:@"None" forKey:@"Subtitles"];
779
780     [preset autorelease];
781     return preset;
782 }
783
784 - (NSDictionary *)createiPhoneLegacyPreset
785 {
786     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
787
788     /* Get the New Preset Name from the field in the AddPresetPanel */
789     [preset setObject:@"iPhone Legacy" forKey:@"PresetName"];
790
791     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
792     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
793
794     /*Set whether or not this is default, at creation set to 0*/
795     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
796
797     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
798     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
799
800     /* Get the New Preset Description from the field in the AddPresetPanel */
801     [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"];
802
803     /* File Format */
804     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
805
806     /* Chapter Markers*/
807      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
808
809     /* Video encoder */
810     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
811     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
812     /* x264 Option String */
813     [preset setObject:@"level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0" forKey:@"x264Option"];
814
815     /* Video quality */
816     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
817     [preset setObject:@"700" forKey:@"VideoTargetSize"];
818     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
819     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
820
821     /* Video framerate */
822     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
823
824     /* GrayScale */
825     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
826
827     /* 2 Pass Encoding */
828     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
829
830     /*Picture Settings*/
831     /* Use a width of 480 for the iPhone*/
832     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
833     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
834     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
835     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
836     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
837
838     /* Explicitly set the filters for built-in presets */
839     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
840     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
841     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
842     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
843     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
844     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
845
846     /* Set crop settings here */
847     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
848     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
849     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
850     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
851     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
852     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
853
854     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
855      * not listed will be set to "None" and not encoded */
856     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
857     
858     /* Track 1 */        
859     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
860     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
861     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
862     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
863     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
864     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
865     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
866     [audioTrack1Array autorelease];
867     [audioListArray addObject:audioTrack1Array];
868
869     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
870
871     /* Subtitles*/
872     [preset setObject:@"None" forKey:@"Subtitles"];
873
874     [preset autorelease];
875     return preset;
876 }
877
878 - (NSDictionary *)createIpodHighPreset
879 {
880     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
881
882     /* Get the New Preset Name from the field in the AddPresetPanel */
883     [preset setObject:@"iPod Legacy" forKey:@"PresetName"];
884
885     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
886     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
887
888     /*Set whether or not this is default, at creation set to 0*/
889     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
890
891     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
892     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
893
894     /* Get the New Preset Description from the field in the AddPresetPanel */
895     [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"];
896
897     /* File Format */
898     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
899
900     /* Chapter Markers*/
901      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
902
903     /* Video encoder */
904     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
905     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
906     /* x264 Option String */
907     [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0" forKey:@"x264Option"];
908
909     /* Video quality */
910     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
911     [preset setObject:@"700" forKey:@"VideoTargetSize"];
912     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
913     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
914
915     /* Video framerate */
916     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
917
918     /* GrayScale */
919     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
920
921     /* 2 Pass Encoding */
922     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
923
924     /*Picture Settings*/
925     /* Use a width of 640 for iPod TV-out */
926     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
927     [preset setObject:[NSNumber numberWithInt:640] forKey:@"PictureWidth"];
928     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
929     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
930     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
931
932     /* Explicitly set the filters for built-in presets */
933     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
934     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
935     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
936     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
937     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
938     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
939
940     /* Set crop settings here */
941     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
942     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
943     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
944     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
945     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
946     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
947
948     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
949      * not listed will be set to "None" and not encoded */
950     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
951     
952     /* Track 1 */        
953     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
954     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
955     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
956     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
957     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
958     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
959     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
960     [audioTrack1Array autorelease];
961     [audioListArray addObject:audioTrack1Array];
962
963     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
964
965     /* Subtitles*/
966     [preset setObject:@"None" forKey:@"Subtitles"];
967
968     [preset autorelease];
969     return preset;
970 }
971
972 - (NSDictionary *)createIpodLowPreset
973 {
974     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
975
976     /* Get the New Preset Name from the field in the AddPresetPanel */
977     [preset setObject:@"iPod" forKey:@"PresetName"];
978
979     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
980     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
981
982     /*Set whether or not this is default, at creation set to 0*/
983     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
984
985     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
986     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
987
988     /* Get the New Preset Description from the field in the AddPresetPanel */
989     [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"];
990
991     /* File Format */
992     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
993
994     /* Chapter Markers*/
995      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
996
997     /* Video encoder */
998     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
999     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
1000     /* x264 Option String */
1001     [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1" forKey:@"x264Option"];
1002
1003     /* Video quality */
1004     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
1005     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1006     [preset setObject:@"700" forKey:@"VideoAvgBitrate"];
1007     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
1008
1009     /* Video framerate */
1010     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1011
1012     /* GrayScale */
1013     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1014
1015     /* 2 Pass Encoding */
1016     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1017
1018     /*Picture Settings*/
1019     /* Use a width of 320 for the iPod screen */
1020     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
1021     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1022     [preset setObject:[NSNumber numberWithInt:320] 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:0] forKey:@"PictureTopCrop"];
1038     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1039     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1040     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1041
1042     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1043      * not listed will be set to "None" and not encoded */
1044     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1045     
1046     /* Track 1 */        
1047     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1048     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1049     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1050     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1051     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
1052     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1053     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1054     [audioTrack1Array autorelease];
1055     [audioListArray addObject:audioTrack1Array];
1056
1057     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1058
1059     /* Subtitles*/
1060     [preset setObject:@"None" forKey:@"Subtitles"];
1061
1062     [preset autorelease];
1063     return preset;
1064 }
1065
1066 - (NSDictionary *)createNormalPreset
1067 {
1068     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1069
1070     /* Get the New Preset Name from the field in the AddPresetPanel */
1071     [preset setObject:@"Normal" forKey:@"PresetName"];
1072
1073     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
1074     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
1075
1076     /*Set whether or not this is default, at creation set to 0*/
1077     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Default"];
1078
1079     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1080     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
1081
1082     /* Get the New Preset Description from the field in the AddPresetPanel */
1083     [preset setObject:@"HandBrake's normal, default settings." forKey:@"PresetDescription"];
1084
1085     /* File Format */
1086     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1087
1088     /* Chapter Markers*/
1089      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1090
1091     /* Video encoder */
1092     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1093
1094     /* x264 Option String */
1095     [preset setObject:@"ref=2:bframes=2:me=umh" forKey:@"x264Option"];
1096
1097     /* Video quality */
1098     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
1099     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1100     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
1101     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
1102
1103     /* Video framerate */
1104     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1105
1106     /* GrayScale */
1107     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1108
1109     /* 2 Pass Encoding */
1110     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1111     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
1112
1113     /*Picture Settings*/
1114     /* Use Max Picture settings for whatever the dvd is.*/
1115     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesMaxPictureSettings"];
1116     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1117     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
1118     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1119     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
1120     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"];
1121
1122     /* Explicitly set the filters for built-in presets */
1123     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1124     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1125     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1126     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1127     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1128     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1129
1130     /* Set crop settings here */
1131     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1132     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1133     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1134     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1135     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1136
1137     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1138      * not listed will be set to "None" and not encoded */
1139     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1140     
1141     /* Track 1 */        
1142     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1143     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1144     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1145     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1146     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
1147     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1148     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1149     [audioTrack1Array autorelease];
1150     [audioListArray addObject:audioTrack1Array];
1151
1152     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1153
1154     /* Subtitles*/
1155     [preset setObject:@"None" forKey:@"Subtitles"];
1156
1157     [preset autorelease];
1158     return preset;
1159 }
1160
1161
1162 @end