From 1c3e658fb616f84744bd5a2e4c32d9245fb6e3c9 Mon Sep 17 00:00:00 2001 From: dynaflash Date: Wed, 15 Sep 2010 17:49:16 +0000 Subject: [PATCH] MacGui: Audio ... Allow more than 4 audio tracks. - Patch courtesy of circleone ... Thanks! - Use a NSTableView to dynamically add/delete audio tracks ala the Subtitle tab. - Sets a 24 track limit until someone tests more than 24 tracks (the libhb 8 track limit was removed as per http://trac.handbrake.fr/changeset/3531). - Replaces the old static 4 tracks to a dynamic array. - Moves macgui audio handling to a separate class. Known caveats: - Borks queue editing which needs a revamp anyway. - Queue window display needs to be adjusted to show more than 4 tracks appropriately. Again, its cosmetic and is not a show stopper. - There may be other possible unknown side effects even though tested on all presets. That said, I feel it needs to get in so that we can get feedback from nightlies. git-svn-id: svn://localhost/HandBrake/trunk@3532 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- macosx/Controller.h | 75 +- macosx/Controller.m | 1902 +-- macosx/English.lproj/MainMenu.xib | 23457 +++++++++++---------------- macosx/HBAudio.h | 60 + macosx/HBAudio.m | 640 + macosx/HBAudioController.h | 55 + macosx/HBAudioController.m | 423 + macosx/HBQueueController.mm | 168 +- macosx/HandBrake.xcodeproj/project.pbxproj | 16 + 9 files changed, 10994 insertions(+), 15802 deletions(-) create mode 100644 macosx/HBAudio.h create mode 100644 macosx/HBAudio.m create mode 100644 macosx/HBAudioController.h create mode 100644 macosx/HBAudioController.m diff --git a/macosx/Controller.h b/macosx/Controller.h index c94308e6..35a4b57d 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -17,6 +17,12 @@ #import "HBAdvancedController.h" #import "HBPreferencesController.h" #import "HBPresets.h" +#import "HBAudioController.h" + +extern NSString *HBContainerChangedNotification; +extern NSString *keyContainerTag; +extern NSString *HBTitleChangedNotification; +extern NSString *keyTitleTag; @class HBOutputPanelController; @@ -154,61 +160,9 @@ BOOL fIsDragging; HBSubtitles * fSubtitlesDelegate; IBOutlet NSButton * fBrowseSrtFileButton; - - /* Audio box */ - /* Track Labels */ - IBOutlet NSTextField * fAudSourceLabel; - IBOutlet NSTextField * fAudCodecLabel; - IBOutlet NSTextField * fAudMixdownLabel; - IBOutlet NSTextField * fAudSamplerateLabel; - IBOutlet NSTextField * fAudBitrateLabel; - IBOutlet NSTextField * fAudDrcLabel; - - IBOutlet NSTextField * fAudTrack1Label; - IBOutlet NSTextField * fAudTrack2Label; - IBOutlet NSTextField * fAudTrack3Label; - IBOutlet NSTextField * fAudTrack4Label; - - /* Source Audio PopUps */ - IBOutlet NSPopUpButton * fAudLang1PopUp; - IBOutlet NSPopUpButton * fAudLang2PopUp; - IBOutlet NSPopUpButton * fAudLang3PopUp; - IBOutlet NSPopUpButton * fAudLang4PopUp; - - /* Codec Popups */ - IBOutlet NSPopUpButton * fAudTrack1CodecPopUp; - IBOutlet NSPopUpButton * fAudTrack2CodecPopUp; - IBOutlet NSPopUpButton * fAudTrack3CodecPopUp; - IBOutlet NSPopUpButton * fAudTrack4CodecPopUp; - - /* Mixdown PopUps */ - IBOutlet NSPopUpButton * fAudTrack1MixPopUp; - IBOutlet NSPopUpButton * fAudTrack2MixPopUp; - IBOutlet NSPopUpButton * fAudTrack3MixPopUp; - IBOutlet NSPopUpButton * fAudTrack4MixPopUp; - - /* Samplerate PopUps */ - IBOutlet NSPopUpButton * fAudTrack1RatePopUp; - IBOutlet NSPopUpButton * fAudTrack2RatePopUp; - IBOutlet NSPopUpButton * fAudTrack3RatePopUp; - IBOutlet NSPopUpButton * fAudTrack4RatePopUp; - - /* Bitrate PopUps */ - IBOutlet NSPopUpButton * fAudTrack1BitratePopUp; - IBOutlet NSPopUpButton * fAudTrack2BitratePopUp; - IBOutlet NSPopUpButton * fAudTrack3BitratePopUp; - IBOutlet NSPopUpButton * fAudTrack4BitratePopUp; - - /* Dynamic Range Compression */ - IBOutlet NSSlider * fAudTrack1DrcSlider; - IBOutlet NSTextField * fAudTrack1DrcField; - IBOutlet NSSlider * fAudTrack2DrcSlider; - IBOutlet NSTextField * fAudTrack2DrcField; - IBOutlet NSSlider * fAudTrack3DrcSlider; - IBOutlet NSTextField * fAudTrack3DrcField; - IBOutlet NSSlider * fAudTrack4DrcSlider; - IBOutlet NSTextField * fAudTrack4DrcField; - + /* New Audio box */ + IBOutlet HBAudioController * fAudioDelegate; + /* Chapters box */ IBOutlet NSButton * fCreateChapterMarkers; IBOutlet NSTableView * fChapterTable; @@ -320,14 +274,6 @@ BOOL fIsDragging; - (IBAction) autoSetM4vExtension: (id) sender; - (IBAction) twoPassCheckboxChanged: (id) sender; - (IBAction) videoFrameRateChanged: (id) sender; -- (IBAction) audioAddAudioTrackCodecs: (id)sender; -- (IBAction) audioCodecsPopUpChanged: (id) sender; -- (IBAction) setEnabledStateOfAudioMixdownControls: (id) sender; -- (IBAction) addAllAudioTracksToPopUp: (id) sender; -- (IBAction) selectAudioTrackInPopUp: (id) sender searchPrefixString: (NSString *) searchPrefixString selectIndexIfNotFound: (int) selectIndexIfNotFound; -- (IBAction) audioTrackPopUpChanged: (id) sender; -- (IBAction) audioTrackPopUpChanged: (id) sender mixdownToUse: (int) mixdownToUse; -- (IBAction) audioTrackMixdownChanged: (id) sender; - (void) prepareJob; - (IBAction) browseFile: (id) sender; - (void) browseFileDone: (NSSavePanel *) sheet @@ -338,7 +284,6 @@ BOOL fIsDragging; - (IBAction) qualitySliderChanged: (id) sender; - (void) setupQualitySlider; -- (IBAction) audioDRCSliderChanged: (id) sender; - (IBAction) browseImportSrtFile: (id) sender; - (void) browseImportSrtFileDone: (NSSavePanel *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo; @@ -470,5 +415,7 @@ BOOL fIsDragging; - (void) browseForChapterFileSaveDone: (NSSavePanel *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo; ++ (unsigned int) maximumNumberOfAllowedAudioTracks; + @end diff --git a/macosx/Controller.m b/macosx/Controller.m index f03470c7..371949b1 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -12,6 +12,12 @@ #import "HBPresets.h" #import "HBPreviewController.h" +unsigned int maximumNumberOfAllowedAudioTracks = 24; +NSString *HBContainerChangedNotification = @"HBContainerChangedNotification"; +NSString *keyContainerTag = @"keyContainerTag"; +NSString *HBTitleChangedNotification = @"HBTitleChangedNotification"; +NSString *keyTitleTag = @"keyTitleTag"; + #define DragDropSimplePboardType @"MyCustomOutlineViewPboardType" /* We setup the toolbar values here ShowPreviewIdentifier */ @@ -31,6 +37,8 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It *******************************/ @implementation HBController ++ (unsigned int) maximumNumberOfAllowedAudioTracks { return maximumNumberOfAllowedAudioTracks; } + - (id)init { self = [super init]; @@ -118,6 +126,10 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [fSubtitlesTable setDelegate:fSubtitlesDelegate]; [fSubtitlesTable setRowHeight:25.0]; + /* setup the audio controller */ + [fAudioDelegate setHBController: self]; + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(autoSetM4vExtension:) name: HBMixdownChangedNotification object: nil]; + [fPresetsOutlineView setAutosaveName:@"Presets View"]; [fPresetsOutlineView setAutosaveExpandedItems:YES]; @@ -549,26 +561,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It /* Set Auto Crop to On at launch */ [fPictureController setAutoCrop:YES]; - - /* Audio bitrate */ - [fAudTrack1BitratePopUp removeAllItems]; - for( int i = 0; i < hb_audio_bitrates_count; i++ ) - { - [fAudTrack1BitratePopUp addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_bitrates[i].string]]; - - } - [fAudTrack1BitratePopUp selectItemAtIndex: hb_audio_bitrates_default]; - - /* Audio samplerate */ - [fAudTrack1RatePopUp removeAllItems]; - for( int i = 0; i < hb_audio_rates_count; i++ ) - { - [fAudTrack1RatePopUp addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_rates[i].string]]; - } - [fAudTrack1RatePopUp selectItemAtIndex: hb_audio_rates_default]; - + /* Bottom */ [fStatusField setStringValue: @""]; @@ -595,18 +588,9 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It fDstFormatField, fDstFormatPopUp, fDstFile1Field, fDstFile2Field, fDstBrowseButton, fVidRateField, fVidRatePopUp,fVidEncoderField, fVidEncoderPopUp, fVidQualityField, fPictureSizeField,fPictureCroppingField, fVideoFiltersField,fVidQualityMatrix, fSubField, fSubPopUp, - fAudSourceLabel, fAudCodecLabel, fAudMixdownLabel, fAudSamplerateLabel, fAudBitrateLabel, - fAudTrack1Label, fAudTrack2Label, fAudTrack3Label, fAudTrack4Label, - fAudLang1PopUp, fAudLang2PopUp, fAudLang3PopUp, fAudLang4PopUp, - fAudTrack1CodecPopUp, fAudTrack2CodecPopUp, fAudTrack3CodecPopUp, fAudTrack4CodecPopUp, - fAudTrack1MixPopUp, fAudTrack2MixPopUp, fAudTrack3MixPopUp, fAudTrack4MixPopUp, - fAudTrack1RatePopUp, fAudTrack2RatePopUp, fAudTrack3RatePopUp, fAudTrack4RatePopUp, - fAudTrack1BitratePopUp, fAudTrack2BitratePopUp, fAudTrack3BitratePopUp, fAudTrack4BitratePopUp, - fAudDrcLabel, fAudTrack1DrcSlider, fAudTrack1DrcField, fAudTrack2DrcSlider, - fAudTrack2DrcField, fAudTrack3DrcSlider, fAudTrack3DrcField, fAudTrack4DrcSlider,fAudTrack4DrcField, fQueueStatus,fPresetsAdd,fPresetsDelete,fSrcAngleLabel,fSrcAnglePopUp, fCreateChapterMarkers,fVidTurboPassCheck,fDstMp4LargeFileCheck,fSubForcedCheck,fPresetsOutlineView, - fAudDrcLabel,fDstMp4HttpOptFileCheck,fDstMp4iPodFileCheck,fVidQualityRFField,fVidQualityRFLabel, + fDstMp4HttpOptFileCheck,fDstMp4iPodFileCheck,fVidQualityRFField,fVidQualityRFLabel, fEncodeStartStopPopUp,fSrcTimeStartEncodingField,fSrcTimeEndEncodingField,fSrcFrameStartEncodingField, fSrcFrameEndEncodingField, fLoadChaptersButton, fSaveChaptersButton, fFrameratePfrCheck}; @@ -630,9 +614,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It if (b) { - /* if we're enabling the interface, check if the audio mixdown controls need to be enabled or not */ - /* these will have been enabled by the mass control enablement above anyway, so we're sense-checking it here */ - [self setEnabledStateOfAudioMixdownControls:nil]; /* we also call calculatePictureSizing here to sense check if we already have vfr selected */ [self calculatePictureSizing:nil]; /* Also enable the preview window hud controls */ @@ -1723,6 +1704,14 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [fSubtitlesDelegate resetWithTitle:nil]; [fSubtitlesTable reloadData]; + // Notify anyone interested (audio controller) that there's no title + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBTitleChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSData dataWithBytesNoCopy: &fTitle length: sizeof(fTitle) freeWhenDone: NO], keyTitleTag, + nil]]]; + [self enableUI: NO]; if( [detector isVideoDVD] ) @@ -1804,7 +1793,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It - (IBAction) showNewScan:(id)sender { hb_list_t * list; - hb_title_t * title; + hb_title_t * title = NULL; int feature_title=0; // Used to store the main feature title list = hb_get_titles( fHandle ); @@ -1822,6 +1811,14 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It // Notify Subtitles that there's no title [fChapterTitlesDelegate resetWithTitle:nil]; [fChapterTable reloadData]; + + // Notify anyone interested (audio controller) that there's no title + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBTitleChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSData dataWithBytesNoCopy: &fTitle length: sizeof(fTitle) freeWhenDone: NO], keyTitleTag, + nil]]]; } else { @@ -2376,46 +2373,7 @@ fWorkingCount = 0; [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController grayscale]] forKey:@"VideoGrayScale"]; /*Audio*/ - if ([fAudLang1PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[fAudLang1PopUp indexOfSelectedItem]] forKey:@"Audio1Track"]; - [queueFileJob setObject:[fAudLang1PopUp titleOfSelectedItem] forKey:@"Audio1TrackDescription"]; - [queueFileJob setObject:[fAudTrack1CodecPopUp titleOfSelectedItem] forKey:@"Audio1Encoder"]; - [queueFileJob setObject:[fAudTrack1MixPopUp titleOfSelectedItem] forKey:@"Audio1Mixdown"]; - [queueFileJob setObject:[fAudTrack1RatePopUp titleOfSelectedItem] forKey:@"Audio1Samplerate"]; - [queueFileJob setObject:[fAudTrack1BitratePopUp titleOfSelectedItem] forKey:@"Audio1Bitrate"]; - [queueFileJob setObject:[NSNumber numberWithFloat:[fAudTrack1DrcSlider floatValue]] forKey:@"Audio1TrackDRCSlider"]; - } - if ([fAudLang2PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[fAudLang2PopUp indexOfSelectedItem]] forKey:@"Audio2Track"]; - [queueFileJob setObject:[fAudLang2PopUp titleOfSelectedItem] forKey:@"Audio2TrackDescription"]; - [queueFileJob setObject:[fAudTrack2CodecPopUp titleOfSelectedItem] forKey:@"Audio2Encoder"]; - [queueFileJob setObject:[fAudTrack2MixPopUp titleOfSelectedItem] forKey:@"Audio2Mixdown"]; - [queueFileJob setObject:[fAudTrack2RatePopUp titleOfSelectedItem] forKey:@"Audio2Samplerate"]; - [queueFileJob setObject:[fAudTrack2BitratePopUp titleOfSelectedItem] forKey:@"Audio2Bitrate"]; - [queueFileJob setObject:[NSNumber numberWithFloat:[fAudTrack2DrcSlider floatValue]] forKey:@"Audio2TrackDRCSlider"]; - } - if ([fAudLang3PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[fAudLang3PopUp indexOfSelectedItem]] forKey:@"Audio3Track"]; - [queueFileJob setObject:[fAudLang3PopUp titleOfSelectedItem] forKey:@"Audio3TrackDescription"]; - [queueFileJob setObject:[fAudTrack3CodecPopUp titleOfSelectedItem] forKey:@"Audio3Encoder"]; - [queueFileJob setObject:[fAudTrack3MixPopUp titleOfSelectedItem] forKey:@"Audio3Mixdown"]; - [queueFileJob setObject:[fAudTrack3RatePopUp titleOfSelectedItem] forKey:@"Audio3Samplerate"]; - [queueFileJob setObject:[fAudTrack3BitratePopUp titleOfSelectedItem] forKey:@"Audio3Bitrate"]; - [queueFileJob setObject:[NSNumber numberWithFloat:[fAudTrack3DrcSlider floatValue]] forKey:@"Audio3TrackDRCSlider"]; - } - if ([fAudLang4PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[fAudLang4PopUp indexOfSelectedItem]] forKey:@"Audio4Track"]; - [queueFileJob setObject:[fAudLang4PopUp titleOfSelectedItem] forKey:@"Audio4TrackDescription"]; - [queueFileJob setObject:[fAudTrack4CodecPopUp titleOfSelectedItem] forKey:@"Audio4Encoder"]; - [queueFileJob setObject:[fAudTrack4MixPopUp titleOfSelectedItem] forKey:@"Audio4Mixdown"]; - [queueFileJob setObject:[fAudTrack4RatePopUp titleOfSelectedItem] forKey:@"Audio4Samplerate"]; - [queueFileJob setObject:[fAudTrack4BitratePopUp titleOfSelectedItem] forKey:@"Audio4Bitrate"]; - [queueFileJob setObject:[NSNumber numberWithFloat:[fAudTrack4DrcSlider floatValue]] forKey:@"Audio4TrackDRCSlider"]; - } + [fAudioDelegate prepareAudioForQueueFileJob: queueFileJob]; /* Subtitles*/ NSMutableArray *subtitlesArray = [[NSMutableArray alloc] initWithArray:[fSubtitlesDelegate getSubtitleArray] copyItems:YES]; @@ -2456,35 +2414,6 @@ fWorkingCount = 0; [queueFileJob setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"]; - /*Audio*/ - if ([fAudLang1PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack1CodecPopUp selectedItem] tag]] forKey:@"JobAudio1Encoder"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack1MixPopUp selectedItem] tag]] forKey:@"JobAudio1Mixdown"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack1RatePopUp selectedItem] tag]] forKey:@"JobAudio1Samplerate"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack1BitratePopUp selectedItem] tag]] forKey:@"JobAudio1Bitrate"]; - } - if ([fAudLang2PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack2CodecPopUp selectedItem] tag]] forKey:@"JobAudio2Encoder"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack2MixPopUp selectedItem] tag]] forKey:@"JobAudio2Mixdown"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack2RatePopUp selectedItem] tag]] forKey:@"JobAudio2Samplerate"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack2BitratePopUp selectedItem] tag]] forKey:@"JobAudio2Bitrate"]; - } - if ([fAudLang3PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack3CodecPopUp selectedItem] tag]] forKey:@"JobAudio3Encoder"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack3MixPopUp selectedItem] tag]] forKey:@"JobAudio3Mixdown"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack3RatePopUp selectedItem] tag]] forKey:@"JobAudio3Samplerate"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack3BitratePopUp selectedItem] tag]] forKey:@"JobAudio3Bitrate"]; - } - if ([fAudLang4PopUp indexOfSelectedItem] > 0) - { - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack4CodecPopUp selectedItem] tag]] forKey:@"JobAudio4Encoder"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack4MixPopUp selectedItem] tag]] forKey:@"JobAudio4Mixdown"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack4RatePopUp selectedItem] tag]] forKey:@"JobAudio4Samplerate"]; - [queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack4BitratePopUp selectedItem] tag]] forKey:@"JobAudio4Bitrate"]; - } /* we need to auto relase the queueFileJob and return it */ [queueFileJob autorelease]; @@ -2858,86 +2787,7 @@ fWorkingCount = 0; /* Now lets add our new tracks to the audio list here */ - if ([[queueToApply objectForKey:@"Audio1Track"] intValue] > 0) - { - [fAudLang1PopUp selectItemAtIndex: [[queueToApply objectForKey:@"Audio1Track"] intValue]]; - [self audioTrackPopUpChanged: fAudLang1PopUp]; - [fAudTrack1CodecPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio1Encoder"]]; - [self audioTrackPopUpChanged: fAudTrack1CodecPopUp]; - - [fAudTrack1MixPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio1Mixdown"]]; - - [fAudTrack1RatePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio1Samplerate"]]; - [fAudTrack1BitratePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio1Bitrate"]]; - - [fAudTrack1DrcSlider setFloatValue:[[queueToApply objectForKey:@"Audio1TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack1DrcSlider]; - } - else - { - [fAudLang1PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang1PopUp]; - } - if ([[queueToApply objectForKey:@"Audio2Track"] intValue] > 0) - { - [fAudLang2PopUp selectItemAtIndex: [[queueToApply objectForKey:@"Audio2Track"] intValue]]; - [self audioTrackPopUpChanged: fAudLang2PopUp]; - [fAudTrack2CodecPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio2Encoder"]]; - [self audioTrackPopUpChanged: fAudTrack2CodecPopUp]; - - [fAudTrack2MixPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio2Mixdown"]]; - - [fAudTrack2RatePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio2Samplerate"]]; - [fAudTrack2BitratePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio2Bitrate"]]; - - [fAudTrack2DrcSlider setFloatValue:[[queueToApply objectForKey:@"Audio2TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack2DrcSlider]; - } - else - { - [fAudLang2PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang2PopUp]; - } - if ([[queueToApply objectForKey:@"Audio3Track"] intValue] > 0) - { - [fAudLang3PopUp selectItemAtIndex: [[queueToApply objectForKey:@"Audio3Track"] intValue]]; - [self audioTrackPopUpChanged: fAudLang3PopUp]; - [fAudTrack3CodecPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio3Encoder"]]; - [self audioTrackPopUpChanged: fAudTrack3CodecPopUp]; - - [fAudTrack3MixPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio3Mixdown"]]; - - [fAudTrack3RatePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio3Samplerate"]]; - [fAudTrack3BitratePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio3Bitrate"]]; - - [fAudTrack3DrcSlider setFloatValue:[[queueToApply objectForKey:@"Audio3TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack3DrcSlider]; - } - else - { - [fAudLang3PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang3PopUp]; - } - if ([[queueToApply objectForKey:@"Audio4Track"] intValue] > 0) - { - [fAudLang4PopUp selectItemAtIndex: [[queueToApply objectForKey:@"Audio4Track"] intValue]]; - [self audioTrackPopUpChanged: fAudLang4PopUp]; - [fAudTrack4CodecPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio4Encoder"]]; - [self audioTrackPopUpChanged: fAudTrack4CodecPopUp]; - - [fAudTrack4MixPopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio4Mixdown"]]; - - [fAudTrack4RatePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio4Samplerate"]]; - [fAudTrack4BitratePopUp selectItemWithTitle:[queueToApply objectForKey:@"Audio4Bitrate"]]; - - [fAudTrack4DrcSlider setFloatValue:[[queueToApply objectForKey:@"Audio4TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack4DrcSlider]; - } - else - { - [fAudLang4PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang4PopUp]; - } + [fAudioDelegate addTracksFromQueue: queueToApply]; /*Subtitles*/ /* Crashy crashy right now, working on it */ @@ -3349,83 +3199,7 @@ bool one_burned = FALSE; /* Audio tracks and mixdowns */ - /* Lets make sure there arent any erroneous audio tracks in the job list, so lets make sure its empty*/ - int audiotrack_count = hb_list_count(job->list_audio); - for( int i = 0; i < audiotrack_count;i++) - { - hb_audio_t * temp_audio = (hb_audio_t*) hb_list_item( job->list_audio, 0 ); - hb_list_rem(job->list_audio, temp_audio); - } - /* Now lets add our new tracks to the audio list here */ - if ([fAudLang1PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang1PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang1PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack1CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack1MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack1BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack1RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack1DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - } - if ([fAudLang2PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang2PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang2PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack2CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack2MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack2BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack2RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack2DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - - } - - if ([fAudLang3PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang3PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang3PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack3CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack3MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack3BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack3RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack3DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - - } - - if ([fAudLang4PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang4PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang4PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack4CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack4MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack4BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack4RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack4DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - - } + [fAudioDelegate prepareAudioForJob: job]; @@ -3927,75 +3701,25 @@ bool one_burned = FALSE; hb_list_rem(job->list_audio, temp_audio); } /* Now lets add our new tracks to the audio list here */ - if ([[queueToApply objectForKey:@"Audio1Track"] intValue] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [[queueToApply objectForKey:@"Audio1Track"] intValue] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [[queueToApply objectForKey:@"Audio1Track"] intValue] - 1; - audio->out.codec = [[queueToApply objectForKey:@"JobAudio1Encoder"] intValue]; - audio->out.mixdown = [[queueToApply objectForKey:@"JobAudio1Mixdown"] intValue]; - audio->out.bitrate = [[queueToApply objectForKey:@"JobAudio1Bitrate"] intValue]; - audio->out.samplerate = [[queueToApply objectForKey:@"JobAudio1Samplerate"] intValue]; - audio->out.dynamic_range_compression = [[queueToApply objectForKey:@"Audio1TrackDRCSlider"] floatValue]; - - hb_audio_add( job, audio ); - free(audio); - } - if ([[queueToApply objectForKey:@"Audio2Track"] intValue] > 0) - { - - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [[queueToApply objectForKey:@"Audio2Track"] intValue] - 1; - [self writeToActivityLog: "prepareJob audiotrack 2 is: %d", audio->in.track]; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [[queueToApply objectForKey:@"Audio2Track"] intValue] - 1; - audio->out.codec = [[queueToApply objectForKey:@"JobAudio2Encoder"] intValue]; - audio->out.mixdown = [[queueToApply objectForKey:@"JobAudio2Mixdown"] intValue]; - audio->out.bitrate = [[queueToApply objectForKey:@"JobAudio2Bitrate"] intValue]; - audio->out.samplerate = [[queueToApply objectForKey:@"JobAudio2Samplerate"] intValue]; - audio->out.dynamic_range_compression = [[queueToApply objectForKey:@"Audio2TrackDRCSlider"] floatValue]; - - hb_audio_add( job, audio ); - free(audio); - } - - if ([[queueToApply objectForKey:@"Audio3Track"] intValue] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [[queueToApply objectForKey:@"Audio3Track"] intValue] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [[queueToApply objectForKey:@"Audio3Track"] intValue] - 1; - audio->out.codec = [[queueToApply objectForKey:@"JobAudio3Encoder"] intValue]; - audio->out.mixdown = [[queueToApply objectForKey:@"JobAudio3Mixdown"] intValue]; - audio->out.bitrate = [[queueToApply objectForKey:@"JobAudio3Bitrate"] intValue]; - audio->out.samplerate = [[queueToApply objectForKey:@"JobAudio3Samplerate"] intValue]; - audio->out.dynamic_range_compression = [[queueToApply objectForKey:@"Audio3TrackDRCSlider"] floatValue]; - - hb_audio_add( job, audio ); - free(audio); - } - - if ([[queueToApply objectForKey:@"Audio4Track"] intValue] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [[queueToApply objectForKey:@"Audio4Track"] intValue] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [[queueToApply objectForKey:@"Audio4Track"] intValue] - 1; - audio->out.codec = [[queueToApply objectForKey:@"JobAudio4Encoder"] intValue]; - audio->out.mixdown = [[queueToApply objectForKey:@"JobAudio4Mixdown"] intValue]; - audio->out.bitrate = [[queueToApply objectForKey:@"JobAudio4Bitrate"] intValue]; - audio->out.samplerate = [[queueToApply objectForKey:@"JobAudio4Samplerate"] intValue]; - audio->out.dynamic_range_compression = [[queueToApply objectForKey:@"Audio4TrackDRCSlider"] floatValue]; - - hb_audio_add( job, audio ); - - - } + for (unsigned int counter = 0; counter < maximumNumberOfAllowedAudioTracks; counter++) { + NSString *prefix = [NSString stringWithFormat: @"Audio%d", counter + 1]; + if ([[queueToApply objectForKey: [prefix stringByAppendingString: @"Track"]] intValue] > 0) { + audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); + hb_audio_config_init(audio); + audio->in.track = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Track"]] intValue] - 1; + /* We go ahead and assign values to our audio->out. */ + audio->out.track = audio->in.track; + audio->out.dynamic_range_compression = [[queueToApply objectForKey: [prefix stringByAppendingString: @"TrackDRCSlider"]] floatValue]; + prefix = [NSString stringWithFormat: @"JobAudio%d", counter + 1]; + audio->out.codec = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Encoder"]] intValue]; + audio->out.mixdown = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Mixdown"]] intValue]; + audio->out.bitrate = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Bitrate"]] intValue]; + audio->out.samplerate = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Samplerate"]] intValue]; + + hb_audio_add( job, audio ); + free(audio); + } + } /* Filters */ job->filters = hb_list_init(); @@ -4553,7 +4277,15 @@ bool one_burned = FALSE; [fChapterTitlesDelegate resetWithTitle:title]; [fChapterTable reloadData]; - /* Lets make sure there arent any erroneous audio tracks in the job list, so lets make sure its empty*/ + /* Update audio table */ + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBTitleChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSData dataWithBytesNoCopy: &fTitle length: sizeof(fTitle) freeWhenDone: NO], keyTitleTag, + nil]]]; + + /* Lets make sure there arent any erroneous audio tracks in the job list, so lets make sure its empty*/ int audiotrack_count = hb_list_count(job->list_audio); for( int i = 0; i < audiotrack_count;i++) { @@ -4561,25 +4293,7 @@ bool one_burned = FALSE; hb_list_rem(job->list_audio, temp_audio); } - /* Update audio popups */ - [self addAllAudioTracksToPopUp: fAudLang1PopUp]; - [self addAllAudioTracksToPopUp: fAudLang2PopUp]; - [self addAllAudioTracksToPopUp: fAudLang3PopUp]; - [self addAllAudioTracksToPopUp: fAudLang4PopUp]; - /* search for the first instance of our prefs default language for track 1, and set track 2 to "none" */ - NSString * audioSearchPrefix = [[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultLanguage"]; - [self selectAudioTrackInPopUp: fAudLang1PopUp searchPrefixString: audioSearchPrefix selectIndexIfNotFound: 1]; - [self selectAudioTrackInPopUp:fAudLang2PopUp searchPrefixString:nil selectIndexIfNotFound:0]; - [self selectAudioTrackInPopUp:fAudLang3PopUp searchPrefixString:nil selectIndexIfNotFound:0]; - [self selectAudioTrackInPopUp:fAudLang4PopUp searchPrefixString:nil selectIndexIfNotFound:0]; - - /* changing the title may have changed the audio channels on offer, */ - /* so call audioTrackPopUpChanged for both audio tracks to update the mixdown popups */ - [self audioTrackPopUpChanged: fAudLang1PopUp]; - [self audioTrackPopUpChanged: fAudLang2PopUp]; - [self audioTrackPopUpChanged: fAudLang3PopUp]; - [self audioTrackPopUpChanged: fAudLang4PopUp]; - + [fVidRatePopUp selectItemAtIndex: 0]; /* we run the picture size values through calculatePictureSizing to get all picture setting information*/ @@ -4769,6 +4483,15 @@ bool one_burned = FALSE; [fSubtitlesDelegate containerChanged:[[fDstFormatPopUp selectedItem] tag]]; [fSubtitlesTable reloadData]; + + /* post a notification for any interested observers to indicate that our video container has changed */ + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBContainerChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt: [[fDstFormatPopUp selectedItem] tag]], keyContainerTag, + nil]]]; + /* if we have a previously selected vid encoder tag, then try to select it */ if (selectedVidEncoderTag) { @@ -4779,10 +4502,6 @@ bool one_burned = FALSE; [fVidEncoderPopUp selectItemAtIndex: 0]; } - [self audioAddAudioTrackCodecs: fAudTrack1CodecPopUp]; - [self audioAddAudioTrackCodecs: fAudTrack2CodecPopUp]; - [self audioAddAudioTrackCodecs: fAudTrack3CodecPopUp]; - [self audioAddAudioTrackCodecs: fAudTrack4CodecPopUp]; if( format == 0 ) [self autoSetM4vExtension: sender]; @@ -4792,10 +4511,6 @@ bool one_burned = FALSE; if( SuccessfulScan ) { /* Add/replace to the correct extension */ - [self audioTrackPopUpChanged: fAudLang1PopUp]; - [self audioTrackPopUpChanged: fAudLang2PopUp]; - [self audioTrackPopUpChanged: fAudLang3PopUp]; - [self audioTrackPopUpChanged: fAudLang4PopUp]; if( [fVidEncoderPopUp selectedItem] == nil ) { @@ -4821,9 +4536,8 @@ bool one_burned = FALSE; NSString * extension = @"mp4"; - if( [[fAudTrack1CodecPopUp selectedItem] tag] == HB_ACODEC_AC3 || [[fAudTrack2CodecPopUp selectedItem] tag] == HB_ACODEC_AC3 || - [[fAudTrack3CodecPopUp selectedItem] tag] == HB_ACODEC_AC3 || - [[fAudTrack4CodecPopUp selectedItem] tag] == HB_ACODEC_AC3 || + BOOL anyCodecAC3 = [fAudioDelegate anyCodecMatches: HB_ACODEC_AC3]; + if (YES == anyCodecAC3 || [fCreateChapterMarkers state] == NSOnState || [[NSUserDefaults standardUserDefaults] boolForKey:@"DefaultMpegName"] > 0 ) { @@ -5084,82 +4798,7 @@ the user is using "Custom" settings by determining the sender*/ job->mux = [[fDstFormatPopUp selectedItem] tag]; /* Audio goes here */ - int audiotrack_count = hb_list_count(job->list_audio); - for( int i = 0; i < audiotrack_count;i++) - { - hb_audio_t * temp_audio = (hb_audio_t*) hb_list_item( job->list_audio, 0 ); - hb_list_rem(job->list_audio, temp_audio); - } - /* Now we need our audio info here for each track if applicable */ - if ([fAudLang1PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang1PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang1PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack1CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack1MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack1BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack1RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack1DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - } - if ([fAudLang2PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang2PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang2PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack2CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack2MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack2BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack2RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack2DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - - } - - if ([fAudLang3PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang3PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang3PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack3CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack3MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack3BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack3RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack3DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - - } - - if ([fAudLang4PopUp indexOfSelectedItem] > 0) - { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [fAudLang4PopUp indexOfSelectedItem] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = [fAudLang4PopUp indexOfSelectedItem] - 1; - audio->out.codec = [[fAudTrack4CodecPopUp selectedItem] tag]; - audio->out.mixdown = [[fAudTrack4MixPopUp selectedItem] tag]; - audio->out.bitrate = [[fAudTrack4BitratePopUp selectedItem] tag]; - audio->out.samplerate = [[fAudTrack4RatePopUp selectedItem] tag]; - audio->out.dynamic_range_compression = [fAudTrack4DrcField floatValue]; - - hb_audio_add( job, audio ); - free(audio); - - } + [fAudioDelegate prepareAudioForJob: job]; [fVidBitrateField setIntValue: hb_calc_bitrate( job, [fVidTargetSizeField intValue] )]; } @@ -5315,962 +4954,101 @@ the user is using "Custom" settings by determining the sender*/ #pragma mark - #pragma mark - Audio and Subtitles -- (IBAction) audioCodecsPopUpChanged: (id) sender + + +#pragma mark - + +- (IBAction) browseImportSrtFile: (id) sender { - - NSPopUpButton * audiotrackPopUp; - NSPopUpButton * sampleratePopUp; - NSPopUpButton * bitratePopUp; - NSPopUpButton * audiocodecPopUp; - if (sender == fAudTrack1CodecPopUp) - { - audiotrackPopUp = fAudLang1PopUp; - audiocodecPopUp = fAudTrack1CodecPopUp; - sampleratePopUp = fAudTrack1RatePopUp; - bitratePopUp = fAudTrack1BitratePopUp; - } - else if (sender == fAudTrack2CodecPopUp) - { - audiotrackPopUp = fAudLang2PopUp; - audiocodecPopUp = fAudTrack2CodecPopUp; - sampleratePopUp = fAudTrack2RatePopUp; - bitratePopUp = fAudTrack2BitratePopUp; - } - else if (sender == fAudTrack3CodecPopUp) - { - audiotrackPopUp = fAudLang3PopUp; - audiocodecPopUp = fAudTrack3CodecPopUp; - sampleratePopUp = fAudTrack3RatePopUp; - bitratePopUp = fAudTrack3BitratePopUp; - } - else - { - audiotrackPopUp = fAudLang4PopUp; - audiocodecPopUp = fAudTrack4CodecPopUp; - sampleratePopUp = fAudTrack4RatePopUp; - bitratePopUp = fAudTrack4BitratePopUp; - } + + NSOpenPanel * panel; - /* changing the codecs on offer may mean that we can / can't offer mono or 6ch, */ - /* so call audioTrackPopUpChanged for both audio tracks to update the mixdown popups */ - [self audioTrackPopUpChanged: audiotrackPopUp]; - + panel = [NSOpenPanel openPanel]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: YES]; + [panel setCanChooseDirectories: NO ]; + NSString * sourceDirectory; + if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"]) + { + sourceDirectory = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"]; + } + else + { + sourceDirectory = @"~/Desktop"; + sourceDirectory = [sourceDirectory stringByExpandingTildeInPath]; + } + /* we open up the browse srt sheet here and call for browseImportSrtFileDone after the sheet is closed */ + NSArray *fileTypes = [NSArray arrayWithObjects:@"plist", @"srt", nil]; + [panel beginSheetForDirectory: sourceDirectory file: nil types: fileTypes + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( browseImportSrtFileDone:returnCode:contextInfo: ) + contextInfo: sender]; } -- (IBAction) setEnabledStateOfAudioMixdownControls: (id) sender +- (void) browseImportSrtFileDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo { - /* We will be setting the enabled/disabled state of each tracks audio controls based on - * the settings of the source audio for that track. We leave the samplerate and bitrate - * to audiotrackMixdownChanged - */ - - /* We will first verify that a lower track number has been selected before enabling each track - * for example, make sure a track is selected for track 1 before enabling track 2, etc. - */ - - /* If the source has no audio then disable audio track 1 */ - if (hb_list_count( fTitle->list_audio ) == 0) - { - [fAudLang1PopUp selectItemAtIndex:0]; - } - - if ([fAudLang1PopUp indexOfSelectedItem] == 0) - { - [fAudLang2PopUp setEnabled: NO]; - [fAudLang2PopUp selectItemAtIndex: 0]; - } - else - { - [fAudLang2PopUp setEnabled: YES]; - } - - if ([fAudLang2PopUp indexOfSelectedItem] == 0) - { - [fAudLang3PopUp setEnabled: NO]; - [fAudLang3PopUp selectItemAtIndex: 0]; - } - else - { - [fAudLang3PopUp setEnabled: YES]; - } - if ([fAudLang3PopUp indexOfSelectedItem] == 0) - { - [fAudLang4PopUp setEnabled: NO]; - [fAudLang4PopUp selectItemAtIndex: 0]; - } - else - { - [fAudLang4PopUp setEnabled: YES]; - } - /* enable/disable the mixdown text and popupbutton for audio track 1 */ - [fAudTrack1CodecPopUp setEnabled: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack1MixPopUp setEnabled: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack1RatePopUp setEnabled: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack1BitratePopUp setEnabled: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack1DrcSlider setEnabled: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack1DrcField setEnabled: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? NO : YES]; - if ([fAudLang1PopUp indexOfSelectedItem] == 0) - { - [fAudTrack1CodecPopUp removeAllItems]; - [fAudTrack1MixPopUp removeAllItems]; - [fAudTrack1RatePopUp removeAllItems]; - [fAudTrack1BitratePopUp removeAllItems]; - [fAudTrack1DrcSlider setFloatValue: 0.00]; - [self audioDRCSliderChanged: fAudTrack1DrcSlider]; - } - else if ([[fAudTrack1MixPopUp selectedItem] tag] == HB_ACODEC_AC3 || [[fAudTrack1MixPopUp selectedItem] tag] == HB_ACODEC_DCA) - { - [fAudTrack1RatePopUp setEnabled: NO]; - [fAudTrack1BitratePopUp setEnabled: NO]; - [fAudTrack1DrcSlider setEnabled: NO]; - [fAudTrack1DrcField setEnabled: NO]; - } - - /* enable/disable the mixdown text and popupbutton for audio track 2 */ - [fAudTrack2CodecPopUp setEnabled: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack2MixPopUp setEnabled: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack2RatePopUp setEnabled: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack2BitratePopUp setEnabled: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack2DrcSlider setEnabled: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack2DrcField setEnabled: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? NO : YES]; - if ([fAudLang2PopUp indexOfSelectedItem] == 0) - { - [fAudTrack2CodecPopUp removeAllItems]; - [fAudTrack2MixPopUp removeAllItems]; - [fAudTrack2RatePopUp removeAllItems]; - [fAudTrack2BitratePopUp removeAllItems]; - [fAudTrack2DrcSlider setFloatValue: 0.00]; - [self audioDRCSliderChanged: fAudTrack2DrcSlider]; - } - else if ([[fAudTrack2MixPopUp selectedItem] tag] == HB_ACODEC_AC3 || [[fAudTrack2MixPopUp selectedItem] tag] == HB_ACODEC_DCA) - { - [fAudTrack2RatePopUp setEnabled: NO]; - [fAudTrack2BitratePopUp setEnabled: NO]; - [fAudTrack2DrcSlider setEnabled: NO]; - [fAudTrack2DrcField setEnabled: NO]; - } - - /* enable/disable the mixdown text and popupbutton for audio track 3 */ - [fAudTrack3CodecPopUp setEnabled: ([fAudLang3PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack3MixPopUp setEnabled: ([fAudLang3PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack3RatePopUp setEnabled: ([fAudLang3PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack3BitratePopUp setEnabled: ([fAudLang3PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack3DrcSlider setEnabled: ([fAudLang3PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack3DrcField setEnabled: ([fAudLang3PopUp indexOfSelectedItem] == 0) ? NO : YES]; - if ([fAudLang3PopUp indexOfSelectedItem] == 0) - { - [fAudTrack3CodecPopUp removeAllItems]; - [fAudTrack3MixPopUp removeAllItems]; - [fAudTrack3RatePopUp removeAllItems]; - [fAudTrack3BitratePopUp removeAllItems]; - [fAudTrack3DrcSlider setFloatValue: 0.00]; - [self audioDRCSliderChanged: fAudTrack3DrcSlider]; - } - else if ([[fAudTrack3MixPopUp selectedItem] tag] == HB_ACODEC_AC3 || [[fAudTrack3MixPopUp selectedItem] tag] == HB_ACODEC_DCA) - { - [fAudTrack3RatePopUp setEnabled: NO]; - [fAudTrack3BitratePopUp setEnabled: NO]; - [fAudTrack3DrcSlider setEnabled: NO]; - [fAudTrack3DrcField setEnabled: NO]; - } - - /* enable/disable the mixdown text and popupbutton for audio track 4 */ - [fAudTrack4CodecPopUp setEnabled: ([fAudLang4PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack4MixPopUp setEnabled: ([fAudLang4PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack4RatePopUp setEnabled: ([fAudLang4PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack4BitratePopUp setEnabled: ([fAudLang4PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack4DrcSlider setEnabled: ([fAudLang4PopUp indexOfSelectedItem] == 0) ? NO : YES]; - [fAudTrack4DrcField setEnabled: ([fAudLang4PopUp indexOfSelectedItem] == 0) ? NO : YES]; - if ([fAudLang4PopUp indexOfSelectedItem] == 0) - { - [fAudTrack4CodecPopUp removeAllItems]; - [fAudTrack4MixPopUp removeAllItems]; - [fAudTrack4RatePopUp removeAllItems]; - [fAudTrack4BitratePopUp removeAllItems]; - [fAudTrack4DrcSlider setFloatValue: 0.00]; - [self audioDRCSliderChanged: fAudTrack4DrcSlider]; - } - else if ([[fAudTrack4MixPopUp selectedItem] tag] == HB_ACODEC_AC3 || [[fAudTrack4MixPopUp selectedItem] tag] == HB_ACODEC_DCA) + if( returnCode == NSOKButton ) { - [fAudTrack4RatePopUp setEnabled: NO]; - [fAudTrack4BitratePopUp setEnabled: NO]; - [fAudTrack4DrcSlider setEnabled: NO]; - [fAudTrack4DrcField setEnabled: NO]; + NSString *importSrtDirectory = [[sheet filename] stringByDeletingLastPathComponent]; + NSString *importSrtFilePath = [sheet filename]; + [[NSUserDefaults standardUserDefaults] setObject:importSrtDirectory forKey:@"LastSrtImportDirectory"]; + + /* now pass the string off to fSubtitlesDelegate to add the srt file to the dropdown */ + [fSubtitlesDelegate createSubtitleSrtTrack:importSrtFilePath]; + + [fSubtitlesTable reloadData]; + } - -} +} + +#pragma mark - +#pragma mark Open New Windows -- (IBAction) addAllAudioTracksToPopUp: (id) sender +- (IBAction) openHomepage: (id) sender { + [[NSWorkspace sharedWorkspace] openURL: [NSURL + URLWithString:@"http://handbrake.fr/"]]; +} - hb_list_t * list = hb_get_titles( fHandle ); - hb_title_t * title = (hb_title_t*) - hb_list_item( list, [fSrcTitlePopUp indexOfSelectedItem] ); +- (IBAction) openForums: (id) sender +{ + [[NSWorkspace sharedWorkspace] openURL: [NSURL + URLWithString:@"http://forum.handbrake.fr/"]]; +} +- (IBAction) openUserGuide: (id) sender +{ + [[NSWorkspace sharedWorkspace] openURL: [NSURL + URLWithString:@"http://trac.handbrake.fr/wiki/HandBrakeGuide"]]; +} - hb_audio_config_t * audio; +/** + * Shows debug output window. + */ +- (IBAction)showDebugOutputPanel:(id)sender +{ + [outputPanel showOutputPanel:sender]; +} - [sender removeAllItems]; - [sender addItemWithTitle: NSLocalizedString( @"None", @"" )]; - for( int i = 0; i < hb_list_count( title->list_audio ); i++ ) - { - audio = (hb_audio_config_t *) hb_list_audio_config_item( title->list_audio, i ); - [[sender menu] addItemWithTitle: - [NSString stringWithUTF8String: audio->lang.description] - action: NULL keyEquivalent: @""]; - } - [sender selectItemAtIndex: 0]; +/** + * Shows preferences window. + */ +- (IBAction) showPreferencesWindow: (id) sender +{ + NSWindow * window = [fPreferencesController window]; + if (![window isVisible]) + [window center]; + [window makeKeyAndOrderFront: nil]; } -- (IBAction) selectAudioTrackInPopUp: (id) sender searchPrefixString: (NSString *) searchPrefixString selectIndexIfNotFound: (int) selectIndexIfNotFound +/** + * Shows queue window. + */ +- (IBAction) showQueueWindow:(id)sender { - - /* this method can be used to find a language, or a language-and-source-format combination, by passing in the appropriate string */ - /* e.g. to find the first French track, pass in an NSString * of "Francais" */ - /* e.g. to find the first English 5.1 AC3 track, pass in an NSString * of "English (AC3) (5.1 ch)" */ - /* if no matching track is found, then selectIndexIfNotFound is used to choose which track to select instead */ - if (hb_list_count( fTitle->list_audio ) != 0) - { - if (searchPrefixString) - { - - for( int i = 0; i < [sender numberOfItems]; i++ ) - { - /* Try to find the desired search string */ - if ([[[sender itemAtIndex: i] title] hasPrefix:searchPrefixString]) - { - [sender selectItemAtIndex: i]; - return; - } - } - /* couldn't find the string, so select the requested "search string not found" item */ - /* index of 0 means select the "none" item */ - /* index of 1 means select the first audio track */ - [sender selectItemAtIndex: selectIndexIfNotFound]; - } - else - { - /* if no search string is provided, then select the selectIndexIfNotFound item */ - [sender selectItemAtIndex: selectIndexIfNotFound]; - } - } - else - { - [sender selectItemAtIndex: 0]; - } - -} -- (IBAction) audioAddAudioTrackCodecs: (id)sender -{ - int format = [fDstFormatPopUp indexOfSelectedItem]; - - /* setup pointers to the appropriate popups for the correct track */ - NSPopUpButton * audiocodecPopUp; - NSPopUpButton * audiotrackPopUp; - if (sender == fAudTrack1CodecPopUp) - { - audiotrackPopUp = fAudLang1PopUp; - audiocodecPopUp = fAudTrack1CodecPopUp; - } - else if (sender == fAudTrack2CodecPopUp) - { - audiotrackPopUp = fAudLang2PopUp; - audiocodecPopUp = fAudTrack2CodecPopUp; - } - else if (sender == fAudTrack3CodecPopUp) - { - audiotrackPopUp = fAudLang3PopUp; - audiocodecPopUp = fAudTrack3CodecPopUp; - } - else - { - audiotrackPopUp = fAudLang4PopUp; - audiocodecPopUp = fAudTrack4CodecPopUp; - } - - [audiocodecPopUp removeAllItems]; - /* Make sure "None" isnt selected in the source track */ - if ([audiotrackPopUp indexOfSelectedItem] > 0) - { - [audiocodecPopUp setEnabled:YES]; - NSMenuItem *menuItem; - /* We setup our appropriate popups for codecs and put the int value in the popup tag for easy retrieval */ - switch( format ) - { - case 0: - /* MP4 */ - // CA_AAC - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AAC (CoreAudio)" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_CA_AAC]; - // FAAC - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AAC (faac)" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_FAAC]; - // MP3 - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"MP3 (lame)" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_LAME]; - // AC3 Passthru - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AC3 Passthru" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_AC3]; - break; - - case 1: - /* MKV */ - // CA_AAC - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AAC (CoreAudio)" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_CA_AAC]; - // FAAC - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AAC (faac)" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_FAAC]; - // AC3 Passthru - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AC3 Passthru" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_AC3]; - // DTS Passthru - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"DTS Passthru" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_DCA]; - // MP3 - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"MP3 (lame)" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_LAME]; - // Vorbis - menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"Vorbis (vorbis)" action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_VORBIS]; - break; - } - [audiocodecPopUp selectItemAtIndex:0]; - } - else - { - [audiocodecPopUp setEnabled:NO]; - } -} - -- (IBAction) audioTrackPopUpChanged: (id) sender -{ - /* utility function to call audioTrackPopUpChanged without passing in a mixdown-to-use */ - [self audioTrackPopUpChanged: sender mixdownToUse: 0]; -} - -- (IBAction) audioTrackPopUpChanged: (id) sender mixdownToUse: (int) mixdownToUse -{ - - /* make sure we have a selected title before continuing */ - if (fTitle == NULL) return; - /* make sure we have a source audio track before continuing */ - if (hb_list_count( fTitle->list_audio ) == 0) - { - [sender selectItemAtIndex:0]; - return; - } - /* if the sender is the lanaguage popup and there is nothing in the codec popup, lets call - * audioAddAudioTrackCodecs on the codec popup to populate it properly before moving on - */ - if (sender == fAudLang1PopUp && [[fAudTrack1CodecPopUp menu] numberOfItems] == 0) - { - [self audioAddAudioTrackCodecs: fAudTrack1CodecPopUp]; - } - if (sender == fAudLang2PopUp && [[fAudTrack2CodecPopUp menu] numberOfItems] == 0) - { - [self audioAddAudioTrackCodecs: fAudTrack2CodecPopUp]; - } - if (sender == fAudLang3PopUp && [[fAudTrack3CodecPopUp menu] numberOfItems] == 0) - { - [self audioAddAudioTrackCodecs: fAudTrack3CodecPopUp]; - } - if (sender == fAudLang4PopUp && [[fAudTrack4CodecPopUp menu] numberOfItems] == 0) - { - [self audioAddAudioTrackCodecs: fAudTrack4CodecPopUp]; - } - - /* Now lets make the sender the appropriate Audio Track popup from this point on */ - if (sender == fAudTrack1CodecPopUp || sender == fAudTrack1MixPopUp) - { - sender = fAudLang1PopUp; - } - if (sender == fAudTrack2CodecPopUp || sender == fAudTrack2MixPopUp) - { - sender = fAudLang2PopUp; - } - if (sender == fAudTrack3CodecPopUp || sender == fAudTrack3MixPopUp) - { - sender = fAudLang3PopUp; - } - if (sender == fAudTrack4CodecPopUp || sender == fAudTrack4MixPopUp) - { - sender = fAudLang4PopUp; - } - - /* pointer to this track's mixdown, codec, sample rate and bitrate NSPopUpButton's */ - NSPopUpButton * mixdownPopUp; - NSPopUpButton * audiocodecPopUp; - NSPopUpButton * sampleratePopUp; - NSPopUpButton * bitratePopUp; - if (sender == fAudLang1PopUp) - { - mixdownPopUp = fAudTrack1MixPopUp; - audiocodecPopUp = fAudTrack1CodecPopUp; - sampleratePopUp = fAudTrack1RatePopUp; - bitratePopUp = fAudTrack1BitratePopUp; - } - else if (sender == fAudLang2PopUp) - { - mixdownPopUp = fAudTrack2MixPopUp; - audiocodecPopUp = fAudTrack2CodecPopUp; - sampleratePopUp = fAudTrack2RatePopUp; - bitratePopUp = fAudTrack2BitratePopUp; - } - else if (sender == fAudLang3PopUp) - { - mixdownPopUp = fAudTrack3MixPopUp; - audiocodecPopUp = fAudTrack3CodecPopUp; - sampleratePopUp = fAudTrack3RatePopUp; - bitratePopUp = fAudTrack3BitratePopUp; - } - else - { - mixdownPopUp = fAudTrack4MixPopUp; - audiocodecPopUp = fAudTrack4CodecPopUp; - sampleratePopUp = fAudTrack4RatePopUp; - bitratePopUp = fAudTrack4BitratePopUp; - } - - /* get the index of the selected audio Track*/ - int thisAudioIndex = [sender indexOfSelectedItem] - 1; - - /* pointer for the hb_audio_s struct we will use later on */ - hb_audio_config_t * audio; - - int acodec; - /* check if the audio mixdown controls need their enabled state changing */ - [self setEnabledStateOfAudioMixdownControls:nil]; - - if (thisAudioIndex != -1) - { - - /* get the audio */ - audio = (hb_audio_config_t *) hb_list_audio_config_item( fTitle->list_audio, thisAudioIndex );// Should "fTitle" be title and be setup ? - - /* actually manipulate the proper mixdowns here */ - /* delete the previous audio mixdown options */ - [mixdownPopUp removeAllItems]; - - acodec = [[audiocodecPopUp selectedItem] tag]; - - if (audio != NULL) - { - - /* find out if our selected output audio codec supports 6ch */ - int audioCodecsSupport6Ch = (audio->in.codec && acodec != HB_ACODEC_LAME); - - /* check for AC-3 passthru */ - if (audio->in.codec == HB_ACODEC_AC3 && acodec == HB_ACODEC_AC3) - { - - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: "AC3 Passthru"] - action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_AC3]; - } - else if (audio->in.codec == HB_ACODEC_DCA && acodec == HB_ACODEC_DCA) - { - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: "DTS Passthru"] - action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_DCA]; - } - else - { - - /* add the appropriate audio mixdown menuitems to the popupbutton */ - /* in each case, we set the new menuitem's tag to be the amixdown value for that mixdown, - so that we can reference the mixdown later */ - - /* keep a track of the min and max mixdowns we used, so we can select the best match later */ - int minMixdownUsed = 0; - int maxMixdownUsed = 0; - - /* get the input channel layout without any lfe channels */ - int layout = audio->in.channel_layout & HB_INPUT_CH_LAYOUT_DISCRETE_NO_LFE_MASK; - - /* add a mono option */ - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_mixdowns[0].human_readable_name] - action: NULL keyEquivalent: @""]; - [menuItem setTag: hb_audio_mixdowns[0].amixdown]; - if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[0].amixdown; - maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[0].amixdown); - - /* do we want to add a stereo option? */ - /* offer stereo if we have a stereo-or-better source */ - if (layout >= HB_INPUT_CH_LAYOUT_STEREO) - { - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_mixdowns[1].human_readable_name] - action: NULL keyEquivalent: @""]; - [menuItem setTag: hb_audio_mixdowns[1].amixdown]; - if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[1].amixdown; - maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[1].amixdown); - } - - /* do we want to add a dolby surround (DPL1) option? */ - if (layout == HB_INPUT_CH_LAYOUT_3F1R || layout == HB_INPUT_CH_LAYOUT_3F2R || layout == HB_INPUT_CH_LAYOUT_DOLBY) - { - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_mixdowns[2].human_readable_name] - action: NULL keyEquivalent: @""]; - [menuItem setTag: hb_audio_mixdowns[2].amixdown]; - if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[2].amixdown; - maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[2].amixdown); - } - - /* do we want to add a dolby pro logic 2 (DPL2) option? */ - if (layout == HB_INPUT_CH_LAYOUT_3F2R) - { - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_mixdowns[3].human_readable_name] - action: NULL keyEquivalent: @""]; - [menuItem setTag: hb_audio_mixdowns[3].amixdown]; - if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[3].amixdown; - maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[3].amixdown); - } - - /* do we want to add a 6-channel discrete option? */ - if (audioCodecsSupport6Ch == 1 && layout == HB_INPUT_CH_LAYOUT_3F2R && (audio->in.channel_layout & HB_INPUT_CH_LAYOUT_HAS_LFE)) - { - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_mixdowns[4].human_readable_name] - action: NULL keyEquivalent: @""]; - [menuItem setTag: hb_audio_mixdowns[4].amixdown]; - if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[4].amixdown; - maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[4].amixdown); - } - - /* do we want to add an AC-3 passthrough option? */ - if (audio->in.codec == HB_ACODEC_AC3 && acodec == HB_ACODEC_AC3) - { - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_mixdowns[5].human_readable_name] - action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_AC3]; - if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[5].amixdown; - maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[5].amixdown); - } - - /* do we want to add a DTS Passthru option ? HB_ACODEC_DCA*/ - if (audio->in.codec == HB_ACODEC_DCA && acodec == HB_ACODEC_DCA) - { - NSMenuItem *menuItem = [[mixdownPopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_mixdowns[5].human_readable_name] - action: NULL keyEquivalent: @""]; - [menuItem setTag: HB_ACODEC_DCA]; - if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[5].amixdown; - maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[5].amixdown); - } - - /* auto-select the best mixdown based on our saved mixdown preference */ - - /* for now, this is hard-coded to a "best" mixdown of HB_AMIXDOWN_DOLBYPLII */ - /* ultimately this should be a prefs option */ - int useMixdown; - - /* if we passed in a mixdown to use - in order to load a preset - then try and use it */ - if (mixdownToUse > 0) - { - useMixdown = mixdownToUse; - } - else - { - useMixdown = HB_AMIXDOWN_DOLBYPLII; - } - - /* if useMixdown > maxMixdownUsed, then use maxMixdownUsed */ - if (useMixdown > maxMixdownUsed) - { - useMixdown = maxMixdownUsed; - } - - /* if useMixdown < minMixdownUsed, then use minMixdownUsed */ - if (useMixdown < minMixdownUsed) - { - useMixdown = minMixdownUsed; - } - - /* select the (possibly-amended) preferred mixdown */ - [mixdownPopUp selectItemWithTag: useMixdown]; - - } - /* In the case of a source track that is not AC3 and the user tries to use AC3 Passthru (which does not work) - * we force the Audio Codec choice back to a workable codec. We use CoreAudio aac for all containers. - */ - if (audio->in.codec != HB_ACODEC_AC3 && [[audiocodecPopUp selectedItem] tag] == HB_ACODEC_AC3) - { - [audiocodecPopUp selectItemWithTag: HB_ACODEC_CA_AAC]; - } - - /* In the case of a source track that is not DTS and the user tries to use DTS Passthru (which does not work) - * we force the Audio Codec choice back to a workable codec. We use CoreAudio aac for all containers. - */ - if (audio->in.codec != HB_ACODEC_DCA && [[audiocodecPopUp selectedItem] tag] == HB_ACODEC_DCA) - { - [audiocodecPopUp selectItemWithTag: HB_ACODEC_CA_AAC]; - } - - /* Setup our samplerate and bitrate popups we will need based on mixdown */ - [self audioTrackMixdownChanged: mixdownPopUp]; - } - - } - if( [fDstFormatPopUp indexOfSelectedItem] == 0 ) - { - [self autoSetM4vExtension: sender]; - } -} - -- (IBAction) audioTrackMixdownChanged: (id) sender -{ - - int acodec; - /* setup pointers to all of the other audio track controls - * we will need later - */ - NSPopUpButton * mixdownPopUp; - NSPopUpButton * sampleratePopUp; - NSPopUpButton * bitratePopUp; - NSPopUpButton * audiocodecPopUp; - NSPopUpButton * audiotrackPopUp; - NSSlider * drcSlider; - NSTextField * drcField; - if (sender == fAudTrack1MixPopUp) - { - audiotrackPopUp = fAudLang1PopUp; - audiocodecPopUp = fAudTrack1CodecPopUp; - mixdownPopUp = fAudTrack1MixPopUp; - sampleratePopUp = fAudTrack1RatePopUp; - bitratePopUp = fAudTrack1BitratePopUp; - drcSlider = fAudTrack1DrcSlider; - drcField = fAudTrack1DrcField; - } - else if (sender == fAudTrack2MixPopUp) - { - audiotrackPopUp = fAudLang2PopUp; - audiocodecPopUp = fAudTrack2CodecPopUp; - mixdownPopUp = fAudTrack2MixPopUp; - sampleratePopUp = fAudTrack2RatePopUp; - bitratePopUp = fAudTrack2BitratePopUp; - drcSlider = fAudTrack2DrcSlider; - drcField = fAudTrack2DrcField; - } - else if (sender == fAudTrack3MixPopUp) - { - audiotrackPopUp = fAudLang3PopUp; - audiocodecPopUp = fAudTrack3CodecPopUp; - mixdownPopUp = fAudTrack3MixPopUp; - sampleratePopUp = fAudTrack3RatePopUp; - bitratePopUp = fAudTrack3BitratePopUp; - drcSlider = fAudTrack3DrcSlider; - drcField = fAudTrack3DrcField; - } - else - { - audiotrackPopUp = fAudLang4PopUp; - audiocodecPopUp = fAudTrack4CodecPopUp; - mixdownPopUp = fAudTrack4MixPopUp; - sampleratePopUp = fAudTrack4RatePopUp; - bitratePopUp = fAudTrack4BitratePopUp; - drcSlider = fAudTrack4DrcSlider; - drcField = fAudTrack4DrcField; - } - acodec = [[audiocodecPopUp selectedItem] tag]; - /* storage variable for the min and max bitrate allowed for this codec */ - int minbitrate; - int maxbitrate; - - switch( acodec ) - { - case HB_ACODEC_FAAC: - /* check if we have a 6ch discrete conversion in either audio track */ - if ([[mixdownPopUp selectedItem] tag] == HB_AMIXDOWN_6CH) - { - /* FAAC has a minimum of 192 kbps for 6-channel discrete */ - minbitrate = 192; - /* If either mixdown popup includes 6-channel discrete, then allow up to 768 kbps */ - maxbitrate = 768; - break; - } - else - { - /* FAAC is happy using our min bitrate of 32 kbps for stereo or mono */ - minbitrate = 32; - /* note: haven't dealt with mono separately here, FAAC will just use the max it can */ - maxbitrate = 320; - break; - } - - case HB_ACODEC_CA_AAC: - /* check if we have a 6ch discrete conversion in either audio track */ - if ([[mixdownPopUp selectedItem] tag] == HB_AMIXDOWN_6CH) - { - minbitrate = 128; - maxbitrate = 768; - break; - } - else - { - minbitrate = 64; - maxbitrate = 320; - break; - } - - case HB_ACODEC_LAME: - /* Lame is happy using our min bitrate of 32 kbps */ - minbitrate = 32; - /* Lame won't encode if the bitrate is higher than 320 kbps */ - maxbitrate = 320; - break; - - case HB_ACODEC_VORBIS: - if ([[mixdownPopUp selectedItem] tag] == HB_AMIXDOWN_6CH) - { - /* Vorbis causes a crash if we use a bitrate below 192 kbps with 6 channel */ - minbitrate = 192; - /* If either mixdown popup includes 6-channel discrete, then allow up to 384 kbps */ - maxbitrate = 384; - break; - } - else - { - /* Vorbis causes a crash if we use a bitrate below 48 kbps */ - minbitrate = 48; - /* Vorbis can cope with 384 kbps quite happily, even for stereo */ - maxbitrate = 384; - break; - } - - default: - /* AC3 passthru disables the bitrate dropdown anyway, so we might as well just use the min and max bitrate */ - minbitrate = 32; - maxbitrate = 384; - - } - - /* make sure we have a selected title before continuing */ - if (fTitle == NULL || hb_list_count( fTitle->list_audio ) == 0) return; - /* get the audio so we can find out what input rates are*/ - hb_audio_config_t * audio; - audio = (hb_audio_config_t *) hb_list_audio_config_item( fTitle->list_audio, [audiotrackPopUp indexOfSelectedItem] - 1 ); - int inputbitrate = audio->in.bitrate / 1000; - int inputsamplerate = audio->in.samplerate; - - if ([[mixdownPopUp selectedItem] tag] != HB_ACODEC_AC3 && [[mixdownPopUp selectedItem] tag] != HB_ACODEC_DCA) - { - [bitratePopUp removeAllItems]; - - for( int i = 0; i < hb_audio_bitrates_count; i++ ) - { - if (hb_audio_bitrates[i].rate >= minbitrate && hb_audio_bitrates[i].rate <= maxbitrate) - { - /* add a new menuitem for this bitrate */ - NSMenuItem *menuItem = [[bitratePopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_bitrates[i].string] - action: NULL keyEquivalent: @""]; - /* set its tag to be the actual bitrate as an integer, so we can retrieve it later */ - [menuItem setTag: hb_audio_bitrates[i].rate]; - } - } - - /* select the default bitrate (but use 384 for 6-ch AAC) */ - if ([[mixdownPopUp selectedItem] tag] == HB_AMIXDOWN_6CH) - { - [bitratePopUp selectItemWithTag: 384]; - } - else - { - [bitratePopUp selectItemWithTag: hb_audio_bitrates[hb_audio_bitrates_default].rate]; - } - } - /* populate and set the sample rate popup */ - /* Audio samplerate */ - [sampleratePopUp removeAllItems]; - /* we create a same as source selection (Auto) so that we can choose to use the input sample rate */ - NSMenuItem *menuItem = [[sampleratePopUp menu] addItemWithTitle: @"Auto" action: NULL keyEquivalent: @""]; - [menuItem setTag: inputsamplerate]; - - for( int i = 0; i < hb_audio_rates_count; i++ ) - { - NSMenuItem *menuItem = [[sampleratePopUp menu] addItemWithTitle: - [NSString stringWithUTF8String: hb_audio_rates[i].string] - action: NULL keyEquivalent: @""]; - [menuItem setTag: hb_audio_rates[i].rate]; - } - /* We use the input sample rate as the default sample rate as downsampling just makes audio worse - * and there is no compelling reason to use anything else as default, though the users default - * preset will likely override any setting chosen here. - */ - [sampleratePopUp selectItemWithTag: inputsamplerate]; - - - /* Since AC3 Pass Thru and DTS Pass Thru uses the input bitrate and sample rate, we get the input tracks - * bitrate and display it in the bitrate popup even though libhb happily ignores any bitrate input from - * the gui. We do this for better user feedback in the audio tab as well as the queue for the most part - */ - if ([[mixdownPopUp selectedItem] tag] == HB_ACODEC_AC3 || [[mixdownPopUp selectedItem] tag] == HB_ACODEC_DCA) - { - - /* lets also set the bitrate popup to the input bitrate as thats what passthru will use */ - [bitratePopUp removeAllItems]; - NSMenuItem *menuItem = [[bitratePopUp menu] addItemWithTitle: - [NSString stringWithFormat:@"%d", inputbitrate] - action: NULL keyEquivalent: @""]; - [menuItem setTag: inputbitrate]; - /* For ac3 passthru we disable the sample rate and bitrate popups as well as the drc slider*/ - [bitratePopUp setEnabled: NO]; - [sampleratePopUp setEnabled: NO]; - - [drcSlider setFloatValue: 0.00]; - [self audioDRCSliderChanged: drcSlider]; - [drcSlider setEnabled: NO]; - [drcField setEnabled: NO]; - } - else - { - [sampleratePopUp setEnabled: YES]; - [bitratePopUp setEnabled: YES]; - [drcSlider setEnabled: YES]; - [drcField setEnabled: YES]; - } -[self calculateBitrate:nil]; -} - -- (IBAction) audioDRCSliderChanged: (id) sender -{ - NSSlider * drcSlider; - NSTextField * drcField; - if (sender == fAudTrack1DrcSlider) - { - drcSlider = fAudTrack1DrcSlider; - drcField = fAudTrack1DrcField; - } - else if (sender == fAudTrack2DrcSlider) - { - drcSlider = fAudTrack2DrcSlider; - drcField = fAudTrack2DrcField; - } - else if (sender == fAudTrack3DrcSlider) - { - drcSlider = fAudTrack3DrcSlider; - drcField = fAudTrack3DrcField; - } - else - { - drcSlider = fAudTrack4DrcSlider; - drcField = fAudTrack4DrcField; - } - - /* If we are between 0.0 and 1.0 on the slider, snap it to 1.0 */ - if ([drcSlider floatValue] > 0.0 && [drcSlider floatValue] < 1.0) - { - [drcSlider setFloatValue:1.0]; - } - - - [drcField setStringValue: [NSString stringWithFormat: @"%.2f", [drcSlider floatValue]]]; - /* For now, do not call this until we have an intelligent way to determine audio track selections - * compared to presets - */ - //[self customSettingUsed: sender]; -} - -#pragma mark - - -- (IBAction) browseImportSrtFile: (id) sender -{ - - NSOpenPanel * panel; - - panel = [NSOpenPanel openPanel]; - [panel setAllowsMultipleSelection: NO]; - [panel setCanChooseFiles: YES]; - [panel setCanChooseDirectories: NO ]; - NSString * sourceDirectory; - if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"]) - { - sourceDirectory = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"]; - } - else - { - sourceDirectory = @"~/Desktop"; - sourceDirectory = [sourceDirectory stringByExpandingTildeInPath]; - } - /* we open up the browse srt sheet here and call for browseImportSrtFileDone after the sheet is closed */ - NSArray *fileTypes = [NSArray arrayWithObjects:@"plist", @"srt", nil]; - [panel beginSheetForDirectory: sourceDirectory file: nil types: fileTypes - modalForWindow: fWindow modalDelegate: self - didEndSelector: @selector( browseImportSrtFileDone:returnCode:contextInfo: ) - contextInfo: sender]; -} - -- (void) browseImportSrtFileDone: (NSSavePanel *) sheet - returnCode: (int) returnCode contextInfo: (void *) contextInfo -{ - if( returnCode == NSOKButton ) - { - NSString *importSrtDirectory = [[sheet filename] stringByDeletingLastPathComponent]; - NSString *importSrtFilePath = [sheet filename]; - [[NSUserDefaults standardUserDefaults] setObject:importSrtDirectory forKey:@"LastSrtImportDirectory"]; - - /* now pass the string off to fSubtitlesDelegate to add the srt file to the dropdown */ - [fSubtitlesDelegate createSubtitleSrtTrack:importSrtFilePath]; - - [fSubtitlesTable reloadData]; - - } -} - -#pragma mark - -#pragma mark Open New Windows - -- (IBAction) openHomepage: (id) sender -{ - [[NSWorkspace sharedWorkspace] openURL: [NSURL - URLWithString:@"http://handbrake.fr/"]]; -} - -- (IBAction) openForums: (id) sender -{ - [[NSWorkspace sharedWorkspace] openURL: [NSURL - URLWithString:@"http://forum.handbrake.fr/"]]; -} -- (IBAction) openUserGuide: (id) sender -{ - [[NSWorkspace sharedWorkspace] openURL: [NSURL - URLWithString:@"http://trac.handbrake.fr/wiki/HandBrakeGuide"]]; -} - -/** - * Shows debug output window. - */ -- (IBAction)showDebugOutputPanel:(id)sender -{ - [outputPanel showOutputPanel:sender]; -} - -/** - * Shows preferences window. - */ -- (IBAction) showPreferencesWindow: (id) sender -{ - NSWindow * window = [fPreferencesController window]; - if (![window isVisible]) - [window center]; - - [window makeKeyAndOrderFront: nil]; -} - -/** - * Shows queue window. - */ -- (IBAction) showQueueWindow:(id)sender -{ - [fQueueController showQueueWindow:sender]; -} + [fQueueController showQueueWindow:sender]; +} - (IBAction) toggleDrawer:(id)sender { @@ -6737,320 +5515,7 @@ return YES; [fVidTurboPassCheck setState:[[chosenPreset objectForKey:@"VideoTurboTwoPass"] intValue]]; /*Audio*/ - /* First we check to see if we are using the current audio track layout based on AudioList array */ - if ([chosenPreset objectForKey:@"AudioList"]) - { - - /* pointer to this track's mixdown, codec, sample rate and bitrate NSPopUpButton's */ - NSPopUpButton * trackLangPreviousPopUp = nil; - NSPopUpButton * trackLangPopUp = nil; - NSPopUpButton * mixdownPopUp = nil; - NSPopUpButton * audiocodecPopUp = nil; - NSPopUpButton * sampleratePopUp = nil; - NSPopUpButton * bitratePopUp = nil; - NSSlider * drcSlider = nil; - - - /* Populate the audio widgets based on the contents of the AudioList array */ - int i = 0; - NSEnumerator *enumerator = [[chosenPreset objectForKey:@"AudioList"] objectEnumerator]; - id tempObject; - while (tempObject = [enumerator nextObject]) - { - i++; - if( i == 1 ) - { - trackLangPopUp = fAudLang1PopUp; - mixdownPopUp = fAudTrack1MixPopUp; - audiocodecPopUp = fAudTrack1CodecPopUp; - sampleratePopUp = fAudTrack1RatePopUp; - bitratePopUp = fAudTrack1BitratePopUp; - drcSlider = fAudTrack1DrcSlider; - } - if( i == 2 ) - { - trackLangPreviousPopUp = fAudLang1PopUp; - trackLangPopUp = fAudLang2PopUp; - mixdownPopUp = fAudTrack2MixPopUp; - audiocodecPopUp = fAudTrack2CodecPopUp; - sampleratePopUp = fAudTrack2RatePopUp; - bitratePopUp = fAudTrack2BitratePopUp; - drcSlider = fAudTrack2DrcSlider; - } - if( i == 3 ) - { - trackLangPreviousPopUp = fAudLang2PopUp; - trackLangPopUp = fAudLang3PopUp; - mixdownPopUp = fAudTrack3MixPopUp; - audiocodecPopUp = fAudTrack3CodecPopUp; - sampleratePopUp = fAudTrack3RatePopUp; - bitratePopUp = fAudTrack3BitratePopUp; - drcSlider = fAudTrack3DrcSlider; - } - if( i == 4 ) - { - trackLangPreviousPopUp = fAudLang3PopUp; - trackLangPopUp = fAudLang4PopUp; - mixdownPopUp = fAudTrack4MixPopUp; - audiocodecPopUp = fAudTrack4CodecPopUp; - sampleratePopUp = fAudTrack4RatePopUp; - bitratePopUp = fAudTrack4BitratePopUp; - drcSlider = fAudTrack4DrcSlider; - } - - - if ([trackLangPopUp indexOfSelectedItem] == 0) - { - if (i ==1) - { - [trackLangPopUp selectItemAtIndex: 1]; - } - else - { - /* if we are greater than track 1, select - * the same track as the previous track */ - [trackLangPopUp selectItemAtIndex: [trackLangPreviousPopUp indexOfSelectedItem]]; - } - } - [self audioTrackPopUpChanged: trackLangPopUp]; - [audiocodecPopUp selectItemWithTitle:[tempObject objectForKey:@"AudioEncoder"]]; - /* check our pref for core audio and use it in place of faac if preset is a built in */ - if ([[chosenPreset objectForKey:@"Type"] intValue] == 0 && - [[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES && - [[tempObject objectForKey:@"AudioEncoder"] isEqualToString: @"AAC (faac)"]) - { - [audiocodecPopUp selectItemWithTitle:@"AAC (CoreAudio)"]; - } - - [self audioTrackPopUpChanged: audiocodecPopUp]; - [mixdownPopUp selectItemWithTitle:[tempObject objectForKey:@"AudioMixdown"]]; - [self audioTrackMixdownChanged: mixdownPopUp]; - /* check to see if the selection was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default - * mixdown*/ - if ([mixdownPopUp selectedItem] == nil) - { - [self audioTrackPopUpChanged: audiocodecPopUp]; - [self writeToActivityLog: "presetSelected mixdown not selected, rerun audioTrackPopUpChanged"]; - } - [sampleratePopUp selectItemWithTitle:[tempObject objectForKey:@"AudioSamplerate"]]; - /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */ - if (![[tempObject objectForKey:@"AudioEncoder"] isEqualToString:@"AC3 Passthru"]) - { - [bitratePopUp selectItemWithTitle:[tempObject objectForKey:@"AudioBitrate"]]; - /* check to see if the bitrate selection was available, if not, rerun audioTrackMixdownChanged using the mixdown to just set the - *default mixdown bitrate*/ - if ([bitratePopUp selectedItem] == nil) - { - [self audioTrackMixdownChanged: mixdownPopUp]; - } - } - [drcSlider setFloatValue:[[tempObject objectForKey:@"AudioTrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: drcSlider]; - - - /* If we are any track greater than 1 check to make sure we have a matching source codec is using ac3 passthru or dts passthru, - * if not we will set the track to "None". Track 1 is allowed to mixdown to a suitable DPL2 mix if we cannot passthru */ - - if( i > 1 ) - { - /* Check to see if the preset asks for a passhthru track (AC3 or DTS) and verify there is a matching source track if not, set the track to "None". */ - if (([[tempObject objectForKey:@"AudioEncoder"] isEqualToString:@"AC3 Passthru"] || [[tempObject objectForKey:@"AudioEncoder"] isEqualToString:@"DTS Passthru"]) && [trackLangPopUp indexOfSelectedItem] != 0) - { - hb_audio_config_t * audio; - /* get the audio source audio codec */ - audio = (hb_audio_config_t *) hb_list_audio_config_item( fTitle->list_audio, [trackLangPopUp indexOfSelectedItem] - 1 ); - if (audio != NULL && [[tempObject objectForKey:@"AudioEncoder"] isEqualToString:@"AC3 Passthru"] && audio->in.codec != HB_ACODEC_AC3 || - [[tempObject objectForKey:@"AudioEncoder"] isEqualToString:@"DTS Passthru"] && audio->in.codec != HB_ACODEC_DCA ) - { - /* We have a preset using ac3 passthru but no ac3 source audio, so set the track to "None" and bail */ - if ([[tempObject objectForKey:@"AudioEncoder"] isEqualToString:@"AC3 Passthru"]) - { - [self writeToActivityLog: "Preset calls for AC3 Pass thru ..."]; - } - if ([[tempObject objectForKey:@"AudioEncoder"] isEqualToString:@"DTS Passthru"]) - { - [self writeToActivityLog: "Preset calls for DTS Pass thru ..."]; - } - [self writeToActivityLog: "No matching source codec, setting track %d to None", i]; - [trackLangPopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: trackLangPopUp]; - } - } - } - } - - /* We now cleanup any extra audio tracks that may have been previously set if we need to */ - - if (i < 4) - { - [fAudLang4PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang4PopUp]; - - if (i < 3) - { - [fAudLang3PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang3PopUp]; - - if (i < 2) - { - [fAudLang2PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang2PopUp]; - } - } - } - - } - else - { - if ([chosenPreset objectForKey:@"Audio1Track"] > 0) - { - if ([fAudLang1PopUp indexOfSelectedItem] == 0) - { - [fAudLang1PopUp selectItemAtIndex: 1]; - } - [self audioTrackPopUpChanged: fAudLang1PopUp]; - [fAudTrack1CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Encoder"]]; - /* check our pref for core audio and use it in place of faac if preset is built in */ - if ([[chosenPreset objectForKey:@"Type"] intValue] == 0 && - [[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES && - [[chosenPreset objectForKey:@"Audio1Encoder"] isEqualToString: @"AAC (faac)"]) - { - [fAudTrack1CodecPopUp selectItemWithTitle:@"AAC (CoreAudio)"]; - } - - [self audioTrackPopUpChanged: fAudTrack1CodecPopUp]; - [fAudTrack1MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Mixdown"]]; - /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default - * mixdown*/ - if ([fAudTrack1MixPopUp selectedItem] == nil) - { - [self audioTrackPopUpChanged: fAudTrack1CodecPopUp]; - } - [fAudTrack1RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Samplerate"]]; - /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */ - if (![[chosenPreset objectForKey:@"Audio1Encoder"] isEqualToString:@"AC3 Passthru"]) - { - [fAudTrack1BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Bitrate"]]; - } - [fAudTrack1DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio1TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack1DrcSlider]; - } - - if ([chosenPreset objectForKey:@"Audio2Track"] > 0) - { - if ([fAudLang2PopUp indexOfSelectedItem] == 0) - { - [fAudLang2PopUp selectItemAtIndex: 1]; - } - [self audioTrackPopUpChanged: fAudLang2PopUp]; - [fAudTrack2CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Encoder"]]; - /* check our pref for core audio and use it in place of faac if preset is built in */ - if ([[chosenPreset objectForKey:@"Type"] intValue] == 0 && - [[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES && - [[chosenPreset objectForKey:@"Audio2Encoder"] isEqualToString: @"AAC (faac)"]) - { - [fAudTrack2CodecPopUp selectItemWithTitle:@"AAC (CoreAudio)"]; - } - [self audioTrackPopUpChanged: fAudTrack2CodecPopUp]; - [fAudTrack2MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Mixdown"]]; - /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default - * mixdown*/ - if ([fAudTrack2MixPopUp selectedItem] == nil) - { - [self audioTrackPopUpChanged: fAudTrack2CodecPopUp]; - } - [fAudTrack2RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Samplerate"]]; - /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */ - if (![[chosenPreset objectForKey:@"Audio2Encoder"] isEqualToString:@"AC3 Passthru"]) - { - [fAudTrack2BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Bitrate"]]; - } - [fAudTrack2DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio2TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack2DrcSlider]; - } - if ([chosenPreset objectForKey:@"Audio3Track"] > 0) - { - if ([fAudLang3PopUp indexOfSelectedItem] == 0) - { - [fAudLang3PopUp selectItemAtIndex: 1]; - } - [self audioTrackPopUpChanged: fAudLang3PopUp]; - [fAudTrack3CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Encoder"]]; - /* check our pref for core audio and use it in place of faac if preset is built in */ - if ([[chosenPreset objectForKey:@"Type"] intValue] == 0 && - [[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES && - [[chosenPreset objectForKey:@"Audio3Encoder"] isEqualToString: @"AAC (faac)"]) - { - [fAudTrack3CodecPopUp selectItemWithTitle:@"AAC (CoreAudio)"]; - } - [self audioTrackPopUpChanged: fAudTrack3CodecPopUp]; - [fAudTrack3MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Mixdown"]]; - /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default - * mixdown*/ - if ([fAudTrack3MixPopUp selectedItem] == nil) - { - [self audioTrackPopUpChanged: fAudTrack3CodecPopUp]; - } - [fAudTrack3RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Samplerate"]]; - /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */ - if (![[chosenPreset objectForKey:@"Audio3Encoder"] isEqualToString: @"AC3 Passthru"]) - { - [fAudTrack3BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Bitrate"]]; - } - [fAudTrack3DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio3TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack3DrcSlider]; - } - if ([chosenPreset objectForKey:@"Audio4Track"] > 0) - { - if ([fAudLang4PopUp indexOfSelectedItem] == 0) - { - [fAudLang4PopUp selectItemAtIndex: 1]; - } - [self audioTrackPopUpChanged: fAudLang4PopUp]; - [fAudTrack4CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Encoder"]]; - /* check our pref for core audio and use it in place of faac if preset is built in */ - if ([[chosenPreset objectForKey:@"Type"] intValue] == 0 && - [[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES && - [[chosenPreset objectForKey:@"Audio4Encoder"] isEqualToString: @"AAC (faac)"]) - { - [fAudTrack4CodecPopUp selectItemWithTitle:@"AAC (CoreAudio)"]; - } - [self audioTrackPopUpChanged: fAudTrack4CodecPopUp]; - [fAudTrack4MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Mixdown"]]; - /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default - * mixdown*/ - if ([fAudTrack4MixPopUp selectedItem] == nil) - { - [self audioTrackPopUpChanged: fAudTrack4CodecPopUp]; - } - [fAudTrack4RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Samplerate"]]; - /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */ - if (![[chosenPreset objectForKey:@"Audio4Encoder"] isEqualToString:@"AC3 Passthru"]) - { - [fAudTrack4BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Bitrate"]]; - } - [fAudTrack4DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio4TrackDRCSlider"] floatValue]]; - [self audioDRCSliderChanged: fAudTrack4DrcSlider]; - } - - /* We now cleanup any extra audio tracks that may have been previously set if we need to */ - - if (![chosenPreset objectForKey:@"Audio2Track"] || [chosenPreset objectForKey:@"Audio2Track"] == 0) - { - [fAudLang2PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang2PopUp]; - } - if (![chosenPreset objectForKey:@"Audio3Track"] || [chosenPreset objectForKey:@"Audio3Track"] > 0) - { - [fAudLang3PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang3PopUp]; - } - if (![chosenPreset objectForKey:@"Audio4Track"] || [chosenPreset objectForKey:@"Audio4Track"] > 0) - { - [fAudLang4PopUp selectItemAtIndex: 0]; - [self audioTrackPopUpChanged: fAudLang4PopUp]; - } - } + [fAudioDelegate addTracksFromPreset: chosenPreset]; /*Subtitles*/ [fSubPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Subtitles"]]; @@ -7543,62 +6008,7 @@ return YES; /*Audio*/ NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; - /* we actually call the methods for the nests here */ - if ([fAudLang1PopUp indexOfSelectedItem] > 0) - { - NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; - [audioTrack1Array setObject:[NSNumber numberWithInt:[fAudLang1PopUp indexOfSelectedItem]] forKey:@"AudioTrack"]; - [audioTrack1Array setObject:[fAudLang1PopUp titleOfSelectedItem] forKey:@"AudioTrackDescription"]; - [audioTrack1Array setObject:[fAudTrack1CodecPopUp titleOfSelectedItem] forKey:@"AudioEncoder"]; - [audioTrack1Array setObject:[fAudTrack1MixPopUp titleOfSelectedItem] forKey:@"AudioMixdown"]; - [audioTrack1Array setObject:[fAudTrack1RatePopUp titleOfSelectedItem] forKey:@"AudioSamplerate"]; - [audioTrack1Array setObject:[fAudTrack1BitratePopUp titleOfSelectedItem] forKey:@"AudioBitrate"]; - [audioTrack1Array setObject:[NSNumber numberWithFloat:[fAudTrack1DrcSlider floatValue]] forKey:@"AudioTrackDRCSlider"]; - [audioTrack1Array autorelease]; - [audioListArray addObject:audioTrack1Array]; - } - - if ([fAudLang2PopUp indexOfSelectedItem] > 0) - { - NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init]; - [audioTrack2Array setObject:[NSNumber numberWithInt:[fAudLang2PopUp indexOfSelectedItem]] forKey:@"AudioTrack"]; - [audioTrack2Array setObject:[fAudLang2PopUp titleOfSelectedItem] forKey:@"AudioTrackDescription"]; - [audioTrack2Array setObject:[fAudTrack2CodecPopUp titleOfSelectedItem] forKey:@"AudioEncoder"]; - [audioTrack2Array setObject:[fAudTrack2MixPopUp titleOfSelectedItem] forKey:@"AudioMixdown"]; - [audioTrack2Array setObject:[fAudTrack2RatePopUp titleOfSelectedItem] forKey:@"AudioSamplerate"]; - [audioTrack2Array setObject:[fAudTrack2BitratePopUp titleOfSelectedItem] forKey:@"AudioBitrate"]; - [audioTrack2Array setObject:[NSNumber numberWithFloat:[fAudTrack2DrcSlider floatValue]] forKey:@"AudioTrackDRCSlider"]; - [audioTrack2Array autorelease]; - [audioListArray addObject:audioTrack2Array]; - } - - if ([fAudLang3PopUp indexOfSelectedItem] > 0) - { - NSMutableDictionary *audioTrack3Array = [[NSMutableDictionary alloc] init]; - [audioTrack3Array setObject:[NSNumber numberWithInt:[fAudLang3PopUp indexOfSelectedItem]] forKey:@"AudioTrack"]; - [audioTrack3Array setObject:[fAudLang3PopUp titleOfSelectedItem] forKey:@"AudioTrackDescription"]; - [audioTrack3Array setObject:[fAudTrack3CodecPopUp titleOfSelectedItem] forKey:@"AudioEncoder"]; - [audioTrack3Array setObject:[fAudTrack3MixPopUp titleOfSelectedItem] forKey:@"AudioMixdown"]; - [audioTrack3Array setObject:[fAudTrack3RatePopUp titleOfSelectedItem] forKey:@"AudioSamplerate"]; - [audioTrack3Array setObject:[fAudTrack3BitratePopUp titleOfSelectedItem] forKey:@"AudioBitrate"]; - [audioTrack3Array setObject:[NSNumber numberWithFloat:[fAudTrack3DrcSlider floatValue]] forKey:@"AudioTrackDRCSlider"]; - [audioTrack3Array autorelease]; - [audioListArray addObject:audioTrack3Array]; - } - - if ([fAudLang4PopUp indexOfSelectedItem] > 0) - { - NSMutableDictionary *audioTrack4Array = [[NSMutableDictionary alloc] init]; - [audioTrack4Array setObject:[NSNumber numberWithInt:[fAudLang4PopUp indexOfSelectedItem]] forKey:@"AudioTrack"]; - [audioTrack4Array setObject:[fAudLang4PopUp titleOfSelectedItem] forKey:@"AudioTrackDescription"]; - [audioTrack4Array setObject:[fAudTrack4CodecPopUp titleOfSelectedItem] forKey:@"AudioEncoder"]; - [audioTrack4Array setObject:[fAudTrack4MixPopUp titleOfSelectedItem] forKey:@"AudioMixdown"]; - [audioTrack4Array setObject:[fAudTrack4RatePopUp titleOfSelectedItem] forKey:@"AudioSamplerate"]; - [audioTrack4Array setObject:[fAudTrack4BitratePopUp titleOfSelectedItem] forKey:@"AudioBitrate"]; - [audioTrack4Array setObject:[NSNumber numberWithFloat:[fAudTrack4DrcSlider floatValue]] forKey:@"AudioTrackDRCSlider"]; - [audioTrack4Array autorelease]; - [audioListArray addObject:audioTrack4Array]; - } + [fAudioDelegate prepareAudioForPreset: audioListArray]; [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"]; diff --git a/macosx/English.lproj/MainMenu.xib b/macosx/English.lproj/MainMenu.xib index 8d72cd31..00059fd5 100644 --- a/macosx/English.lproj/MainMenu.xib +++ b/macosx/English.lproj/MainMenu.xib @@ -1,17 +1,14 @@ - + 1050 - 10F569 - 788 - 1038.29 - 461.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 788 - + 9L31a + 677 + 949.54 + 353.00 YES + @@ -20,7 +17,7 @@ YES - + YES @@ -43,14 +40,14 @@ 4103 2 - {{41, 574}, {754, 556}} + {{41, 580}, {760, 550}} 1886912512 HandBrake NSWindow View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -60,7 +57,7 @@ 264 - {{17, 0}, {551, 28}} + {{17, 8}, {588, 14}} YES @@ -69,7 +66,7 @@ RE8gTk9UIFRSQU5TTEFURSBUSElTIE5JQiBGSUxFLAo LucidaGrande - 11 + 1.100000e+01 3100 @@ -79,7 +76,7 @@ controlColor 3 - MC42NjY2NjY2NjY3AA + MC42NjY2NjY2OQA @@ -97,15 +94,15 @@ 1288 - {{18, -28}, {724, 20}} + {{18, -20}, {721, 20}} 16396 - 100 + 1.000000e+02 264 - {{13, 28}, {734, 343}} + {{13, 22}, {734, 343}} YES @@ -165,8 +162,8 @@ 131072 Average bitrate (kbps): - 1 + 1211912703 0 @@ -200,7 +197,7 @@ Radio LucidaGrande - 13 + 1.300000e+01 1044 1211912703 @@ -275,14 +272,14 @@ LucidaGrande - 9 + 9.000000e+00 3614 - 51 - 0.0 - 19 - 0.0 + 5.100000e+01 + 0.000000e+00 + 1.900000e+01 + 0.000000e+00 205 1 YES @@ -319,7 +316,7 @@ YES - + YES allowsFloats formatterBehavior @@ -332,23 +329,25 @@ YES - + - + - -∞ + LeKIng - - +∞ + + K+KIng #,##0.### #,##0.### - + + + @@ -356,7 +355,9 @@ NaN YES - + + YES + YES @@ -493,7 +494,7 @@ 256 - {{106, 183}, {124, 18}} + {{106, 208}, {124, 18}} YES @@ -513,31 +514,10 @@ 25 - - - -2147483392 - {{106, 206}, {148, 18}} - - YES - - 67239424 - 131072 - Peak Framerate (VFR) - - - 1211912703 - 2 - - - - 200 - 25 - - 256 - {{123, 165}, {107, 16}} + {{123, 190}, {107, 16}} YES @@ -647,14020 +627,9765 @@ - - 2 - + + Item 5 + 256 YES - - - 256 - {{5, 226}, {48, 14}} - - - YES - - 67239424 - 71434240 - Track 1: - - - - - - - - - 256 - {{54, 191}, {178, 22}} - - - 1 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - LucidaGrande - 11 - 16 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{5, 196}, {48, 14}} - - - YES - - 67239424 - 71434240 - Track 2: - - - - - - - - - 256 - {{572, 248}, {80, 13}} - - - YES - - 67239424 - 138674176 - Bitrate (kbps) - - - - - - - - - 256 - {{578, 221}, {66, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{362, 220}, {139, 22}} - - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{374, 250}, {81, 11}} - - - YES - - 67239424 - 138674176 - Mixdown - - - - - - - - - 256 - {{362, 191}, {139, 22}} - - - 1 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 268 - {{17, 279}, {79, 14}} - - YES - - 67239488 - 272761856 - Audio Tracks - - LucidaGrande-Bold - 11 - 16 - - - - - - - - + + 268 - {{104, 283}, {601, 5}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - 3 - 2 - 0 - NO - - - - 256 - {{90, 250}, {81, 11}} - - - YES - - 67239424 - 138674176 - Source - - - - - - - - - 256 - {{508, 221}, {64, 22}} - - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{483, 245}, {101, 16}} - - - YES - - 67239424 - 138674176 - Samplerate (khz) - - - - - - - - - 256 - {{54, 221}, {178, 22}} - - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{235, 221}, {122, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{235, 191}, {122, 22}} - - 1 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{251, 250}, {81, 11}} - - YES - - 67239424 - 138674176 - Audio Codec - - - - - - - - - 256 - {{5, 167}, {48, 14}} - - YES - - 67239424 - 71434240 - Track 3: - - - - - - - - - 256 - {{5, 139}, {48, 14}} - - YES - - 67239424 - 71434240 - Track 4: - - - - - - - - - 256 - {{54, 162}, {178, 22}} - - 2 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{54, 132}, {178, 22}} - - 3 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - + + YES + + + 2304 + YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{235, 162}, {122, 22}} - - 2 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{235, 132}, {122, 22}} - - 3 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{362, 162}, {139, 22}} - - 2 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{362, 132}, {139, 22}} - - 3 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{508, 191}, {64, 22}} - - 1 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{508, 162}, {64, 22}} - - 2 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{508, 132}, {64, 22}} - - 3 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{578, 191}, {66, 22}} - - 1 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{578, 162}, {66, 22}} - - 2 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 256 - {{578, 132}, {66, 22}} - - 3 - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 268 - {{658, 217}, {26, 31}} - - YES - - -2079981824 - 131072 - - - - 4 - 0.0 - 0.0 - 0.0 - 16 - 0 - YES - NO - 1 - - - - - 268 - {{658, 187}, {26, 31}} - - YES - - -2079981824 - 131072 - - - Helvetica - 12 - 16 - - - 4 - 0.0 - 0.0 - 0.0 - 16 - 0 - YES - NO - 1 - - - - - 268 - {{658, 158}, {26, 31}} - - YES - - -2079981824 - 131072 - - - - 4 - 0.0 - 0.0 - 0.0 - 16 - 0 - YES - NO - 1 - - - - - 268 - {{658, 128}, {26, 31}} - - YES - - -2079981824 - 131072 - - - - 4 - 0.0 - 0.0 - 0.0 - 16 - 0 - YES - NO - 1 - - - - - 256 - {{651, 249}, {40, 11}} - - YES - - 67239424 - 138674176 - DRC - - - - - - - - - 268 - {{685, 227}, {26, 11}} - - YES - - 67239488 - 272892928 - 1.0 - - - - - - - - - 268 - {{685, 197}, {26, 11}} - - YES - - 67239488 - 272892928 - 1.0 - - - - - - - - - 268 - {{686, 168}, {26, 11}} - - YES - - 67239488 - 272892928 - 1.0 - - - - - - - - - 268 - {{685, 140}, {26, 11}} - - YES - - 67239488 - 272892928 - 1.0 - - - - - - - - {{10, 25}, {714, 305}} - - - Audio - - - - - 3 - - - 256 - - YES - - - 268 - - YES - - - 2304 - - YES - - - 256 - {678, 241} - - YES - - - 256 - {678, 17} - - - - - - -2147483392 - {{-26, 0}, {16, 17}} - - - - YES - - track - 167 - 40 - 1000 - - 75628096 - 2048 - Track - - - 3 - MC4zMzMzMzI5OQA - - - 6 - System - headerTextColor - - - - - -2076049856 - 264192 - - - 100679935 - 129 - - - 400 - 75 - - - Pop Up - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - OtherViews - - YES - - - - YES - YES - 2 - - 3 - YES - - - - forced - 75 - 10 - 3.4028229999999999e+38 - - 75628096 - 134219776 - Forced Only - - - 6 - System - headerColor - - - - - - 67239424 - 131072 - Check - - - 1215582719 - 130 - - - - - 200 - 25 - - 3 - YES - YES - - - - burned - 65 - 10 - 3.4028229999999999e+38 - - 75628096 - 134219776 - Burned In - - - - - - 67239424 - 131072 - Check - - - 1215582719 - 130 - - - - - 200 - 25 - - 3 - YES - YES - - - - default - 54 - 10 - 3.4028229999999999e+38 - - 75628096 - 134219776 - Default - - - - - - 67239424 - 131072 - Check - - - 1215582719 - 130 - - - - - 200 - 25 - - 3 - YES - YES - - - - srt_lang - 112 - 10 - 3.4028229999999999e+38 - - 75628096 - 2048 - Srt Language - - - - - - -2076049856 - 133120 - - - 100679935 - 129 - - - 400 - 75 - - - Pop Up - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - OtherViews - - YES - - - - 3 - YES - YES - 1 - - 3 - YES - YES - - - - srt_charcode - 123 - 10 - 3.4028229999999999e+38 - - 75628096 - 2048 - Srt Char Code - - - - - - -2076049856 - 133120 - - - 100679935 - 129 - - - 400 - 75 - - - Pop Up - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - OtherViews - - YES - - - - 3 - YES - YES - 1 - - 3 - YES - YES - - - - srt_offset - 61 - 10 - 3.4028229999999999e+38 - - 75628096 - 2048 - Srt Offset - - - - - - 337772096 - 272630784 - Text - - - - - - 3 - YES - YES - - - - 3 - 2 - - - 6 - System - gridColor - - 3 - MC41AA - - - 17 - 1379926016 - - - 4 - 15 - 0 - NO - 0 - - - {{1, 17}, {678, 241}} - - - - - 6 - System - controlBackgroundColor - - - 4 - - - - -2147483392 - {{-100, -100}, {15, 206}} - - - _doScroller: - 37 - 0.19473679999999999 - - - - -2147483392 - {{-100, -100}, {685, 15}} - - 1 - - _doScroller: - 0.57142859999999995 - - - - 2304 - - YES - - - {{1, 0}, {678, 17}} - - - - - 4 - - - - {{17, 17}, {680, 259}} - - - 514 - - - - - - QSAAAEEgAABBmAAAQZgAAA - - - - 268 - {{16, 283}, {116, 16}} - - YES - - 67239424 - 134479872 - Add External SRT ... - - - -2038284033 - 129 - - - 200 - 25 - - - - {{10, 25}, {714, 305}} - - Subtitles - - - - - 5 - - - 256 - - YES - - - 256 - - YES - - - 256 - {700, 290} - - - - {{7, 8}, {700, 290}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - - 0 - 3 - 0 - NO - - - {{10, 25}, {714, 305}} - - Advanced - - - - - 4 - - - 256 - - YES - - - 256 - - YES - - - 2304 - - YES - - - 256 - {663, 242} - - - YES - - - 256 - {663, 17} - - - - - - - 256 - {{664, 0}, {16, 17}} - - - - - YES - - 1 - 51 - 40 - 1000 - - 75628096 - 2048 - Chapter - - - 3 - MC4zMzMzMzI5OQA - - - - - 337772096 - 2048 - Text Cell - - - - - - 3 - YES - - - - 2 - 606 - 77.217290000000006 - 1000 - - 75628096 - 2048 - Chapter Title - - - - - - 337772096 - 2048 - Text Cell - - - - - - 3 - YES - YES - - - - 3 - 2 - - - 17 - -700448768 - - - 4 - 15 - 0 - YES - 0 - - - {{1, 17}, {663, 242}} - - - - - 4 - - - - 256 - {{664, 17}, {15, 242}} - - - - _doScroller: - 0.9736842 - - - - -2147483392 - {{-100, -100}, {488, 15}} - - - 1 - - _doScroller: - 0.99047620000000003 - - - - 2304 - - YES - - - {{1, 0}, {663, 17}} - - - - - 4 - - - - {{17, 17}, {680, 260}} - - - 18 - - - - - AAAAAAAAAABBmAAAQZgAAA - - - - 256 - {{14, 283}, {151, 16}} - - - YES - - 67239424 - 131072 - Create chapter markers - - - 1211912703 - 2 - - - - 200 - 25 - - - - - 268 - {{472, 283}, {107, 16}} - - YES - - 67239424 - 134479872 - Import Chapters ... - - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{592, 283}, {106, 16}} - - YES - - 67239424 - 134479872 - Export Chapters ... - - - -2038284033 - 129 - - - 200 - 25 - - - - {{10, 25}, {714, 305}} - - - Chapters - - - - - - - 134217728 - YES - YES - - YES - - - - - - 268 - {{20, 528}, {45, 14}} - - YES - - 67239424 - 4325376 - Source: - - LucidaGrande-Bold - 11 - 3357 - - - - - - - - - 264 - {{17, 499}, {35, 14}} - - YES - - 67239424 - 71303168 - Title: - - - - - - - - - 264 - {{55, 499}, {193, 15}} - - YES - - -2076049856 - 263168 - - - 109199615 - 1 - - LucidaGrande - 9 - 16 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 264 - {{347, 498}, {77, 15}} - - YES - - -2076049856 - 263168 - - - 109199615 - 1 - - - - - - 400 - 75 - - YES - - - OtherViews - - - YES - - - -1 - 3 - YES - YES - 1 - - - - - 264 - {{249, 496}, {46, 17}} - - YES - - 67239424 - 71303168 - Angle: - - - - - - - - - 264 - {{297, 498}, {41, 15}} - - YES - - -2076049856 - 263168 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 264 - {{5, 442}, {47, 17}} - - YES - - 67239424 - 71303168 - File: - - - - - - - - - 264 - {{615, 499}, {57, 14}} - - YES - - 67239424 - 71303168 - Duration: - - - - - - - - - 264 - {{672, 499}, {79, 14}} - - YES - - 67239424 - 4194304 - - - - - 1 - MC43NjYzMDQzNyAtMCAwIDAAA - - - - - - - 264 - {{20, 474}, {70, 14}} - - YES - - 67239424 - 4325376 - Destination - - - - - - - - - 264 - {{76, 386}, {177, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - OtherViews - - YES - - - - 3 - YES - YES - 1 - - - - - 264 - {{649, 438}, {90, 28}} - - YES - - 67239424 - 134348800 - Browse… - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 264 - {{98, 478}, {642, 5}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - 3 - 2 - 0 - NO - - - - 264 - {{70, 528}, {204, 14}} - - YES - - 69336641 - 4327936 - - - - - 1 - MSAxIDEAA - - - - - - - 264 - {{56, 443}, {573, 19}} - - YES - - -1804468671 - 4326400 - - - - YES - - - - - - - 264 - {{435, 483}, {54, 16}} - - YES - - -1804468671 - 71566336 - - - - YES - - - - - - - 264 - {{492, 483}, {54, 16}} - - YES - - -1804468671 - 71566336 - - - - YES - - - - - - - 264 - {{550, 483}, {54, 16}} - - YES - - -1804468671 - 4457472 - - - - YES - - - - - - - 264 - {{612, 483}, {54, 16}} - - YES - - -1804468671 - 4457472 - - - - YES - - - - - - - 264 - {{20, 418}, {96, 14}} - - YES - - 67239424 - 4325376 - Output Settings: - - - - - - - - - 264 - {{294, 422}, {446, 5}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - 3 - 2 - 0 - NO - - - - 264 - {{124, 418}, {162, 14}} - - YES - - 67239424 - 272629760 - - - - - - - - - - 264 - {{562, 13}, {181, 14}} - - YES - - 67239424 - 71434240 - - - - - - - - - - 264 - {{21, 391}, {53, 14}} - - YES - - 67239424 - 71303168 - Format: - - - - - - - - - 268 - {{279, 531}, {461, 5}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - 3 - 2 - 0 - NO - - - - -2147482356 - - {{278, 530}, {463, 12}} - - 16648 - 100 - - - - 264 - {{399, 389}, {141, 18}} - - YES - - 67239424 - 131072 - Web optimized - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 264 - {{283, 389}, {102, 18}} - - YES - - 67239424 - 131072 - Large file size - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 264 - {{541, 389}, {141, 18}} - - YES - - 67239424 - 131072 - iPod 5G support - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 264 - {{491, 498}, {56, 15}} - - YES - - 67239424 - 138412032 - through - - - - - - - - - 264 - {{434, 498}, {57, 15}} - - YES - - -2076049856 - 263168 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - - 264 - {{549, 498}, {57, 15}} - - YES - - -2076049856 - 263168 - - - 109199615 - 1 - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 3 - YES - YES - 1 - - - - {754, 556} - - - {{0, 0}, {1920, 1178}} - {213, 129} - {1.79769e+308, 1.79769e+308} - - - MainMenu - - YES - - - HandBrake - - 1048576 - 2147483647 - - - submenuAction: - - HandBrake - - YES - - - About HandBrake - - 2147483647 - - - - - - Check for Updates… - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences... - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide HandBrake - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit HandBrake - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - - File - - - YES - - - Open Source… - o - 1048576 - 2147483647 - - - - - - Open Source (Title Specific) ... - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Add To Queue - b - 1048576 - 2147483647 - - - - - - Start Encoding - s - 1048576 - 2147483647 - - - - - - Pause Encoding - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - - Edit - - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - - Find - - - YES - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1048576 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling - - 1048576 - 2147483647 - - - submenuAction: - - Spelling - - YES - - - Spelling… - : - 1048576 - 2147483647 - - - - - - Check Spelling - ; - 1048576 - 2147483647 - - - - - - Check Spelling as You Type - - 1048576 - 2147483647 - - - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - - - - - - - - - - Presets - - 1048576 - 2147483647 - - - submenuAction: - - Presets - - YES - - - Update Built-in Presets - - 1048576 - 2147483647 - - - - - - Delete Built-in Presets - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - New Preset ... - n - 1048576 - 2147483647 - - - - - - Export ... - - 2147483647 - - - - - - Import ... - - 2147483647 - - - - - - Select Default Preset - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - - Window - - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - HandBrake - 1 - 1048576 - 2147483647 - - - - - - Queue - 2 - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Presets Drawer - t - 1048576 - 2147483647 - - - - - - Picture Settings - P - 1048576 - 2147483647 - - - - - - Preview Window - - 2147483647 - - - - - - Activity Window - D - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 1048576 - 2147483647 - - - submenuAction: - - Help - - YES - - - HandBrake User Guide - ? - 1048576 - 2147483647 - - - - - - HandBrake Homepage - - 1048576 - 2147483647 - - - - - - HandBrake Forums - - 1048576 - 2147483647 - - - - - - - - _NSMainMenu - - - 3 - 2 - {{57, 765}, {300, 233}} - 1886912512 - - Panel - - NSPanel - - View - - {1.79769e+308, 1.79769e+308} - {213, 107} - - - 256 - - YES - - - 256 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{83, 82}, {134, 134}} - - YES - - 130560 - 33554432 - - NSImage - HandBrake.icns - - 0 - 0 - 0 - NO - - YES - - - - 256 - {{202, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - Ahuh ! - - - -2038284033 - 1 - - Helvetica - 13 - 16 - - - DQ - 200 - 25 - - - - - 256 - {{82, 60}, {134, 17}} - - YES - - 67239424 - 138412032 - Rip done ! - - - - - - - - {300, 233} - - {{0, 0}, {1920, 1178}} - {213, 129} - {1.79769e+308, 1.79769e+308} - - - - {240, 550} - {100, 50} - {280, 550} - 2 - 0.0 - 15 - - - - - - 256 - - YES - - - 274 - - YES - - - 2304 - - YES - - - 256 - {247, 506} - - YES - - - 256 - {{184, 0}, {16, 17}} - - - YES - - PresetName - 244 - 40 - 1000 - - 75628096 - 2048 - Presets - - - 3 - MC4zMzMzMzI5OQA - - - - - 337772096 - 2048 - Text Cell - - - - - - 1 - YES - YES - - - PresetName - YES - compare: - - - - 3 - 2 - - - 14 - 314572800 - - - 4 - 15 - 0 - YES - 0 - 12 - - - {{1, 1}, {247, 506}} - - - - - 4 - - - - 256 - {{248, 1}, {11, 506}} - - 256 - - _doScroller: - 0.99770119999999995 - - - - -2147483392 - {{-100, -100}, {183, 15}} - - 1 - - _doScroller: - 0.99456520000000004 - - - {{4, 31}, {260, 508}} - - - 18 - - - - QSAAAEEgAABBgAAAQYAAAA - - - - 292 - {{27, 1}, {24, 23}} - - YES - - 67239424 - 0 - - - LucidaGrande-Bold - 13 - 2072 - - - -2030804737 - 34 - - NSImage - NSRemoveTemplate - - - - 400 - 75 - - - - - 292 - {{4, 1}, {24, 23}} - - YES - - -2080244224 - 134217728 - - - - -2032901889 - 34 - - NSImage - NSAddTemplate - - - - 400 - 75 - - - - - 292 - {{59, 1}, {33, 23}} - - YES - - 71433792 - 2048 - - - -2031075073 - 162 - - - 400 - 75 - - - YES - - - 1048576 - 2147483647 - 1 - - NSImage - NSActionTemplate - - - - _popUpItemAction: - - - YES - - Presets Action Menu - - YES - - - - Make Default - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Update Built-in Presets - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - YES - 1 - YES - YES - 2 - - - - {270, 550} - NSView - NSResponder - - - 1 - 2 - {{421, 536}, {338, 318}} - 1886912512 - Create A New Preset - NSPanel - - View - - {1.79769e+308, 1.79769e+308} - {338, 232} - - - 256 - - YES - - - 289 - {{239, 12}, {85, 32}} - - YES - - 67239424 - 134217728 - Add - - - -2038284033 - 1 - - LucidaGrande - 13 - 16 - - - DQ - 200 - 25 - - - - - 289 - {{155, 12}, {84, 32}} - - YES - - 67239424 - 134217728 - Cancel - - - -2038284033 - 1 - - - Gw - 200 - 25 - - - - - 266 - {{20, 264}, {298, 19}} - - YES - - -1804468671 - 272761856 - - - - YES - - - - - - - 266 - {{128, 193}, {193, 22}} - - YES - - -2076049856 - 133120 - - - 109199615 - 1 - - - - - - 400 - 75 - - - Item1 - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - Item2 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Item3 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 268 - {{17, 286}, {114, 17}} - - YES - - 67239424 - 272760832 - UHJlc2V0IE5hbWU6Cg - - - - - - - - - 268 - {{17, 217}, {91, 14}} - - YES - - 67239424 - 272760832 - Picture Settings: - - - - - - - - - 268 - {{17, 100}, {114, 14}} - - YES - - 67239424 - 272760832 - Description: - - - - - - - - - 274 - {{20, 51}, {298, 41}} - - YES - - -1805517311 - 272760832 - - - - YES - - - - - - - 268 - {{27, 195}, {99, 14}} - - YES - - 67239424 - 71434240 - Use Picture Size: - - - - - - - - - 268 - {{128, 142}, {24, 18}} - - YES - - -2080244224 - 131072 - - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - -2147483380 - {{17, 240}, {303, 18}} - - YES - - 67239424 - 131072 - Preset Folder ( if checked disregard below ) - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{113, 220}, {205, 5}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - 3 - 2 - 0 - NO - - - - 268 - {{12, 120}, {298, 5}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - 3 - 2 - 0 - NO - - - - 268 - {{17, 144}, {109, 15}} - - YES - - 67239424 - 71434240 - Use Picture Filters: - - - - - - - - - 12 - - YES - - - 256 - - YES - - - 266 - {{11, 10}, {52, 16}} - - YES - - -1804468671 - 71566336 - - - - YES - - - - - - - 268 - {{61, 10}, {29, 15}} - - YES - - 67239424 - 138543104 - X - - - - - - - - - 266 - {{90, 10}, {52, 16}} - - YES - - -1804468671 - 4457472 - - - - YES - - - - - - {155, 32} - - - - {{128, 163}, {155, 32}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 0 - 0 - 0 - NO - - - {338, 318} - - {{0, 0}, {1920, 1178}} - {338, 254} - {1.79769e+308, 1.79769e+308} - - - 1 - 2 - {{302, 989}, {392, 144}} - 1886912512 - SourceTitlePanel - - NSPanel - - - View - - {1.79769e+308, 1.79769e+308} - {213, 107} - - - 256 - - YES - - - 256 - {{96, 45}, {279, 38}} - - YES - - 67239424 - 272629760 - Source Path Here - - - - - - - - - 256 - {{155, 106}, {26, 14}} - - YES - - 67239424 - 272629760 - for - - - - - - - - - 256 - {{17, 106}, {104, 15}} - - YES - - 67239424 - 71303168 - Scan title number - - - - - - - - - 256 - {{126, 105}, {24, 19}} - - YES - - -1804468671 - 138544128 - 0 - - - YES - - - - - - - 256 - {{15, 13}, {80, 28}} - - YES - - 67239424 - 134348800 - Cancel - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 256 - {{290, 13}, {87, 28}} - - YES - - 67239424 - 134348800 - Open Title - - - -2038284033 - 1 - - - DQ - 200 - 25 - - - - - 256 - {{17, 83}, {455, 19}} - - YES - - 67239424 - 4194304 - Note: (entering 0 or leaving blank will result in a full source scan) - - - - - - - - - 256 - {{17, 69}, {77, 14}} - - YES - - 67239424 - 272629760 - Source Path: - - - - - - - - - 256 - {{177, 106}, {198, 14}} - - YES - - 67239424 - 272629760 - Small System Font Text - - - - - - - - {392, 144} - - {{0, 0}, {1920, 1178}} - {213, 129} - {1.79769e+308, 1.79769e+308} - - - HBController - - - SUUpdater - - - - - YES - - - terminate: - - - - 139 - - - - delegate - - - - 247 - - - - fWindow - - - - 350 - - - - delegate - - - - 433 - - - - hide: - - - - 972 - - - - hideOtherApplications: - - - - 975 - - - - arrangeInFront: - - - - 1194 - - - - performMiniaturize: - - - - 1195 - - - - fStatusField - - - - 1238 - - - - fRipIndicator - - - - 1374 - - - - openHomepage: - - - - 1434 - - - - openForums: - - - - 1435 - - - - titlePopUpChanged: - - - - 1567 - - - - fSrcChapterStartPopUp - - - - 1568 - - - - fSrcChapterEndPopUp - - - - 1569 - - - - fAudLang1PopUp - - - - 1573 - - - - fAudLang2PopUp - - - - 1575 - - - - fDstBrowseButton - - - - 1578 - - - - browseFile: - - - - 1579 - - - - fDstFormatField - - - - 1583 - - - - fDstFormatPopUp - - - - 1584 - - - - fDstFile2Field - - - - 1585 - - - - fSrcDuration1Field - - - - 1589 - - - - fSrcDuration2Field - - - - 1590 - - - - fSrcDVD2Field - - - - 1591 - - - - fSrcTitleField - - - - 1592 - - - - fSrcTitlePopUp - - - - 1593 - - - - fDstFile1Field - - - - 1596 - - - - fVidBitrateCell - - - - 1598 - - - - fVidBitrateField - - - - 1599 - - - - fVidConstantCell - - - - 1600 - - - - fVidEncoderPopUp - - - - 1602 - - - - fVidQualityField - - - - 1604 - - - - fVidQualitySlider - - - - 1606 - - - - fVidRateField - - - - 1607 - - - - fVidRatePopUp - - - - 1608 - - - - fVidTargetCell - - - - 1609 - - - - fVidTargetSizeField - - - - 1610 - - - - fVidTwoPassCheck - - - - 1611 - - - - videoMatrixChanged: - - - - 1612 - - - - formatPopUpChanged: - - - - 1614 - - - - chapterPopUpChanged: - - - - 1615 - - - - chapterPopUpChanged: - - - - 1616 - - - - qualitySliderChanged: - - - - 1617 - - - - calculateBitrate: - - - - 1620 - - - - performFindPanelAction: - - - - 1823 - - - - startSpeaking: - - - - 1824 - - - - toggleContinuousSpellChecking: - - - - 1825 - - - - undo: - - - - 1826 - - - - stopSpeaking: - - - - 1827 - - - - performFindPanelAction: - - - - 1828 - - - - redo: - - - - 1829 - - - - performFindPanelAction: - - - - 1830 - - - - cut: - - - - 1831 - - - - paste: - - - - 1832 - - - - pasteAsPlainText: - - - - 1833 - - - - selectAll: - - - - 1834 - - - - performFindPanelAction: - - - - 1835 - - - - copy: - - - - 1836 - - - - checkSpelling: - - - - 1837 - - - - centerSelectionInVisibleArea: - - - - 1838 - - - - showGuessPanel: - - - - 1839 - - - - delete: - - - - 1840 - - - - parentWindow - - - - 1842 - - - - contentView - - - - 1844 - - - - fAddPresetPanel - - - - 1869 - - - - fPresetNewName - - - - 1875 - - - - closeAddPresetPanel: - - - - 1878 - - - - fPresetSelectedDisplay - - - - 1883 - - - - toggle: - - - - 1885 - - - - fPresetDrawer - - - - 1889 - - - - addUserPreset: - - - - 1907 - - - - customSettingUsed: - - - - 1914 - - - - addFactoryPresets: - - - - 1952 - - - - deleteFactoryPresets: - - - - 1953 - - - - showAddPresetPanel: - - - - 1956 - - - - fAudTrack1MixPopUp - - - - 1965 - - - - fAudTrack2MixPopUp - - - - 1969 - - - - audioTrackPopUpChanged: - - - - 1974 - - - - audioTrackPopUpChanged: - - - - 1975 - - - - openUserGuide: - - - - 1986 - - - - audioTrackMixdownChanged: - - - - 1987 - - - - audioTrackMixdownChanged: - - - - 1988 - - - - fCreateChapterMarkers - - - - 2004 - - - - fChapterTable - - - - 2005 - - - - fQueueStatus - - - - 2007 - - - - fPresetNewPicSettingsPopUp - - - - 2013 - - - - showDebugOutputPanel: - - - - 2296 - - - - fVidTurboPassCheck - - - - 2362 - - - - twoPassCheckboxChanged: - - - - 2363 - - - - customSettingUsed: - - - - 2366 - - - - customSettingUsed: - - - - 2367 - - - - openMainWindow: - - - - 2369 - - - - selectDefaultPreset: - - - - 2422 - - - - showQueueWindow: - - - - 2446 - - - - addToQueue: - - - - 2447 - - - - Rip: - - - - 2448 - - - - videoFrameRateChanged: - - - - 2462 - - - - showPicturePanel: - - - - 2493 - - - - Pause: - - - - 2496 - - - - performClose: - - - - 2509 - - - - fAdvancedView - - - - 2516 - - - - showPreferencesWindow: - - - - 2517 - - - - fPresetNewDesc - - - - 2674 - - - - calculateBitrate: - - - - 2689 - - - - customSettingUsed: - - - - 2691 - - - - delegate - - - - 2692 - - - - fOpenSourceTitleMMenu - - - - 2700 - - - - fScanSrcTitlePathField - - - - 2709 - - - - fScanSrcTitleNumField - - - - 2710 - - - - fScanSrcTitleCancelButton - - - - 2711 - - - - fScanSrcTitleOpenButton - - - - 2712 - - - - fScanSrcTitlePanel - - - - 2713 - - - - closeSourceTitleScanPanel: - - - - 2714 - - - - closeSourceTitleScanPanel: - - - - 2715 - - - - browseSources: - - - - 2717 - - - - browseSources: - - - - 2718 - - - - fSrcDsplyNameTitleScan - - - - 2721 - - - - fPresetNewPicFiltersCheck - - - - 2841 - - - - fScanIndicator - - - - 3204 - - - - fPresetsOutlineView - - - - 4187 - - - - dataSource - - - - 4188 - - - - delegate - - - - 4189 - - - - selectPreset: - - - - 4312 - - - - fPresetsDelete - - - - 4319 - - - - deletePreset: - - - - 4321 - - - - fPresetsAdd - - - - 4324 - - - - showAddPresetPanel: - - - - 4325 - - - - fDstMp4LargeFileCheck - - - - 4578 - - - - fDstMp4HttpOptFileCheck - - - - 4581 - - - - checkForUpdates: - - - - 4966 - - - - fDstMp4iPodFileCheck - - - - 4969 - - - - customSettingUsed: - - - - 4970 - - - - customSettingUsed: - - - - 4971 - - - - fAudTrack1CodecPopUp - - - - 4990 - - - - fAudTrack2CodecPopUp - - - - 4991 - - - - fAudLang3PopUp - - - - 5020 - - - - fAudLang4PopUp - - - - 5021 - - - - fAudTrack3CodecPopUp - - - - 5022 - - - - fAudTrack4CodecPopUp - - - - 5023 - - - - fAudTrack3MixPopUp - - - - 5024 - - - - fAudTrack4MixPopUp - - - - 5025 - - - - audioTrackPopUpChanged: - - - - 5026 - - - - audioTrackPopUpChanged: - - - - 5027 - - - - audioTrackPopUpChanged: - - - - 5036 - - - - audioTrackPopUpChanged: - - - - 5037 - - - - audioTrackPopUpChanged: - - - - 5038 - - - - audioTrackPopUpChanged: - - - - 5039 - - - - fAudTrack2RatePopUp - - - - 5065 - - - - fAudTrack3RatePopUp - - - - 5066 - - - - fAudTrack4RatePopUp - - - - 5067 - - - - fAudTrack2BitratePopUp - - - - 5069 - - - - fAudTrack3BitratePopUp - - - - 5070 - - - - fAudTrack4BitratePopUp - - - - 5071 - - - - audioTrackMixdownChanged: - - - - 5072 - - - - audioTrackMixdownChanged: - - - - 5073 - - - - videoEncoderPopUpChanged: - - - - 5075 - - - - fAudSourceLabel - - - - 5076 - - - - fAudCodecLabel - - - - 5077 - - - - fAudMixdownLabel - - - - 5078 - - - - fAudSamplerateLabel - - - - 5079 - - - - fAudBitrateLabel - - - - 5080 - - - - fAudTrack1Label - - - - 5081 - - - - fAudTrack2Label - - - - 5082 - - - - fAudTrack3Label - - - - 5083 - - - - fAudTrack4Label - - - - 5084 - - - - fAudTrack1RatePopUp - - - - 5085 - - - - fAudTrack1BitratePopUp - - - - 5086 - - - - fAudDrcLabel - - - - 5109 - - - - fAudTrack1DrcSlider - - - - 5110 - - - - fAudTrack2DrcSlider - - - - 5111 - - - - fAudTrack3DrcSlider - - - - 5112 - - - - fAudTrack4DrcSlider - - - - 5113 - - - - fAudTrack1DrcField - - - - 5114 - - - - fAudTrack2DrcField - - - - 5115 - - - - fAudTrack3DrcField - - - - 5116 - - - - fAudTrack4DrcField - - - - 5117 - - - - audioDRCSliderChanged: - - - - 5118 - - - - audioDRCSliderChanged: - - - - 5119 - - - - audioDRCSliderChanged: - - - - 5120 - - - - audioDRCSliderChanged: - - - - 5121 - - - - setDefaultPreset: - - - - 5138 - - - - addFactoryPresets: - - - - 5139 - - - - autoSetM4vExtension: - - - - 5152 - - - - fPresetNewFolderCheck - - - - 5155 - - - - fVidEncoderField - - - - 5156 - - - - showPreviewWindow: - - - - 5158 - - - - fPictureSizeField - - - - 5169 - - - - fPictureCroppingField - - - - 5170 - - - - fVideoFiltersField - - - - 5173 - - - - fVidQualityRFField - - - - 5176 - - - - fVidQualityRFLabel - - - - 5179 - - - - fSrcAngleLabel - - - - 5186 - - - - browseExportPresetFile: - - - - 5191 - - - - browseImportPresetFile: - - - - 5193 - - - - fSubtitlesTable - - - - 5214 - - - - showAboutPanel: - - - - 5245 - - - - fBrowseSrtFileButton - - - - 5248 - - - - browseImportSrtFile: - - - - 5249 - - - - unhideAllApplications: - - - - 5281 - - - - fSrcTimeStartEncodingField - - - - 5507 - - - - fSrcTimeEndEncodingField - - - - 5508 - - - - fVidQualityMatrix - - - - 5512 - - - - encodeStartStopPopUpChanged: - - - - 5520 - - - - fSrcFrameStartEncodingField - - - - 5525 - - - - fSrcFrameEndEncodingField - - - - 5526 - - - - fEncodeStartStopPopUp - - - - 5527 - - - - startEndSecValueChanged: - - - - 5528 - - - - startEndSecValueChanged: - - - - 5529 - - - - startEndFrameValueChanged: - - - - 5530 - - - - startEndFrameValueChanged: - - - - 5531 - - - - fSrcChapterToField - - - - 5532 - - - - fSrcAnglePopUp - - - - 5533 - - - - browseForChapterFile: - - - - 5538 - - - - browseForChapterFileSave: - - - - 5539 - - - - fLoadChaptersButton - - - - 5540 - - - - fSaveChaptersButton - - - - 5541 - - - - fChapterTableNameColumn - - - - 5544 - - - - fFrameratePfrCheck - - - - 5548 - - - - fPresetNewPicWidth - - - - 5668 - - - - fPresetNewPicHeight - - - - 5669 - - - - fPresetNewPicWidthHeightBox - - - - 5671 - - - - addPresetPicDropdownChanged: - - - - 5672 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 21 - - - YES - - - - MainWindow - - - 2 - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1123 - - - YES - - - - - - 1373 - - - - - 1474 - - - YES - - - - - - - - - - 1475 - - - YES - - - - - - 1476 - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1518 - - - YES - - - - - - 1521 - - - YES - - - - - - 1522 - - - YES - - - - - - 1525 - - - YES - - - - - - 1526 - - - YES - - - - - - 1527 - - - YES - - - - - - 1530 - - - YES - - - - - - 1533 - - - YES - - - - - - 1962 - - - YES - - - - - - 1966 - - - YES - - - - - - 1970 - - - YES - - - - - - 1972 - - - YES - - - - - - 3075 - - - YES - - - - - - 3077 - - - - - 1477 - - - YES - - - - - - 1478 - - - YES - - - - - - - - - - - - - - - - - - - - - - 1499 - - - YES - - - - - - 1500 - - - YES - - - - - - - - - 1501 - - - - - 1502 - - - - - 1503 - - - - - 1504 - - - YES - - - - - - 1505 - - - YES - - - - - - 1506 - - - YES - - - - - - 1507 - - - YES - - - - - - 1508 - - - YES - - - - - - 1509 - - - YES - - - - - - 1512 - - - YES - - - - - - 1515 - - - YES - - - - - - 2361 - - - YES - - - - - - 2375 - - - YES - - - - - - 1989 - - - YES - - - - - - 1990 - - - YES - - - - - - - - - 1999 - - - YES - - - - - - - - - 2000 - - - YES - - - - - - - 2001 - - - YES - - - - - - 2002 - - - YES - - - - - - 2003 - - - YES - - - - - - 2015 - - - YES - - - - - - 2016 - - - YES - - - - - - 2513 - - - YES - - - - - 1538 - - - YES - - - - - - 1539 - - - YES - - - - - - 1540 - - - YES - - - - - - 1541 - - - YES - - - - - - 1545 - - - YES - - - - - - 1548 - - - YES - - - - - - 1552 - - - YES - - - - - - 1553 - - - YES - - - - - - 1554 - - - YES - - - - - - 1555 - - - YES - - - - - - 1556 - - - YES - - - - - - 1557 - - - YES - - - - - - 1561 - - - YES - - - - - - 1562 - - - YES - - - - - - 1623 - - - YES - - - 256 - {{2, 2}, {125, 1}} - - - - - - 1624 - - - - - 1627 - - - YES - - - - - - 1628 - - - YES - - - 256 - {{2, 2}, {125, 1}} - - - - - - 1629 - - - - - 1882 - - - YES - - - - - - 2006 - - - YES - - - - - - 2364 - - - YES - - - - - - 3203 - - - - - 3205 - - - - - 4579 - - - YES - - - - - - 29 - - - YES - - - - - - - - - MainMenu - - - 56 - - - YES - - - - - - 57 - - - YES - - - - - - - - - - - - - - - 58 - - - - - 136 - - - - - 196 - - - - - 970 - - - - - 971 - - - - - 973 - - - - - 1445 - - - - - 1900 - - - - - 1189 - - - YES - - - - - - 1192 - - - YES - - - - - - - - - - - - - - - 1190 - - - - - 1191 - - - - - 1193 - - - - - 1884 - - - - - 2295 - - - - - 2368 - - - - - 2445 - - - - - 2488 - - - - - 2519 - - - - - 1200 - - - YES - - - - - - 1209 - - - YES - - - - - - - - - - - - - 1198 - - - - - 2443 - - - - - 2444 - - - - - 2494 - - - - - 2507 - - - - - 2508 - - - - - 2518 - - - - - 2698 - - - - - 1431 - - - YES - - - - - - 1429 - - - YES - - - - - - - - 1432 - - - - - 1433 - - - - - 1985 - - - - - 1795 - - - YES - - - - - - 1796 - - - YES - - - - - - - - - - - - - - - - - - 1797 - - - - - 1798 - - - - - 1799 - - - - - 1800 - - - - - 1801 - - - - - 1802 - - - YES - - - - - - 1803 - - - YES - - - - - - - - - - 1804 - - - - - 1805 - - - - - 1806 - - - - - 1807 - - - - - 1808 - - - - - 1809 - - - - - 1810 - - - YES - - - - - - 1811 - - - YES - - - - - - - - 1812 - - - - - 1813 - - - - - 1814 - - - - - 1815 - - - - - 1816 - - - - - 1817 - - - YES - - - - - - 1818 - - - YES - - - - - - - 1819 - - - - - 1820 - - - - - 1821 - - - - - 1822 - - - - - 1948 - - - YES - - - - - - 1949 - - - YES - - - - - - - - - - - - 1950 - - - - - 1951 - - - - - 1954 - - - - - 1955 - - - - - 2421 - - - - - 240 - - - HBController - - - 434 - - - YES - - - - DonePanel - - - 435 - - - YES - - - - - - - - 436 - - - YES - - - - - - 437 - - - YES - - - - - - 438 - - - YES - - - - - - 1841 - - - PresetsDrawer - - - 1843 - - - YES - - - - - - - PresetsView - - - 4179 - - - YES - - - - - - - - 4182 - - - YES - - - - - - 4183 - - - YES - - - - - - 4186 - - - - - 4317 - - - YES - - - - - - 4322 - - - YES - - - - - - 1867 - - - YES - - - - AddPresetPanel - - - 1868 - - - YES - - - - - - - - - - - - - - - - - - - - 1870 - - - YES - - - - - - 1871 - - - YES - - - - - - 1872 - - - YES - - - - - - 2008 - - - YES - - - - - - 2670 - - - YES - - - - - - 2671 - - - YES - - - - - - 2672 - - - YES - - - - - - 2673 - - - YES - - - - - - 2833 - - - YES - - - - - - 2837 - - - YES - - - - - - 2839 - - - - - 2840 - - - - - 2957 - - - YES - - - - - - 2701 - - - YES - - - - SourceTitlePanel - - - 2702 - - - YES - - - - - - - - - - - - - - 2703 - - - YES - - - - - - 2704 - - - YES - - - - - - 2705 - - - YES - - - - - - 2706 - - - YES - - - - - - 2707 - - - YES - - - - - - 2708 - - - YES - - - - - - 2716 - - - YES - - - - - - 2719 - - - YES - - - - - - 2720 - - - YES - - - - - - 4846 - - - - - 4847 - - - YES - - - - - - 4848 - - - - - 4849 - - - YES - - - - - - 4850 - - - - - 4851 - - - - - 4852 - - - YES - - - - - - 4853 - - - YES - - - - - - 4854 - - - - - 4857 - - - YES - - - - - - 4858 - - - YES - - - - - - 4859 - - - - - 4860 - - - - - 4862 - - - - - 4872 - - - - - 4873 - - - - - 4874 - - - - - 4875 - - - - - 4876 - - - - - 4877 - - - - - 4878 - - - YES - - - - - - 4879 - - - YES - - - - - - 4880 - - - - - 4892 - - - - - 4893 - - - - - 4904 - - - - - 4905 - - - - - 4906 - - - - - 4907 - - - - - 4908 - - - YES - - - - - - 4910 - - - YES - - - - - - 4911 - - - YES - - - - - - 4913 - - - - - 4914 - - - - - 4915 - - - - - 4916 - - - - - 4917 - - - - - 4918 - - - YES - - - - - - 4919 - - - - - 4920 - - - - - 4923 - - - - - 4924 - - - - - 4925 - - - - - 4926 - - - - - 4927 - - - - - 4928 - - - - - 4929 - - - - - 4930 - - - - - 4932 - - - - - 4933 - - - - - 4934 - - - - - 4935 - - - - - 4936 - - - - - 4937 - - - YES - - - - - - 4938 - - - - - 4939 - - - - - 4940 - - - - - 4941 - - - - - 4942 - - - - - 4943 - - - - - 4944 - - - - - 4945 - - - - - 4946 - - - - - 4947 - - - - - 4948 - - - - - 4949 - - - - - 4950 - - - - - 4951 - - - - - 4952 - - - - - 4953 - - - - - 4954 - - - - - 4955 - - - - - 4956 - - - - - 1519 - - - YES - - - - - - 1520 - - - - - 1523 - - - YES - - - - - - 1524 - - - - - 1528 - - - YES - - - - - - 1529 - - - - - 1531 - - - YES - - - - - - 1532 - - - - - 1963 - - - YES - - - - - - 1964 - - - - - 1967 - - - YES - - - - - - 1968 - - - - - 1510 - - - YES - - - - - - 1511 - - - - - 1513 - - - YES - - - - - - 1514 - - - - - 1542 - - - YES - - - - - - 1543 - - - - - 1546 - - - YES - - - - - - 1547 - - - - - 1549 - - - YES - - - - - - 1550 - - - - - 1558 - - - YES - - - - - - 1559 - - - - - 2009 - - - YES - - - - - - - - 2012 - - - - - 2011 - - - - - 2010 - - - - - 4957 - - - - - 4958 - - - - - 4959 - - - - - 4960 - - - - - 4961 - - - - - 4963 - - - - - 4964 - - - - - 4967 - - - YES - - - - - - 4968 - - - - - 4980 - - - YES - - - - - - 4981 - - - YES - - - - - - 4982 - - - YES - - - - - - 4983 - - - - - 4984 - - - YES - - - - - - 4985 - - - YES - - - - - - 4986 - - - YES - - - - - - 4987 - - - - - 4988 - - - YES - - - - - - 4989 - - - - - 4992 - - - YES - - - - - - 4993 - - - - - 4994 - - - YES - - - - - - 4995 - - - - - 4996 - - - YES - - - - - - 4997 - - - YES - - - - - - 4998 - - - YES - - - - - - 4999 - - - - - 5000 - - - YES - - - - - - 5001 - - - YES - - - - - - 5002 - - - YES - - - - - - 5003 - - - - - 5004 - - - YES - - - - - - 5005 - - - YES - - - - - - 5006 - - - YES - - - - - - 5007 - - - - - 5008 - - - YES - - - - - - 5009 - - - YES - - - - - - 5010 - - - YES - - - - - - 5011 - - - - - 5012 - - - YES - - - - - - 5013 - - - YES - - - - - - 5014 - - - YES - - - - - - 5015 - - - - - 5016 - - - YES - - - - - - 5017 - - - YES - - - - - - 5018 - - - YES - - - - - - 5019 - - - - - 5040 - - - YES - - - - - - 5041 - - - YES - - - - - - 5042 - - - YES - - - - - - 5043 - - - - - 5044 - - - YES - - - - - - 5045 - - - YES - - - - - - 5046 - - - YES - - - - - - 5047 - - - - - 5048 - - - YES - - - - - - 5049 - - - YES - - - - - - 5050 - - - YES - - - - - - 5051 - - - - - 5052 - - - YES - - - - - - 5053 - - - YES - - - - - - 5054 - - - YES - - - - - - 5055 - - - - - 5056 - - - YES - - - - - - 5057 - - - YES - - - - - - 5058 - - - YES - - - - - - 5059 - - - - - 5060 - - - YES - - - - - - 5061 - - - YES - - - - - - 5062 - - - YES - - - - - - 5063 - - - - - 5091 - - - YES - - - - - - 5092 - - - - - 5093 - - - YES - - - - - - 5094 - - - - - 5095 - - - YES - - - - - - 5096 - - - - - 5097 - - - YES - - - - - - 5098 - - - - - 5099 - - - YES - - - - - - 5100 - - - - - 5101 - - - YES - - - - - - 5102 - - - - - 5103 - - - YES - - - - - - 5104 - - - - - 5105 - - - YES - - - - - - 5106 - - - - - 5107 - - - YES - - - - - - 5108 - - - - - 5130 - - - YES - - - - - - 5131 - - - YES - - - - - - 5132 - - - YES - - - - - - - - 5133 - - - - - 5134 - - - - - 5135 - - - - - 5153 - - - YES - - - - - - 5154 - - - - - 5157 - - - - - 5167 - - - YES - - - - - - 5168 - - - - - 5171 - - - YES - - - - - - 5172 - - - - - 5174 - - - YES - - - - - - 5175 - - - YES - - - - - - 5177 - - - YES - - - - - - 5178 - - - - - 5180 - - - YES - - - - - - 5181 - - - YES - - - - - - 5182 - - - YES - - - - - - 5183 - - - YES - - - - - - 5184 - - - - - 5185 - - - - - 5188 - - - - - 5192 - - - - - 5194 - - - YES - - - - - - 5195 - - - YES - - - - - - - 5196 - - - YES - - - - - - - - - 5197 - - - - - 5198 - - - - - 5199 - - - YES - - - - - - - - - - - - 5201 - - - YES - - - - - - 5215 - - - YES - - - - - - 5217 - - - YES - - - - - - 5219 - - - YES - - - - - - 5225 - - - YES - - - - - - 5226 - - - YES - - - - - - 5227 - - - - - 5232 - - - - - 5233 - - - - - 5234 - - - - - 5244 - - - - - 5246 - - - YES - - - - - - 5247 - - - - - 5250 - - - YES - - - - - - 5252 - - - YES - - - - - - 5254 - - - YES - - - - - - 5268 - - - YES - - - - - - 5269 - - - YES - - - - - - 5270 - - - - - 5271 - - - YES - - - - - - 5272 - - - YES - - - - - - 5273 - - - - - 5278 - - - - - 5279 - - - - - 5280 - - - - - 5491 - - - YES - - - - - - 5492 - - - - - 5493 - - - YES - - - - - - 5494 - - - - - 5505 - - - YES - - - - - - 5506 - - - - - 5513 - - - YES - - - - - - 5514 - - - YES - - - - - - 5515 - - - YES - - - - - 5521 - - - YES - - - - - - 5522 - - - - - 5523 - - - YES - - - - - - 5524 - - - - - 5534 - - - YES - - - - - - 5535 - - - - - 5536 - - - YES - - - - - - 5537 - - - - - 5545 - - - YES - - - - - - 5546 - - - - - 5670 - - - YES - - - - - - - - 5549 - - - YES - - - - - - 5550 - - - - - 5553 - - - YES - - - - - - 5554 - - - - - 5551 - - - YES - - - - - - 5552 - - - - - - - YES - - YES - -3.IBPluginDependency - -3.ImportedFromIB2 - 1123.IBPluginDependency - 1123.ImportedFromIB2 - 1189.IBPluginDependency - 1189.ImportedFromIB2 - 1190.IBPluginDependency - 1190.ImportedFromIB2 - 1191.IBPluginDependency - 1191.ImportedFromIB2 - 1192.IBEditorWindowLastContentRect - 1192.IBPluginDependency - 1192.ImportedFromIB2 - 1193.IBPluginDependency - 1193.ImportedFromIB2 - 1198.IBPluginDependency - 1198.ImportedFromIB2 - 1200.IBPluginDependency - 1200.ImportedFromIB2 - 1209.IBEditorWindowLastContentRect - 1209.IBPluginDependency - 1209.ImportedFromIB2 - 136.IBPluginDependency - 136.ImportedFromIB2 - 1373.IBPluginDependency - 1373.ImportedFromIB2 - 1429.IBPluginDependency - 1429.ImportedFromIB2 - 1431.IBPluginDependency - 1431.ImportedFromIB2 - 1432.IBPluginDependency - 1432.ImportedFromIB2 - 1433.IBPluginDependency - 1433.ImportedFromIB2 - 1445.IBPluginDependency - 1445.ImportedFromIB2 - 1474.IBAttributePlaceholdersKey - 1474.IBPluginDependency - 1474.ImportedFromIB2 - 1475.IBPluginDependency - 1475.ImportedFromIB2 - 1476.IBPluginDependency - 1476.ImportedFromIB2 - 1477.IBPluginDependency - 1477.ImportedFromIB2 - 1478.IBPluginDependency - 1478.ImportedFromIB2 - 1499.IBPluginDependency - 1499.ImportedFromIB2 - 1500.IBPluginDependency - 1500.ImportedFromIB2 - 1501.IBPluginDependency - 1501.ImportedFromIB2 - 1502.IBPluginDependency - 1502.ImportedFromIB2 - 1503.IBPluginDependency - 1503.ImportedFromIB2 - 1504.IBPluginDependency - 1504.ImportedFromIB2 - 1505.IBPluginDependency - 1505.ImportedFromIB2 - 1506.IBPluginDependency - 1506.ImportedFromIB2 - 1507.IBPluginDependency - 1507.ImportedFromIB2 - 1508.IBPluginDependency - 1508.ImportedFromIB2 - 1509.IBPluginDependency - 1509.ImportedFromIB2 - 1510.IBPluginDependency - 1510.ImportedFromIB2 - 1511.IBPluginDependency - 1511.ImportedFromIB2 - 1512.IBPluginDependency - 1512.ImportedFromIB2 - 1513.IBPluginDependency - 1513.ImportedFromIB2 - 1514.IBPluginDependency - 1514.ImportedFromIB2 - 1515.IBPluginDependency - 1515.ImportedFromIB2 - 1518.IBPluginDependency - 1518.ImportedFromIB2 - 1519.IBPluginDependency - 1519.ImportedFromIB2 - 1520.IBPluginDependency - 1520.ImportedFromIB2 - 1521.IBPluginDependency - 1521.ImportedFromIB2 - 1522.IBPluginDependency - 1522.ImportedFromIB2 - 1523.IBPluginDependency - 1523.ImportedFromIB2 - 1524.IBPluginDependency - 1524.ImportedFromIB2 - 1525.IBPluginDependency - 1525.ImportedFromIB2 - 1526.IBPluginDependency - 1526.ImportedFromIB2 - 1527.IBPluginDependency - 1527.ImportedFromIB2 - 1528.IBPluginDependency - 1528.ImportedFromIB2 - 1528.editorWindowContentRectSynchronizationRect - 1529.IBPluginDependency - 1529.ImportedFromIB2 - 1530.IBPluginDependency - 1530.ImportedFromIB2 - 1531.IBPluginDependency - 1531.ImportedFromIB2 - 1532.IBPluginDependency - 1532.ImportedFromIB2 - 1533.IBPluginDependency - 1533.ImportedFromIB2 - 1538.IBPluginDependency - 1538.ImportedFromIB2 - 1539.IBPluginDependency - 1539.ImportedFromIB2 - 1540.IBPluginDependency - 1540.ImportedFromIB2 - 1541.IBPluginDependency - 1541.ImportedFromIB2 - 1542.IBPluginDependency - 1542.ImportedFromIB2 - 1543.IBPluginDependency - 1543.ImportedFromIB2 - 1545.IBPluginDependency - 1545.ImportedFromIB2 - 1546.IBPluginDependency - 1546.ImportedFromIB2 - 1547.IBPluginDependency - 1547.ImportedFromIB2 - 1548.IBPluginDependency - 1548.ImportedFromIB2 - 1549.IBPluginDependency - 1549.ImportedFromIB2 - 1550.IBPluginDependency - 1550.ImportedFromIB2 - 1552.IBPluginDependency - 1552.ImportedFromIB2 - 1553.IBPluginDependency - 1553.ImportedFromIB2 - 1554.IBPluginDependency - 1554.ImportedFromIB2 - 1555.IBPluginDependency - 1555.ImportedFromIB2 - 1556.IBPluginDependency - 1556.ImportedFromIB2 - 1557.IBPluginDependency - 1557.ImportedFromIB2 - 1558.IBPluginDependency - 1558.ImportedFromIB2 - 1559.IBPluginDependency - 1559.ImportedFromIB2 - 1561.IBPluginDependency - 1561.ImportedFromIB2 - 1562.IBPluginDependency - 1562.ImportedFromIB2 - 1623.IBPluginDependency - 1623.ImportedFromIB2 - 1624.IBPluginDependency - 1624.ImportedFromIB2 - 1627.IBPluginDependency - 1627.ImportedFromIB2 - 1628.IBPluginDependency - 1628.ImportedFromIB2 - 1629.IBPluginDependency - 1629.ImportedFromIB2 - 1795.IBPluginDependency - 1795.ImportedFromIB2 - 1796.IBEditorWindowLastContentRect - 1796.IBPluginDependency - 1796.ImportedFromIB2 - 1797.IBPluginDependency - 1797.ImportedFromIB2 - 1798.IBPluginDependency - 1798.ImportedFromIB2 - 1799.IBPluginDependency - 1799.ImportedFromIB2 - 1800.IBPluginDependency - 1800.ImportedFromIB2 - 1801.IBPluginDependency - 1801.ImportedFromIB2 - 1802.IBPluginDependency - 1802.ImportedFromIB2 - 1803.IBPluginDependency - 1803.ImportedFromIB2 - 1804.IBPluginDependency - 1804.ImportedFromIB2 - 1805.IBPluginDependency - 1805.ImportedFromIB2 - 1806.IBPluginDependency - 1806.ImportedFromIB2 - 1807.IBPluginDependency - 1807.ImportedFromIB2 - 1808.IBPluginDependency - 1808.ImportedFromIB2 - 1809.IBPluginDependency - 1809.ImportedFromIB2 - 1810.IBPluginDependency - 1810.ImportedFromIB2 - 1811.IBPluginDependency - 1811.ImportedFromIB2 - 1812.IBPluginDependency - 1812.ImportedFromIB2 - 1813.IBPluginDependency - 1813.ImportedFromIB2 - 1814.IBPluginDependency - 1814.ImportedFromIB2 - 1815.IBPluginDependency - 1815.ImportedFromIB2 - 1816.IBPluginDependency - 1816.ImportedFromIB2 - 1817.IBPluginDependency - 1817.ImportedFromIB2 - 1818.IBPluginDependency - 1818.ImportedFromIB2 - 1819.IBPluginDependency - 1819.ImportedFromIB2 - 1820.IBPluginDependency - 1820.ImportedFromIB2 - 1821.IBPluginDependency - 1821.ImportedFromIB2 - 1822.IBPluginDependency - 1822.ImportedFromIB2 - 1841.IBPluginDependency - 1841.ImportedFromIB2 - 1843.IBEditorWindowLastContentRect - 1843.IBPluginDependency - 1843.IBViewEditorWindowController.showingLayoutRectangles - 1843.ImportedFromIB2 - 1843.editorWindowContentRectSynchronizationRect - 1867.IBEditorWindowLastContentRect - 1867.IBPluginDependency - 1867.IBWindowTemplateEditedContentRect - 1867.ImportedFromIB2 - 1867.editorWindowContentRectSynchronizationRect - 1867.windowTemplate.hasMaxSize - 1867.windowTemplate.hasMinSize - 1867.windowTemplate.maxSize - 1867.windowTemplate.minSize - 1868.IBPluginDependency - 1868.ImportedFromIB2 - 1870.IBPluginDependency - 1870.ImportedFromIB2 - 1871.IBPluginDependency - 1871.ImportedFromIB2 - 1872.IBPluginDependency - 1872.ImportedFromIB2 - 1882.IBPluginDependency - 1882.ImportedFromIB2 - 1884.IBPluginDependency - 1884.ImportedFromIB2 - 1900.IBPluginDependency - 1900.ImportedFromIB2 - 1948.IBPluginDependency - 1948.ImportedFromIB2 - 1949.IBEditorWindowLastContentRect - 1949.IBPluginDependency - 1949.ImportedFromIB2 - 1950.IBPluginDependency - 1950.ImportedFromIB2 - 1951.IBPluginDependency - 1951.ImportedFromIB2 - 1954.IBPluginDependency - 1954.ImportedFromIB2 - 1955.IBPluginDependency - 1955.ImportedFromIB2 - 196.IBPluginDependency - 196.ImportedFromIB2 - 1962.IBPluginDependency - 1962.ImportedFromIB2 - 1963.IBPluginDependency - 1963.ImportedFromIB2 - 1964.IBPluginDependency - 1964.ImportedFromIB2 - 1966.IBPluginDependency - 1966.ImportedFromIB2 - 1967.IBPluginDependency - 1967.ImportedFromIB2 - 1967.editorWindowContentRectSynchronizationRect - 1968.IBPluginDependency - 1968.ImportedFromIB2 - 1970.IBPluginDependency - 1970.ImportedFromIB2 - 1972.IBPluginDependency - 1972.ImportedFromIB2 - 1985.IBPluginDependency - 1985.ImportedFromIB2 - 1989.IBPluginDependency - 1989.ImportedFromIB2 - 1990.IBPluginDependency - 1990.ImportedFromIB2 - 1999.IBPluginDependency - 1999.ImportedFromIB2 - 2.IBPluginDependency - 2.ImportedFromIB2 - 2000.IBPluginDependency - 2000.ImportedFromIB2 - 2001.IBPluginDependency - 2001.ImportedFromIB2 - 2002.IBPluginDependency - 2002.ImportedFromIB2 - 2003.IBPluginDependency - 2003.ImportedFromIB2 - 2006.IBPluginDependency - 2006.ImportedFromIB2 - 2008.IBPluginDependency - 2008.ImportedFromIB2 - 2009.IBEditorWindowLastContentRect - 2009.IBPluginDependency - 2009.ImportedFromIB2 - 2010.IBPluginDependency - 2010.ImportedFromIB2 - 2011.IBPluginDependency - 2011.ImportedFromIB2 - 2012.IBPluginDependency - 2012.ImportedFromIB2 - 2015.IBPluginDependency - 2015.ImportedFromIB2 - 2016.IBPluginDependency - 2016.ImportedFromIB2 - 21.IBEditorWindowLastContentRect - 21.IBPluginDependency - 21.IBViewEditorWindowController.showingLayoutRectangles - 21.IBWindowTemplateEditedContentRect - 21.ImportedFromIB2 - 21.editorWindowContentRectSynchronizationRect - 21.windowTemplate.hasMaxSize - 21.windowTemplate.hasMinSize - 21.windowTemplate.maxSize - 21.windowTemplate.minSize - 2295.IBPluginDependency - 2295.ImportedFromIB2 - 2361.IBPluginDependency - 2361.ImportedFromIB2 - 2364.IBAttributePlaceholdersKey - 2364.IBPluginDependency - 2364.ImportedFromIB2 - 2368.IBPluginDependency - 2368.ImportedFromIB2 - 2375.IBPluginDependency - 2375.ImportedFromIB2 - 240.ImportedFromIB2 - 2421.IBPluginDependency - 2421.ImportedFromIB2 - 2443.IBPluginDependency - 2443.ImportedFromIB2 - 2444.IBPluginDependency - 2444.ImportedFromIB2 - 2445.IBPluginDependency - 2445.ImportedFromIB2 - 2488.IBPluginDependency - 2488.ImportedFromIB2 - 2494.IBPluginDependency - 2494.ImportedFromIB2 - 2507.IBPluginDependency - 2507.ImportedFromIB2 - 2508.IBPluginDependency - 2508.ImportedFromIB2 - 2513.IBPluginDependency - 2513.ImportedFromIB2 - 2518.IBPluginDependency - 2518.ImportedFromIB2 - 2519.IBPluginDependency - 2519.ImportedFromIB2 - 2670.IBPluginDependency - 2670.ImportedFromIB2 - 2671.IBPluginDependency - 2671.ImportedFromIB2 - 2672.IBPluginDependency - 2672.ImportedFromIB2 - 2673.IBPluginDependency - 2673.ImportedFromIB2 - 2698.IBPluginDependency - 2698.ImportedFromIB2 - 2701.IBEditorWindowLastContentRect - 2701.IBPluginDependency - 2701.IBWindowTemplateEditedContentRect - 2701.ImportedFromIB2 - 2701.editorWindowContentRectSynchronizationRect - 2701.windowTemplate.hasMaxSize - 2701.windowTemplate.hasMinSize - 2701.windowTemplate.maxSize - 2701.windowTemplate.minSize - 2702.IBPluginDependency - 2702.ImportedFromIB2 - 2703.IBPluginDependency - 2703.ImportedFromIB2 - 2704.IBPluginDependency - 2704.ImportedFromIB2 - 2705.IBPluginDependency - 2705.ImportedFromIB2 - 2706.IBPluginDependency - 2706.ImportedFromIB2 - 2707.IBPluginDependency - 2707.ImportedFromIB2 - 2708.IBPluginDependency - 2708.ImportedFromIB2 - 2716.IBPluginDependency - 2716.ImportedFromIB2 - 2719.IBPluginDependency - 2719.ImportedFromIB2 - 2720.IBPluginDependency - 2720.ImportedFromIB2 - 2833.IBPluginDependency - 2833.ImportedFromIB2 - 2837.IBPluginDependency - 2837.ImportedFromIB2 - 2839.IBPluginDependency - 2839.ImportedFromIB2 - 2840.IBPluginDependency - 2840.ImportedFromIB2 - 29.IBEditorWindowLastContentRect - 29.IBPluginDependency - 29.ImportedFromIB2 - 29.editorWindowContentRectSynchronizationRect - 2957.IBPluginDependency - 2957.ImportedFromIB2 - 3075.IBPluginDependency - 3075.ImportedFromIB2 - 3077.IBPluginDependency - 3077.ImportedFromIB2 - 3203.IBPluginDependency - 3203.ImportedFromIB2 - 3205.IBPluginDependency - 3205.ImportedFromIB2 - 4179.IBPluginDependency - 4179.ImportedFromIB2 - 4182.CustomClassName - 4182.IBPluginDependency - 4182.ImportedFromIB2 - 4183.IBPluginDependency - 4183.ImportedFromIB2 - 4186.IBPluginDependency - 4186.ImportedFromIB2 - 4317.IBPluginDependency - 4317.ImportedFromIB2 - 4322.IBPluginDependency - 4322.ImportedFromIB2 - 434.IBPluginDependency - 434.IBWindowTemplateEditedContentRect - 434.ImportedFromIB2 - 434.editorWindowContentRectSynchronizationRect - 434.windowTemplate.hasMaxSize - 434.windowTemplate.hasMinSize - 434.windowTemplate.maxSize - 434.windowTemplate.minSize - 435.IBPluginDependency - 435.ImportedFromIB2 - 436.IBPluginDependency - 436.ImportedFromIB2 - 437.IBPluginDependency - 437.ImportedFromIB2 - 438.IBPluginDependency - 438.ImportedFromIB2 - 4579.IBAttributePlaceholdersKey - 4579.IBPluginDependency - 4579.ImportedFromIB2 - 4846.IBPluginDependency - 4847.IBPluginDependency - 4848.IBPluginDependency - 4849.IBPluginDependency - 4850.IBPluginDependency - 4851.IBPluginDependency - 4852.IBPluginDependency - 4853.IBPluginDependency - 4854.IBPluginDependency - 4857.IBPluginDependency - 4858.IBPluginDependency - 4859.IBPluginDependency - 4860.IBPluginDependency - 4862.IBPluginDependency - 4872.IBPluginDependency - 4873.IBPluginDependency - 4874.IBPluginDependency - 4875.IBPluginDependency - 4876.IBPluginDependency - 4877.IBPluginDependency - 4878.IBPluginDependency - 4879.IBPluginDependency - 4880.IBPluginDependency - 4892.IBPluginDependency - 4893.IBPluginDependency - 4904.IBPluginDependency - 4905.IBPluginDependency - 4906.IBPluginDependency - 4907.IBPluginDependency - 4908.IBPluginDependency - 4910.IBPluginDependency - 4911.IBPluginDependency - 4913.IBPluginDependency - 4914.IBPluginDependency - 4915.IBPluginDependency - 4916.IBPluginDependency - 4917.IBPluginDependency - 4918.IBPluginDependency - 4919.IBPluginDependency - 4920.IBPluginDependency - 4923.IBPluginDependency - 4924.IBPluginDependency - 4925.IBPluginDependency - 4926.IBPluginDependency - 4927.IBPluginDependency - 4928.IBPluginDependency - 4929.IBPluginDependency - 4930.IBPluginDependency - 4932.IBPluginDependency - 4933.IBPluginDependency - 4934.IBPluginDependency - 4935.IBPluginDependency - 4936.IBPluginDependency - 4937.IBPluginDependency - 4938.IBPluginDependency - 4939.IBPluginDependency - 4940.IBPluginDependency - 4941.IBPluginDependency - 4942.IBPluginDependency - 4943.IBPluginDependency - 4944.IBPluginDependency - 4945.IBPluginDependency - 4946.IBPluginDependency - 4947.IBPluginDependency - 4948.IBPluginDependency - 4949.IBPluginDependency - 4950.IBPluginDependency - 4951.IBPluginDependency - 4952.IBPluginDependency - 4953.IBPluginDependency - 4954.IBPluginDependency - 4955.IBPluginDependency - 4955.IBShouldRemoveOnLegacySave - 4956.IBPluginDependency - 4956.IBShouldRemoveOnLegacySave - 4957.IBPluginDependency - 4957.IBShouldRemoveOnLegacySave - 4958.IBPluginDependency - 4958.IBShouldRemoveOnLegacySave - 4959.IBPluginDependency - 4959.IBShouldRemoveOnLegacySave - 4960.IBPluginDependency - 4960.IBShouldRemoveOnLegacySave - 4961.IBPluginDependency - 4961.IBShouldRemoveOnLegacySave - 4964.IBPluginDependency - 4967.IBAttributePlaceholdersKey - 4967.IBPluginDependency - 4967.ImportedFromIB2 - 4968.IBPluginDependency - 4980.IBPluginDependency - 4980.ImportedFromIB2 - 4981.IBPluginDependency - 4982.IBPluginDependency - 4982.ImportedFromIB2 - 4983.IBPluginDependency - 4983.ImportedFromIB2 - 4984.IBPluginDependency - 4984.ImportedFromIB2 - 4985.IBPluginDependency - 4986.IBPluginDependency - 4986.ImportedFromIB2 - 4987.IBPluginDependency - 4987.ImportedFromIB2 - 4988.IBPluginDependency - 4988.ImportedFromIB2 - 4989.IBPluginDependency - 4992.IBPluginDependency - 4992.ImportedFromIB2 - 4993.IBPluginDependency - 4994.IBPluginDependency - 4994.ImportedFromIB2 - 4995.IBPluginDependency - 4996.IBPluginDependency - 4996.ImportedFromIB2 - 4997.IBPluginDependency - 4998.IBPluginDependency - 4998.ImportedFromIB2 - 4999.IBPluginDependency - 4999.ImportedFromIB2 - 5000.IBPluginDependency - 5000.ImportedFromIB2 - 5001.IBPluginDependency - 5002.IBPluginDependency - 5002.ImportedFromIB2 - 5003.IBPluginDependency - 5003.ImportedFromIB2 - 5004.IBPluginDependency - 5004.ImportedFromIB2 - 5005.IBPluginDependency - 5006.IBPluginDependency - 5006.ImportedFromIB2 - 5007.IBPluginDependency - 5007.ImportedFromIB2 - 5008.IBPluginDependency - 5008.ImportedFromIB2 - 5009.IBPluginDependency - 5010.IBPluginDependency - 5010.ImportedFromIB2 - 5011.IBPluginDependency - 5011.ImportedFromIB2 - 5012.IBPluginDependency - 5012.ImportedFromIB2 - 5013.IBPluginDependency - 5014.IBPluginDependency - 5014.ImportedFromIB2 - 5014.editorWindowContentRectSynchronizationRect - 5015.IBPluginDependency - 5015.ImportedFromIB2 - 5016.IBPluginDependency - 5016.ImportedFromIB2 - 5017.IBPluginDependency - 5018.IBPluginDependency - 5018.ImportedFromIB2 - 5018.editorWindowContentRectSynchronizationRect - 5019.IBPluginDependency - 5019.ImportedFromIB2 - 5040.IBPluginDependency - 5040.ImportedFromIB2 - 5041.IBPluginDependency - 5042.IBPluginDependency - 5042.ImportedFromIB2 - 5043.IBPluginDependency - 5043.ImportedFromIB2 - 5044.IBPluginDependency - 5044.ImportedFromIB2 - 5045.IBPluginDependency - 5046.IBPluginDependency - 5046.ImportedFromIB2 - 5047.IBPluginDependency - 5047.ImportedFromIB2 - 5048.IBPluginDependency - 5048.ImportedFromIB2 - 5049.IBPluginDependency - 5050.IBPluginDependency - 5050.ImportedFromIB2 - 5050.editorWindowContentRectSynchronizationRect - 5051.IBPluginDependency - 5051.ImportedFromIB2 - 5052.IBPluginDependency - 5052.ImportedFromIB2 - 5053.IBPluginDependency - 5054.IBPluginDependency - 5054.ImportedFromIB2 - 5054.editorWindowContentRectSynchronizationRect - 5055.IBPluginDependency - 5055.ImportedFromIB2 - 5056.IBPluginDependency - 5056.ImportedFromIB2 - 5057.IBPluginDependency - 5058.IBPluginDependency - 5058.ImportedFromIB2 - 5058.editorWindowContentRectSynchronizationRect - 5059.IBPluginDependency - 5059.ImportedFromIB2 - 5060.IBPluginDependency - 5060.ImportedFromIB2 - 5061.IBPluginDependency - 5062.IBPluginDependency - 5062.ImportedFromIB2 - 5062.editorWindowContentRectSynchronizationRect - 5063.IBPluginDependency - 5063.ImportedFromIB2 - 5091.IBPluginDependency - 5092.IBPluginDependency - 5093.IBPluginDependency - 5094.IBPluginDependency - 5095.IBPluginDependency - 5096.IBPluginDependency - 5097.IBPluginDependency - 5098.IBPluginDependency - 5099.IBPluginDependency - 5099.ImportedFromIB2 - 5100.IBPluginDependency - 5101.IBPluginDependency - 5101.ImportedFromIB2 - 5102.IBPluginDependency - 5103.IBPluginDependency - 5103.ImportedFromIB2 - 5104.IBPluginDependency - 5105.IBPluginDependency - 5105.ImportedFromIB2 - 5106.IBPluginDependency - 5107.IBPluginDependency - 5107.ImportedFromIB2 - 5108.IBPluginDependency - 5130.IBPluginDependency - 5131.IBPluginDependency - 5132.IBEditorWindowLastContentRect - 5132.IBPluginDependency - 5132.editorWindowContentRectSynchronizationRect - 5133.IBPluginDependency - 5134.IBPluginDependency - 5135.IBPluginDependency - 5153.IBPluginDependency - 5153.ImportedFromIB2 - 5154.IBPluginDependency - 5157.IBPluginDependency - 5167.IBPluginDependency - 5167.ImportedFromIB2 - 5168.IBPluginDependency - 5171.IBPluginDependency - 5171.ImportedFromIB2 - 5172.IBPluginDependency - 5174.IBPluginDependency - 5174.ImportedFromIB2 - 5175.IBPluginDependency - 5177.IBPluginDependency - 5177.ImportedFromIB2 - 5178.IBPluginDependency - 5180.IBPluginDependency - 5180.ImportedFromIB2 - 5181.IBPluginDependency - 5181.ImportedFromIB2 - 5182.IBPluginDependency - 5183.IBPluginDependency - 5183.ImportedFromIB2 - 5184.IBPluginDependency - 5184.ImportedFromIB2 - 5185.IBPluginDependency - 5188.IBPluginDependency - 5192.IBPluginDependency - 5194.IBPluginDependency - 5195.IBPluginDependency - 5196.IBPluginDependency - 5197.IBPluginDependency - 5198.IBPluginDependency - 5199.IBPluginDependency - 5201.IBPluginDependency - 5215.IBPluginDependency - 5217.IBPluginDependency - 5219.IBPluginDependency - 5225.IBPluginDependency - 5226.IBEditorWindowLastContentRect - 5226.IBPluginDependency - 5227.IBPluginDependency - 5232.IBPluginDependency - 5233.IBPluginDependency - 5234.IBPluginDependency - 5244.IBPluginDependency - 5246.IBPluginDependency - 5247.IBPluginDependency - 5250.IBPluginDependency - 5252.IBPluginDependency - 5254.IBPluginDependency - 5268.IBPluginDependency - 5269.IBPluginDependency - 5270.IBPluginDependency - 5271.IBPluginDependency - 5272.IBPluginDependency - 5273.IBPluginDependency - 5278.IBPluginDependency - 5279.IBNumberFormatterBehaviorMetadataKey - 5279.IBNumberFormatterLocalizesFormatMetadataKey - 5279.IBPluginDependency - 5280.IBPluginDependency - 5280.ImportedFromIB2 - 5491.IBPluginDependency - 5491.ImportedFromIB2 - 5492.IBPluginDependency - 5493.IBPluginDependency - 5493.ImportedFromIB2 - 5494.IBPluginDependency - 5505.IBPluginDependency - 5505.ImportedFromIB2 - 5506.IBPluginDependency - 5513.IBPluginDependency - 5513.ImportedFromIB2 - 5514.IBPluginDependency - 5515.IBEditorWindowLastContentRect - 5515.IBPluginDependency - 5515.ImportedFromIB2 - 5521.IBPluginDependency - 5521.ImportedFromIB2 - 5522.IBPluginDependency - 5523.IBPluginDependency - 5523.ImportedFromIB2 - 5524.IBPluginDependency - 5534.IBPluginDependency - 5535.IBPluginDependency - 5536.IBPluginDependency - 5537.IBPluginDependency - 5545.IBPluginDependency - 5545.ImportedFromIB2 - 5546.IBPluginDependency - 5549.IBPluginDependency - 5549.ImportedFromIB2 - 5550.IBPluginDependency - 5551.IBPluginDependency - 5551.ImportedFromIB2 - 5552.IBPluginDependency - 5553.IBPluginDependency - 5553.ImportedFromIB2 - 5554.IBPluginDependency - 56.IBPluginDependency - 56.ImportedFromIB2 - 5670.IBPluginDependency - 57.IBEditorWindowLastContentRect - 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect - 58.IBPluginDependency - 58.ImportedFromIB2 - 970.IBPluginDependency - 970.ImportedFromIB2 - 971.IBPluginDependency - 971.ImportedFromIB2 - 973.IBPluginDependency - 973.ImportedFromIB2 + + + 256 + {678, 241} + + YES + + + 256 + {678, 17} + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + + YES + + track + 1.700000e+02 + 4.000000e+01 + 1.000000e+03 + + 75628096 + 2048 + Track + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + -2076049856 + 264192 + + + -2038284033 + 129 + + LucidaGrande + 9.000000e+00 + 16 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + YES + YES + 2 + + 3 + YES + + + + codec + 1.220000e+02 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 2048 + Codec + + + 6 + System + headerColor + + + + + + -2076049856 + 264192 + + + -2038284033 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + mixdown + 1.390000e+02 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 2048 + Mixdown + + + + + + -2076049856 + 264192 + + + -2038284033 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + samplerate + 6.400000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 2048 + KHz + + + + + + -2076049856 + 264192 + + + -2038284033 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + bitrate + 8.400000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 2048 + Bitrate (kbps) + + + + + + -2076049856 + 264192 + + + -2038284033 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + drc + 4.600000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 134219776 + DRC + + + + + + -2079981824 + 131072 + + + + 4.000000e+00 + 0.000000e+00 + 0.000000e+00 + 0.000000e+00 + 16 + 0 + YES + NO + 1 + + 3 + YES + YES + + + + drctext + 3.200000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 134219776 + + + + + + + 337772096 + 272892928 + Text + + + + + + 3 + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 6 + System + gridColor + + 3 + MC41AA + + + 1.700000e+01 + 1379926016 + 4 + 15 + 0 + NO + + + {{1, 17}, {678, 241}} + + + + + 6 + System + controlBackgroundColor + + + 4 + + + + -2147483392 + {{-100, -100}, {15, 206}} + + + _doScroller: + 3.700000e+01 + 1.947368e-01 + + + + -2147483392 + {{-100, -100}, {685, 15}} + + 1 + + _doScroller: + 5.714286e-01 + + + + 2304 + + YES + + + {{1, 0}, {678, 17}} + + + + + 4 + + + + {{17, 23}, {680, 259}} + + + 530 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + {{10, 25}, {714, 305}} + + Audio + + + + + 3 + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 256 + {678, 241} + + YES + + + 256 + {678, 17} + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + + YES + + track + 1.670000e+02 + 4.000000e+01 + 1.000000e+03 + + 75628096 + 2048 + Track + + + 3 + MC4zMzMzMzI5OQA + + + + + -2076049856 + 264192 + + + 100679935 + 129 + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + YES + YES + 2 + + 3 + YES + + + + forced + 7.500000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 134219776 + Forced Only + + + + + + 67239424 + 131072 + Check + + + 1215582719 + 130 + + + + + 200 + 25 + + 3 + YES + YES + + + + burned + 6.500000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 134219776 + Burned In + + + + + + 67239424 + 131072 + Check + + + 1215582719 + 130 + + + + + 200 + 25 + + 3 + YES + YES + + + + default + 5.400000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 134219776 + Default + + + + + + 67239424 + 131072 + Check + + + 1215582719 + 130 + + + + + 200 + 25 + + 3 + YES + YES + + + + srt_lang + 1.120000e+02 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 2048 + Srt Language + + + + + + -2076049856 + 133120 + + + 100679935 + 129 + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + srt_charcode + 1.230000e+02 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 2048 + Srt Char Code + + + + + + -2076049856 + 133120 + + + 100679935 + 129 + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + srt_offset + 6.100000e+01 + 1.000000e+01 + 3.402823e+38 + + 75628096 + 2048 + Srt Offset + + + + + + 337772096 + 272630784 + Text + + + + + + 3 + YES + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 1.700000e+01 + 1379926016 + 4 + 15 + 0 + NO + + + {{1, 17}, {678, 241}} + + + + + 4 + + + + -2147483392 + {{-100, -100}, {15, 206}} + + + _doScroller: + 3.700000e+01 + 1.947368e-01 + + + + -2147483392 + {{-100, -100}, {685, 15}} + + 1 + + _doScroller: + 5.714286e-01 + + + + 2304 + + YES + + + {{1, 0}, {678, 17}} + + + + + 4 + + + + {{17, 17}, {680, 259}} + + + 530 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 268 + {{16, 283}, {116, 16}} + + YES + + 67239424 + 134479872 + Add External SRT ... + + + -2038284033 + 129 + + + 200 + 25 + + + + {{10, 25}, {714, 305}} + + Subtitles + + + + + 5 + + + 256 + + YES + + + 256 + + YES + + + 256 + {700, 290} + + + + {{7, 8}, {700, 290}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 0 + 3 + 0 + NO + + + {{10, 25}, {714, 305}} + + Advanced + + + + + 4 + + + 256 + + YES + + + 256 + + YES + + + 2304 + + YES + + + 256 + {663, 242} + + + YES + + + 256 + {663, 17} + + + + + + + 256 + {{664, 0}, {16, 17}} + + + + + YES + + 1 + 5.100000e+01 + 4.000000e+01 + 1.000000e+03 + + 75628096 + 2048 + Chapter + + + 3 + MC4zMzMzMzI5OQA + + + + + 337772096 + 2048 + Text Cell + + LucidaGrande + 1.100000e+01 + 16 + + + + + + 3 + YES + + + + 2 + 6.060000e+02 + 7.721729e+01 + 1.000000e+03 + + 75628096 + 2048 + Chapter Title + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 1.700000e+01 + -700448768 + 4 + 15 + 0 + YES + + + {{1, 17}, {663, 242}} + + + + + 4 + + + + 256 + {{664, 17}, {15, 242}} + + + + _doScroller: + 9.736842e-01 + + + + -2147483392 + {{-100, -100}, {488, 15}} + + + 1 + + _doScroller: + 9.904762e-01 + + + + 2304 + + YES + + + {{1, 0}, {663, 17}} + + + + + 4 + + + + {{17, 17}, {680, 260}} + + + 18 + + + + + + AAAAAAAAAABBmAAAQZgAAA + + + + 256 + {{14, 283}, {151, 16}} + + + YES + + 67239424 + 131072 + Create chapter markers + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 268 + {{472, 283}, {107, 16}} + + YES + + 67239424 + 134479872 + Import Chapters ... + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{592, 283}, {106, 16}} + + YES + + 67239424 + 134479872 + Export Chapters ... + + + -2038284033 + 129 + + + 200 + 25 + + + + {{10, 25}, {714, 305}} + + + Chapters + + + + + + + 134217728 + YES + YES + + YES + + + + + + 268 + {{20, 522}, {45, 14}} + + YES + + 67239424 + 4325376 + Source: + + LucidaGrande-Bold + 1.100000e+01 + 3357 + + + + + + + + + 264 + {{17, 493}, {35, 14}} + + YES + + 67239424 + 71303168 + Title: + + + + + + + + + 264 + {{55, 493}, {193, 15}} + + YES + + -2076049856 + 263168 + + + 109199615 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + + + + 264 + {{347, 492}, {77, 15}} + + YES + + -2076049856 + 263168 + + + 109199615 + 1 + + + + + + 400 + 75 + + YES + + + OtherViews + + + YES + + + -1 + 3 + YES + YES + 1 + + + + + 264 + {{249, 490}, {46, 17}} + + YES + + 67239424 + 71303168 + Angle: + + + + + + + + + 264 + {{297, 492}, {41, 15}} + + YES + + -2076049856 + 263168 + + + 109199615 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + + + + 264 + {{5, 436}, {47, 17}} + + YES + + 67239424 + 71303168 + File: + + + + + + + + + 264 + {{615, 493}, {57, 14}} + + YES + + 67239424 + 71303168 + Duration: + + + + + + + + + 264 + {{672, 493}, {79, 14}} + + YES + + 67239424 + 4194304 + + + + + 1 + MC43NjYzMDQzNyAtMCAwIDAAA + + + + + + + 264 + {{20, 468}, {70, 14}} + + YES + + 67239424 + 4325376 + Destination + + + + + + + + + 264 + {{76, 380}, {177, 22}} + + YES + + -2076049856 + 132096 + + + 109199615 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + + + + 264 + {{649, 432}, {90, 28}} + + YES + + 67239424 + 134348800 + QnJvd3Nl4oCmA + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 264 + {{98, 472}, {642, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 264 + {{70, 522}, {204, 14}} + + YES + + 69336641 + 4327936 + + + + + 1 + MSAxIDEAA + + + + + + + 264 + {{56, 437}, {573, 19}} + + YES + + -1804468671 + 4326400 + + + + YES + + + + + + + 264 + {{435, 477}, {54, 16}} + + YES + + -1804468671 + 71566336 + + + + YES + + + + + + + 264 + {{492, 477}, {54, 16}} + + YES + + -1804468671 + 71566336 + + + + YES + + + + + + + 264 + {{550, 477}, {54, 16}} + + YES + + -1804468671 + 4457472 + + + + YES + + + + + + + 264 + {{612, 477}, {54, 16}} + + YES + + -1804468671 + 4457472 + + + + YES + + + + + + + 264 + {{20, 412}, {96, 14}} + + YES + + 67239424 + 4325376 + Output Settings: + + + + + + + + + 264 + {{294, 416}, {446, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 264 + {{124, 412}, {162, 14}} + + YES + + 67239424 + 272629760 + + + + + + + + + + 264 + {{536, 8}, {201, 14}} + + YES + + 67239424 + 71303168 + + + + + + + + + + 264 + {{21, 385}, {53, 14}} + + YES + + 67239424 + 71303168 + Format: + + + + + + + + + 268 + {{279, 525}, {461, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + -2147482356 + + {{278, 524}, {463, 12}} + + 16648 + 1.000000e+02 + + + + 264 + {{399, 383}, {141, 18}} + + YES + + 67239424 + 131072 + Web optimized + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 264 + {{283, 383}, {102, 18}} + + YES + + 67239424 + 131072 + Large file size + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 264 + {{541, 383}, {141, 18}} + + YES + + 67239424 + 131072 + iPod 5G support + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 264 + {{491, 492}, {56, 15}} + + YES + + 67239424 + 138412032 + through + + + + + + + + + 264 + {{434, 492}, {57, 15}} + + YES + + -2076049856 + 263168 + + + 109199615 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + + + + 264 + {{549, 492}, {57, 15}} + + YES + + -2076049856 + 263168 + + + 109199615 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + + + {760, 550} + + + {{0, 0}, {1920, 1178}} + {213, 129} + {3.40282e+38, 3.40282e+38} + + + MainMenu + + YES + + + HandBrake + + 1048576 + 2147483647 + + + submenuAction: + + HandBrake + + YES + + + About HandBrake + + 2147483647 + + + + + + Q2hlY2sgZm9yIFVwZGF0ZXPigKY + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide HandBrake + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit HandBrake + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + File + + + YES + + + T3BlbiBTb3VyY2XigKY + o + 1048576 + 2147483647 + + + + + + Open Source (Title Specific) ... + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Add To Queue + b + 1048576 + 2147483647 + + + + + + Start Encoding + s + 1048576 + 2147483647 + + + + + + Pause Encoding + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + Find + + + YES + + + RmluZOKApg + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + Spelling + + YES + + + U3BlbGxpbmfigKY + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling as You Type + + 1048576 + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Presets + + 1048576 + 2147483647 + + + submenuAction: + + Presets + + YES + + + Update Built-in Presets + + 1048576 + 2147483647 + + + + + + Delete Built-in Presets + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + New Preset ... + n + 1048576 + 2147483647 + + + + + + Export ... + + 2147483647 + + + + + + Import ... + + 2147483647 + + + + + + Select Default Preset + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + HandBrake + 1 + 1048576 + 2147483647 + + + + + + Queue + 2 + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Presets Drawer + t + 1048576 + 2147483647 + + + + + + Picture Settings + P + 1048576 + 2147483647 + + + + + + Preview Window + + 2147483647 + + + + + + Activity Window + D + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + HandBrake User Guide + ? + 1048576 + 2147483647 + + + + + + HandBrake Homepage + + 1048576 + 2147483647 + + + + + + HandBrake Forums + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 3 + 2 + {{57, 765}, {300, 233}} + 1886912512 + + Panel + + NSPanel + + View + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + 256 + + YES + + + 256 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{83, 82}, {134, 134}} + + YES + + 130560 + 33554432 + + NSImage + HandBrake.icns + + 0 + 0 + 0 + NO + + YES + + + + 256 + {{202, 12}, {84, 32}} + + YES + + 67239424 + 137887744 + Ahuh ! + + + -2038284033 + 1 + + Helvetica + 1.300000e+01 + 16 + + + DQ + 200 + 25 + + + + + 256 + {{82, 60}, {134, 17}} + + YES + + 67239424 + 138412032 + Rip done ! + + + + + + + + {300, 233} + + {{0, 0}, {1920, 1178}} + {213, 129} + {3.40282e+38, 3.40282e+38} + + + + {240, 550} + {100, 50} + {280, 550} + 2 + 0.000000e+00 + 1.500000e+01 + + + + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 256 + {247, 506} + + YES + + + 256 + {{184, 0}, {16, 17}} + + + YES + + PresetName + 2.440000e+02 + 4.000000e+01 + 1.000000e+03 + + 75628096 + 2048 + Presets + + + 3 + MC4zMzMzMzI5OQA + + + + + 337772096 + 2048 + Text Cell + + + + + + 1 + YES + YES + + + PresetName + YES + compare: + + + + 3.000000e+00 + 2.000000e+00 + + + 1.400000e+01 + 314572800 + 4 + 15 + 0 + YES + 1.200000e+01 + + + {{1, 1}, {247, 506}} + + + + + 4 + + + + 256 + {{248, 1}, {11, 506}} + + 256 + + _doScroller: + 9.977012e-01 + + + + -2147483392 + {{-100, -100}, {183, 15}} + + 1 + + _doScroller: + 9.945652e-01 + + + {{4, 31}, {260, 508}} + + + 18 + + + + QSAAAEEgAABBgAAAQYAAAA + + + + 292 + {{27, 1}, {24, 23}} + + YES + + 67239424 + 0 + + + LucidaGrande-Bold + 1.300000e+01 + 2072 + + + -2030804737 + 34 + + NSImage + NSRemoveTemplate + + + + 400 + 75 + + + + + 292 + {{4, 1}, {24, 23}} + + YES + + -2080244224 + 134217728 + + + + -2032901889 + 34 + + NSImage + NSAddTemplate + + + + 400 + 75 + + + + + 292 + {{59, 1}, {33, 23}} + + YES + + 71433792 + 2048 + + + -2031075073 + 162 + + + 400 + 75 + + + YES + + + 1048576 + 2147483647 + 1 + + NSImage + NSActionTemplate + + + + _popUpItemAction: + + + YES + + Presets Action Menu + + YES + + + + Make Default + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Update Built-in Presets + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + YES + 1 + YES + YES + 2 + + + + {270, 550} + NSView + NSResponder + + + 1 + 2 + {{421, 536}, {338, 318}} + 1886912512 + Create A New Preset + NSPanel + + View + + {3.40282e+38, 3.40282e+38} + {338, 232} + + + 256 + + YES + + + 289 + {{239, 12}, {85, 32}} + + YES + + 67239424 + 134217728 + Add + + + -2038284033 + 1 + + LucidaGrande + 1.300000e+01 + 16 + + + DQ + 200 + 25 + + + + + 289 + {{155, 12}, {84, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 266 + {{20, 264}, {298, 19}} + + YES + + -1804468671 + 272761856 + + + + YES + + + + + + + 266 + {{166, 183}, {155, 22}} + + YES + + -2076049856 + 133120 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 268 + {{17, 286}, {114, 17}} + + YES + + 67239424 + 272760832 + UHJlc2V0IE5hbWU6Cg + + + + + + + + + 268 + {{17, 217}, {91, 14}} + + YES + + 67239424 + 272760832 + Picture Settings: + + + + + + + + + 268 + {{17, 100}, {114, 14}} + + YES + + 67239424 + 272760832 + Description: + + + + + + + + + 274 + {{20, 51}, {298, 41}} + + YES + + -1805517311 + 272760832 + + + + YES + + + + + + + 268 + {{17, 187}, {147, 14}} + + YES + + 67239424 + 71434240 + Use Picture Size: + + + + + + + + + 268 + {{166, 157}, {24, 18}} + + YES + + -2080244224 + 131072 + + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + -2147483380 + {{17, 240}, {303, 18}} + + YES + + 67239424 + 131072 + Preset Folder ( if checked disregard below ) + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{113, 220}, {205, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 268 + {{20, 130}, {298, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 268 + {{17, 159}, {147, 15}} + + YES + + 67239424 + 71434240 + Use Current Picture Filters: + + + + + + + + {338, 318} + + + {{0, 0}, {1920, 1178}} + {338, 254} + {3.40282e+38, 3.40282e+38} + + + 1 + 2 + {{302, 989}, {392, 144}} + 1886912512 + SourceTitlePanel + + NSPanel + + + View + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + 256 + + YES + + + 256 + {{96, 45}, {279, 38}} + + YES + + 67239424 + 272629760 + Source Path Here + + + + + + + + + 256 + {{155, 106}, {26, 14}} + + YES + + 67239424 + 272629760 + for + + + + + + + + + 256 + {{17, 106}, {104, 15}} + + YES + + 67239424 + 71303168 + Scan title number + + + + + + + + + 256 + {{126, 105}, {24, 19}} + + YES + + -1804468671 + 138544128 + 0 + + + YES + + + + + + + 256 + {{15, 13}, {80, 28}} + + YES + + 67239424 + 134348800 + Cancel + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 256 + {{290, 13}, {87, 28}} + + YES + + 67239424 + 134348800 + Open Title + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 256 + {{17, 83}, {455, 19}} + + YES + + 67239424 + 4194304 + Note: (entering 0 or leaving blank will result in a full source scan) + + + + + + + + + 256 + {{17, 69}, {77, 14}} + + YES + + 67239424 + 272629760 + Source Path: + + + + + + + + + 256 + {{177, 106}, {198, 14}} + + YES + + 67239424 + 272629760 + Small System Font Text + + + + + + + + {392, 144} + + {{0, 0}, {1920, 1178}} + {213, 129} + {3.40282e+38, 3.40282e+38} + + + HBController + + + SUUpdater + + + + YES + tracks + tracks.keyAudioTrackName + track + codecs + codecs.keyAudioCodecName + codec + sampleRates + sampleRate + sampleRates.keyAudioSampleRateName + bitRates + bitRates.keyAudioBitrateName + bitRate + drc + enabled + mixdowns + mixdowns.keyAudioMixdownName + mixdown + mixdownEnabled + + YES + + YES + YES + YES + YES + YES + + + HBAudioController + + + + + YES + + + terminate: + + + + 139 + + + + delegate + + + + 247 + + + + fWindow + + + + 350 + + + + delegate + + + + 433 + + + + hide: + + + + 972 + + + + hideOtherApplications: + + + + 975 + + + + arrangeInFront: + + + + 1194 + + + + performMiniaturize: + + + + 1195 + + + + fStatusField + + + + 1238 + + + + fRipIndicator + + + + 1374 + + + + openHomepage: + + + + 1434 + + + + openForums: + + + + 1435 + + + + titlePopUpChanged: + + + + 1567 + + + + fSrcChapterStartPopUp + + + + 1568 + + + + fSrcChapterEndPopUp + + + + 1569 + + + + fDstBrowseButton + + + + 1578 + + + + browseFile: + + + + 1579 + + + + fDstFormatField + + + + 1583 + + + + fDstFormatPopUp + + + + 1584 + + + + fDstFile2Field + + + + 1585 + + + + fSrcDuration1Field + + + + 1589 + + + + fSrcDuration2Field + + + + 1590 + + + + fSrcDVD2Field + + + + 1591 + + + + fSrcTitleField + + + + 1592 + + + + fSrcTitlePopUp + + + + 1593 + + + + fDstFile1Field + + + + 1596 + + + + fVidBitrateCell + + + + 1598 + + + + fVidBitrateField + + + + 1599 + + + + fVidConstantCell + + + + 1600 + + + + fVidEncoderPopUp + + + + 1602 + + + + fVidQualityField + + + + 1604 + + + + fVidQualitySlider + + + + 1606 + + + + fVidRateField + + + + 1607 + + + + fVidRatePopUp + + + + 1608 + + + + fVidTargetCell + + + + 1609 + + + + fVidTargetSizeField + + + + 1610 + + + + fVidTwoPassCheck + + + + 1611 + + + + videoMatrixChanged: + + + + 1612 + + + + formatPopUpChanged: + + + + 1614 + + + + chapterPopUpChanged: + + + + 1615 + + + + chapterPopUpChanged: + + + + 1616 + + + + qualitySliderChanged: + + + + 1617 + + + + performFindPanelAction: + + + + 1823 + + + + startSpeaking: + + + + 1824 + + + + toggleContinuousSpellChecking: + + + + 1825 + + + + undo: + + + + 1826 + + + + stopSpeaking: + + + + 1827 + + + + performFindPanelAction: + + + + 1828 + + + + redo: + + + + 1829 + + + + performFindPanelAction: + + + + 1830 + + + + cut: + + + + 1831 + + + + paste: + + + + 1832 + + + + pasteAsPlainText: + + + + 1833 + + + + selectAll: + + + + 1834 + + + + performFindPanelAction: + + + + 1835 + + + + copy: + + + + 1836 + + + + checkSpelling: + + + + 1837 + + + + centerSelectionInVisibleArea: + + + + 1838 + + + + showGuessPanel: + + + + 1839 + + + + delete: + + + + 1840 + + + + parentWindow + + + + 1842 + + + + contentView + + + + 1844 + + + + fAddPresetPanel + + + + 1869 + + + + fPresetNewName + + + + 1875 + + + + closeAddPresetPanel: + + + + 1878 + + + + fPresetSelectedDisplay + + + + 1883 + + + + toggle: + + + + 1885 + + + + fPresetDrawer + + + + 1889 + + + + addUserPreset: + + + + 1907 + + + + addFactoryPresets: + + + + 1952 + + + + deleteFactoryPresets: + + + + 1953 + + + + showAddPresetPanel: + + + + 1956 + + + + openUserGuide: + + + + 1986 + + + + fCreateChapterMarkers + + + + 2004 + + + + fChapterTable + + + + 2005 + + + + fQueueStatus + + + + 2007 + + + + fPresetNewPicSettingsPopUp + + + + 2013 + + + + showDebugOutputPanel: + + + + 2296 + + + + fVidTurboPassCheck + + + + 2362 + + + + twoPassCheckboxChanged: + + + + 2363 + + + + customSettingUsed: + + + + 2366 + + + + customSettingUsed: + + + + 2367 + + + + openMainWindow: + + + + 2369 + + + + selectDefaultPreset: + + + + 2422 + + + + showQueueWindow: + + + + 2446 + + + + addToQueue: + + + + 2447 + + + + Rip: + + + + 2448 + + + + videoFrameRateChanged: + + + + 2462 + + + + showPicturePanel: + + + + 2493 + + + + Pause: + + + + 2496 + + + + performClose: + + + + 2509 + + + + fAdvancedView + + + + 2516 + + + + showPreferencesWindow: + + + + 2517 + + + + fPresetNewDesc + + + + 2674 + + + + calculateBitrate: + + + + 2689 + + + + customSettingUsed: + + + + 2691 + + + + delegate + + + + 2692 + + + + fOpenSourceTitleMMenu + + + + 2700 + + + + fScanSrcTitlePathField + + + + 2709 + + + + fScanSrcTitleNumField + + + + 2710 + + + + fScanSrcTitleCancelButton + + + + 2711 + + + + fScanSrcTitleOpenButton + + + + 2712 + + + + fScanSrcTitlePanel + + + + 2713 + + + + closeSourceTitleScanPanel: + + + + 2714 + + + + closeSourceTitleScanPanel: + + + + 2715 + + + + browseSources: + + + + 2717 + + + + browseSources: + + + + 2718 + + + + fSrcDsplyNameTitleScan + + + + 2721 + + + + fPresetNewPicFiltersCheck + + + + 2841 + + + + fScanIndicator + + + + 3204 + + + + fPresetsOutlineView + + + + 4187 + + + + dataSource + + + + 4188 + + + + delegate + + + + 4189 + + + + selectPreset: + + + + 4312 + + + + fPresetsDelete + + + + 4319 + + + + deletePreset: + + + + 4321 + + + + fPresetsAdd + + + + 4324 + + + + showAddPresetPanel: + + + + 4325 + + + + fDstMp4LargeFileCheck + + + + 4578 + + + + fDstMp4HttpOptFileCheck + + + + 4581 + + + + checkForUpdates: + + + + 4966 + + + + fDstMp4iPodFileCheck + + + + 4969 + + + + customSettingUsed: + + + + 4970 + + + + customSettingUsed: + + + + 4971 + + + + videoEncoderPopUpChanged: + + + + 5075 + + + + setDefaultPreset: + + + + 5138 + + + + addFactoryPresets: + + + + 5139 + + + + autoSetM4vExtension: + + + + 5152 + + + + fPresetNewFolderCheck + + + + 5155 + + + + fVidEncoderField + + + + 5156 + + + + showPreviewWindow: + + + + 5158 + + + + fPictureSizeField + + + + 5169 + + + + fPictureCroppingField + + + + 5170 + + + + fVideoFiltersField + + + + 5173 + + + + fVidQualityRFField + + + + 5176 + + + + fVidQualityRFLabel + + + + 5179 + + + + fSrcAngleLabel + + + + 5186 + + + + browseExportPresetFile: + + + + 5191 + + + + browseImportPresetFile: + + + + 5193 - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{587, 747}, {211, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{434, 787}, {284, 143}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - InitialTabViewItem - - InitialTabViewItem - - + + + fSubtitlesTable + + + + 5214 + + + + showAboutPanel: + + + + 5245 + + + + fBrowseSrtFileButton + + + + 5248 + + + + browseImportSrtFile: + + + + 5249 + + + + unhideAllApplications: + + + + 5281 + + + + fSrcTimeStartEncodingField + + + + 5507 + + + + fSrcTimeEndEncodingField + + + + 5508 + + + + fVidQualityMatrix + + + + 5512 + + + + encodeStartStopPopUpChanged: + + + + 5520 + + + + fSrcFrameStartEncodingField + + + + 5525 + + + + fSrcFrameEndEncodingField + + + + 5526 + + + + fEncodeStartStopPopUp + + + + 5527 + + + + startEndSecValueChanged: + + + + 5528 + + + + startEndSecValueChanged: + + + + 5529 + + + + startEndFrameValueChanged: + + + + 5530 + + + + startEndFrameValueChanged: + + + + 5531 + + + + fSrcChapterToField + + + + 5532 + + + + fSrcAnglePopUp + + + + 5533 + + + + browseForChapterFile: + + + + 5538 + + + + browseForChapterFileSave: + + + + 5539 + + + + fLoadChaptersButton + + + + 5540 + + + + fSaveChaptersButton + + + + 5541 + + + + fChapterTableNameColumn + + + + 5544 + + + + content: arrangedObjects.tracks + + + + + + content: arrangedObjects.tracks + content + arrangedObjects.tracks + 2 + + + 5791 + + + + contentValues: arrangedObjects.tracks.keyAudioTrackName + + + + + + contentValues: arrangedObjects.tracks.keyAudioTrackName + contentValues + arrangedObjects.tracks.keyAudioTrackName + + 2 + + + 5793 + + + + selectedObject: arrangedObjects.track + + + + + + selectedObject: arrangedObjects.track + selectedObject + arrangedObjects.track + + 2 + + + 5795 + + + + contentArray: audioArray + + + + + + contentArray: audioArray + contentArray + audioArray + 2 + + + 5808 + + + + fAudioDelegate + + + + 5809 + + + + content: arrangedObjects.codecs + + + + + + content: arrangedObjects.codecs + content + arrangedObjects.codecs + 2 + + + 5811 + + + + contentValues: arrangedObjects.codecs.keyAudioCodecName + + + + + + contentValues: arrangedObjects.codecs.keyAudioCodecName + contentValues + arrangedObjects.codecs.keyAudioCodecName + + 2 + + + 5813 + + + + selectedObject: arrangedObjects.codec + + + + + + selectedObject: arrangedObjects.codec + selectedObject + arrangedObjects.codec + + 2 + + + 5815 + + + + content: arrangedObjects.sampleRates + + + + + + content: arrangedObjects.sampleRates + content + arrangedObjects.sampleRates + 2 + + + 5817 + + + + contentValues: arrangedObjects.sampleRates.keyAudioSampleRateName + + + + + + contentValues: arrangedObjects.sampleRates.keyAudioSampleRateName + contentValues + arrangedObjects.sampleRates.keyAudioSampleRateName + + 2 + + + 5822 + + + + selectedObject: arrangedObjects.sampleRate + + + + + + selectedObject: arrangedObjects.sampleRate + selectedObject + arrangedObjects.sampleRate + + 2 + + + 5823 + + + + content: arrangedObjects.bitRates + + + + + + content: arrangedObjects.bitRates + content + arrangedObjects.bitRates + 2 + + + 5825 + + + + contentValues: arrangedObjects.bitRates.keyAudioBitrateName + + + + + + contentValues: arrangedObjects.bitRates.keyAudioBitrateName + contentValues + arrangedObjects.bitRates.keyAudioBitrateName + + 2 + + + 5827 + + + + selectedObject: arrangedObjects.bitRate + + + + + + selectedObject: arrangedObjects.bitRate + selectedObject + arrangedObjects.bitRate + + 2 + + + 5829 + + + + value: arrangedObjects.drc + + + + + + value: arrangedObjects.drc + value + arrangedObjects.drc + + NSConditionallySetsEditable + + + 2 + + + 5833 + + + + enabled: arrangedObjects.enabled + + + + + + enabled: arrangedObjects.enabled + enabled + arrangedObjects.enabled + 2 + + + 5835 + + + + content: arrangedObjects.mixdowns + + + + + + content: arrangedObjects.mixdowns + content + arrangedObjects.mixdowns + 2 + + + 5843 + + + + contentValues: arrangedObjects.mixdowns.keyAudioMixdownName + + + + + + contentValues: arrangedObjects.mixdowns.keyAudioMixdownName + contentValues + arrangedObjects.mixdowns.keyAudioMixdownName + + 2 + + + 5845 + + + + selectedObject: arrangedObjects.mixdown + + + + + + selectedObject: arrangedObjects.mixdown + selectedObject + arrangedObjects.mixdown + + 2 + + + 5847 + + + + enabled: arrangedObjects.enabled + + + + + + enabled: arrangedObjects.enabled + enabled + arrangedObjects.enabled + 2 + + + 5849 + + + + value: arrangedObjects.drc + + + + + + value: arrangedObjects.drc + value + arrangedObjects.drc + + NSValidatesImmediately + + + 2 + + + 5850 + + + + enabled: arrangedObjects.mixdownEnabled + + + + + + enabled: arrangedObjects.mixdownEnabled + enabled + arrangedObjects.mixdownEnabled + 2 + + + 5851 + + + + enabled: arrangedObjects.mixdownEnabled + + + + + + enabled: arrangedObjects.mixdownEnabled + enabled + arrangedObjects.mixdownEnabled + 2 + + + 5852 + + + + enabled: arrangedObjects.mixdownEnabled + + + + + + enabled: arrangedObjects.mixdownEnabled + enabled + arrangedObjects.mixdownEnabled + 2 + + + 5853 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 21 + + + YES + + + + MainWindow + + + 2 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1123 + + + YES + + + + + + 1373 + + + + + 1474 + + + YES + + + + + + + + + + 1477 + + + YES + + + + + + 1478 + + + YES + + + + + + + + + + + + + + + + + + + + + 1499 + + + YES + + + + + + 1500 + + + YES + + + + + + + + + 1501 + + + + + 1502 + + + + + 1503 + + + + + 1504 + + + YES + + + + + + 1505 + + + YES + + + + + + 1506 + + + YES + + + + + + 1507 + + + YES + + + + + + 1508 + + + YES + + + + + + 1509 + + + YES + + + + + + 1512 + + + YES + + + + + + 1515 + + + YES + + + + + + 2361 + + + YES + + + + + + 2375 + + + YES + + + + + + 1989 + + + YES + + + + + + 1990 + + + YES + + + + + + + + + 1999 + + + YES + + + + + + + + + 2000 + + + YES + + + + + + + 2001 + + + YES + + + + + + 2002 + + + YES + + + + + + 2003 + + + YES + + + + + + 2015 + + + YES + + + + + + 2016 + + + YES + + + + + + 2513 + + + YES + + + + + 1538 + + + YES + + + + + + 1539 + + + YES + + + + + + 1540 + + + YES + + + + + + 1541 + + + YES + + + + + + 1545 + + + YES + + + + + + 1548 + + + YES + + + + + + 1552 + + + YES + + + + + + 1553 + + + YES + + + + + + 1554 + + + YES + + + + + + 1555 + + + YES + + + + + + 1556 + + + YES + + + + + + 1557 + + + YES + + + + + + 1561 + + + YES + + + + + + 1562 + + + YES + + + + + + 1623 + + + YES + + + 256 + {{2, 2}, {125, 1}} + + + + + + 1624 + + + + + 1627 + + + YES + + + + + + 1628 + + + YES + + + 256 + {{2, 2}, {125, 1}} + + + + + + 1629 + + + + + 1882 + + + YES + + + + + + 2006 + + + YES + + + + + + 2364 + + + YES + + + + + + 3203 + + + + + 3205 + + + + + 4579 + + + YES + + + + + + 29 + + + YES + + + + + + + + + MainMenu + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + 58 + + + + + 136 + + + + + 196 + + + + + 970 + + + + + 971 + + + + + 973 + + + + + 1445 + + + + + 1900 + + + + + 1189 + + + YES + + + + + + 1192 + + + YES + + + + + + + + + + + + + + + 1190 + + + + + 1191 + + + + + 1193 + + + + + 1884 + + + + + 2295 + + + + + 2368 + + + + + 2445 + + + + + 2488 + + + + + 2519 + + + + + 1200 + + + YES + + + + + + 1209 + + + YES + + + + + + + + + + + + + 1198 + + + + + 2443 + + + + + 2444 + + + + + 2494 + + + + + 2507 + + + + + 2508 + + + + + 2518 + + + + + 2698 + + + + + 1431 + + + YES + + + + + + 1429 + + + YES + + + + + + + + 1432 + + + + + 1433 + + + + + 1985 + + + + + 1795 + + + YES + + + + + + 1796 + + + YES + + + + + + + + + + + + + + + + + + 1797 + + + + + 1798 + + + + + 1799 + + + + + 1800 + + + + + 1801 + + + + + 1802 + + + YES + + + + + + 1803 + + + YES + + + + + + + + + + 1804 + + + + + 1805 + + + + + 1806 + + + + + 1807 + + + + + 1808 + + + + + 1809 + + + + + 1810 + + + YES + + + + + + 1811 + + + YES + + + + + + + + 1812 + + + + + 1813 + + + + + 1814 + + + + + 1815 + + + + + 1816 + + + + + 1817 + + + YES + + + + + + 1818 + + + YES + + + + + + + 1819 + + + + + 1820 + + + + + 1821 + + + + + 1822 + + + + + 1948 + + + YES + + - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{673, 530}, {83, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{476, 687}, {253, 243}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{454, 306}, {270, 550}} - com.apple.InterfaceBuilder.CocoaPlugin - - - {{720, 261}, {270, 550}} - {{-623, 388}, {338, 318}} - com.apple.InterfaceBuilder.CocoaPlugin - {{-623, 388}, {338, 318}} - - {{421, 536}, {338, 318}} - - - {3.40282e+38, 3.40282e+38} - {338, 232} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{520, 797}, {236, 133}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{418, 529}, {122, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{828, 695}, {155, 54}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{168, 210}, {754, 556}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{168, 210}, {754, 556}} - - {{65, 541}, {760, 550}} - - - {3.40282e+38, 3.40282e+38} - {213, 107} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - ToolTip - - ToolTip - - Caution: This option will likely break device compatiblity with all but the AppleTV Take 2. Checking this box enables a 64 bit mp4 file which can be over 4 GB. + + 1949 + + + YES + + + + + + + + + + + + 1950 + + + + + 1951 + + + + + 1954 + + + + + 1955 + + + + + 2421 + + + + + 240 + + + HBController + + + 434 + + + YES + + + + DonePanel + + + 435 + + + YES + + + + + + + + 436 + + + YES + + + + + + 437 + + + YES + + + + + + 438 + + + YES + + + + + + 1841 + + + PresetsDrawer + + + 1843 + + + YES + + + + + + PresetsView - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{72, 712}, {392, 144}} - com.apple.InterfaceBuilder.CocoaPlugin - {{72, 712}, {392, 144}} - - {{303, 988}, {392, 144}} - - - {3.40282e+38, 3.40282e+38} - {213, 107} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{325, 836}, {394, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{63, 836}, {394, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - HBPresetsOutlineView - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - {{57, 766}, {300, 233}} - - {{57, 766}, {300, 233}} - - - {3.40282e+38, 3.40282e+38} - {213, 107} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - ToolTip - - ToolTip - - Mixed + + 4179 + + + YES + + + + - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Mixed + + 4182 + + + YES + + + + + + 4183 + + + YES + + + + + + 4186 + + + + + 4317 + + + YES + + + + + + 4322 + + + YES + + + + + + 1867 + + + YES + + + + AddPresetPanel + + + 1868 + + + YES + + + + + + + + + + + + + + + + + + + 1870 + + + YES + + + + + + 1871 + + + YES + + - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{418, 529}, {122, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{418, 529}, {122, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{601, 501}, {79, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{673, 530}, {83, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{673, 530}, {83, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{673, 530}, {83, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{304, 383}, {226, 63}} - com.apple.InterfaceBuilder.CocoaPlugin - {{923, 222}, {226, 63}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{154, 542}, {700, 18}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - {{551, 788}, {111, 4}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - {{337, 663}, {229, 173}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{75, 683}, {235, 153}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - - - YES - - - YES - - - - - YES - - - YES - - - - 5672 - - - - YES - - HBController - NSObject - - YES - + + 1872 + + + YES + + + + + + 2008 + + + YES + + + + + + 2670 + + + YES + + + + + + 2671 + + + YES + + + + + + 2672 + + + YES + + + + + + 2673 + + YES - Cancel: - Pause: - Rip: - addAllAudioTracksToPopUp: - addFactoryPresets: - addPresetPicDropdownChanged: - addToQueue: - addUserPreset: - applyQueueSettingsToMainWindow: - audioAddAudioTrackCodecs: - audioCodecsPopUpChanged: - audioDRCSliderChanged: - audioTrackMixdownChanged: - audioTrackPopUpChanged: - autoSetM4vExtension: - browseExportPresetFile: - browseFile: - browseForChapterFile: - browseForChapterFileSave: - browseImportPresetFile: - browseImportSrtFile: - browseSources: - calculateBitrate: - calculatePictureSizing: - cancelScanning: - chapterPopUpChanged: - closeAddPresetPanel: - closeSourceTitleScanPanel: - customSettingUsed: - deleteFactoryPresets: - deletePreset: - encodeStartStopPopUpChanged: - formatPopUpChanged: - getDefaultPresets: - insertPreset: - openForums: - openHomepage: - openMainWindow: - openUserGuide: - qualitySliderChanged: - revertPictureSizeToMax: - selectDefaultPreset: - selectPreset: - setDefaultPreset: - setEnabledStateOfAudioMixdownControls: - showAboutPanel: - showAddPresetPanel: - showDebugOutputPanel: - showNewScan: - showPicturePanel: - showPreferencesWindow: - showPreviewWindow: - showQueueWindow: - showSourceTitleScanPanel: - startEndFrameValueChanged: - startEndSecValueChanged: - titlePopUpChanged: - twoPassCheckboxChanged: - videoEncoderPopUpChanged: - videoFrameRateChanged: - videoMatrixChanged: + + + + + + 2833 + + + YES + + + + + + 2837 + + + YES + + + + + + 2839 + + + + + 2840 + + + + + 2957 + + + YES + + + + + + 2701 + + + YES + + + + SourceTitlePanel + + + 2702 + + + YES + + + + + + + + + + + + + + 2703 + + + YES + + + + + + 2704 + + + YES + + + + + + 2705 + + + YES + + + + + + 2706 + + + YES + + + + + + 2707 + + + YES + + + + + + 2708 + + + YES + + + + + + 2716 + + + YES + + + + + + 2719 + + + YES + + + + + + 2720 + + + YES + + + + + + 4846 + + + + + 4872 + + + + + 4873 + + + + + 4874 + + + + + 4875 + + + + + 4876 + + + + + 4877 + + + + + 4878 + + + YES + + + + + + 4879 + + + YES + - + + + + 4880 + + + + + 4892 + + + + + 4893 + + + + + 4904 + + + + + 4905 + + + + + 4906 + + + + + 4907 + + + + + 4908 + + YES - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id + + - - YES - + + 4910 + + YES - Cancel: - Pause: - Rip: - addAllAudioTracksToPopUp: - addFactoryPresets: - addPresetPicDropdownChanged: - addToQueue: - addUserPreset: - applyQueueSettingsToMainWindow: - audioAddAudioTrackCodecs: - audioCodecsPopUpChanged: - audioDRCSliderChanged: - audioTrackMixdownChanged: - audioTrackPopUpChanged: - autoSetM4vExtension: - browseExportPresetFile: - browseFile: - browseForChapterFile: - browseForChapterFileSave: - browseImportPresetFile: - browseImportSrtFile: - browseSources: - calculateBitrate: - calculatePictureSizing: - cancelScanning: - chapterPopUpChanged: - closeAddPresetPanel: - closeSourceTitleScanPanel: - customSettingUsed: - deleteFactoryPresets: - deletePreset: - encodeStartStopPopUpChanged: - formatPopUpChanged: - getDefaultPresets: - insertPreset: - openForums: - openHomepage: - openMainWindow: - openUserGuide: - qualitySliderChanged: - revertPictureSizeToMax: - selectDefaultPreset: - selectPreset: - setDefaultPreset: - setEnabledStateOfAudioMixdownControls: - showAboutPanel: - showAddPresetPanel: - showDebugOutputPanel: - showNewScan: - showPicturePanel: - showPreferencesWindow: - showPreviewWindow: - showQueueWindow: - showSourceTitleScanPanel: - startEndFrameValueChanged: - startEndSecValueChanged: - titlePopUpChanged: - twoPassCheckboxChanged: - videoEncoderPopUpChanged: - videoFrameRateChanged: - videoMatrixChanged: + - + + + + 4911 + + YES - - Cancel: - id - - - Pause: - id - - - Rip: - id - - - addAllAudioTracksToPopUp: - id - - - addFactoryPresets: - id - - - addPresetPicDropdownChanged: - id - - - addToQueue: - id - - - addUserPreset: - id - - - applyQueueSettingsToMainWindow: - id - - - audioAddAudioTrackCodecs: - id - - - audioCodecsPopUpChanged: - id - - - audioDRCSliderChanged: - id - - - audioTrackMixdownChanged: - id - - - audioTrackPopUpChanged: - id - - - autoSetM4vExtension: - id - - - browseExportPresetFile: - id - - - browseFile: - id - - - browseForChapterFile: - id - - - browseForChapterFileSave: - id - - - browseImportPresetFile: - id - - - browseImportSrtFile: - id - - - browseSources: - id - - - calculateBitrate: - id - - - calculatePictureSizing: - id - - - cancelScanning: - id - - - chapterPopUpChanged: - id - - - closeAddPresetPanel: - id - - - closeSourceTitleScanPanel: - id - - - customSettingUsed: - id - - - deleteFactoryPresets: - id - - - deletePreset: - id - - - encodeStartStopPopUpChanged: - id - - - formatPopUpChanged: - id - - - getDefaultPresets: - id - - - insertPreset: - id - - - openForums: - id - - - openHomepage: - id - - - openMainWindow: - id - - - openUserGuide: - id - - - qualitySliderChanged: - id - - - revertPictureSizeToMax: - id - - - selectDefaultPreset: - id - - - selectPreset: - id - - - setDefaultPreset: - id - - - setEnabledStateOfAudioMixdownControls: - id - - - showAboutPanel: - id - - - showAddPresetPanel: - id - - - showDebugOutputPanel: - id - - - showNewScan: - id - - - showPicturePanel: - id - - - showPreferencesWindow: - id - - - showPreviewWindow: - id - - - showQueueWindow: - id - - - showSourceTitleScanPanel: - id - - - startEndFrameValueChanged: - id - - - startEndSecValueChanged: - id - - - titlePopUpChanged: - id - - - twoPassCheckboxChanged: - id - - - videoEncoderPopUpChanged: - id - - - videoFrameRateChanged: - id - - - videoMatrixChanged: - id - + + + + + + 4913 + + + + + 4914 + + + + + 4915 + + + + + 4916 + + + + + 4917 + + + + + 4918 + + + YES + + - - YES - + + 4919 + + + + + 4920 + + + + + 4923 + + + + + 4924 + + + + + 4925 + + + + + 4926 + + + + + 4927 + + + + + 4928 + + + + + 4929 + + + + + 4930 + + + + + 4932 + + + + + 4933 + + + + + 4934 + + + + + 4935 + + + + + 4936 + + + + + 4937 + + YES - fAddPresetPanel - fAdvancedView - fAudBitrateLabel - fAudCodecLabel - fAudDrcLabel - fAudLang1PopUp - fAudLang2PopUp - fAudLang3PopUp - fAudLang4PopUp - fAudMixdownLabel - fAudSamplerateLabel - fAudSourceLabel - fAudTrack1BitratePopUp - fAudTrack1CodecPopUp - fAudTrack1DrcField - fAudTrack1DrcSlider - fAudTrack1Label - fAudTrack1MixPopUp - fAudTrack1RatePopUp - fAudTrack2BitratePopUp - fAudTrack2CodecPopUp - fAudTrack2DrcField - fAudTrack2DrcSlider - fAudTrack2Label - fAudTrack2MixPopUp - fAudTrack2RatePopUp - fAudTrack3BitratePopUp - fAudTrack3CodecPopUp - fAudTrack3DrcField - fAudTrack3DrcSlider - fAudTrack3Label - fAudTrack3MixPopUp - fAudTrack3RatePopUp - fAudTrack4BitratePopUp - fAudTrack4CodecPopUp - fAudTrack4DrcField - fAudTrack4DrcSlider - fAudTrack4Label - fAudTrack4MixPopUp - fAudTrack4RatePopUp - fBrowseSrtFileButton - fChapterTable - fChapterTableNameColumn - fCreateChapterMarkers - fDstBrowseButton - fDstFile1Field - fDstFile2Field - fDstFormatField - fDstFormatPopUp - fDstMp4HttpOptFileCheck - fDstMp4LargeFileCheck - fDstMp4iPodFileCheck - fEncodeStartStopPopUp - fFrameratePfrCheck - fLoadChaptersButton - fPictureCroppingField - fPictureSizeField - fPresetDrawer - fPresetNewDesc - fPresetNewFolderCheck - fPresetNewName - fPresetNewPicFiltersCheck - fPresetNewPicHeight - fPresetNewPicSettingsPopUp - fPresetNewPicWidth - fPresetNewPicWidthHeightBox - fPresetSelectedDisplay - fPresetsActionButton - fPresetsAdd - fPresetsDelete - fPresetsOutlineView - fQueueStatus - fRipIndicator - fSaveChaptersButton - fScanIndicator - fScanSrcTitleCancelButton - fScanSrcTitleNumField - fScanSrcTitleOpenButton - fScanSrcTitlePanel - fScanSrcTitlePathField - fSrcAngleLabel - fSrcAnglePopUp - fSrcChapterEndPopUp - fSrcChapterField - fSrcChapterStartPopUp - fSrcChapterToField - fSrcDVD2Field - fSrcDsplyNameTitleScan - fSrcDuration1Field - fSrcDuration2Field - fSrcFrameEndEncodingField - fSrcFrameStartEncodingField - fSrcTimeEndEncodingField - fSrcTimeStartEncodingField - fSrcTitleField - fSrcTitlePopUp - fStatusField - fSubField - fSubForcedCheck - fSubPopUp - fSubtitlesTable - fVidBitrateCell - fVidBitrateField - fVidConstantCell - fVidEncoderField - fVidEncoderPopUp - fVidQualityField - fVidQualityMatrix - fVidQualityRFField - fVidQualityRFLabel - fVidQualitySlider - fVidRateField - fVidRatePopUp - fVidTargetCell - fVidTargetSizeField - fVidTurboPassCheck - fVidTwoPassCheck - fVideoFiltersField - fWindow + + + + + + 4938 + + + + + 4939 + + + + + 4940 + + + + + 4941 + + + + + 4942 + + + + + 4943 + + + + + 4944 + + + + + 4945 + + + + + 4946 + + + + + 4947 + + + + + 4948 + + + + + 4949 + + + + + 4950 + + + + + 4951 + + + + + 4952 + + + + + 4953 + + + + + 4954 + + + + + 4955 + + + + + 4956 + + + + + 1510 + + + YES + - + + + + 1511 + + + + + 1513 + + YES - NSPanel - NSBox - NSTextField - NSTextField - NSTextField - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSTextField - NSTextField - NSTextField - NSPopUpButton - NSPopUpButton - NSTextField - NSSlider - NSTextField - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSTextField - NSSlider - NSTextField - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSTextField - NSSlider - NSTextField - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSPopUpButton - NSTextField - NSSlider - NSTextField - NSPopUpButton - NSPopUpButton - NSButton - NSTableView - NSTableColumn - NSButton - NSButton - NSTextField - NSTextField - NSTextField - NSPopUpButton - NSButton - NSButton - NSButton - NSPopUpButton - NSButton - NSButton - NSTextField - NSTextField - NSDrawer - NSTextField - NSButton - NSTextField - NSButton - NSTextField - NSPopUpButton - NSTextField - NSBox - NSTextField - NSPopUpButton - NSButton - NSButton - HBPresetsOutlineView - NSTextField - NSProgressIndicator - NSButton - NSProgressIndicator - NSButton - NSTextField - NSButton - NSPanel - NSTextField - NSTextField - NSPopUpButton - NSPopUpButton - NSTextField - NSPopUpButton - NSTextField - NSTextField - NSTextField - NSTextField - NSTextField - NSTextField - NSTextField - NSTextField - NSTextField - NSTextField - NSPopUpButton - NSTextField - NSTextField - NSButton - NSPopUpButton - NSTableView - NSButtonCell - NSTextField - NSButtonCell - NSTextField - NSPopUpButton - NSTextField - NSMatrix - NSTextField - NSTextField - NSSlider - NSTextField - NSPopUpButton - NSButtonCell - NSTextField - NSButton - NSButton - NSTextField - NSWindow + + + + + + 1514 + + + + + 1542 + + + YES + + + + + + 1543 + + + + + 1546 + + + YES + + + + + + 1547 + + + + + 1549 + + + YES + + + + + 1550 + + - - YES - + + 1558 + + YES - fAddPresetPanel - fAdvancedView - fAudBitrateLabel - fAudCodecLabel - fAudDrcLabel - fAudLang1PopUp - fAudLang2PopUp - fAudLang3PopUp - fAudLang4PopUp - fAudMixdownLabel - fAudSamplerateLabel - fAudSourceLabel - fAudTrack1BitratePopUp - fAudTrack1CodecPopUp - fAudTrack1DrcField - fAudTrack1DrcSlider - fAudTrack1Label - fAudTrack1MixPopUp - fAudTrack1RatePopUp - fAudTrack2BitratePopUp - fAudTrack2CodecPopUp - fAudTrack2DrcField - fAudTrack2DrcSlider - fAudTrack2Label - fAudTrack2MixPopUp - fAudTrack2RatePopUp - fAudTrack3BitratePopUp - fAudTrack3CodecPopUp - fAudTrack3DrcField - fAudTrack3DrcSlider - fAudTrack3Label - fAudTrack3MixPopUp - fAudTrack3RatePopUp - fAudTrack4BitratePopUp - fAudTrack4CodecPopUp - fAudTrack4DrcField - fAudTrack4DrcSlider - fAudTrack4Label - fAudTrack4MixPopUp - fAudTrack4RatePopUp - fBrowseSrtFileButton - fChapterTable - fChapterTableNameColumn - fCreateChapterMarkers - fDstBrowseButton - fDstFile1Field - fDstFile2Field - fDstFormatField - fDstFormatPopUp - fDstMp4HttpOptFileCheck - fDstMp4LargeFileCheck - fDstMp4iPodFileCheck - fEncodeStartStopPopUp - fFrameratePfrCheck - fLoadChaptersButton - fPictureCroppingField - fPictureSizeField - fPresetDrawer - fPresetNewDesc - fPresetNewFolderCheck - fPresetNewName - fPresetNewPicFiltersCheck - fPresetNewPicHeight - fPresetNewPicSettingsPopUp - fPresetNewPicWidth - fPresetNewPicWidthHeightBox - fPresetSelectedDisplay - fPresetsActionButton - fPresetsAdd - fPresetsDelete - fPresetsOutlineView - fQueueStatus - fRipIndicator - fSaveChaptersButton - fScanIndicator - fScanSrcTitleCancelButton - fScanSrcTitleNumField - fScanSrcTitleOpenButton - fScanSrcTitlePanel - fScanSrcTitlePathField - fSrcAngleLabel - fSrcAnglePopUp - fSrcChapterEndPopUp - fSrcChapterField - fSrcChapterStartPopUp - fSrcChapterToField - fSrcDVD2Field - fSrcDsplyNameTitleScan - fSrcDuration1Field - fSrcDuration2Field - fSrcFrameEndEncodingField - fSrcFrameStartEncodingField - fSrcTimeEndEncodingField - fSrcTimeStartEncodingField - fSrcTitleField - fSrcTitlePopUp - fStatusField - fSubField - fSubForcedCheck - fSubPopUp - fSubtitlesTable - fVidBitrateCell - fVidBitrateField - fVidConstantCell - fVidEncoderField - fVidEncoderPopUp - fVidQualityField - fVidQualityMatrix - fVidQualityRFField - fVidQualityRFLabel - fVidQualitySlider - fVidRateField - fVidRatePopUp - fVidTargetCell - fVidTargetSizeField - fVidTurboPassCheck - fVidTwoPassCheck - fVideoFiltersField - fWindow + - - YES - - fAddPresetPanel - NSPanel - - - fAdvancedView - NSBox - - - fAudBitrateLabel - NSTextField - - - fAudCodecLabel - NSTextField - - - fAudDrcLabel - NSTextField - - - fAudLang1PopUp - NSPopUpButton - - - fAudLang2PopUp - NSPopUpButton - - - fAudLang3PopUp - NSPopUpButton - - - fAudLang4PopUp - NSPopUpButton - - - fAudMixdownLabel - NSTextField - - - fAudSamplerateLabel - NSTextField - - - fAudSourceLabel - NSTextField - - - fAudTrack1BitratePopUp - NSPopUpButton - - - fAudTrack1CodecPopUp - NSPopUpButton - - - fAudTrack1DrcField - NSTextField - - - fAudTrack1DrcSlider - NSSlider - - - fAudTrack1Label - NSTextField - - - fAudTrack1MixPopUp - NSPopUpButton - - - fAudTrack1RatePopUp - NSPopUpButton - - - fAudTrack2BitratePopUp - NSPopUpButton - - - fAudTrack2CodecPopUp - NSPopUpButton - - - fAudTrack2DrcField - NSTextField - - - fAudTrack2DrcSlider - NSSlider - - - fAudTrack2Label - NSTextField - - - fAudTrack2MixPopUp - NSPopUpButton - - - fAudTrack2RatePopUp - NSPopUpButton - - - fAudTrack3BitratePopUp - NSPopUpButton - - - fAudTrack3CodecPopUp - NSPopUpButton - - - fAudTrack3DrcField - NSTextField - - - fAudTrack3DrcSlider - NSSlider - - - fAudTrack3Label - NSTextField - - - fAudTrack3MixPopUp - NSPopUpButton - - - fAudTrack3RatePopUp - NSPopUpButton - - - fAudTrack4BitratePopUp - NSPopUpButton - - - fAudTrack4CodecPopUp - NSPopUpButton - - - fAudTrack4DrcField - NSTextField - - - fAudTrack4DrcSlider - NSSlider - - - fAudTrack4Label - NSTextField - - - fAudTrack4MixPopUp - NSPopUpButton - - - fAudTrack4RatePopUp - NSPopUpButton - - - fBrowseSrtFileButton - NSButton - - - fChapterTable - NSTableView - - - fChapterTableNameColumn - NSTableColumn - - - fCreateChapterMarkers - NSButton - - - fDstBrowseButton - NSButton - - - fDstFile1Field - NSTextField - - - fDstFile2Field - NSTextField - - - fDstFormatField - NSTextField - - - fDstFormatPopUp - NSPopUpButton - - - fDstMp4HttpOptFileCheck - NSButton - - - fDstMp4LargeFileCheck - NSButton - - - fDstMp4iPodFileCheck - NSButton - - - fEncodeStartStopPopUp - NSPopUpButton - - - fFrameratePfrCheck - NSButton - - - fLoadChaptersButton - NSButton - - - fPictureCroppingField - NSTextField - - - fPictureSizeField - NSTextField - - - fPresetDrawer - NSDrawer - - - fPresetNewDesc - NSTextField - - - fPresetNewFolderCheck - NSButton - - - fPresetNewName - NSTextField - - - fPresetNewPicFiltersCheck - NSButton - - - fPresetNewPicHeight - NSTextField - - - fPresetNewPicSettingsPopUp - NSPopUpButton - - - fPresetNewPicWidth - NSTextField - - - fPresetNewPicWidthHeightBox - NSBox - - - fPresetSelectedDisplay - NSTextField - - - fPresetsActionButton - NSPopUpButton - - - fPresetsAdd - NSButton - - - fPresetsDelete - NSButton - - - fPresetsOutlineView - HBPresetsOutlineView - - - fQueueStatus - NSTextField - - - fRipIndicator - NSProgressIndicator - - - fSaveChaptersButton - NSButton - - - fScanIndicator - NSProgressIndicator - - - fScanSrcTitleCancelButton - NSButton - - - fScanSrcTitleNumField - NSTextField - - - fScanSrcTitleOpenButton - NSButton - - - fScanSrcTitlePanel - NSPanel - - - fScanSrcTitlePathField - NSTextField - - - fSrcAngleLabel - NSTextField - - - fSrcAnglePopUp - NSPopUpButton - - - fSrcChapterEndPopUp - NSPopUpButton - - - fSrcChapterField - NSTextField - - - fSrcChapterStartPopUp - NSPopUpButton - - - fSrcChapterToField - NSTextField - - - fSrcDVD2Field - NSTextField - - - fSrcDsplyNameTitleScan - NSTextField - - - fSrcDuration1Field - NSTextField - - - fSrcDuration2Field - NSTextField - - - fSrcFrameEndEncodingField - NSTextField - - - fSrcFrameStartEncodingField - NSTextField - - - fSrcTimeEndEncodingField - NSTextField - - - fSrcTimeStartEncodingField - NSTextField - - - fSrcTitleField - NSTextField - - - fSrcTitlePopUp - NSPopUpButton - - - fStatusField - NSTextField - - - fSubField - NSTextField - - - fSubForcedCheck - NSButton - - - fSubPopUp - NSPopUpButton - - - fSubtitlesTable - NSTableView - - - fVidBitrateCell - NSButtonCell - - - fVidBitrateField - NSTextField - - - fVidConstantCell - NSButtonCell - - - fVidEncoderField - NSTextField - - - fVidEncoderPopUp - NSPopUpButton - - - fVidQualityField - NSTextField - - - fVidQualityMatrix - NSMatrix - - - fVidQualityRFField - NSTextField - - - fVidQualityRFLabel - NSTextField - - - fVidQualitySlider - NSSlider - - - fVidRateField - NSTextField - - - fVidRatePopUp - NSPopUpButton - - - fVidTargetCell - NSButtonCell - - - fVidTargetSizeField - NSTextField - - - fVidTurboPassCheck - NSButton - - - fVidTwoPassCheck - NSButton - - - fVideoFiltersField - NSTextField - - - fWindow - NSWindow - + + + + 1559 + + + + + 2009 + + + YES + + + + - - IBProjectSource - Controller.h + + 2012 + + - - - HBController - NSObject - - YES - + + 2011 + + + + + 2010 + + + + + 4957 + + + + + 4958 + + + + + 4959 + + + + + 4960 + + + + + 4961 + + + + + 4963 + + + + + 4964 + + + + + 4967 + + YES - presetSelected: - showScanPanel: + - + + + + 4968 + + + + + 5130 + + YES - id - id + + - - YES - + + 5131 + + YES - presetSelected: - showScanPanel: + - + + + + 5132 + + YES - - presetSelected: - id - - - showScanPanel: - id - + + + + - - YES - + + 5133 + + + + + 5134 + + + + + 5135 + + + + + 5153 + + YES - fOpenSourceTitleMMenu - tableView + - + + + + 5154 + + + + + 5157 + + + + + 5167 + + YES - NSMenuItem - NSTableView + + - - YES - + + 5168 + + + + + 5171 + + YES - fOpenSourceTitleMMenu - tableView + - + + + + 5172 + + + + + 5174 + + YES - - fOpenSourceTitleMMenu - NSMenuItem - - - tableView - NSTableView - + + - - IBUserSource - - - - - HBPresetsOutlineView - NSOutlineView - - - - NSObject - - IBUserSource - + + 5175 + + + YES + + + - - - SUUpdater - NSObject - - IBUserSource - + + 5177 + + + YES + + + - - - - YES - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h + + 5178 + + - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h + + 5180 + + + YES + + + - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h + + 5181 + + + YES + + + - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h + + 5182 + + + YES + + + - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h + + 5183 + + + YES + + + - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h + + 5184 + + - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + 5185 + + - - - NSBox - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSBox.h + + 5188 + + - - - NSBrowser - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSBrowser.h + + 5192 + + - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h + + 5194 + + + YES + + + - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h + + 5195 + + + YES + + + + - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h + + 5196 + + + YES + + + + + + - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h + + 5197 + + - - - NSDrawer - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h + + 5198 + + - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h + + 5199 + + + YES + + + + + + + + + - - - NSImageCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSImageCell.h + + 5201 + + + YES + + + - - - NSImageView - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSImageView.h + + 5215 + + + YES + + + - - - NSMatrix - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSMatrix.h + + 5217 + + + YES + + + - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h + + 5219 + + + YES + + + - - - NSMenuItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h + + 5225 + + + YES + + + - - - NSMenuItemCell - NSButtonCell - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItemCell.h + + 5226 + + + YES + + + - - - NSMovieView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSMovieView.h + + 5227 + + - - - NSNumberFormatter - NSFormatter - - IBFrameworkSource - Foundation.framework/Headers/NSNumberFormatter.h + + 5232 + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h + + 5233 + + - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h + + 5234 + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h + + 5244 + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h + + 5246 + + + YES + + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h + + 5247 + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h + + 5250 + + + YES + + + - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h + + 5252 + + + YES + + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h + + 5254 + + + YES + + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h + + 5268 + + + YES + + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h + + 5269 + + + YES + + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h + + 5270 + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h + + 5271 + + + YES + + + - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h + + 5272 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSArchiver.h + + 5273 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSClassDescription.h + + 5278 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h + + 5279 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h + + 5280 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h + + 5491 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h + + 5492 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h + + 5493 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h + + 5494 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObjectScripting.h + + 5505 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPortCoder.h + + 5506 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h + + 5513 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptClassDescription.h + + 5514 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptKeyValueCoding.h + + 5515 + + + YES + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + 5521 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptWhoseTests.h + + 5522 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h + + 5523 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h + + 5524 + + + + + 5534 + + + YES + + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h + + 5535 + + - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLDownload.h + + 5536 + + + YES + + + - - - NSObject - - IBFrameworkSource - Growl.framework/Headers/GrowlApplicationBridge.h + + 5537 + + - - - NSObject - - IBFrameworkSource - ImageKit.framework/Headers/IKImageBrowserView.h + + 5727 + + + YES + + + - - - NSObject - - IBFrameworkSource - ImageKit.framework/Headers/IKSaveOptions.h + + 5728 + + + YES + + + - - - NSObject - - IBFrameworkSource - ImageKit.framework/Headers/ImageKitDeprecated.h + + 5729 + + + YES + + + + + + - - - NSObject - - IBFrameworkSource - PDFKit.framework/Headers/PDFDocument.h + + 5730 + + - - - NSObject - - IBFrameworkSource - PDFKit.framework/Headers/PDFView.h + + 5731 + + + YES + + + + + + + + + - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureDecompressedAudioOutput.h + + 5732 + + - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureDecompressedVideoOutput.h + + 5733 + + - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureFileOutput.h + + 5734 + + + YES + + + - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureVideoPreviewOutput.h + + 5735 + + + YES + + + - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureView.h + + 5736 + + + YES + + + - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTMovie.h + + 5737 + + + YES + + + - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTMovieView.h + + 5738 + + + YES + + + - - - NSObject - - IBFrameworkSource - QuartzComposer.framework/Headers/QCCompositionParameterView.h + + 5739 + + + YES + + + - - - NSObject - - IBFrameworkSource - QuartzComposer.framework/Headers/QCCompositionPickerView.h + + 5740 + + + YES + + + - - - NSObject - - IBFrameworkSource - QuartzFilters.framework/Headers/QuartzFilterManager.h + + 5741 + + + YES + + + - - - NSObject - - IBFrameworkSource - QuickLookUI.framework/Headers/QLPreviewPanel.h + + 5742 + + + YES + + + - - - NSObject - - IBFrameworkSource - Sparkle.framework/Headers/SUAppcast.h + + 5743 + + - - - NSObject - - IBFrameworkSource - Sparkle.framework/Headers/SUUpdater.h + + 5747 + + + YES + + + - - - NSOutlineView - NSTableView - - - - NSPanel - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSPanel.h + + 5748 + + + YES + + + - - - NSPopUpButton - NSButton - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButton.h + + 5749 + + - - - NSPopUpButtonCell - NSMenuItemCell - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButtonCell.h + + 5753 + + - - - NSProgressIndicator - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSProgressIndicator.h + + 5754 + + + YES + + + - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h + + 5755 + + + YES + + + - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h + + 5756 + + - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h + + 5757 + + + YES + + + - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h + + 5758 + + + YES + + + - - - NSSlider - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSSlider.h + + 5759 + + - - - NSSliderCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSSliderCell.h + + 5760 + + + YES + + + - - - NSTabView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTabView.h + + 5761 + + + YES + + + - - - NSTabViewItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTabViewItem.h + + 5762 + + - - - NSTableColumn - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableColumn.h + + 5763 + + - - - NSTableHeaderView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTableHeaderView.h + + 5785 + + + Audios + + + 5806 + + + Audio Controller - - NSTableView - NSControl - + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + -3.ImportedFromIB2 + 1123.IBPluginDependency + 1123.ImportedFromIB2 + 1189.IBPluginDependency + 1189.ImportedFromIB2 + 1190.IBPluginDependency + 1190.ImportedFromIB2 + 1191.IBPluginDependency + 1191.ImportedFromIB2 + 1192.IBEditorWindowLastContentRect + 1192.IBPluginDependency + 1192.ImportedFromIB2 + 1193.IBPluginDependency + 1193.ImportedFromIB2 + 1198.IBPluginDependency + 1198.ImportedFromIB2 + 1200.IBPluginDependency + 1200.ImportedFromIB2 + 1209.IBEditorWindowLastContentRect + 1209.IBPluginDependency + 1209.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 1373.IBPluginDependency + 1373.ImportedFromIB2 + 1429.IBPluginDependency + 1429.ImportedFromIB2 + 1431.IBPluginDependency + 1431.ImportedFromIB2 + 1432.IBPluginDependency + 1432.ImportedFromIB2 + 1433.IBPluginDependency + 1433.ImportedFromIB2 + 1445.IBPluginDependency + 1445.ImportedFromIB2 + 1474.IBAttributePlaceholdersKey + 1474.IBPluginDependency + 1474.ImportedFromIB2 + 1477.IBPluginDependency + 1477.ImportedFromIB2 + 1478.IBPluginDependency + 1478.ImportedFromIB2 + 1499.IBPluginDependency + 1499.ImportedFromIB2 + 1500.IBPluginDependency + 1500.ImportedFromIB2 + 1501.IBPluginDependency + 1501.ImportedFromIB2 + 1502.IBPluginDependency + 1502.ImportedFromIB2 + 1503.IBPluginDependency + 1503.ImportedFromIB2 + 1504.IBPluginDependency + 1504.ImportedFromIB2 + 1505.IBPluginDependency + 1505.ImportedFromIB2 + 1506.IBPluginDependency + 1506.ImportedFromIB2 + 1507.IBPluginDependency + 1507.ImportedFromIB2 + 1508.IBPluginDependency + 1508.ImportedFromIB2 + 1509.IBPluginDependency + 1509.ImportedFromIB2 + 1510.IBPluginDependency + 1510.ImportedFromIB2 + 1511.IBPluginDependency + 1511.ImportedFromIB2 + 1512.IBPluginDependency + 1512.ImportedFromIB2 + 1513.IBPluginDependency + 1513.ImportedFromIB2 + 1514.IBPluginDependency + 1514.ImportedFromIB2 + 1515.IBPluginDependency + 1515.ImportedFromIB2 + 1538.IBPluginDependency + 1538.ImportedFromIB2 + 1539.IBPluginDependency + 1539.ImportedFromIB2 + 1540.IBPluginDependency + 1540.ImportedFromIB2 + 1541.IBPluginDependency + 1541.ImportedFromIB2 + 1542.IBPluginDependency + 1542.ImportedFromIB2 + 1543.IBPluginDependency + 1543.ImportedFromIB2 + 1545.IBPluginDependency + 1545.ImportedFromIB2 + 1546.IBPluginDependency + 1546.ImportedFromIB2 + 1547.IBPluginDependency + 1547.ImportedFromIB2 + 1548.IBPluginDependency + 1548.ImportedFromIB2 + 1549.IBPluginDependency + 1549.ImportedFromIB2 + 1550.IBPluginDependency + 1550.ImportedFromIB2 + 1552.IBPluginDependency + 1552.ImportedFromIB2 + 1553.IBPluginDependency + 1553.ImportedFromIB2 + 1554.IBPluginDependency + 1554.ImportedFromIB2 + 1555.IBPluginDependency + 1555.ImportedFromIB2 + 1556.IBPluginDependency + 1556.ImportedFromIB2 + 1557.IBPluginDependency + 1557.ImportedFromIB2 + 1558.IBPluginDependency + 1558.ImportedFromIB2 + 1559.IBPluginDependency + 1559.ImportedFromIB2 + 1561.IBPluginDependency + 1561.ImportedFromIB2 + 1562.IBPluginDependency + 1562.ImportedFromIB2 + 1623.IBPluginDependency + 1623.ImportedFromIB2 + 1624.IBPluginDependency + 1624.ImportedFromIB2 + 1627.IBPluginDependency + 1627.ImportedFromIB2 + 1628.IBPluginDependency + 1628.ImportedFromIB2 + 1629.IBPluginDependency + 1629.ImportedFromIB2 + 1795.IBPluginDependency + 1795.ImportedFromIB2 + 1796.IBEditorWindowLastContentRect + 1796.IBPluginDependency + 1796.ImportedFromIB2 + 1797.IBPluginDependency + 1797.ImportedFromIB2 + 1798.IBPluginDependency + 1798.ImportedFromIB2 + 1799.IBPluginDependency + 1799.ImportedFromIB2 + 1800.IBPluginDependency + 1800.ImportedFromIB2 + 1801.IBPluginDependency + 1801.ImportedFromIB2 + 1802.IBPluginDependency + 1802.ImportedFromIB2 + 1803.IBPluginDependency + 1803.ImportedFromIB2 + 1804.IBPluginDependency + 1804.ImportedFromIB2 + 1805.IBPluginDependency + 1805.ImportedFromIB2 + 1806.IBPluginDependency + 1806.ImportedFromIB2 + 1807.IBPluginDependency + 1807.ImportedFromIB2 + 1808.IBPluginDependency + 1808.ImportedFromIB2 + 1809.IBPluginDependency + 1809.ImportedFromIB2 + 1810.IBPluginDependency + 1810.ImportedFromIB2 + 1811.IBPluginDependency + 1811.ImportedFromIB2 + 1812.IBPluginDependency + 1812.ImportedFromIB2 + 1813.IBPluginDependency + 1813.ImportedFromIB2 + 1814.IBPluginDependency + 1814.ImportedFromIB2 + 1815.IBPluginDependency + 1815.ImportedFromIB2 + 1816.IBPluginDependency + 1816.ImportedFromIB2 + 1817.IBPluginDependency + 1817.ImportedFromIB2 + 1818.IBPluginDependency + 1818.ImportedFromIB2 + 1819.IBPluginDependency + 1819.ImportedFromIB2 + 1820.IBPluginDependency + 1820.ImportedFromIB2 + 1821.IBPluginDependency + 1821.ImportedFromIB2 + 1822.IBPluginDependency + 1822.ImportedFromIB2 + 1841.IBPluginDependency + 1841.ImportedFromIB2 + 1843.IBEditorWindowLastContentRect + 1843.IBPluginDependency + 1843.IBViewEditorWindowController.showingLayoutRectangles + 1843.ImportedFromIB2 + 1843.editorWindowContentRectSynchronizationRect + 1867.IBEditorWindowLastContentRect + 1867.IBWindowTemplateEditedContentRect + 1867.ImportedFromIB2 + 1867.editorWindowContentRectSynchronizationRect + 1867.windowTemplate.hasMaxSize + 1867.windowTemplate.hasMinSize + 1867.windowTemplate.maxSize + 1867.windowTemplate.minSize + 1868.IBPluginDependency + 1868.ImportedFromIB2 + 1870.IBPluginDependency + 1870.ImportedFromIB2 + 1871.IBPluginDependency + 1871.ImportedFromIB2 + 1872.IBPluginDependency + 1872.ImportedFromIB2 + 1882.IBPluginDependency + 1882.ImportedFromIB2 + 1884.IBPluginDependency + 1884.ImportedFromIB2 + 1900.IBPluginDependency + 1900.ImportedFromIB2 + 1948.IBPluginDependency + 1948.ImportedFromIB2 + 1949.IBEditorWindowLastContentRect + 1949.IBPluginDependency + 1949.ImportedFromIB2 + 1950.IBPluginDependency + 1950.ImportedFromIB2 + 1951.IBPluginDependency + 1951.ImportedFromIB2 + 1954.IBPluginDependency + 1954.ImportedFromIB2 + 1955.IBPluginDependency + 1955.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 1985.IBPluginDependency + 1985.ImportedFromIB2 + 1989.IBPluginDependency + 1989.ImportedFromIB2 + 1990.IBPluginDependency + 1990.ImportedFromIB2 + 1999.IBPluginDependency + 1999.ImportedFromIB2 + 2.IBPluginDependency + 2.ImportedFromIB2 + 2000.IBPluginDependency + 2000.ImportedFromIB2 + 2001.IBPluginDependency + 2001.ImportedFromIB2 + 2002.IBPluginDependency + 2002.ImportedFromIB2 + 2003.IBPluginDependency + 2003.ImportedFromIB2 + 2006.IBPluginDependency + 2006.ImportedFromIB2 + 2008.IBPluginDependency + 2008.ImportedFromIB2 + 2009.IBPluginDependency + 2009.ImportedFromIB2 + 2010.IBPluginDependency + 2010.ImportedFromIB2 + 2011.IBPluginDependency + 2011.ImportedFromIB2 + 2012.IBPluginDependency + 2012.ImportedFromIB2 + 2015.IBPluginDependency + 2015.ImportedFromIB2 + 2016.IBPluginDependency + 2016.ImportedFromIB2 + 21.IBEditorWindowLastContentRect + 21.IBViewEditorWindowController.showingLayoutRectangles + 21.IBWindowTemplateEditedContentRect + 21.ImportedFromIB2 + 21.editorWindowContentRectSynchronizationRect + 21.windowTemplate.hasMaxSize + 21.windowTemplate.hasMinSize + 21.windowTemplate.maxSize + 21.windowTemplate.minSize + 2295.IBPluginDependency + 2295.ImportedFromIB2 + 2361.IBPluginDependency + 2361.ImportedFromIB2 + 2364.IBAttributePlaceholdersKey + 2364.IBPluginDependency + 2364.ImportedFromIB2 + 2368.IBPluginDependency + 2368.ImportedFromIB2 + 2375.IBPluginDependency + 2375.ImportedFromIB2 + 240.IBPluginDependency + 240.ImportedFromIB2 + 2421.IBPluginDependency + 2421.ImportedFromIB2 + 2443.IBPluginDependency + 2443.ImportedFromIB2 + 2444.IBPluginDependency + 2444.ImportedFromIB2 + 2445.IBPluginDependency + 2445.ImportedFromIB2 + 2488.IBPluginDependency + 2488.ImportedFromIB2 + 2494.IBPluginDependency + 2494.ImportedFromIB2 + 2507.IBPluginDependency + 2507.ImportedFromIB2 + 2508.IBPluginDependency + 2508.ImportedFromIB2 + 2513.IBPluginDependency + 2513.ImportedFromIB2 + 2518.IBPluginDependency + 2518.ImportedFromIB2 + 2519.IBPluginDependency + 2519.ImportedFromIB2 + 2670.IBPluginDependency + 2670.ImportedFromIB2 + 2671.IBPluginDependency + 2671.ImportedFromIB2 + 2672.IBPluginDependency + 2672.ImportedFromIB2 + 2673.IBPluginDependency + 2673.ImportedFromIB2 + 2698.IBPluginDependency + 2698.ImportedFromIB2 + 2701.IBEditorWindowLastContentRect + 2701.IBWindowTemplateEditedContentRect + 2701.ImportedFromIB2 + 2701.editorWindowContentRectSynchronizationRect + 2701.windowTemplate.hasMaxSize + 2701.windowTemplate.hasMinSize + 2701.windowTemplate.maxSize + 2701.windowTemplate.minSize + 2702.IBPluginDependency + 2702.ImportedFromIB2 + 2703.IBPluginDependency + 2703.ImportedFromIB2 + 2704.IBPluginDependency + 2704.ImportedFromIB2 + 2705.IBPluginDependency + 2705.ImportedFromIB2 + 2706.IBPluginDependency + 2706.ImportedFromIB2 + 2707.IBPluginDependency + 2707.ImportedFromIB2 + 2708.IBPluginDependency + 2708.ImportedFromIB2 + 2716.IBPluginDependency + 2716.ImportedFromIB2 + 2719.IBPluginDependency + 2719.ImportedFromIB2 + 2720.IBPluginDependency + 2720.ImportedFromIB2 + 2833.IBPluginDependency + 2833.ImportedFromIB2 + 2837.IBPluginDependency + 2837.ImportedFromIB2 + 2839.IBPluginDependency + 2839.ImportedFromIB2 + 2840.IBPluginDependency + 2840.ImportedFromIB2 + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.editorWindowContentRectSynchronizationRect + 2957.IBPluginDependency + 2957.ImportedFromIB2 + 3203.IBPluginDependency + 3203.ImportedFromIB2 + 3205.IBPluginDependency + 3205.ImportedFromIB2 + 4179.IBPluginDependency + 4179.ImportedFromIB2 + 4182.CustomClassName + 4182.IBPluginDependency + 4182.ImportedFromIB2 + 4183.IBPluginDependency + 4183.ImportedFromIB2 + 4186.IBPluginDependency + 4186.ImportedFromIB2 + 4317.IBPluginDependency + 4317.ImportedFromIB2 + 4322.IBPluginDependency + 4322.ImportedFromIB2 + 434.IBWindowTemplateEditedContentRect + 434.ImportedFromIB2 + 434.editorWindowContentRectSynchronizationRect + 434.windowTemplate.hasMaxSize + 434.windowTemplate.hasMinSize + 434.windowTemplate.maxSize + 434.windowTemplate.minSize + 435.IBPluginDependency + 435.ImportedFromIB2 + 436.IBPluginDependency + 436.ImportedFromIB2 + 437.IBPluginDependency + 437.ImportedFromIB2 + 438.IBPluginDependency + 438.ImportedFromIB2 + 4579.IBAttributePlaceholdersKey + 4579.IBPluginDependency + 4579.ImportedFromIB2 + 4846.IBPluginDependency + 4872.IBPluginDependency + 4873.IBPluginDependency + 4874.IBPluginDependency + 4875.IBPluginDependency + 4876.IBPluginDependency + 4877.IBPluginDependency + 4878.IBPluginDependency + 4879.IBPluginDependency + 4880.IBPluginDependency + 4892.IBPluginDependency + 4893.IBPluginDependency + 4904.IBPluginDependency + 4905.IBPluginDependency + 4906.IBPluginDependency + 4907.IBPluginDependency + 4908.IBPluginDependency + 4910.IBPluginDependency + 4911.IBPluginDependency + 4913.IBPluginDependency + 4914.IBPluginDependency + 4915.IBPluginDependency + 4916.IBPluginDependency + 4917.IBPluginDependency + 4918.IBPluginDependency + 4919.IBPluginDependency + 4920.IBPluginDependency + 4923.IBPluginDependency + 4924.IBPluginDependency + 4925.IBPluginDependency + 4926.IBPluginDependency + 4927.IBPluginDependency + 4928.IBPluginDependency + 4929.IBPluginDependency + 4930.IBPluginDependency + 4932.IBPluginDependency + 4933.IBPluginDependency + 4934.IBPluginDependency + 4935.IBPluginDependency + 4936.IBPluginDependency + 4937.IBPluginDependency + 4938.IBPluginDependency + 4939.IBPluginDependency + 4940.IBPluginDependency + 4941.IBPluginDependency + 4942.IBPluginDependency + 4943.IBPluginDependency + 4944.IBPluginDependency + 4945.IBPluginDependency + 4946.IBPluginDependency + 4947.IBPluginDependency + 4948.IBPluginDependency + 4949.IBPluginDependency + 4950.IBPluginDependency + 4951.IBPluginDependency + 4952.IBPluginDependency + 4953.IBPluginDependency + 4954.IBPluginDependency + 4955.IBPluginDependency + 4955.IBShouldRemoveOnLegacySave + 4956.IBPluginDependency + 4956.IBShouldRemoveOnLegacySave + 4957.IBPluginDependency + 4957.IBShouldRemoveOnLegacySave + 4958.IBPluginDependency + 4958.IBShouldRemoveOnLegacySave + 4959.IBPluginDependency + 4959.IBShouldRemoveOnLegacySave + 4960.IBPluginDependency + 4960.IBShouldRemoveOnLegacySave + 4961.IBPluginDependency + 4961.IBShouldRemoveOnLegacySave + 4963.IBPluginDependency + 4964.IBPluginDependency + 4967.IBAttributePlaceholdersKey + 4967.IBPluginDependency + 4967.ImportedFromIB2 + 4968.IBPluginDependency + 5130.IBPluginDependency + 5131.IBPluginDependency + 5132.IBEditorWindowLastContentRect + 5132.IBPluginDependency + 5132.editorWindowContentRectSynchronizationRect + 5133.IBPluginDependency + 5134.IBPluginDependency + 5135.IBPluginDependency + 5153.IBPluginDependency + 5153.ImportedFromIB2 + 5154.IBPluginDependency + 5157.IBPluginDependency + 5167.IBPluginDependency + 5167.ImportedFromIB2 + 5168.IBPluginDependency + 5171.IBPluginDependency + 5171.ImportedFromIB2 + 5172.IBPluginDependency + 5174.IBPluginDependency + 5174.ImportedFromIB2 + 5175.IBPluginDependency + 5177.IBPluginDependency + 5177.ImportedFromIB2 + 5178.IBPluginDependency + 5180.IBPluginDependency + 5180.ImportedFromIB2 + 5181.IBPluginDependency + 5181.ImportedFromIB2 + 5182.IBPluginDependency + 5183.IBPluginDependency + 5183.ImportedFromIB2 + 5184.IBPluginDependency + 5184.ImportedFromIB2 + 5185.IBPluginDependency + 5188.IBPluginDependency + 5192.IBPluginDependency + 5194.IBPluginDependency + 5195.IBPluginDependency + 5196.IBPluginDependency + 5197.IBPluginDependency + 5198.IBPluginDependency + 5199.IBPluginDependency + 5201.IBPluginDependency + 5215.IBPluginDependency + 5217.IBPluginDependency + 5219.IBPluginDependency + 5225.IBPluginDependency + 5226.IBEditorWindowLastContentRect + 5226.IBPluginDependency + 5227.IBPluginDependency + 5232.IBPluginDependency + 5233.IBPluginDependency + 5234.IBPluginDependency + 5244.IBPluginDependency + 5246.IBPluginDependency + 5247.IBPluginDependency + 5250.IBPluginDependency + 5252.IBPluginDependency + 5254.IBPluginDependency + 5268.IBPluginDependency + 5269.IBPluginDependency + 5270.IBPluginDependency + 5271.IBPluginDependency + 5272.IBPluginDependency + 5273.IBPluginDependency + 5278.IBPluginDependency + 5279.IBNumberFormatterBehaviorMetadataKey + 5279.IBNumberFormatterLocalizesFormatMetadataKey + 5279.IBPluginDependency + 5280.IBPluginDependency + 5280.ImportedFromIB2 + 5491.IBPluginDependency + 5491.ImportedFromIB2 + 5492.IBPluginDependency + 5493.IBPluginDependency + 5493.ImportedFromIB2 + 5494.IBPluginDependency + 5505.IBPluginDependency + 5505.ImportedFromIB2 + 5506.IBPluginDependency + 5513.IBPluginDependency + 5513.ImportedFromIB2 + 5514.IBPluginDependency + 5515.IBEditorWindowLastContentRect + 5515.IBPluginDependency + 5515.ImportedFromIB2 + 5521.IBPluginDependency + 5521.ImportedFromIB2 + 5522.IBPluginDependency + 5523.IBPluginDependency + 5523.ImportedFromIB2 + 5524.IBPluginDependency + 5534.IBPluginDependency + 5535.IBPluginDependency + 5536.IBPluginDependency + 5537.IBPluginDependency + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 5727.IBPluginDependency + 5728.IBPluginDependency + 5729.IBPluginDependency + 5730.IBPluginDependency + 5731.IBPluginDependency + 5732.IBPluginDependency + 5733.IBPluginDependency + 5734.IBPluginDependency + 5735.IBPluginDependency + 5736.IBPluginDependency + 5737.IBPluginDependency + 5738.IBPluginDependency + 5739.IBPluginDependency + 5740.IBPluginDependency + 5741.IBPluginDependency + 5742.IBEditorWindowLastContentRect + 5742.IBPluginDependency + 5743.IBPluginDependency + 5747.IBPluginDependency + 5748.IBPluginDependency + 5749.IBPluginDependency + 5753.IBPluginDependency + 5754.IBPluginDependency + 5755.IBEditorWindowLastContentRect + 5755.IBPluginDependency + 5756.IBPluginDependency + 5757.IBPluginDependency + 5758.IBPluginDependency + 5759.IBPluginDependency + 5760.IBPluginDependency + 5761.IBPluginDependency + 5762.IBPluginDependency + 5763.IBPluginDependency + 5785.IBPluginDependency + 58.IBPluginDependency + 58.ImportedFromIB2 + 5806.IBPluginDependency + 970.IBPluginDependency + 970.ImportedFromIB2 + 971.IBPluginDependency + 971.ImportedFromIB2 + 973.IBPluginDependency + 973.ImportedFromIB2 - - NSText - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSText.h + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{587, 747}, {211, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{434, 787}, {284, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + InitialTabViewItem + + InitialTabViewItem + + + - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{476, 687}, {253, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{454, 306}, {270, 550}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{720, 261}, {270, 550}} + {{383, 198}, {338, 318}} + {{383, 198}, {338, 318}} + + {{421, 536}, {338, 318}} + + + {3.40282e+38, 3.40282e+38} + {338, 232} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{520, 797}, {236, 133}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{353, 87}, {760, 550}} + + {{353, 87}, {760, 550}} + + {{65, 541}, {760, 550}} + + + {3.40282e+38, 3.40282e+38} + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + ToolTip + + ToolTip + + Caution: This option will likely break device compatiblity with all but the AppleTV Take 2. Checking this box enables a 64 bit mp4 file which can be over 4 GB. + - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{72, 712}, {392, 144}} + {{72, 712}, {392, 144}} + + {{303, 988}, {392, 144}} + + + {3.40282e+38, 3.40282e+38} + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{325, 836}, {394, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{63, 836}, {394, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + HBPresetsOutlineView + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{57, 766}, {300, 233}} + + {{57, 766}, {300, 233}} + + + {3.40282e+38, 3.40282e+38} + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + ToolTip + + ToolTip + + Mixed + - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Mixed + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{304, 383}, {226, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + {{923, 222}, {226, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{154, 542}, {700, 18}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{551, 788}, {111, 4}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{337, 663}, {229, 173}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{75, 683}, {235, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{383, 369}, {678, 18}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{383, 367}, {678, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + - - NSView - + + + YES + + YES - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - + + YES - - NSView - NSResponder - + + + + YES + + YES - - NSWindow - + + YES + + + 5853 + + + + YES - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h + HBAudioController + NSObject + + myController + id - - - NSWindow - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h + IBProjectSource + HBAudioController.h - PDFView - NSView + HBController + NSObject YES - - YES - goBack: - goForward: - goToFirstPage: - goToLastPage: - goToNextPage: - goToPreviousPage: - selectAll: - takeBackgroundColorFrom: - zoomIn: - zoomOut: + + YES + Cancel: + Pause: + Rip: + addAllAudioTracksToPopUp: + addFactoryPresets: + addPresetPicDropdownChanged: + addToQueue: + addUserPreset: + applyQueueSettingsToMainWindow: + audioAddAudioTrackCodecs: + audioCodecsPopUpChanged: + audioDRCSliderChanged: + audioTrackMixdownChanged: + audioTrackPopUpChanged: + autoSetM4vExtension: + browseExportPresetFile: + browseFile: + browseForChapterFile: + browseForChapterFileSave: + browseImportPresetFile: + browseImportSrtFile: + browseSources: + calculateBitrate: + calculatePictureSizing: + cancelScanning: + chapterPopUpChanged: + closeAddPresetPanel: + closeSourceTitleScanPanel: + customSettingUsed: + deleteFactoryPresets: + deletePreset: + encodeStartStopPopUpChanged: + formatPopUpChanged: + getDefaultPresets: + insertPreset: + openForums: + openHomepage: + openMainWindow: + openUserGuide: + qualitySliderChanged: + revertPictureSizeToMax: + selectDefaultPreset: + selectPreset: + setDefaultPreset: + setEnabledStateOfAudioMixdownControls: + showAboutPanel: + showAddPresetPanel: + showDebugOutputPanel: + showNewScan: + showPicturePanel: + showPreferencesWindow: + showPreviewWindow: + showQueueWindow: + showSourceTitleScanPanel: + startEndFrameValueChanged: + startEndSecValueChanged: + titlePopUpChanged: + twoPassCheckboxChanged: + videoEncoderPopUpChanged: + videoFrameRateChanged: + videoMatrixChanged: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + fAddPresetPanel + fAdvancedView + fAudBitrateLabel + fAudCodecLabel + fAudDrcLabel + fAudLang1PopUp + fAudLang2PopUp + fAudLang3PopUp + fAudLang4PopUp + fAudMixdownLabel + fAudSamplerateLabel + fAudSourceLabel + fAudTrack1BitratePopUp + fAudTrack1CodecPopUp + fAudTrack1DrcField + fAudTrack1DrcSlider + fAudTrack1Label + fAudTrack1MixPopUp + fAudTrack1RatePopUp + fAudTrack2BitratePopUp + fAudTrack2CodecPopUp + fAudTrack2DrcField + fAudTrack2DrcSlider + fAudTrack2Label + fAudTrack2MixPopUp + fAudTrack2RatePopUp + fAudTrack3BitratePopUp + fAudTrack3CodecPopUp + fAudTrack3DrcField + fAudTrack3DrcSlider + fAudTrack3Label + fAudTrack3MixPopUp + fAudTrack3RatePopUp + fAudTrack4BitratePopUp + fAudTrack4CodecPopUp + fAudTrack4DrcField + fAudTrack4DrcSlider + fAudTrack4Label + fAudTrack4MixPopUp + fAudTrack4RatePopUp + fAudioDelegate + fBrowseSrtFileButton + fChapterTable + fChapterTableNameColumn + fCreateChapterMarkers + fDstBrowseButton + fDstFile1Field + fDstFile2Field + fDstFormatField + fDstFormatPopUp + fDstMp4HttpOptFileCheck + fDstMp4LargeFileCheck + fDstMp4iPodFileCheck + fEncodeStartStopPopUp + fFrameratePfrCheck + fLoadChaptersButton + fPictureCroppingField + fPictureSizeField + fPresetDrawer + fPresetNewDesc + fPresetNewFolderCheck + fPresetNewName + fPresetNewPicFiltersCheck + fPresetNewPicHeight + fPresetNewPicSettingsPopUp + fPresetNewPicWidth + fPresetNewPicWidthHeightBox + fPresetSelectedDisplay + fPresetsActionButton + fPresetsAdd + fPresetsDelete + fPresetsOutlineView + fQueueStatus + fRipIndicator + fSaveChaptersButton + fScanIndicator + fScanSrcTitleCancelButton + fScanSrcTitleNumField + fScanSrcTitleOpenButton + fScanSrcTitlePanel + fScanSrcTitlePathField + fSrcAngleLabel + fSrcAnglePopUp + fSrcChapterEndPopUp + fSrcChapterField + fSrcChapterStartPopUp + fSrcChapterToField + fSrcDVD2Field + fSrcDsplyNameTitleScan + fSrcDuration1Field + fSrcDuration2Field + fSrcFrameEndEncodingField + fSrcFrameStartEncodingField + fSrcTimeEndEncodingField + fSrcTimeStartEncodingField + fSrcTitleField + fSrcTitlePopUp + fStatusField + fSubField + fSubForcedCheck + fSubPopUp + fSubtitlesTable + fVidBitrateCell + fVidBitrateField + fVidConstantCell + fVidEncoderField + fVidEncoderPopUp + fVidQualityField + fVidQualityMatrix + fVidQualityRFField + fVidQualityRFLabel + fVidQualitySlider + fVidRateField + fVidRatePopUp + fVidTargetCell + fVidTargetSizeField + fVidTurboPassCheck + fVidTwoPassCheck + fVideoFiltersField + fWindow YES - id - id - id - id - id - id - id - id - id - id + NSPanel + NSBox + NSTextField + NSTextField + NSTextField + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSTextField + NSTextField + NSTextField + NSPopUpButton + NSPopUpButton + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSPopUpButton + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSPopUpButton + HBAudioController + NSButton + NSTableView + NSTableColumn + NSButton + NSButton + NSTextField + NSTextField + NSTextField + NSPopUpButton + NSButton + NSButton + NSButton + NSPopUpButton + NSButton + NSButton + NSTextField + NSTextField + NSDrawer + NSTextField + NSButton + NSTextField + NSButton + NSTextField + NSPopUpButton + NSTextField + NSBox + NSTextField + NSPopUpButton + NSButton + NSButton + HBPresetsOutlineView + NSTextField + NSProgressIndicator + NSButton + NSProgressIndicator + NSButton + NSTextField + NSButton + NSPanel + NSTextField + NSTextField + NSPopUpButton + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSPopUpButton + NSTextField + NSTextField + NSButton + NSPopUpButton + NSTableView + NSButtonCell + NSTextField + NSButtonCell + NSTextField + NSPopUpButton + NSTextField + NSMatrix + NSTextField + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSButtonCell + NSTextField + NSButton + NSButton + NSTextField + NSWindow - - YES - - YES - goBack: - goForward: - goToFirstPage: - goToLastPage: - goToNextPage: - goToPreviousPage: - selectAll: - takeBackgroundColorFrom: - zoomIn: - zoomOut: - - - YES - - goBack: - id - - - goForward: - id - - - goToFirstPage: - id - - - goToLastPage: - id - - - goToNextPage: - id - - - goToPreviousPage: - id - - - selectAll: - id - - - takeBackgroundColorFrom: - id - - - zoomIn: - id - - - zoomOut: - id - - + + IBProjectSource + Controller.h - - QCView - NSView + HBController + NSObject YES - + YES - play: - start: - stop: + presetSelected: + showScanPanel: YES id id - id - + YES - + YES - play: - start: - stop: + fOpenSourceTitleMMenu + tableView YES - - play: - id - - - start: - id - - - stop: - id - + NSMenuItem + NSTableView - IBFrameworkSource - QuartzComposer.framework/Headers/QCView.h + IBUserSource + - QTMovieView - NSView - - YES - - YES - add: - addScaled: - copy: - cut: - delete: - gotoBeginning: - gotoEnd: - gotoNextSelectionPoint: - gotoPosterFrame: - gotoPreviousSelectionPoint: - paste: - pause: - play: - replace: - selectAll: - selectNone: - stepBackward: - stepForward: - trim: - - - YES - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - add: - addScaled: - copy: - cut: - delete: - gotoBeginning: - gotoEnd: - gotoNextSelectionPoint: - gotoPosterFrame: - gotoPreviousSelectionPoint: - paste: - pause: - play: - replace: - selectAll: - selectNone: - stepBackward: - stepForward: - trim: - - - YES - - add: - id - - - addScaled: - id - - - copy: - id - - - cut: - id - - - delete: - id - - - gotoBeginning: - id - - - gotoEnd: - id - - - gotoNextSelectionPoint: - id - - - gotoPosterFrame: - id - - - gotoPreviousSelectionPoint: - id - - - paste: - id - - - pause: - id - - - play: - id - - - replace: - id - - - selectAll: - id - - - selectNone: - id - - - stepBackward: - id - - - stepForward: - id - - - trim: - id - - + HBPresetsOutlineView + NSOutlineView + + + + NSObject + + IBUserSource + - SUUpdater NSObject - - checkForUpdates: - id - - - checkForUpdates: - - checkForUpdates: - id - - - - delegate - id - - - delegate - - delegate - id - + + IBUserSource + - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES ../HandBrake.xcodeproj 3 - - YES - - YES - HandBrake.icns - NSActionTemplate - NSAddTemplate - NSMenuCheckmark - NSMenuMixedState - NSRemoveTemplate - NSSwitch - - - YES - {128, 128} - {15, 15} - {8, 8} - {9, 8} - {7, 2} - {8, 8} - {15, 15} - - diff --git a/macosx/HBAudio.h b/macosx/HBAudio.h new file mode 100644 index 00000000..08d1b190 --- /dev/null +++ b/macosx/HBAudio.h @@ -0,0 +1,60 @@ +// +// HBAudio.h +// HandBrake +// +// Created on 2010-08-30. +// + +#import + +@class HBAudioController; + +extern NSString *keyAudioCodecName; +extern NSString *keyAudioSampleRateName; +extern NSString *keyAudioBitrateName; +extern NSString *keyAudioMixdownName; +extern NSString *keyAudioCodec; +extern NSString *keyAudioMixdown; +extern NSString *keyAudioSamplerate; +extern NSString *keyAudioBitrate; + +@interface HBAudio : NSObject + +{ + NSDictionary *track; + NSDictionary *codec; + NSDictionary *mixdown; + NSDictionary *sampleRate; + NSDictionary *bitRate; + NSNumber *drc; + NSNumber *videoContainerTag; + HBAudioController *controller; + NSMutableArray *codecs; + NSMutableArray *mixdowns; + NSMutableArray *bitRates; +} + +@property (nonatomic, retain) NSDictionary *track; +@property (nonatomic, retain) NSDictionary *codec; +@property (nonatomic, retain) NSDictionary *mixdown; +@property (nonatomic, retain) NSDictionary *sampleRate; +@property (nonatomic, retain) NSDictionary *bitRate; +@property (nonatomic, retain) NSNumber *drc; +@property (nonatomic, retain) NSNumber *videoContainerTag; +@property (nonatomic, assign) HBAudioController *controller; + +@property (nonatomic, readonly) NSArray *tracks; +@property (nonatomic, retain) NSMutableArray *codecs; +@property (nonatomic, retain) NSMutableArray *mixdowns; +@property (nonatomic, readonly) NSArray *sampleRates; +@property (nonatomic, retain) NSArray *bitRates; +@property (nonatomic, readonly) BOOL enabled; + +- (void) setTrackFromIndex: (int) aValue; +- (BOOL) setCodecFromName: (NSString *) aValue; +- (void) setMixdownFromName: (NSString *) aValue; +- (void) setSampleRateFromName: (NSString *) aValue; +- (void) setBitRateFromName: (NSString *) aValue; + +@end + diff --git a/macosx/HBAudio.m b/macosx/HBAudio.m new file mode 100644 index 00000000..8d226d33 --- /dev/null +++ b/macosx/HBAudio.m @@ -0,0 +1,640 @@ +// +// HBAudio.m +// HandBrake +// +// Created on 2010-08-30. +// + +#import "HBAudio.h" +#import "HBAudioController.h" +#import "hb.h" + +NSString *keyAudioCodecName = @"keyAudioCodecName"; +NSString *keyAudioMP4 = @"keyAudioMP4"; +NSString *keyAudioMKV = @"keyAudioMKV"; +NSString *keyAudioSampleRateName = @"keyAudioSampleRateName"; +NSString *keyAudioBitrateName = @"keyAudioBitrateName"; +NSString *keyAudioMinimumBitrate = @"keyAudioMinimumBitrate"; +NSString *keyAudioMaximumBitrate = @"keyAudioMaximumBitrate"; +NSString *keyAudioMinimumBitrate6Channel = @"keyAudioMinimumBitrate6Channel"; +NSString *keyAudioMaximumBitrate6Channel = @"keyAudioMaximumBitrate6Channel"; +NSString *keyAudioMustMatchTrack = @"keyAudioMustMatchTrack"; +NSString *keyAudioMixdownName = @"keyAudioMixdownName"; +NSString *keyAudioMixdownLimitsToTrackBitRate = @"keyAudioMixdownLimitsToTrackBitRate"; +NSString *keyAudioMixdownCanBeDefault = @"keyAudioMixdownCanBeDefault"; + +NSString *keyAudioCodec = @"codec"; +NSString *keyAudioMixdown = @"mixdown"; +NSString *keyAudioSamplerate = @"samplerate"; +NSString *keyAudioBitrate = @"bitrate"; + +static NSMutableArray *masterCodecArray = nil; +static NSMutableArray *masterSampleRateArray = nil; +static NSMutableArray *masterBitRateArray = nil; +static NSDictionary *defaultBitRate = nil; +static NSDictionary *bitRate384 = nil; + +@interface NSArray (HBAudioSupport) +- (NSDictionary *) dictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey; +- (NSDictionary *) lastDictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey; +@end +@implementation NSArray (HBAudioSupport) +- (NSDictionary *) dictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey reverse: (BOOL) reverse + +{ + NSDictionary *retval = nil; + NSEnumerator *enumerator = reverse ? [self reverseObjectEnumerator] : [self objectEnumerator]; + NSDictionary *dict; + id aValue; + + while (nil != (dict = [enumerator nextObject]) && nil == retval) { + if (nil != (aValue = [dict objectForKey: aKey]) && YES == [aValue isEqual: anObject]) { + retval = dict; + } + } + return retval; +} +- (NSDictionary *) dictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey +{ return [self dictionaryWithObject: anObject matchingKey: aKey reverse: NO]; } +- (NSDictionary *) lastDictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey +{ return [self dictionaryWithObject: anObject matchingKey: aKey reverse: YES]; } + +@end + +@implementation HBAudio + +#pragma mark - +#pragma mark Object Setup + ++ (void) load + +{ + if ([HBAudio class] == self) { + int i; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSDictionary *dict; + + masterCodecArray = [[NSMutableArray alloc] init]; // knowingly leaked + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"AAC (CoreAudio)", @"AAC (CoreAudio)"), keyAudioCodecName, + [NSNumber numberWithInt: HB_ACODEC_CA_AAC], keyAudioCodec, + [NSNumber numberWithBool: YES], keyAudioMP4, + [NSNumber numberWithBool: YES], keyAudioMKV, + [NSNumber numberWithBool: NO], keyAudioMustMatchTrack, + [NSNumber numberWithInt: 64], keyAudioMinimumBitrate, + [NSNumber numberWithInt: 320], keyAudioMaximumBitrate, + [NSNumber numberWithInt: 128], keyAudioMinimumBitrate6Channel, + [NSNumber numberWithInt: 768], keyAudioMaximumBitrate6Channel, + nil]]; + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"AAC (faac)", @"AAC (faac)"), keyAudioCodecName, + [NSNumber numberWithInt: HB_ACODEC_FAAC], keyAudioCodec, + [NSNumber numberWithBool: YES], keyAudioMP4, + [NSNumber numberWithBool: YES], keyAudioMKV, + [NSNumber numberWithBool: NO], keyAudioMustMatchTrack, + [NSNumber numberWithInt: 32], keyAudioMinimumBitrate, + [NSNumber numberWithInt: 320], keyAudioMaximumBitrate, + [NSNumber numberWithInt: 192], keyAudioMinimumBitrate6Channel, + [NSNumber numberWithInt: 768], keyAudioMaximumBitrate6Channel, + nil]]; + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"MP3 (lame)", @"MP3 (lame)"), keyAudioCodecName, + [NSNumber numberWithInt: HB_ACODEC_LAME], keyAudioCodec, + [NSNumber numberWithBool: YES], keyAudioMP4, + [NSNumber numberWithBool: YES], keyAudioMKV, + [NSNumber numberWithBool: NO], keyAudioMustMatchTrack, + [NSNumber numberWithInt: 32], keyAudioMinimumBitrate, + [NSNumber numberWithInt: 320], keyAudioMaximumBitrate, + [NSNumber numberWithInt: 32], keyAudioMinimumBitrate6Channel, + [NSNumber numberWithInt: 320], keyAudioMaximumBitrate6Channel, + nil]]; + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"AC3 Passthru", @"AC3 Passthru"), keyAudioCodecName, + [NSNumber numberWithInt: HB_ACODEC_AC3], keyAudioCodec, + [NSNumber numberWithBool: YES], keyAudioMP4, + [NSNumber numberWithBool: YES], keyAudioMKV, + [NSNumber numberWithBool: YES], keyAudioMustMatchTrack, + [NSNumber numberWithInt: 32], keyAudioMinimumBitrate, + [NSNumber numberWithInt: 384], keyAudioMaximumBitrate, + [NSNumber numberWithInt: 32], keyAudioMinimumBitrate6Channel, + [NSNumber numberWithInt: 384], keyAudioMaximumBitrate6Channel, + nil]]; + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"DTS Passthru", @"DTS Passthru"), keyAudioCodecName, + [NSNumber numberWithInt: HB_ACODEC_DCA], keyAudioCodec, + [NSNumber numberWithBool: NO], keyAudioMP4, + [NSNumber numberWithBool: YES], keyAudioMKV, + [NSNumber numberWithBool: YES], keyAudioMustMatchTrack, + [NSNumber numberWithInt: 32], keyAudioMinimumBitrate, + [NSNumber numberWithInt: 384], keyAudioMaximumBitrate, + [NSNumber numberWithInt: 32], keyAudioMinimumBitrate6Channel, + [NSNumber numberWithInt: 384], keyAudioMaximumBitrate6Channel, + nil]]; + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"Vorbis (vorbis)", @"Vorbis (vorbis)"), keyAudioCodecName, + [NSNumber numberWithInt: HB_ACODEC_VORBIS], keyAudioCodec, + [NSNumber numberWithBool: NO], keyAudioMP4, + [NSNumber numberWithBool: YES], keyAudioMKV, + [NSNumber numberWithBool: NO], keyAudioMustMatchTrack, + [NSNumber numberWithInt: 48], keyAudioMinimumBitrate, + [NSNumber numberWithInt: 384], keyAudioMaximumBitrate, + [NSNumber numberWithInt: 192], keyAudioMinimumBitrate6Channel, + [NSNumber numberWithInt: 384], keyAudioMaximumBitrate6Channel, + nil]]; + + // Note that for the Auto value we use 0 for the sample rate because our controller will give back the track's + // input sample rate when it finds this 0 value as the selected sample rate. We do this because the input + // sample rate depends on the track, which means it depends on the title, so cannot be nicely set up here. + masterSampleRateArray = [[NSMutableArray alloc] init]; // knowingly leaked + [masterSampleRateArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"Auto", @"Auto"), keyAudioSampleRateName, + [NSNumber numberWithInt: 0], keyAudioSamplerate, + nil]]; + for (i = 0; i < hb_audio_rates_count; i++) { + [masterSampleRateArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_rates[i].string], keyAudioSampleRateName, + [NSNumber numberWithInt: hb_audio_rates[i].rate], keyAudioSamplerate, + nil]]; + } + + masterBitRateArray = [[NSMutableArray alloc] init]; // knowingly leaked + int defaultRate = hb_audio_bitrates[hb_audio_bitrates_default].rate; + for (i = 0; i < hb_audio_bitrates_count; i++) { + int rate = hb_audio_bitrates[i].rate; + dict = [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_bitrates[i].string], keyAudioBitrateName, + [NSNumber numberWithInt: rate], keyAudioBitrate, + nil]; + if (rate == defaultRate) { + defaultBitRate = [dict retain]; // knowingly leaked + } + if (384 == rate) { + bitRate384 = [dict retain]; // knowingly leaked + } + [masterBitRateArray addObject: dict]; + } + + [pool release]; + } + return; +} + +// Ensure the list of codecs is accurate +// Update the current value of codec based on the revised list +- (void) updateCodecs + +{ + NSMutableArray *permittedCodecs = [NSMutableArray array]; + unsigned int count = [masterCodecArray count]; + NSDictionary *dict; + NSString *keyThatAllows = nil; + + // Determine which key we use to see which codecs are permitted + switch ([videoContainerTag intValue]) { + case HB_MUX_MP4: + keyThatAllows = keyAudioMP4; + break; + case HB_MUX_MKV: + keyThatAllows = keyAudioMKV; + break; + default: + keyThatAllows = @"error condition"; + break; + } + + // First get a list of the permitted codecs based on the internal rules + if (nil != track && YES == [self enabled]) { + BOOL goodToAdd; + + for (unsigned int i = 0; i < count; i++) { + dict = [masterCodecArray objectAtIndex: i]; + + // First make sure only codecs permitted by the container are here + goodToAdd = [[dict objectForKey: keyThatAllows] boolValue]; + + // Now we make sure if DTS or AC3 is not available in the track it is not put in the codec list, but in a general way + if (YES == [[dict objectForKey: keyAudioMustMatchTrack] boolValue]) { + if ([[dict objectForKey: keyAudioCodec] intValue] != [[[self track] objectForKey: keyAudioInputCodec] intValue]) { + goodToAdd = NO; + } + } + + if (YES == goodToAdd) { + [permittedCodecs addObject: dict]; + } + } + } + + // Now make sure the permitted list and the actual ones matches + [self setCodecs: permittedCodecs]; + + // Ensure our codec is on the list of permitted codecs + if (nil == [self codec] || NO == [permittedCodecs containsObject: [self codec]]) { + if (0 < [permittedCodecs count]) { + [self setCodec: [permittedCodecs objectAtIndex: 0]]; // This should be defaulting to Core Audio + } + else { + [self setCodec: nil]; + } + } + + return; +} + +// The rules here are provided as-is from the original -[Controller audioTrackPopUpChanged:mixdownToUse:] routine +// with the comments taken from there as well. +- (void) updateMixdowns + +{ + NSMutableArray *retval = [NSMutableArray array]; + int trackCodec = [[track objectForKey: keyAudioInputCodec] intValue]; + int codecCodec = [[codec objectForKey: keyAudioCodec] intValue]; + + if (HB_ACODEC_AC3 == trackCodec && HB_ACODEC_AC3 == codecCodec) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"AC3 Passthru", @"AC3 Passthru"), keyAudioMixdownName, + [NSNumber numberWithInt: HB_ACODEC_AC3], keyAudioMixdown, + [NSNumber numberWithBool: YES], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + } + else if (HB_ACODEC_DCA == trackCodec && HB_ACODEC_DCA == codecCodec) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"DTS Passthru", @"DTS Passthru"), keyAudioMixdownName, + [NSNumber numberWithInt: HB_ACODEC_DCA], keyAudioMixdown, + [NSNumber numberWithBool: YES], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + } + else { + int audioCodecsSupport6Ch = (trackCodec && HB_ACODEC_LAME != codecCodec); + int channelLayout = [[track objectForKey: keyAudioInputChannelLayout] intValue]; + int layout = channelLayout & HB_INPUT_CH_LAYOUT_DISCRETE_NO_LFE_MASK; + + /* add a mono option? */ + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[0].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: hb_audio_mixdowns[0].amixdown], keyAudioMixdown, + [NSNumber numberWithBool: NO], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + + /* offer stereo if we have a stereo-or-better source */ + if (layout >= HB_INPUT_CH_LAYOUT_STEREO) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[1].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: hb_audio_mixdowns[1].amixdown], keyAudioMixdown, + [NSNumber numberWithBool: NO], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + } + + /* do we want to add a dolby surround (DPL1) option? */ + if (HB_INPUT_CH_LAYOUT_3F1R == layout || HB_INPUT_CH_LAYOUT_3F2R == layout || HB_INPUT_CH_LAYOUT_DOLBY == layout) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[2].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: hb_audio_mixdowns[2].amixdown], keyAudioMixdown, + [NSNumber numberWithBool: NO], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + } + + /* do we want to add a dolby pro logic 2 (DPL2) option? */ + if (HB_INPUT_CH_LAYOUT_3F2R == layout) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[3].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: hb_audio_mixdowns[3].amixdown], keyAudioMixdown, + [NSNumber numberWithBool: NO], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + } + + /* do we want to add a 6-channel discrete option? */ + if (1 == audioCodecsSupport6Ch && HB_INPUT_CH_LAYOUT_3F2R == layout && (channelLayout & HB_INPUT_CH_LAYOUT_HAS_LFE)) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[4].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: hb_audio_mixdowns[4].amixdown], keyAudioMixdown, + [NSNumber numberWithBool: NO], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: NO], keyAudioMixdownCanBeDefault, + nil]]; + } + + // based on the fact that we are in an else section where the ifs before hand would have detected the following two + // situations, the following code will never add anything to the returned array. I am leaving this in place for + // historical reasons. + /* do we want to add an AC-3 passthrough option? */ + if (HB_ACODEC_AC3 == trackCodec && HB_ACODEC_AC3 == codecCodec) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[5].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: HB_ACODEC_AC3], keyAudioMixdown, + [NSNumber numberWithBool: YES], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + } + + /* do we want to add a DTS Passthru option ? HB_ACODEC_DCA*/ + if (HB_ACODEC_DCA == trackCodec && HB_ACODEC_DCA == codecCodec) { + [retval addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[5].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: HB_ACODEC_DCA], keyAudioMixdown, + [NSNumber numberWithBool: YES], keyAudioMixdownLimitsToTrackBitRate, + [NSNumber numberWithBool: YES], keyAudioMixdownCanBeDefault, + nil]]; + } + } + + // Now make sure the permitted list and the actual ones matches + [self setMixdowns: retval]; + + // Ensure our mixdown is on the list of permitted ones + if (nil == [self mixdown] || NO == [retval containsObject: [self mixdown]]) { + [self setMixdown: [retval lastDictionaryWithObject: [NSNumber numberWithBool: YES] matchingKey: keyAudioMixdownCanBeDefault]]; + } + + return; +} + +- (void) updateBitRates + +{ + NSMutableArray *permittedBitRates = [NSMutableArray array]; + int count; + NSDictionary *dict; + BOOL has6chMixdown = (HB_AMIXDOWN_6CH == [[[self mixdown] objectForKey: keyAudioMixdown] intValue]); + + count = [masterBitRateArray count]; + NSString *minKey = (has6chMixdown) ? keyAudioMinimumBitrate6Channel : keyAudioMinimumBitrate; + NSString *maxKey = (has6chMixdown) ? keyAudioMaximumBitrate6Channel : keyAudioMaximumBitrate; + int minBitRate = [[codec objectForKey: minKey] intValue]; + int maxBitRate = [[codec objectForKey: maxKey] intValue]; + int currentBitRate; + int trackInputBitRate = [[[self track] objectForKey: keyAudioInputBitrate] intValue]; + BOOL limitsToTrackInputBitRate = [[[self mixdown] objectForKey: keyAudioMixdownLimitsToTrackBitRate] boolValue]; + BOOL shouldAdd; + + for (unsigned int i = 0; i < count; i++) { + dict = [masterBitRateArray objectAtIndex: i]; + currentBitRate = [[dict objectForKey: keyAudioBitrate] intValue]; + + // First ensure the bitrate falls within range of the codec + shouldAdd = (currentBitRate >= minBitRate && currentBitRate <= maxBitRate); + + // Now make sure the mixdown is not limiting us to the track input bitrate + if (YES == shouldAdd && YES == limitsToTrackInputBitRate) { + if (currentBitRate != trackInputBitRate) { + shouldAdd = NO; + } + } + + if (YES == shouldAdd) { + [permittedBitRates addObject: dict]; + } + } + + // There is a situation where we have a mixdown requirement to match the track input bit rate, + // but it does not fall into the range the codec supports. Therefore, we force it here. + if (YES == limitsToTrackInputBitRate && 0 == [permittedBitRates count]) { + NSDictionary *missingBitRate = [masterBitRateArray dictionaryWithObject: [NSNumber numberWithInt: trackInputBitRate] matchingKey: keyAudioBitrate]; + if (nil == missingBitRate) { + // We are in an even worse situation where the requested bit rate does not even exist in the underlying + // library of supported bitrates. Of course since this value is ignored we can freely make a bogus one + // for the UI just to make the user a little more aware. + missingBitRate = [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithFormat: @"%d", trackInputBitRate], keyAudioBitrateName, + [NSNumber numberWithInt: trackInputBitRate], keyAudioBitrate, + nil]; + } + [permittedBitRates addObject: missingBitRate]; + } + + // Make sure we are updated with the permitted list + [self setBitRates: permittedBitRates]; + + // Select the proper one + if (YES == has6chMixdown) { + [self setBitRate: bitRate384]; + } + else { + [self setBitRate: defaultBitRate]; + } + if (nil == [self bitRate] || NO == [permittedBitRates containsObject: [self bitRate]]) { + [self setBitRate: [permittedBitRates lastObject]]; + } + + return; +} + +#pragma mark - +#pragma mark Accessors + +@synthesize track; +@synthesize codec; +@synthesize mixdown; +@synthesize sampleRate; +@synthesize bitRate; +@synthesize drc; +@synthesize videoContainerTag; +@synthesize controller; + +@synthesize codecs; +@synthesize mixdowns; +@synthesize bitRates; + +- (void) setVideoContainerTag: (NSNumber *) aValue + +{ + if ((nil != aValue || nil != videoContainerTag) && NO == [aValue isEqual: videoContainerTag]) { + [aValue retain]; + [videoContainerTag release]; + videoContainerTag = aValue; + [self updateCodecs]; + } + return; +} + +// We do some detection of the None track to do special things. +- (void) setTrack: (NSDictionary *) aValue + +{ + if ((nil != aValue || nil != track) && NO == [aValue isEqual: track]) { + BOOL switchingFromNone = [track isEqual: [controller noneTrack]]; + BOOL switchingToNone = [aValue isEqual: [controller noneTrack]]; + + [aValue retain]; + [track release]; + track = aValue; + + if (nil != aValue) { + [self updateCodecs]; + if (YES == [self enabled]) { + [self setSampleRate: [[self sampleRates] objectAtIndex: 0]]; // default to Auto + } + if (YES == switchingFromNone) { + [controller switchingTrackFromNone: self]; + } + if (YES == switchingToNone) { + [controller settingTrackToNone: self]; + } + } + } + return; +} + +- (void) setCodec: (NSDictionary *) aValue + +{ + if ((nil != aValue || nil != codec) && NO == [aValue isEqual: codec]) { + [aValue retain]; + [codec release]; + codec = aValue; + [self updateMixdowns]; + [self updateBitRates]; + } + return; +} + +- (void) setMixdown: (NSDictionary *) aValue + +{ + if ((nil != aValue || nil != mixdown) && NO == [aValue isEqual: mixdown]) { + [aValue retain]; + [mixdown release]; + mixdown = aValue; + [self updateBitRates]; + [[NSNotificationCenter defaultCenter] postNotificationName: HBMixdownChangedNotification object: self]; + } + return; +} + +- (NSArray *) tracks { return [controller masterTrackArray]; } + +- (NSArray *) sampleRates { return masterSampleRateArray; } + +- (void) dealloc + +{ + [self setTrack: nil]; + [self setCodec: nil]; + [self setMixdown: nil]; + [self setSampleRate: nil]; + [self setBitRate: nil]; + [self setDrc: nil]; + [self setVideoContainerTag: nil]; + [self setCodecs: nil]; + [self setMixdowns: nil]; + [self setBitRates: nil]; + [super dealloc]; + return; +} + +#pragma mark - +#pragma mark Special Setters + +- (void) setTrackFromIndex: (int) aValue + +{ + [self setTrack: [[self tracks] dictionaryWithObject: [NSNumber numberWithInt: aValue] matchingKey: keyAudioTrackIndex]]; + return; +} + +// This returns whether it is able to set the actual codec desired. +- (BOOL) setCodecFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self codecs] dictionaryWithObject: aValue matchingKey: keyAudioCodecName]; + + if (nil != dict) { + [self setCodec: dict]; + } + return (nil != dict); +} + +- (void) setMixdownFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self mixdowns] dictionaryWithObject: aValue matchingKey: keyAudioMixdownName]; + + if (nil != dict) { + [self setMixdown: dict]; + } + return; +} + +- (void) setSampleRateFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self sampleRates] dictionaryWithObject: aValue matchingKey: keyAudioSampleRateName]; + + if (nil != dict) { + [self setSampleRate: dict]; + } + return; +} + +- (void) setBitRateFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self bitRates] dictionaryWithObject: aValue matchingKey: keyAudioBitrateName]; + + if (nil != dict) { + [self setBitRate: dict]; + } + return; +} + + +#pragma mark - +#pragma mark Validation + +// Because we have indicated that the binding for the drc validates immediately we can implement the +// key value binding method to ensure the drc stays in our accepted range. +- (BOOL) validateDrc: (id *) ioValue error: (NSError *) outError + +{ + BOOL retval = YES; + + if (nil != *ioValue) { + if (0.0 < [*ioValue floatValue] && 1.0 > [*ioValue floatValue]) { + *ioValue = [NSNumber numberWithFloat: 1.0]; + } + } + + return retval; +} + +#pragma mark - +#pragma mark Bindings Support + +- (BOOL) enabled + +{ + return (nil != track) ? (NO == [track isEqual: [controller noneTrack]]) : NO; +} + +- (BOOL) mixdownEnabled + +{ + BOOL retval = [self enabled]; + + if (YES == retval) { + int myMixdown = [[[self mixdown] objectForKey: keyAudioMixdown] intValue]; + if (HB_ACODEC_AC3 == myMixdown || HB_ACODEC_DCA == myMixdown) { + retval = NO; + } + } + return retval; +} + ++ (NSSet *) keyPathsForValuesAffectingEnabled + +{ + return [NSSet setWithObjects: @"track", nil]; +} + ++ (NSSet *) keyPathsForValuesAffectingMixdownEnabled + +{ + return [NSSet setWithObjects: @"track", @"mixdown", nil]; +} + +@end diff --git a/macosx/HBAudioController.h b/macosx/HBAudioController.h new file mode 100644 index 00000000..b6a016a5 --- /dev/null +++ b/macosx/HBAudioController.h @@ -0,0 +1,55 @@ +// +// HBAudioController.h +// HandBrake +// +// Created on 2010-08-24. +// + +#import +#import "hb.h" + +extern NSString *keyAudioTrackIndex; +extern NSString *keyAudioTrackName; +extern NSString *keyAudioInputBitrate; +extern NSString *keyAudioInputSampleRate; +extern NSString *keyAudioInputCodec; +extern NSString *keyAudioInputChannelLayout; +extern NSString *HBMixdownChangedNotification; + +@class HBAudio; + +@interface HBAudioController : NSObject + + { + id myController; + NSMutableArray *audioArray; // the configured audio information + NSMutableArray *masterTrackArray; // the master list of audio tracks from the title + NSDictionary *noneTrack; // this represents no audio track selection + NSNumber *videoContainerTag; // initially is the default HB_MUX_MP4 + } + +@property (nonatomic, readonly) NSArray *masterTrackArray; +@property (nonatomic, readonly) NSDictionary *noneTrack; +@property (nonatomic, retain) NSNumber *videoContainerTag; + +- (void) setHBController: (id) aController; +- (void) prepareAudioForQueueFileJob: (NSMutableDictionary *) aDict; +- (void) prepareAudioForJob: (hb_job_t *) aJob; +- (void) prepareAudioForPreset: (NSMutableArray *) anArray; +- (void) addTracksFromQueue: (NSMutableDictionary *) aQueue; +- (void) addTracksFromPreset: (NSMutableDictionary *) aPreset; +- (BOOL) anyCodecMatches: (int) aCodecValue; +- (void) addNewAudioTrack; +- (void) settingTrackToNone: (HBAudio *) newNoneTrack; +- (void) switchingTrackFromNone: (HBAudio *) noLongerNoneTrack; + +@end + +@interface HBAudioController (KVC) + +- (unsigned int) countOfAudioArray; +- (HBAudio *) objectInAudioArrayAtIndex: (unsigned int) index; +- (void) insertObject: (HBAudio *) audioObject inAudioArrayAtIndex: (unsigned int) index; +- (void) removeObjectFromAudioArrayAtIndex: (unsigned int) index; + +@end diff --git a/macosx/HBAudioController.m b/macosx/HBAudioController.m new file mode 100644 index 00000000..64cf306f --- /dev/null +++ b/macosx/HBAudioController.m @@ -0,0 +1,423 @@ +// +// HBAudioController.m +// HandBrake +// +// Created on 2010-08-24. +// + +#import "HBAudioController.h" +#import "Controller.h" +#import "HBAudio.h" +#import "hb.h" + +NSString *keyAudioTrackIndex = @"keyAudioTrackIndex"; +NSString *keyAudioTrackName = @"keyAudioTrackName"; +NSString *keyAudioInputBitrate = @"keyAudioInputBitrate"; +NSString *keyAudioInputSampleRate = @"keyAudioInputSampleRate"; +NSString *keyAudioInputCodec = @"keyAudioInputCodec"; +NSString *keyAudioInputChannelLayout = @"keyAudioInputChannelLayout"; +NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification"; + +@implementation HBAudioController + +#pragma mark - +#pragma mark Accessors + +@synthesize masterTrackArray; +@synthesize noneTrack; +@synthesize videoContainerTag; + +- (id) init + +{ + if (self = [super init]) { + [self setVideoContainerTag: [NSNumber numberWithInt: HB_MUX_MP4]]; + } + return self; +} + +- (void) dealloc + +{ + [[NSNotificationCenter defaultCenter] removeObserver: self]; + [masterTrackArray release]; + [noneTrack release]; + [audioArray release]; + [self setVideoContainerTag: nil]; + [super dealloc]; + return; +} + +- (void) setHBController: (id) aController + +{ + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + myController = aController; + + /* register that we are interested in changes made to the video container */ + [center addObserver: self selector: @selector(containerChanged:) name: HBContainerChangedNotification object: aController]; + [center addObserver: self selector: @selector(titleChanged:) name: HBTitleChangedNotification object: aController]; + return; +} + +#pragma mark - +#pragma mark HBController Support + +- (void) prepareAudioForQueueFileJob: (NSMutableDictionary *) aDict + +{ + unsigned int audioArrayCount = [self countOfAudioArray]; + for (unsigned int counter = 0; counter < audioArrayCount; counter++) { + HBAudio *anAudio = [self objectInAudioArrayAtIndex: counter]; + if (YES == [anAudio enabled]) { + NSString *prefix = [NSString stringWithFormat: @"Audio%d", counter + 1]; + NSNumber *sampleRateToUse = (0 == [[[anAudio sampleRate] objectForKey: keyAudioSamplerate] intValue]) ? + [[anAudio track] objectForKey: keyAudioInputSampleRate] : + [[anAudio sampleRate] objectForKey: keyAudioSamplerate]; + + [aDict setObject: [[anAudio track] objectForKey: keyAudioTrackIndex] forKey: [prefix stringByAppendingString: @"Track"]]; + [aDict setObject: [[anAudio track] objectForKey: keyAudioTrackName] forKey: [prefix stringByAppendingString: @"TrackDescription"]]; + [aDict setObject: [[anAudio codec] objectForKey: keyAudioCodecName] forKey: [prefix stringByAppendingString: @"Encoder"]]; + [aDict setObject: [[anAudio mixdown] objectForKey: keyAudioMixdownName] forKey: [prefix stringByAppendingString: @"Mixdown"]]; + [aDict setObject: [[anAudio sampleRate] objectForKey: keyAudioSampleRateName] forKey: [prefix stringByAppendingString: @"Samplerate"]]; + [aDict setObject: [[anAudio bitRate] objectForKey: keyAudioBitrateName] forKey: [prefix stringByAppendingString: @"Bitrate"]]; + [aDict setObject: [anAudio drc] forKey: [prefix stringByAppendingString: @"TrackDRCSlider"]]; + + prefix = [NSString stringWithFormat: @"JobAudio%d", counter + 1]; + [aDict setObject: [[anAudio codec] objectForKey: keyAudioCodec] forKey: [prefix stringByAppendingString: @"Encoder"]]; + [aDict setObject: [[anAudio mixdown] objectForKey: keyAudioMixdown] forKey: [prefix stringByAppendingString: @"Mixdown"]]; + [aDict setObject: sampleRateToUse forKey: [prefix stringByAppendingString: @"Samplerate"]]; + [aDict setObject: [[anAudio bitRate] objectForKey: keyAudioBitrate] forKey: [prefix stringByAppendingString: @"Bitrate"]]; + } + } + return; +} + +- (void) prepareAudioForJob: (hb_job_t *) aJob + +{ + unsigned int i; + + // First clear out any audio tracks in the job currently + int audiotrack_count = hb_list_count(aJob->list_audio); + for(i = 0; i < audiotrack_count; i++) + { + hb_audio_t *temp_audio = (hb_audio_t *) hb_list_item(aJob->list_audio, 0); + hb_list_rem(aJob->list_audio, temp_audio); + } + + // Now add audio tracks based on the current settings + unsigned int audioArrayCount = [self countOfAudioArray]; + for (i = 0; i < audioArrayCount; i++) { + HBAudio *anAudio = [self objectInAudioArrayAtIndex: i]; + if (YES == [anAudio enabled]) { + NSNumber *sampleRateToUse = (0 == [[[anAudio sampleRate] objectForKey: keyAudioSamplerate] intValue]) ? + [[anAudio track] objectForKey: keyAudioInputSampleRate] : + [[anAudio sampleRate] objectForKey: keyAudioSamplerate]; + + hb_audio_config_t *audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); + hb_audio_config_init(audio); + audio->in.track = [[[anAudio track] objectForKey: keyAudioTrackIndex] intValue] - 1; + /* We go ahead and assign values to our audio->out. */ + audio->out.track = audio->in.track; + audio->out.codec = [[[anAudio codec] objectForKey: keyAudioCodec] intValue]; + audio->out.mixdown = [[[anAudio mixdown] objectForKey: keyAudioMixdown] intValue]; + audio->out.bitrate = [[[anAudio bitRate] objectForKey: keyAudioBitrate] intValue]; + audio->out.samplerate = [sampleRateToUse intValue]; + audio->out.dynamic_range_compression = [[anAudio drc] floatValue]; + + hb_audio_add(aJob, audio); + free(audio); + } + } + return; +} + +- (void) prepareAudioForPreset: (NSMutableArray *) anArray + +{ + unsigned int audioArrayCount = [self countOfAudioArray]; + unsigned int i; + + for (i = 0; i < audioArrayCount; i++) { + HBAudio *anAudio = [self objectInAudioArrayAtIndex: i]; + if (YES == [anAudio enabled]) { + NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity: 7]; + [dict setObject: [[anAudio track] objectForKey: keyAudioTrackIndex] forKey: @"AudioTrack"]; + [dict setObject: [[anAudio track] objectForKey: keyAudioTrackName] forKey: @"AudioTrackDescription"]; + [dict setObject: [[anAudio codec] objectForKey: keyAudioCodecName] forKey: @"AudioEncoder"]; + [dict setObject: [[anAudio mixdown] objectForKey: keyAudioMixdownName] forKey: @"AudioMixdown"]; + [dict setObject: [[anAudio sampleRate] objectForKey: keyAudioSampleRateName] forKey: @"AudioSamplerate"]; + [dict setObject: [[anAudio bitRate] objectForKey: keyAudioBitrateName] forKey: @"AudioBitrate"]; + [dict setObject: [anAudio drc] forKey: @"AudioTrackDRCSlider"]; + [anArray addObject: dict]; + [dict release]; + } + } + return; +} + +- (void) addTracksFromQueue: (NSMutableDictionary *) aQueue + +{ + NSString *base; + int value; + int maximumNumberOfAllowedAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + + // Reinitialize the configured list of audio tracks + [audioArray release]; + audioArray = [[NSMutableArray alloc] init]; + + // The following is the pattern to follow, but with Audio%dTrack being the key to seek... + // Can we assume that there will be no skip in the data? + for (unsigned int i = 1; i <= maximumNumberOfAllowedAudioTracks; i++) { + base = [NSString stringWithFormat: @"Audio%d", i]; + value = [[aQueue objectForKey: [base stringByAppendingString: @"Track"]] intValue]; + if (0 < value) { + HBAudio *newAudio = [[HBAudio alloc] init]; + [newAudio setController: self]; + [self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]]; + [newAudio setVideoContainerTag: [self videoContainerTag]]; + [newAudio setTrackFromIndex: value]; + [newAudio setCodecFromName: [aQueue objectForKey: [base stringByAppendingString: @"Encoder"]]]; + [newAudio setMixdownFromName: [aQueue objectForKey: [base stringByAppendingString: @"Mixdown"]]]; + [newAudio setSampleRateFromName: [aQueue objectForKey: [base stringByAppendingString: @"Samplerate"]]]; + [newAudio setBitRateFromName: [aQueue objectForKey: [base stringByAppendingString: @"Bitrate"]]]; + [newAudio setDrc: [aQueue objectForKey: [base stringByAppendingString: @"TrackDRCSlider"]]]; + [newAudio release]; + } + } + + [self switchingTrackFromNone: nil]; // see if we need to add one to the list + + return; +} + +- (void) addTracksFromPreset: (NSMutableDictionary *) aPreset + +{ + id whatToUse = nil; + + // If we do not have an AudioList we need to make one from the data we have + if (nil == (whatToUse = [aPreset objectForKey: @"AudioList"])) { + int maximumNumberOfAllowedAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + NSString *base; + + whatToUse = [NSMutableArray array]; + for (unsigned int i = 1; i <= maximumNumberOfAllowedAudioTracks; i++) { + base = [NSString stringWithFormat: @"Audio%d", i]; + if (nil != [aPreset objectForKey: [base stringByAppendingString: @"Track"]]) { + [whatToUse addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [aPreset objectForKey: [base stringByAppendingString: @"Encoder"]], @"AudioEncoder", + [aPreset objectForKey: [base stringByAppendingString: @"Mixdown"]], @"AudioMixdown", + [aPreset objectForKey: [base stringByAppendingString: @"Samplerate"]], @"AudioSamplerate", + [aPreset objectForKey: [base stringByAppendingString: @"Bitrate"]], @"AudioBitrate", + [aPreset objectForKey: [base stringByAppendingString: @"TrackDRCSlider"]], @"AudioTrackDRCSlider", + nil]]; + } + } + } + + // Reinitialize the configured list of audio tracks + [audioArray release]; + audioArray = [[NSMutableArray alloc] init]; + + // Now to process the list + NSEnumerator *enumerator = [whatToUse objectEnumerator]; + NSDictionary *dict; + NSString *key; + + while (nil != (dict = [enumerator nextObject])) { + HBAudio *newAudio = [[HBAudio alloc] init]; + [newAudio setController: self]; + [self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]]; + [newAudio setVideoContainerTag: [self videoContainerTag]]; + [newAudio setTrackFromIndex: 1]; + key = [dict objectForKey: @"AudioEncoder"]; + if (0 == [[aPreset objectForKey: @"Type"] intValue] && + YES == [[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] && + YES == [key isEqualToString: @"AAC (faac)"] + ) { + key = @"AAC (CoreAudio)"; + } + // If our preset wants us to support a codec that the track does not support, instead + // of changing the codec we remove the audio instead. + if (YES == [newAudio setCodecFromName: key]) { + [newAudio setMixdownFromName: [dict objectForKey: @"AudioMixdown"]]; + [newAudio setSampleRateFromName: [dict objectForKey: @"AudioSamplerate"]]; + [newAudio setBitRateFromName: [dict objectForKey: @"AudioBitrate"]]; + [newAudio setDrc: [dict objectForKey: @"AudioTrackDRCSlider"]]; + } + else { + [self removeObjectFromAudioArrayAtIndex: [self countOfAudioArray] - 1]; + } + [newAudio release]; + } + + [self switchingTrackFromNone: nil]; // see if we need to add one to the list + + return; +} + +- (BOOL) anyCodecMatches: (int) aCodecValue + +{ + BOOL retval = NO; + unsigned int audioArrayCount = [self countOfAudioArray]; + for (unsigned int i = 0; i < audioArrayCount && NO == retval; i++) { + HBAudio *anAudio = [self objectInAudioArrayAtIndex: i]; + if (YES == [anAudio enabled] && aCodecValue == [[[anAudio codec] objectForKey: keyAudioCodec] intValue]) { + retval = YES; + } + } + return retval; +} + +- (void) addNewAudioTrack + +{ + HBAudio *newAudio = [[HBAudio alloc] init]; + [newAudio setController: self]; + [self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]]; + [newAudio setVideoContainerTag: [self videoContainerTag]]; + [newAudio setTrack: noneTrack]; + [newAudio setDrc: [NSNumber numberWithFloat: 0.0]]; + [newAudio release]; + return; +} + +#pragma mark - +#pragma mark Notification Handling + +- (void) settingTrackToNone: (HBAudio *) newNoneTrack + +{ + // If this is not the last track in the array we need to remove it. We then need to see if a new + // one needs to be added (in the case when we were at maximum count and this switching makes it + // so we are no longer at maximum. + unsigned int index = [audioArray indexOfObject: newNoneTrack]; + + if (NSNotFound != index && index < [self countOfAudioArray] - 1) { + [self removeObjectFromAudioArrayAtIndex: index]; + } + [self switchingTrackFromNone: nil]; // see if we need to add one to the list + return; +} + +- (void) switchingTrackFromNone: (HBAudio *) noLongerNoneTrack + +{ + int count = [self countOfAudioArray]; + BOOL needToAdd = NO; + int maximumNumberOfAllowedAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + + // If there is no last track that is None and we are less than our maximum number of permitted tracks, we add one. + if (count < maximumNumberOfAllowedAudioTracks) { + if (0 < count) { + HBAudio *lastAudio = [self objectInAudioArrayAtIndex: count - 1]; + if (YES == [lastAudio enabled]) { + needToAdd = YES; + } + } + else { + needToAdd = YES; + } + } + + if (YES == needToAdd) { + [self addNewAudioTrack]; + } + return; +} + +// This gets called whenever the video container changes. +- (void) containerChanged: (NSNotification *) aNotification + +{ + NSDictionary *notDict = [aNotification userInfo]; + + [self setVideoContainerTag: [notDict objectForKey: keyContainerTag]]; + + // Update each of the instances because this value influences possible settings. + NSEnumerator *enumerator = [audioArray objectEnumerator]; + HBAudio *audioObject; + + while (nil != (audioObject = [enumerator nextObject])) { + [audioObject setVideoContainerTag: [self videoContainerTag]]; + } + return; +} + +- (void) titleChanged: (NSNotification *) aNotification + +{ + NSDictionary *notDict = [aNotification userInfo]; + NSData *theData = [notDict objectForKey: keyTitleTag]; + hb_title_t *title = NULL; + + [theData getBytes: &title length: sizeof(title)]; + if (title) { + hb_audio_config_t *audio; + hb_list_t *list = title->list_audio; + int i, count = hb_list_count(list); + + // Reinitialize the master list of available audio tracks from this title + [masterTrackArray release]; + masterTrackArray = [[NSMutableArray alloc] init]; + [noneTrack release]; + noneTrack = [[NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt: 0], keyAudioTrackIndex, + NSLocalizedString(@"None", @"None"), keyAudioTrackName, + [NSNumber numberWithInt: 0], keyAudioInputCodec, + nil] retain]; + [masterTrackArray addObject: noneTrack]; + for (i = 0; i < count; i++) { + audio = (hb_audio_config_t *) hb_list_audio_config_item(list, i); + [masterTrackArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt: i + 1], keyAudioTrackIndex, + [NSString stringWithFormat: @"%d: %s", i, audio->lang.description], keyAudioTrackName, + [NSNumber numberWithInt: audio->in.bitrate / 1000], keyAudioInputBitrate, + [NSNumber numberWithInt: audio->in.samplerate], keyAudioInputSampleRate, + [NSNumber numberWithInt: audio->in.codec], keyAudioInputCodec, + [NSNumber numberWithInt: audio->in.channel_layout], keyAudioInputChannelLayout, + nil]]; + } + } + + // Reinitialize the configured list of audio tracks + [audioArray release]; + audioArray = [[NSMutableArray alloc] init]; + + return; +} + +#pragma mark - +#pragma mark KVC + +- (unsigned int) countOfAudioArray + +{ + return [audioArray count]; +} + +- (HBAudio *) objectInAudioArrayAtIndex: (unsigned int) index + +{ + return [audioArray objectAtIndex: index]; +} + +- (void) insertObject: (HBAudio *) audioObject inAudioArrayAtIndex: (unsigned int) index; + +{ + [audioArray insertObject: audioObject atIndex: index]; + return; +} + +- (void) removeObjectFromAudioArrayAtIndex: (unsigned int) index + +{ + [audioArray removeObjectAtIndex: index]; + return; +} + +@end diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm index 09719e96..8e9b5926 100644 --- a/macosx/HBQueueController.mm +++ b/macosx/HBQueueController.mm @@ -898,22 +898,14 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; } /* check to see how many audio track lines to allow for */ - if ([[queueItemToCheck objectForKey:@"Audio1Track"] intValue] > 0) - { - itemHeightForDisplay += rowHeightNonTitle; - } - if ([[queueItemToCheck objectForKey:@"Audio2Track"] intValue] > 0) - { - itemHeightForDisplay += rowHeightNonTitle; - } - if ([[queueItemToCheck objectForKey:@"Audio3Track"] intValue] > 0) - { - itemHeightForDisplay += rowHeightNonTitle; - } - if ([[queueItemToCheck objectForKey:@"Audio4Track"] intValue] > 0) - { - itemHeightForDisplay += rowHeightNonTitle; - } + unsigned int ourMaximumNumberOfAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + int actualCountOfAudioTracks = 0; + for (unsigned int i = 1; i <= ourMaximumNumberOfAudioTracks; i++) { + if (0 < [[queueItemToCheck objectForKey: [NSString stringWithFormat: @"Audio%dTrack", i]] intValue]) { + actualCountOfAudioTracks++; + } + } + itemHeightForDisplay += (actualCountOfAudioTracks * rowHeightNonTitle); /* add in subtitle lines for each subtitle in the SubtitleList array */ itemHeightForDisplay += rowHeightNonTitle * [[queueItemToCheck objectForKey:@"SubtitleList"] count]; @@ -1060,91 +1052,30 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [finalString appendString:[NSString stringWithFormat:@"%@\n", [item objectForKey:@"PresetName"]] withAttributes:detailAttr]; /* Third Line (Format Summary) */ - NSString * audioCodecSummary = @""; + NSString * audioCodecSummary = @""; // This seems to be set by the last track we have available... /* Lets also get our audio track detail since we are going through the logic for use later */ - NSString * audioDetail1 = @""; - NSString * audioDetail2 = @""; - NSString * audioDetail3 = @""; - NSString * audioDetail4 = @""; - if ([[item objectForKey:@"Audio1Track"] intValue] > 0) - { - audioCodecSummary = [NSString stringWithFormat:@"%@", [item objectForKey:@"Audio1Encoder"]]; - audioDetail1 = [NSString stringWithFormat:@"%@ Encoder: %@ Mixdown: %@ SampleRate: %@(khz) Bitrate: %@(kbps)", - [item objectForKey:@"Audio1TrackDescription"] , - [item objectForKey:@"Audio1Encoder"], - [item objectForKey:@"Audio1Mixdown"] , - [item objectForKey:@"Audio1Samplerate"], - [item objectForKey:@"Audio1Bitrate"]]; - - if ([[item objectForKey:@"Audio1TrackDRCSlider"] floatValue] > 0.00) - { - audioDetail1 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail1,[item objectForKey:@"Audio1TrackDRCSlider"]]; - } - else - { - audioDetail1 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail1]; - } - } - - if ([[item objectForKey:@"Audio2Track"] intValue] > 0) - { - audioCodecSummary = [NSString stringWithFormat:@"%@, %@",audioCodecSummary ,[item objectForKey:@"Audio2Encoder"]]; - audioDetail2 = [NSString stringWithFormat:@"%@ Encoder: %@ Mixdown: %@ SampleRate: %@(khz) Bitrate: %@(kbps)", - [item objectForKey:@"Audio2TrackDescription"] , - [item objectForKey:@"Audio2Encoder"], - [item objectForKey:@"Audio2Mixdown"] , - [item objectForKey:@"Audio2Samplerate"], - [item objectForKey:@"Audio2Bitrate"]]; - - if ([[item objectForKey:@"Audio2TrackDRCSlider"] floatValue] > 0.00) - { - audioDetail2 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail2,[item objectForKey:@"Audio2TrackDRCSlider"]]; - } - else - { - audioDetail2 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail2]; - } - } - - if ([[item objectForKey:@"Audio3Track"] intValue] > 0) - { - audioCodecSummary = [NSString stringWithFormat:@"%@, %@",audioCodecSummary ,[item objectForKey:@"Audio3Encoder"]]; - audioDetail3 = [NSString stringWithFormat:@"%@ Encoder: %@ Mixdown: %@ SampleRate: %@(khz) Bitrate: %@(kbps)", - [item objectForKey:@"Audio3TrackDescription"] , - [item objectForKey:@"Audio3Encoder"], - [item objectForKey:@"Audio3Mixdown"] , - [item objectForKey:@"Audio3Samplerate"], - [item objectForKey:@"Audio3Bitrate"]]; - - if ([[item objectForKey:@"Audio3TrackDRCSlider"] floatValue] > 0.00) - { - audioDetail3 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail3,[item objectForKey:@"Audio3TrackDRCSlider"]]; - } - else - { - audioDetail3 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail3]; - } - } + unsigned int ourMaximumNumberOfAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + NSMutableArray *audioDetails = [NSMutableArray arrayWithCapacity: ourMaximumNumberOfAudioTracks]; + NSString *base; + NSString *detailString; + NSNumber *drc; + for (unsigned int i = 1; i <= ourMaximumNumberOfAudioTracks; i++) { + base = [NSString stringWithFormat: @"Audio%d", i]; + if (0 < [[item objectForKey: [base stringByAppendingString: @"Track"]] intValue]) { + audioCodecSummary = [NSString stringWithFormat: @"%@", [item objectForKey: [base stringByAppendingString: @"Encoder"]]]; + drc = [item objectForKey: [base stringByAppendingString: @"TrackDRCSlider"]]; + detailString = [NSString stringWithFormat: @"%@ Encoder: %@ Mixdown: %@ SampleRate: %@(khz) Bitrate: %@(kbps), DRC: %@", + [item objectForKey: [base stringByAppendingString: @"TrackDescription"]], + [item objectForKey: [base stringByAppendingString: @"Encoder"]], + [item objectForKey: [base stringByAppendingString: @"Mixdown"]], + [item objectForKey: [base stringByAppendingString: @"Samplerate"]], + [item objectForKey: [base stringByAppendingString: @"Bitrate"]], + (0.0 < [drc floatValue]) ? drc : @"Off" + ]; + [audioDetails addObject: detailString]; + } + } - if ([[item objectForKey:@"Audio4Track"] intValue] > 0) - { - audioCodecSummary = [NSString stringWithFormat:@"%@, %@",audioCodecSummary ,[item objectForKey:@"Audio3Encoder"]]; - audioDetail4 = [NSString stringWithFormat:@"%@ Encoder: %@ Mixdown: %@ SampleRate: %@(khz) Bitrate: %@(kbps)", - [item objectForKey:@"Audio4TrackDescription"] , - [item objectForKey:@"Audio4Encoder"], - [item objectForKey:@"Audio4Mixdown"] , - [item objectForKey:@"Audio4Samplerate"], - [item objectForKey:@"Audio4Bitrate"]]; - - if ([[item objectForKey:@"Audio4TrackDRCSlider"] floatValue] > 0.00) - { - audioDetail4 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail4,[item objectForKey:@"Audio4TrackDRCSlider"]]; - } - else - { - audioDetail4 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail4]; - } - } NSString * jobFormatInfo; if ([[item objectForKey:@"ChapterMarkers"] intValue] == 1) @@ -1362,33 +1293,18 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; /* Seventh Line Audio Details*/ - if ([audioDetail1 length] != 0) - { - [finalString appendString: @"Audio Track 1: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail1 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; - } - - if ([audioDetail2 length] != 0) - { - [finalString appendString: @"Audio Track 2: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail2 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; - } - - if ([audioDetail3 length] != 0) - { - [finalString appendString: @"Audio Track 3: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail3 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; - } - - if ([audioDetail4 length] != 0) - { - [finalString appendString: @"Audio Track 4: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail4 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; - } + NSEnumerator *audioDetailEnumerator = [audioDetails objectEnumerator]; + NSString *anAudioDetail; + int audioDetailCount = 0; + while (nil != (anAudioDetail = [audioDetailEnumerator nextObject])) { + audioDetailCount++; + if (0 < [anAudioDetail length]) { + [finalString appendString: [NSString stringWithFormat: @"Audio Track %d ", audioDetailCount] withAttributes: detailBoldAttr]; + [finalString appendString: anAudioDetail withAttributes: detailAttr]; + [finalString appendString: @"\n" withAttributes: detailAttr]; + } + } + /* Eighth Line Subtitle Details */ int i = 0; diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index a163f523..c8513523 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -67,6 +67,10 @@ A906A0520F7A7B210007A827 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A906A0500F7A7B210007A827 /* AudioToolbox.framework */; }; A9AC41DF0C918DB500DDF9B8 /* HBAdvancedController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9AC41DD0C918DB500DDF9B8 /* HBAdvancedController.m */; }; A9AC41E00C918DB500DDF9B8 /* HBAdvancedController.h in Headers */ = {isa = PBXBuildFile; fileRef = A9AC41DE0C918DB500DDF9B8 /* HBAdvancedController.h */; }; + D234BCBD1240E82800BE2E98 /* HBAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = D234BCB91240E82800BE2E98 /* HBAudio.h */; }; + D234BCBE1240E82800BE2E98 /* HBAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = D234BCBA1240E82800BE2E98 /* HBAudio.m */; }; + D234BCBF1240E82800BE2E98 /* HBAudioController.h in Headers */ = {isa = PBXBuildFile; fileRef = D234BCBB1240E82800BE2E98 /* HBAudioController.h */; }; + D234BCC01240E82800BE2E98 /* HBAudioController.m in Sources */ = {isa = PBXBuildFile; fileRef = D234BCBC1240E82800BE2E98 /* HBAudioController.m */; }; D289A9F30DBBE7AC00CE614B /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D289A9F20DBBE7AC00CE614B /* CoreServices.framework */; }; D289AAC40DBBF3F100CE614B /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DEB2024052B055F00C39CA9 /* IOKit.framework */; }; E3003C7F0C88505D0072F2A8 /* DeleteHighlightPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = E3003C7E0C88505D0072F2A8 /* DeleteHighlightPressed.png */; }; @@ -193,6 +197,10 @@ A906A0500F7A7B210007A827 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; A9AC41DD0C918DB500DDF9B8 /* HBAdvancedController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = HBAdvancedController.m; sourceTree = ""; }; A9AC41DE0C918DB500DDF9B8 /* HBAdvancedController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HBAdvancedController.h; sourceTree = ""; }; + D234BCB91240E82800BE2E98 /* HBAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAudio.h; sourceTree = ""; }; + D234BCBA1240E82800BE2E98 /* HBAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBAudio.m; sourceTree = ""; }; + D234BCBB1240E82800BE2E98 /* HBAudioController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAudioController.h; sourceTree = ""; }; + D234BCBC1240E82800BE2E98 /* HBAudioController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBAudioController.m; sourceTree = ""; }; D289A9F20DBBE7AC00CE614B /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; E3003C7E0C88505D0072F2A8 /* DeleteHighlightPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeleteHighlightPressed.png; sourceTree = ""; }; E3003CB40C8852B70072F2A8 /* DeletePressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeletePressed.png; sourceTree = ""; }; @@ -341,6 +349,10 @@ 526FBC930B4CAA260064E04C /* HandBrake Sources */ = { isa = PBXGroup; children = ( + D234BCB91240E82800BE2E98 /* HBAudio.h */, + D234BCBA1240E82800BE2E98 /* HBAudio.m */, + D234BCBB1240E82800BE2E98 /* HBAudioController.h */, + D234BCBC1240E82800BE2E98 /* HBAudioController.m */, A2D18AA50FD81C50003C997B /* HBSubtitles.h */, A2D18AA60FD81C50003C997B /* HBSubtitles.m */, 4DF3C8CB052889CD00A80101 /* Controller.h */, @@ -431,6 +443,8 @@ A2BEA5FB0F2A1ED1001CE7A1 /* PictureController.h in Headers */, 278070240F5C261300699207 /* ChapterTitles.h in Headers */, A2D18AA70FD81C50003C997B /* HBSubtitles.h in Headers */, + D234BCBD1240E82800BE2E98 /* HBAudio.h in Headers */, + D234BCBF1240E82800BE2E98 /* HBAudioController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -622,6 +636,8 @@ A22C85ED0D05D35100C10E36 /* HBPresets.m in Sources */, A2BEA5FC0F2A1ED1001CE7A1 /* PictureController.m in Sources */, A2D18AA80FD81C50003C997B /* HBSubtitles.m in Sources */, + D234BCBE1240E82800BE2E98 /* HBAudio.m in Sources */, + D234BCC01240E82800BE2E98 /* HBAudioController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; -- 2.11.0