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. */
9 @implementation HBPresets
16 /* Called by -addFactoryPresets in Controller.mm */
17 - (NSMutableArray *) generateBuiltinPresets: (NSMutableArray *) UserPresets
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 */
22 /* Note: the built in presets will *not* sort themselves alphabetically, so they will
23 * appear in the order you create them
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]];
30 /* Independent presets at the root hierarchy level would go here */
32 /* return the newly regenerated preset array back to Controller.mm */
38 #pragma mark Built In Preset Folder Definitions
40 - (NSDictionary *)createApplePresetFolder
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"];
47 /* Get the New Preset Name from the field in the AddPresetPanel */
48 [preset setObject:@"Apple" forKey:@"PresetName"];
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"];
53 /*Set whether or not this is default, at creation set to 0*/
54 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
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]];
66 [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
68 [childrenArray autorelease];
76 - (NSDictionary *)createRegularPresetFolder
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"];
83 /* Get the New Preset Name from the field in the AddPresetPanel */
84 [preset setObject:@"Regular" forKey:@"PresetName"];
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"];
89 /*Set whether or not this is default, at creation set to 0*/
90 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
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"];
101 [childrenArray autorelease];
105 [preset autorelease];
109 - (NSDictionary *)createLegacyPresetFolder
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"];
116 /* Get the New Preset Name from the field in the AddPresetPanel */
117 [preset setObject:@"Legacy" forKey:@"PresetName"];
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"];
122 /*Set whether or not this is default, at creation set to 0*/
123 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
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"];
136 [childrenArray autorelease];
140 [preset autorelease];
147 #pragma mark Built In Preset Definitions
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 */
152 - (NSDictionary *)createAppleTVPreset
154 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
156 /* Get the New Preset Name from the field in the AddPresetPanel */
157 [preset setObject:@"AppleTV" forKey:@"PresetName"];
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"];
166 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
167 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
173 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
175 /* 64-bit MP4 file */
176 [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
179 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
182 [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
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"];
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"];
193 /* Video framerate */
194 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
197 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
199 /* 2 Pass Encoding */
200 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
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];
255 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
258 [preset setObject:@"None" forKey:@"Subtitles"];
260 [preset autorelease];
264 - (NSDictionary *)createAppleTVLegacyPreset
266 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
268 /* Get the New Preset Name from the field in the AddPresetPanel */
269 [preset setObject:@"AppleTV Legacy" forKey:@"PresetName"];
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"];
274 /*Set whether or not this is default, at creation set to 0*/
275 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
277 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
278 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
284 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
286 /* 64-bit MP4 file */
287 [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
290 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
293 [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
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"];
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"];
304 /* Video framerate */
305 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
308 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
310 /* 2 Pass Encoding */
311 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
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];
366 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
369 [preset setObject:@"None" forKey:@"Subtitles"];
371 [preset autorelease];
375 - (NSDictionary *)createAppleUniversalPreset
377 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
379 /* Get the New Preset Name from the field in the AddPresetPanel */
380 [preset setObject:@"Universal" forKey:@"PresetName"];
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"];
389 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
390 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
396 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
398 /* 64-bit MP4 file */
399 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
402 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
405 [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
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"];
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"];
416 /* Video framerate */
417 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
420 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
422 /* 2 Pass Encoding */
423 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
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];
478 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
481 [preset setObject:@"None" forKey:@"Subtitles"];
483 [preset autorelease];
487 - (NSDictionary *)createClassicPreset
489 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
491 /* Get the New Preset Name from the field in the AddPresetPanel */
492 [preset setObject:@"Classic" forKey:@"PresetName"];
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"];
497 /*Set whether or not this is default, at creation set to 0*/
498 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
500 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
501 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
503 /* Get the New Preset Description from the field in the AddPresetPanel */
504 [preset setObject:@"HandBrake's traditional, faster, lower-quality settings." forKey:@"PresetDescription"];
507 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
510 [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"];
513 [preset setObject:@"MPEG-4 (FFmpeg)" forKey:@"VideoEncoder"];
515 /* x264 Option String */
516 [preset setObject:@"" forKey:@"x264Option"];
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"];
524 /* Video framerate */
525 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
528 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
530 /* 2 Pass Encoding */
531 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
572 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
575 [preset setObject:@"None" forKey:@"Subtitles"];
577 [preset autorelease];
581 - (NSDictionary *)createHighProfilePreset
583 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
585 /* Get the New Preset Name from the field in the AddPresetPanel */
586 [preset setObject:@"High Profile" forKey:@"PresetName"];
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"];
591 /*Set whether or not this is default, at creation set to 0*/
592 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
594 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
595 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
601 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
604 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
607 [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
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"];
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"];
618 /* Video framerate */
619 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
622 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
624 /* 2 Pass Encoding */
625 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
626 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
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"];
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"];
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"];
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];
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];
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];
681 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
684 [preset setObject:@"None" forKey:@"Subtitles"];
686 [preset autorelease];
690 - (NSDictionary *)createiPhonePreset
692 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
694 /* Get the New Preset Name from the field in the AddPresetPanel */
695 [preset setObject:@"iPhone & iPod Touch" forKey:@"PresetName"];
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"];
700 /*Set whether or not this is default, at creation set to 0*/
701 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
703 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
704 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
710 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
713 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
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"];
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"];
727 /* Video framerate */
728 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
731 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
733 /* 2 Pass Encoding */
734 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
775 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
778 [preset setObject:@"None" forKey:@"Subtitles"];
780 [preset autorelease];
784 - (NSDictionary *)createiPhoneLegacyPreset
786 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
788 /* Get the New Preset Name from the field in the AddPresetPanel */
789 [preset setObject:@"iPhone Legacy" forKey:@"PresetName"];
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"];
794 /*Set whether or not this is default, at creation set to 0*/
795 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
797 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
798 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
804 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
807 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
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"];
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"];
821 /* Video framerate */
822 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
825 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
827 /* 2 Pass Encoding */
828 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
869 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
872 [preset setObject:@"None" forKey:@"Subtitles"];
874 [preset autorelease];
878 - (NSDictionary *)createIpodHighPreset
880 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
882 /* Get the New Preset Name from the field in the AddPresetPanel */
883 [preset setObject:@"iPod Legacy" forKey:@"PresetName"];
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"];
888 /*Set whether or not this is default, at creation set to 0*/
889 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
891 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
892 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
898 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
901 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
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"];
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"];
915 /* Video framerate */
916 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
919 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
921 /* 2 Pass Encoding */
922 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
963 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
966 [preset setObject:@"None" forKey:@"Subtitles"];
968 [preset autorelease];
972 - (NSDictionary *)createIpodLowPreset
974 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
976 /* Get the New Preset Name from the field in the AddPresetPanel */
977 [preset setObject:@"iPod" forKey:@"PresetName"];
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"];
982 /*Set whether or not this is default, at creation set to 0*/
983 [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
985 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
986 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
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"];
992 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
995 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
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"];
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"];
1009 /* Video framerate */
1010 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1013 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1015 /* 2 Pass Encoding */
1016 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
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"];
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"];
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"];
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];
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];
1057 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1060 [preset setObject:@"None" forKey:@"Subtitles"];
1062 [preset autorelease];
1066 - (NSDictionary *)createNormalPreset
1068 NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
1070 /* Get the New Preset Name from the field in the AddPresetPanel */
1071 [preset setObject:@"Normal" forKey:@"PresetName"];
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"];
1076 /*Set whether or not this is default, at creation set to 0*/
1077 [preset setObject:[NSNumber numberWithInt:1] forKey:@"Default"];
1079 /*Get the whether or not to apply pic settings in the AddPresetPanel*/
1080 [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
1082 /* Get the New Preset Description from the field in the AddPresetPanel */
1083 [preset setObject:@"HandBrake's normal, default settings." forKey:@"PresetDescription"];
1086 [preset setObject:@"MP4 file" forKey:@"FileFormat"];
1088 /* Chapter Markers*/
1089 [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
1092 [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
1094 /* x264 Option String */
1095 [preset setObject:@"ref=2:bframes=2:me=umh" forKey:@"x264Option"];
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"];
1103 /* Video framerate */
1104 [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
1107 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
1109 /* 2 Pass Encoding */
1110 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
1111 [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"];
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"];
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"];
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"];
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];
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];
1152 [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
1155 [preset setObject:@"None" forKey:@"Subtitles"];
1157 [preset autorelease];