OSDN Git Service

import 0.9.4
[handbrake-jp/handbrake-jp.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 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"];
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:me=umh:b-adapt=2:weightb=0:trellis=0:weightp=0" 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:@"ref=1:subme=5:me=umh:no-fast-pskip=1:cabac=0:weightb=0:8x8dct=0:trellis=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:me=umh:bframes=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:@"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:@"b-adapt=2:rc-lookahead=50" 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:1] forKey:@"PictureDecombDeinterlace"];
640     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
641     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
642     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
643     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureDetelecine"];
644     [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureDecomb"];
645
646     /* Set crop settings here */
647     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
648     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
649     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
650     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
651     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
652
653     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
654      * not listed will be set to "None" and not encoded */
655     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
656     
657     /* Track 1 */        
658     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
659     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
660     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
661     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
662     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
663     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
664     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
665     [audioTrack1Array autorelease];
666     [audioListArray addObject:audioTrack1Array];
667
668     /* Track 2 */
669     NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init];
670     [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
671     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"];
672     [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioMixdown"];
673     [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"];
674     [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"];
675     /* Note: we ignore specified bitrate for AC3 Passthru in libhb and use
676      * the sources bitrate, however we need to initially set the value to something so
677      * the macgui doesnt barf, so 160 seems as good as anything */
678     [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
679     [audioTrack2Array autorelease];
680     [audioListArray addObject:audioTrack2Array];
681
682     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
683
684     /* Subtitles*/
685     [preset setObject:@"None" forKey:@"Subtitles"];
686
687     [preset autorelease];
688     return preset;
689 }
690
691 - (NSDictionary *)createiPhonePreset
692 {
693     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
694
695     /* Get the New Preset Name from the field in the AddPresetPanel */
696     [preset setObject:@"iPhone & iPod Touch" forKey:@"PresetName"];
697
698     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
699     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
700
701     /*Set whether or not this is default, at creation set to 0*/
702     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
703
704     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
705     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
706
707     /* Get the New Preset Description from the field in the AddPresetPanel */
708     [preset setObject:@"HandBrake's settings for all iPhones and iPod Touches going back to the original iPhone 2G." forKey:@"PresetDescription"];
709
710     /* File Format */
711     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
712
713     /* Chapter Markers*/
714      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
715
716     /* Video encoder */
717     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
718     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
719     /* x264 Option String */
720     [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
721
722     /* Video quality */
723     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
724     [preset setObject:@"700" forKey:@"VideoTargetSize"];
725     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
726     [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
727
728     /* Video framerate */
729     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
730
731     /* GrayScale */
732     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
733
734     /* 2 Pass Encoding */
735     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
736
737     /*Picture Settings*/
738     /* Use a width of 480 for the iPhone*/
739     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
740     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
741     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
742     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
743     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
744
745     /* Explicitly set the filters for built-in presets */
746     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
747     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
748     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
749     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
750     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
751     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
752
753     /* Set crop settings here */
754     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
755     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
756     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
757     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
758     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
759     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
760
761     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
762      * not listed will be set to "None" and not encoded */
763     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
764     
765     /* Track 1 */        
766     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
767     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
768     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
769     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
770     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
771     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
772     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
773     [audioTrack1Array autorelease];
774     [audioListArray addObject:audioTrack1Array];
775
776     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
777
778     /* Subtitles*/
779     [preset setObject:@"None" forKey:@"Subtitles"];
780
781     [preset autorelease];
782     return preset;
783 }
784
785 - (NSDictionary *)createiPhoneLegacyPreset
786 {
787     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
788
789     /* Get the New Preset Name from the field in the AddPresetPanel */
790     [preset setObject:@"iPhone Legacy" forKey:@"PresetName"];
791
792     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
793     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
794
795     /*Set whether or not this is default, at creation set to 0*/
796     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
797
798     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
799     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
800
801     /* Get the New Preset Description from the field in the AddPresetPanel */
802     [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"];
803
804     /* File Format */
805     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
806
807     /* Chapter Markers*/
808      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
809
810     /* Video encoder */
811     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
812     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
813     /* x264 Option String */
814     [preset setObject:@"level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:bframes=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
815
816     /* Video quality */
817     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
818     [preset setObject:@"700" forKey:@"VideoTargetSize"];
819     [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
820     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
821
822     /* Video framerate */
823     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
824
825     /* GrayScale */
826     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
827
828     /* 2 Pass Encoding */
829     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
830
831     /*Picture Settings*/
832     /* Use a width of 480 for the iPhone*/
833     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
834     [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
835     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
836     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
837     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
838
839     /* Explicitly set the filters for built-in presets */
840     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
841     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
842     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
843     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
844     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
845     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
846
847     /* Set crop settings here */
848     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
849     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
850     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
851     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
852     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
853     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
854
855     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
856      * not listed will be set to "None" and not encoded */
857     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
858     
859     /* Track 1 */        
860     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
861     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
862     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
863     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
864     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
865     [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
866     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
867     [audioTrack1Array autorelease];
868     [audioListArray addObject:audioTrack1Array];
869
870     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
871
872     /* Subtitles*/
873     [preset setObject:@"None" forKey:@"Subtitles"];
874
875     [preset autorelease];
876     return preset;
877 }
878
879 - (NSDictionary *)createIpodHighPreset
880 {
881     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
882
883     /* Get the New Preset Name from the field in the AddPresetPanel */
884     [preset setObject:@"iPod Legacy" forKey:@"PresetName"];
885
886     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
887     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
888
889     /*Set whether or not this is default, at creation set to 0*/
890     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
891
892     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
893     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
894
895     /* Get the New Preset Description from the field in the AddPresetPanel */
896     [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"];
897
898     /* File Format */
899     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
900
901     /* Chapter Markers*/
902      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
903
904     /* Video encoder */
905     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
906     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
907     /* x264 Option String */
908     [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
909
910     /* Video quality */
911     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
912     [preset setObject:@"700" forKey:@"VideoTargetSize"];
913     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
914     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
915
916     /* Video framerate */
917     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
918
919     /* GrayScale */
920     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
921
922     /* 2 Pass Encoding */
923     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
924
925     /*Picture Settings*/
926     /* Use a width of 640 for iPod TV-out */
927     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
928     [preset setObject:[NSNumber numberWithInt:640] forKey:@"PictureWidth"];
929     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
930     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
931     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
932
933     /* Explicitly set the filters for built-in presets */
934     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
935     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
936     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
937     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
938     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
939     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
940
941     /* Set crop settings here */
942     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
943     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
944     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
945     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
946     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
947     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
948
949     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
950      * not listed will be set to "None" and not encoded */
951     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
952     
953     /* Track 1 */        
954     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
955     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
956     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
957     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
958     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
959     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
960     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
961     [audioTrack1Array autorelease];
962     [audioListArray addObject:audioTrack1Array];
963
964     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
965
966     /* Subtitles*/
967     [preset setObject:@"None" forKey:@"Subtitles"];
968
969     [preset autorelease];
970     return preset;
971 }
972
973 - (NSDictionary *)createIpodLowPreset
974 {
975     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
976
977     /* Get the New Preset Name from the field in the AddPresetPanel */
978     [preset setObject:@"iPod" forKey:@"PresetName"];
979
980     /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
981     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
982
983     /*Set whether or not this is default, at creation set to 0*/
984     [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
985
986     /*Get the whether or not to apply pic settings in the AddPresetPanel*/
987     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
988
989     /* Get the New Preset Description from the field in the AddPresetPanel */
990     [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"];
991
992     /* File Format */
993     [preset setObject:@"MP4 file" forKey:@"FileFormat"];
994
995     /* Chapter Markers*/
996      [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
997
998     /* Video encoder */
999     [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1000     [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
1001     /* x264 Option String */
1002     [preset setObject:@"level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
1003
1004     /* Video quality */
1005     [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
1006     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1007     [preset setObject:@"700" forKey:@"VideoAvgBitrate"];
1008     [preset setObject:[NSNumber numberWithFloat:0.6471] forKey:@"VideoQualitySlider"];
1009
1010     /* Video framerate */
1011     [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1012
1013     /* GrayScale */
1014     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1015
1016     /* 2 Pass Encoding */
1017     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1018
1019     /*Picture Settings*/
1020     /* Use a width of 320 for the iPod screen */
1021     [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"];
1022     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1023     [preset setObject:[NSNumber numberWithInt:320] forKey:@"PictureWidth"];
1024     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1025     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
1026     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
1027
1028     /* Explicitly set the filters for built-in presets */
1029     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1030     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1031     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1032     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1033     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1034     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1035
1036     /* Set crop settings here */
1037     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
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:@"48" 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 *)createNormalPreset
1068 {
1069     NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1070
1071     /* Get the New Preset Name from the field in the AddPresetPanel */
1072     [preset setObject:@"Normal" 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:1] 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 normal, default settings." 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
1095     /* x264 Option String */
1096     [preset setObject:@"ref=2:bframes=2:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0" forKey:@"x264Option"];
1097
1098     /* Video quality */
1099     [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
1100     [preset setObject:@"700" forKey:@"VideoTargetSize"];
1101     [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
1102     [preset setObject:[NSNumber numberWithFloat:20.0] 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     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
1113
1114     /*Picture Settings*/
1115     /* Use Max Picture settings for whatever the dvd is.*/
1116     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesMaxPictureSettings"];
1117     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
1118     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
1119     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
1120     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
1121     [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"];
1122
1123     /* Explicitly set the filters for built-in presets */
1124     [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
1125     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
1126     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
1127     [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
1128     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
1129     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
1130
1131     /* Set crop settings here */
1132     /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
1133     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
1134     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
1135     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
1136     [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
1137
1138     /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
1139      * not listed will be set to "None" and not encoded */
1140     NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
1141     
1142     /* Track 1 */        
1143     NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
1144     [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
1145     [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
1146     [audioTrack1Array setObject:@"Dolby Pro Logic II"  forKey:@"AudioMixdown"];
1147     [audioTrack1Array setObject:@"48" forKey:@"AudioSamplerate"];
1148     [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
1149     [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
1150     [audioTrack1Array autorelease];
1151     [audioListArray addObject:audioTrack1Array];
1152
1153     [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1154
1155     /* Subtitles*/
1156     [preset setObject:@"None" forKey:@"Subtitles"];
1157
1158     [preset autorelease];
1159     return preset;
1160 }
1161
1162
1163 @end