- (void) enableUI: (bool) b
{
NSControl * controls[] =
- { fSrcTitleField, fSrcTitlePopUp,
+ { fSrcTitleField, fSrcTitlePopUp,
fSrcChapterField, fSrcChapterStartPopUp, fSrcChapterToField,
fSrcChapterEndPopUp, fSrcDuration1Field, fSrcDuration2Field,
fDstFormatField, fDstFormatPopUp, fDstFile1Field, fDstFile2Field,
- fDstBrowseButton, fVidRateField, fVidRatePopUp,
- fVidEncoderField, fVidEncoderPopUp, fVidQualityField,
- fVidQualityMatrix, fVidGrayscaleCheck, fSubField, fSubPopUp,
+ 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,
fAudTrack1BitratePopUp, fAudTrack2BitratePopUp, fAudTrack3BitratePopUp, fAudTrack4BitratePopUp,
fAudDrcLabel, fAudTrack1DrcSlider, fAudTrack1DrcField, fAudTrack2DrcSlider,
fAudTrack2DrcField, fAudTrack3DrcSlider, fAudTrack3DrcField, fAudTrack4DrcSlider,fAudTrack4DrcField,
- fQueueStatus,fPicSettingARkeep, fPicSettingDeinterlace,fPicLabelSettings,fPicLabelSrc,
- fPicLabelOutp,fPicSettingsSrc,fPicSettingsOutp,fPicSettingsAnamorphic,
- fPicLabelAr,fPicLabelDeinterlace,fPicSettingPAR,fPicLabelAnamorphic,fPresetsAdd,fPresetsDelete,
- fCreateChapterMarkers,fVidTurboPassCheck,fDstMp4LargeFileCheck,fPicLabelAutoCrop,
- fPicSettingAutoCrop,fPicSettingDetelecine,fPicLabelDetelecine,fPicLabelDenoise,fPicSettingDenoise,
- fSubForcedCheck,fPicSettingDeblock,fPicLabelDeblock,fPicLabelDecomb,fPicSettingDecomb,fPresetsOutlineView,
- fAudDrcLabel,fDstMp4HttpOptFileCheck,fDstMp4iPodFileCheck};
-
+ fQueueStatus,fPresetsAdd,fPresetsDelete,
+ fCreateChapterMarkers,fVidTurboPassCheck,fDstMp4LargeFileCheck,fSubForcedCheck,fPresetsOutlineView,
+ fAudDrcLabel,fDstMp4HttpOptFileCheck,fDstMp4iPodFileCheck};
+
for( unsigned i = 0;
- i < sizeof( controls ) / sizeof( NSControl * ); i++ )
+ i < sizeof( controls ) / sizeof( NSControl * ); i++ )
{
if( [[controls[i] className] isEqualToString: @"NSTextField"] )
{
if( ![tf isBezeled] )
{
[tf setTextColor: b ? [NSColor controlTextColor] :
- [NSColor disabledControlTextColor]];
+ [NSColor disabledControlTextColor]];
continue;
}
}
[controls[i] setEnabled: b];
-
+
}
-
+
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];
-
+
} else {
-
+
[fPresetsOutlineView setEnabled: NO];
-
+
}
-
+
[self videoMatrixChanged:nil];
[fAdvancedOptions enableUI:b];
}
SuccessfulScan = YES;
[self enableUI: YES];
- /* if its the initial successful scan after awakeFromNib */
- if (currentSuccessfulScanCount == 1)
- {
- [self selectDefaultPreset:nil];
- /* initially set deinterlace to 0, will be overridden reset by the default preset anyway */
- //[fPictureController setDeinterlace:0];
-
- /* lets set Denoise to index 0 or "None" since this is the first scan */
- //[fPictureController setDenoise:0];
-
- [fPictureFilterController setInitialPictureFilters];
- }
+ /* if its the initial successful scan after awakeFromNib */
+ if (currentSuccessfulScanCount == 1)
+ {
+ [self selectDefaultPreset:nil];
+
+ [fPictureFilterController setInitialPictureFilters];
+
+ // Open preview window now if it was visible when HB was closed
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"PreviewWindowIsOpen"])
+ [self showPreviewWindow:nil];
+
+ // Open picture sizing window now if it was visible when HB was closed
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"PictureSizeWindowIsOpen"])
+ [self showPicturePanel:nil];
+
+ // Open filters window now if it was visible when HB was closed
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"PictureFiltersWindowIsOpen"])
+ [self showFiltersPanel:nil];
+ }
}
/* Framerate */
[queueFileJob setObject:[fVidRatePopUp titleOfSelectedItem] forKey:@"VideoFramerate"];
- /* GrayScale */
- [queueFileJob setObject:[NSNumber numberWithInt:[fVidGrayscaleCheck state]] forKey:@"VideoGrayScale"];
/* 2 Pass Encoding */
[queueFileJob setObject:[NSNumber numberWithInt:[fVidTwoPassCheck state]] forKey:@"VideoTwoPass"];
/* Turbo 2 pass Encoding fVidTurboPassCheck*/
[queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->keep_ratio] forKey:@"PictureKeepRatio"];
[queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.mode] forKey:@"PicturePAR"];
NSString * pictureSummary;
- pictureSummary = [NSString stringWithFormat:@"Source: %@ Output: %@ Anamorphic: %@",
- [fPicSettingsSrc stringValue],
- [fPicSettingsOutp stringValue],
- [fPicSettingsAnamorphic stringValue]];
+ pictureSummary = [fPictureSizeField stringValue];
[queueFileJob setObject:pictureSummary forKey:@"PictureSizingSummary"];
/* Set crop settings here */
[queueFileJob setObject:[NSNumber numberWithInt:[fPictureController autoCrop]] forKey:@"PictureAutoCrop"];
[queueFileJob setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"];
/* Picture Filters */
+ [queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController detelecine]] forKey:@"PictureDetelecine"];
+ [queueFileJob setObject:[fPictureFilterController detelecineCustomString] forKey:@"PictureDetelecineCustom"];
+
+ [queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController useDecomb]] forKey:@"PictureDecombDeinterlace"];
+ [queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController decomb]] forKey:@"PictureDecomb"];
+ [queueFileJob setObject:[fPictureFilterController decombCustomString] forKey:@"PictureDecombCustom"];
+
[queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController deinterlace]] forKey:@"PictureDeinterlace"];
- [queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController detelecine]] forKey:@"PictureDetelecine"];
+ [queueFileJob setObject:[fPictureFilterController deinterlaceCustomString] forKey:@"PictureDeinterlaceCustom"];
+
[queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController denoise]] forKey:@"PictureDenoise"];
- [queueFileJob setObject:[NSString stringWithFormat:@"%d",[fPictureFilterController deblock]] forKey:@"PictureDeblock"];
- [queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController decomb]] forKey:@"PictureDecomb"];
+ [queueFileJob setObject:[fPictureFilterController denoiseCustomString] forKey:@"PictureDenoiseCustom"];
+
+ [queueFileJob setObject:[NSString stringWithFormat:@"%d",[fPictureFilterController deblock]] forKey:@"PictureDeblock"];
+
+ [queueFileJob setObject:[NSNumber numberWithInt:[fPictureFilterController grayscale]] forKey:@"VideoGrayScale"];
/*Audio*/
if ([fAudLang1PopUp indexOfSelectedItem] > 0)
[queueFileJob setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"];
/* Picture Filters */
- [queueFileJob setObject:[fPicSettingDecomb stringValue] forKey:@"JobPictureDecomb"];
+ //[queueFileJob setObject:[fPicSettingDecomb stringValue] forKey:@"JobPictureDecomb"];
/*Audio*/
if ([fAudLang1PopUp indexOfSelectedItem] > 0)
[fVidRatePopUp selectItemWithTitle:[queueToApply objectForKey:@"VideoFramerate"]];
}
- /* GrayScale */
- [fVidGrayscaleCheck setState:[[queueToApply objectForKey:@"VideoGrayScale"] intValue]];
-
/* 2 Pass Encoding */
[fVidTwoPassCheck setState:[[queueToApply objectForKey:@"VideoTwoPass"] intValue]];
[self twoPassCheckboxChanged:nil];
[fPictureFilterController setDeblock:[[queueToApply objectForKey:@"PictureDeblock"] intValue]];
/* Decomb */
[fPictureFilterController setDecomb:[[queueToApply objectForKey:@"PictureDecomb"] intValue]];
+ /* Grayscale */
+ [fPictureFilterController setGrayscale:[[queueToApply objectForKey:@"VideoGrayScale"] intValue]];
[self calculatePictureSizing:nil];
job->mux = [[fDstFormatPopUp selectedItem] tag];
job->vcodec = [[fVidEncoderPopUp selectedItem] tag];
-
- /* If mpeg-4, then set mpeg-4 specific options like chapters and > 4gb file sizes */
- if( [fDstFormatPopUp indexOfSelectedItem] == 0 )
- {
- /* We set the largeFileSize (64 bit formatting) variable here to allow for > 4gb files based on the format being
- mpeg4 and the checkbox being checked
- *Note: this will break compatibility with some target devices like iPod, etc.!!!!*/
- if( [fDstMp4LargeFileCheck state] == NSOnState )
- {
- job->largeFileSize = 1;
- }
- else
- {
- job->largeFileSize = 0;
- }
- /* We set http optimized mp4 here */
- if( [fDstMp4HttpOptFileCheck state] == NSOnState && [fDstMp4HttpOptFileCheck isEnabled] )
- {
- job->mp4_optimize = 1;
- }
- else
- {
- job->mp4_optimize = 0;
- }
- }
- if( [fDstFormatPopUp indexOfSelectedItem] == 0 || [fDstFormatPopUp indexOfSelectedItem] == 1 )
- {
- /* We set the chapter marker extraction here based on the format being
- mpeg4 or mkv and the checkbox being checked */
- if ([fCreateChapterMarkers state] == NSOnState)
- {
- job->chapter_markers = 1;
- }
- else
- {
- job->chapter_markers = 0;
- }
- }
-
- if( job->vcodec & HB_VCODEC_X264 )
+ job->chapter_markers = 0;
+
+ if( job->vcodec & HB_VCODEC_X264 )
{
- if ([fDstMp4iPodFileCheck state] == NSOnState)
- {
- job->ipod_atom = 1;
- }
- else
- {
- job->ipod_atom = 0;
- }
-
/* Set this flag to switch from Constant Quantizer(default) to Constant Rate Factor Thanks jbrjake
Currently only used with Constant Quality setting*/
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"DefaultCrf"] > 0 && [fVidQualityMatrix selectedRow] == 2)
break;
}
- job->grayscale = ( [fVidGrayscaleCheck state] == NSOnState );
-
/* Subtitle settings */
job->subtitle = [fSubPopUp indexOfSelectedItem] - 2;
- /* Filters */
+ /* Filters */
+
+ /* Though Grayscale is not really a filter, per se
+ * we put it here since its in the filters panel
+ */
+
+ if ([fPictureFilterController grayscale])
+ {
+ job->grayscale = 1;
+ }
+ else
+ {
+ job->grayscale = 0;
+ }
+
+ /* Initialize the filters list */
job->filters = hb_list_init();
/* Now lets call the filters if applicable.
*/
/* Detelecine */
- if ([fPictureFilterController detelecine])
+ if ([fPictureFilterController detelecine] == 1)
{
hb_list_add( job->filters, &hb_filter_detelecine );
}
-
- /* Decomb */
- if ([fPictureFilterController decomb] > 0)
- {
- /* Run old deinterlacer fd by default */
- //hb_filter_decomb.settings = (char *) [[fPicSettingDecomb stringValue] UTF8String];
- hb_list_add( job->filters, &hb_filter_decomb );
- }
-
-
- /* Deinterlace */
- if ([fPictureFilterController deinterlace] == 1)
+ if ([fPictureFilterController detelecine] == 2)
{
- /* Run old deinterlacer fd by default */
- hb_filter_deinterlace.settings = "-1";
- hb_list_add( job->filters, &hb_filter_deinterlace );
+ /* use a custom detelecine string */
+ hb_filter_detelecine.settings = (char *) [[fPictureFilterController detelecineCustomString] UTF8String];
+ hb_list_add( job->filters, &hb_filter_detelecine );
}
- else if ([fPictureFilterController deinterlace] == 2)
+ if ([fPictureFilterController useDecomb] == 1)
{
- /* Yadif mode 0 (without spatial deinterlacing.) */
- hb_filter_deinterlace.settings = "2";
- hb_list_add( job->filters, &hb_filter_deinterlace );
+ /* Decomb */
+ if ([fPictureFilterController decomb] == 1)
+ {
+ /* Run old deinterlacer fd by default */
+ //hb_filter_decomb.settings = (char *) [[fPicSettingDecomb stringValue] UTF8String];
+ hb_list_add( job->filters, &hb_filter_decomb );
+ }
+ /* we add the custom string if present */
+ if ([fPictureFilterController decomb] == 2)
+ {
+ /* use a custom decomb string */
+ hb_filter_decomb.settings = (char *) [[fPictureFilterController decombCustomString] UTF8String];
+ hb_list_add( job->filters, &hb_filter_decomb );
+ }
}
- else if ([fPictureFilterController deinterlace] == 3)
+ else
{
- /* Yadif (with spatial deinterlacing) */
- hb_filter_deinterlace.settings = "0";
- hb_list_add( job->filters, &hb_filter_deinterlace );
- }
-
+
+ /* Deinterlace */
+ if ([fPictureFilterController deinterlace] == 1)
+ {
+ /* Run old deinterlacer fd by default */
+ hb_filter_deinterlace.settings = "-1";
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+ else if ([fPictureFilterController deinterlace] == 2)
+ {
+ /* Yadif mode 0 (without spatial deinterlacing.) */
+ hb_filter_deinterlace.settings = "2";
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+ else if ([fPictureFilterController deinterlace] == 3)
+ {
+ /* Yadif (with spatial deinterlacing) */
+ hb_filter_deinterlace.settings = "0";
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+ else if ([fPictureFilterController deinterlace] == 4)
+ {
+ /* we add the custom string if present */
+ hb_filter_deinterlace.settings = (char *) [[fPictureFilterController deinterlaceCustomString] UTF8String];
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+ }
+
/* Denoise */
if ([fPictureFilterController denoise] == 1) // Weak in popup
{
hb_filter_denoise.settings = "7:7:5:5";
hb_list_add( job->filters, &hb_filter_denoise );
}
+ else if ([fPictureFilterController denoise] == 4) // custom in popup
+ {
+ /* we add the custom string if present */
+ hb_filter_denoise.settings = (char *) [[fPictureFilterController denoiseCustomString] UTF8String];
+ hb_list_add( job->filters, &hb_filter_denoise );
+ }
/* Deblock (uses pp7 default) */
/* NOTE: even though there is a valid deblock setting of 0 for the filter, for
/* Detelecine */
if ([[queueToApply objectForKey:@"PictureDetelecine"] intValue] == 1)
{
+ //if ([queueToApply objectForKey:@"PictureDetelecineCustom"])
hb_list_add( job->filters, &hb_filter_detelecine );
}
-
- /* Decomb */
- if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 1)
+ if ([[queueToApply objectForKey:@"PictureDetelecine"] intValue] == 2)
{
- /* Run old deinterlacer fd by default */
- //hb_filter_decomb.settings = (char *) [[queueToApply objectForKey:@"JobPictureDecomb"] UTF8String];
- hb_list_add( job->filters, &hb_filter_decomb );
+ /* use a custom detelecine string */
+ hb_filter_detelecine.settings = (char *) [[queueToApply objectForKey:@"PictureDetelecineCustom"] UTF8String];
+ hb_list_add( job->filters, &hb_filter_detelecine );
}
- /* Deinterlace */
- if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 1)
+ if ([[queueToApply objectForKey:@"PictureDecombDeinterlace"] intValue] == 1)
{
- /* Run old deinterlacer fd by default */
- hb_filter_deinterlace.settings = "-1";
- hb_list_add( job->filters, &hb_filter_deinterlace );
- }
- else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 2)
- {
- /* Yadif mode 0 (without spatial deinterlacing.) */
- hb_filter_deinterlace.settings = "2";
- hb_list_add( job->filters, &hb_filter_deinterlace );
+ /* Decomb */
+ if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 1)
+ {
+ /* Run old deinterlacer fd by default */
+ hb_list_add( job->filters, &hb_filter_decomb );
+ }
+ /* we add the custom string if present */
+ if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 2)
+ {
+ /* use a custom decomb string */
+ hb_filter_decomb.settings = (char *) [[queueToApply objectForKey:@"PictureDecombCustom"] UTF8String];
+ hb_list_add( job->filters, &hb_filter_decomb );
+ }
+
}
- else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 3)
+ else
{
- /* Yadif (with spatial deinterlacing) */
- hb_filter_deinterlace.settings = "0";
- hb_list_add( job->filters, &hb_filter_deinterlace );
+
+ /* Deinterlace */
+ if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 1)
+ {
+ /* Run old deinterlacer fd by default */
+ hb_filter_deinterlace.settings = "-1";
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+ else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 2)
+ {
+ /* Yadif mode 0 (without spatial deinterlacing.) */
+ hb_filter_deinterlace.settings = "2";
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+ else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 3)
+ {
+ /* Yadif (with spatial deinterlacing) */
+ hb_filter_deinterlace.settings = "0";
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+ else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 4)
+ {
+ /* we add the custom string if present */
+ hb_filter_deinterlace.settings = (char *) [[queueToApply objectForKey:@"PictureDeinterlaceCustom"] UTF8String];
+ hb_list_add( job->filters, &hb_filter_deinterlace );
+ }
+
+
}
-
/* Denoise */
if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] == 1) // Weak in popup
{
hb_filter_denoise.settings = "7:7:5:5";
hb_list_add( job->filters, &hb_filter_denoise );
}
+ else if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] == 4) // Custom in popup
+ {
+ /* we add the custom string if present */
+ hb_filter_denoise.settings = (char *) [[queueToApply objectForKey:@"PictureDenoiseCustom"] UTF8String];
+ hb_list_add( job->filters, &hb_filter_denoise );
+ }
/* Deblock (uses pp7 default) */
/* NOTE: even though there is a valid deblock setting of 0 for the filter, for
hb_job_t * job = title->job;
fTitle = title;
- /*Set Source Size Field Here */
- [fPicSettingsSrc setStringValue: [NSString stringWithFormat: @"%d x %d", fTitle->width, fTitle->height]];
-
- /* Set Auto Crop to on upon selecting a new title */
+ /* Set Auto Crop to on upon selecting a new title */
[fPictureController setAutoCrop:YES];
/* We get the originial output picture width and height and put them
/* Get and Display Current Pic Settings in main window */
- (IBAction) calculatePictureSizing: (id) sender
{
- [fPicSettingsOutp setStringValue: [NSString stringWithFormat:@"%d x %d", fTitle->job->width, fTitle->job->height]];
-
- if (fTitle->job->anamorphic.mode == 1)
- {
- int titlewidth = fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3];
- int arpwidth = fTitle->job->anamorphic.par_width;
- int arpheight = fTitle->job->anamorphic.par_height;
- int displayparwidth = titlewidth * arpwidth / arpheight;
- int displayparheight = fTitle->height-fTitle->job->crop[0]-fTitle->job->crop[1];
- [fPicSettingsOutp setStringValue: [NSString stringWithFormat:@"%d x %d", titlewidth, displayparheight]];
- [fPicSettingsAnamorphic setStringValue: [NSString stringWithFormat:@"%d x %d Strict", displayparwidth, displayparheight]];
- fTitle->job->keep_ratio = 0;
- }
- else if (fTitle->job->anamorphic.mode == 2)
- {
- hb_job_t * job = fTitle->job;
- int output_width, output_height, output_par_width, output_par_height;
- hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height);
- int display_width;
- display_width = output_width * output_par_width / output_par_height;
-
- [fPicSettingsOutp setStringValue: [NSString stringWithFormat:@"%d x %d", output_width, output_height]];
- [fPicSettingsAnamorphic setStringValue: [NSString stringWithFormat:@"%d x %d Loose", display_width, output_height]];
-
- fTitle->job->keep_ratio = 0;
- }
- else
- {
- [fPicSettingsAnamorphic setStringValue:@"Off"];
- }
-
- /* Set ON/Off values for the deinterlace/keep aspect ratio according to boolean */
- if (fTitle->job->keep_ratio > 0)
- {
- [fPicSettingARkeep setStringValue: @"On"];
- }
- else
- {
- [fPicSettingARkeep setStringValue: @"Off"];
- }
-
if (fTitle->job->anamorphic.mode > 0)
{
- [fPicSettingPAR setStringValue: @""];
- }
- else
- {
- [fPicSettingPAR setStringValue: @"Off"];
+ fTitle->job->keep_ratio = 0;
}
-
+
+ [fPictureSizeField setStringValue: [NSString stringWithFormat:@"Picture Size: %@", [fPictureController getPictureSizeInfoString]]];
+
+ NSString *picCropping;
/* Set the display field for crop as per boolean */
if (![fPictureController autoCrop])
{
- [fPicSettingAutoCrop setStringValue: @"Custom"];
+ picCropping = @"Custom";
}
else
{
- [fPicSettingAutoCrop setStringValue: @"Auto"];
+ picCropping = @"Auto";
}
-
-
- /* Detelecine */
+ picCropping = [picCropping stringByAppendingString:[NSString stringWithFormat:@" %d/%d/%d/%d",fTitle->job->crop[0],fTitle->job->crop[1],fTitle->job->crop[2],fTitle->job->crop[3]]];
- /*On Screen Notification*/
- //int status;
- //status = NSRunAlertPanel(@"Method Reached...",@"Click to Continue!", @"OK", nil, nil);
- //[NSApp requestUserAttention:NSCriticalRequest];
+ [fPictureCroppingField setStringValue: [NSString stringWithFormat:@"Picture Cropping: %@",picCropping]];
- if ([fPictureFilterController detelecine])
+ NSString *videoFilters;
+ videoFilters = @"";
+ /* Detelecine */
+ if ([fPictureFilterController detelecine] == 1)
{
- [fPicSettingDetelecine setStringValue: @"On"];
+ videoFilters = [videoFilters stringByAppendingString:@" - Detelecine (Default)"];
}
- else
+ else if ([fPictureFilterController detelecine] == 2)
{
- [fPicSettingDetelecine setStringValue: @"Off"];
+ videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Detelecine (%@)",[fPictureFilterController detelecineCustomString]]];
}
- /* Decomb */
- if ([fPictureFilterController decomb])
- {
- //[fPicSettingDecomb setStringValue: @"1:2:6:9:80:16:16"];
- [fPicSettingDecomb setStringValue: @"On"];
- }
- else
- {
- [fPicSettingDecomb setStringValue: @"Off"];
- }
-
- /* Deinterlace */
- if ([fPictureFilterController deinterlace] > 0)
+ if ([fPictureFilterController useDecomb] == 1)
{
- fTitle->job->deinterlace = 1;
+ /* Decomb */
+ if ([fPictureFilterController decomb] == 1)
+ {
+ videoFilters = [videoFilters stringByAppendingString:@" - Decomb (Default)"];
+ }
+ else if ([fPictureFilterController decomb] == 2)
+ {
+ videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Decomb (%@)",[fPictureFilterController decombCustomString]]];
+ }
}
else
{
- fTitle->job->deinterlace = 0;
- }
+ /* Deinterlace */
+ if ([fPictureFilterController deinterlace] > 0)
+ {
+ fTitle->job->deinterlace = 1;
+ }
+ else
+ {
+ fTitle->job->deinterlace = 0;
+ }
+
+ if ([fPictureFilterController deinterlace] == 1)
+ {
+ videoFilters = [videoFilters stringByAppendingString:@" - Deinterlace (Fast)"];
+ }
+ else if ([fPictureFilterController deinterlace] == 2)
+ {
+ videoFilters = [videoFilters stringByAppendingString:@" - Deinterlace (Slow)"];
+ }
+ else if ([fPictureFilterController deinterlace] == 3)
+ {
+ videoFilters = [videoFilters stringByAppendingString:@" - Deinterlace (Slower)"];
+ }
+ else if ([fPictureFilterController deinterlace] == 4)
+ {
+ videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Deinterlace (%@)",[fPictureFilterController deinterlaceCustomString]]];
+ }
+ }
- if ([fPictureFilterController deinterlace] == 0)
- {
- [fPicSettingDeinterlace setStringValue: @"Off"];
- }
- else if ([fPictureFilterController deinterlace] == 1)
- {
- [fPicSettingDeinterlace setStringValue: @"Fast"];
- }
- else if ([fPictureFilterController deinterlace] == 2)
- {
- [fPicSettingDeinterlace setStringValue: @"Slow"];
- }
- else if ([fPictureFilterController deinterlace] == 3)
- {
- [fPicSettingDeinterlace setStringValue: @"Slower"];
- }
-
/* Denoise */
- if ([fPictureFilterController denoise] == 0)
- {
- [fPicSettingDenoise setStringValue: @"Off"];
- }
- else if ([fPictureFilterController denoise] == 1)
+ if ([fPictureFilterController denoise] == 1)
{
- [fPicSettingDenoise setStringValue: @"Weak"];
- }
+ videoFilters = [videoFilters stringByAppendingString:@" - Denoise (Weak)"];
+ }
else if ([fPictureFilterController denoise] == 2)
{
- [fPicSettingDenoise setStringValue: @"Medium"];
- }
+ videoFilters = [videoFilters stringByAppendingString:@" - Denoise (Medium)"];
+ }
else if ([fPictureFilterController denoise] == 3)
{
- [fPicSettingDenoise setStringValue: @"Strong"];
+ videoFilters = [videoFilters stringByAppendingString:@" - Denoise (Strong)"];
+ }
+ else if ([fPictureFilterController denoise] == 4)
+ {
+ videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Denoise (%@)",[fPictureFilterController denoiseCustomString]]];
}
/* Deblock */
- if ([fPictureFilterController deblock] == 0)
+ if ([fPictureFilterController deblock] > 0)
{
- [fPicSettingDeblock setStringValue: @"Off"];
+ videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Deblock (%d)",[fPictureFilterController deblock]]];
}
- else
+
+ /* Grayscale */
+ if ([fPictureFilterController grayscale])
{
- [fPicSettingDeblock setStringValue: [NSString stringWithFormat:@"%d",[fPictureFilterController deblock]]];
+ videoFilters = [videoFilters stringByAppendingString:@" - Grayscale"];
}
-
- if (fTitle->job->anamorphic.mode > 0)
- {
- [fPicSettingPAR setStringValue: @""];
- }
- else
- {
- [fPicSettingPAR setStringValue: @"Off"];
- }
-
- /* Set the display field for crop as per boolean */
- if (![fPictureController autoCrop])
- {
- [fPicSettingAutoCrop setStringValue: @"Custom"];
- }
- else
- {
- [fPicSettingAutoCrop setStringValue: @"Auto"];
- }
-
- [fPictureController reloadStillPreview];
+ [fVideoFiltersField setStringValue: [NSString stringWithFormat:@"Video Filters: %@", videoFilters]];
+
+ [fPictureController reloadStillPreview];
}
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
[fVidRatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"VideoFramerate"]];
}
- /* GrayScale */
- [fVidGrayscaleCheck setState:[[chosenPreset objectForKey:@"VideoGrayScale"] intValue]];
/* 2 Pass Encoding */
[fVidTwoPassCheck setState:[[chosenPreset objectForKey:@"VideoTwoPass"] intValue]];
if ([chosenPreset objectForKey:@"UsesPictureFilters"] && [[chosenPreset objectForKey:@"UsesPictureFilters"] intValue] > 0)
{
/* Filters */
- /* Deinterlace */
- if ([chosenPreset objectForKey:@"PictureDeinterlace"])
+
+ /* We only allow *either* Decomb or Deinterlace. So check for the PictureDecombDeinterlace key.
+ * also, older presets may not have this key, in which case we also check to see if that preset had PictureDecomb
+ * specified, in which case we use decomb and ignore any possible Deinterlace settings as using both was less than
+ * sane.
+ */
+ [fPictureFilterController setUseDecomb:1];
+ [fPictureFilterController setDecomb:0];
+ [fPictureFilterController setDeinterlace:0];
+ if ([[chosenPreset objectForKey:@"PictureDecombDeinterlace"] intValue] == 1 || [[chosenPreset objectForKey:@"PictureDecomb"] intValue] > 0)
{
- /* We check to see if the preset used the past fourth "Slowest" deinterlaceing and set that to "Slower
- * since we no longer have a fourth "Slowest" deinterlacing due to the mcdeint bug */
- if ([[chosenPreset objectForKey:@"PictureDeinterlace"] intValue] == 4)
+ /* we are using decomb */
+ /* Decomb */
+ if ([[chosenPreset objectForKey:@"PictureDecomb"] intValue] > 0)
{
- [fPictureFilterController setDeinterlace:3];
+ [fPictureFilterController setDecomb:[[chosenPreset objectForKey:@"PictureDecomb"] intValue]];
+
+ /* if we are using "Custom" in the decomb setting, also set the custom string*/
+ if ([[chosenPreset objectForKey:@"PictureDecomb"] intValue] == 2)
+ {
+ [fPictureFilterController setDecombCustomString:[chosenPreset objectForKey:@"PictureDecombCustom"]];
+ }
}
- else
+ }
+ else
+ {
+ /* We are using Deinterlace */
+ /* Deinterlace */
+ if ([[chosenPreset objectForKey:@"PictureDeinterlace"] intValue] > 0)
{
+ [fPictureFilterController setUseDecomb:0];
[fPictureFilterController setDeinterlace:[[chosenPreset objectForKey:@"PictureDeinterlace"] intValue]];
+ /* if we are using "Custom" in the deinterlace setting, also set the custom string*/
+ if ([[chosenPreset objectForKey:@"PictureDeinterlace"] intValue] == 4)
+ {
+ [fPictureFilterController setDeinterlaceCustomString:[chosenPreset objectForKey:@"PictureDeinterlaceCustom"]];
+ }
}
}
- else
- {
- [fPictureFilterController setDeinterlace:0];
- }
+
/* Detelecine */
- if ([[chosenPreset objectForKey:@"PictureDetelecine"] intValue] == 1)
+ if ([[chosenPreset objectForKey:@"PictureDetelecine"] intValue] > 0)
{
[fPictureFilterController setDetelecine:[[chosenPreset objectForKey:@"PictureDetelecine"] intValue]];
+ /* if we are using "Custom" in the detelecine setting, also set the custom string*/
+ if ([[chosenPreset objectForKey:@"PictureDetelecine"] intValue] == 2)
+ {
+ [fPictureFilterController setDetelecineCustomString:[chosenPreset objectForKey:@"PictureDetelecineCustom"]];
+ }
}
else
{
[fPictureFilterController setDetelecine:0];
}
+
/* Denoise */
- if ([chosenPreset objectForKey:@"PictureDenoise"])
+ if ([[chosenPreset objectForKey:@"PictureDenoise"] intValue] > 0)
{
[fPictureFilterController setDenoise:[[chosenPreset objectForKey:@"PictureDenoise"] intValue]];
+ /* if we are using "Custom" in the denoise setting, also set the custom string*/
+ if ([[chosenPreset objectForKey:@"PictureDenoise"] intValue] == 4)
+ {
+ [fPictureFilterController setDenoiseCustomString:[chosenPreset objectForKey:@"PictureDenoiseCustom"]];
+ }
}
else
{
[fPictureFilterController setDenoise:0];
}
+
/* Deblock */
if ([[chosenPreset objectForKey:@"PictureDeblock"] intValue] == 1)
{
/* use the settings intValue */
[fPictureFilterController setDeblock:[[chosenPreset objectForKey:@"PictureDeblock"] intValue]];
}
- /* Decomb */
- if ([[chosenPreset objectForKey:@"PictureDecomb"] intValue] == 1)
+
+ if ([[chosenPreset objectForKey:@"VideoGrayScale"] intValue] == 1)
{
- [fPictureFilterController setDecomb:1];
+ [fPictureFilterController setGrayscale:1];
}
else
{
- [fPictureFilterController setDecomb:0];
+ [fPictureFilterController setGrayscale:0];
}
}
/* we call SetTitle: in fPictureController so we get an instant update in the Picture Settings window */
[fPictureController SetTitle:fTitle];
- //[fPictureFilterController FilterSettingsChanged:nil];
+ [fPictureFilterController SetTitle:fTitle];
[self calculatePictureSizing:nil];
}
}
{
[preset setObject:[fVidRatePopUp titleOfSelectedItem] forKey:@"VideoFramerate"];
}
- /* GrayScale */
- [preset setObject:[NSNumber numberWithInt:[fVidGrayscaleCheck state]] forKey:@"VideoGrayScale"];
+
/* 2 Pass Encoding */
[preset setObject:[NSNumber numberWithInt:[fVidTwoPassCheck state]] forKey:@"VideoTwoPass"];
/* Turbo 2 pass Encoding fVidTurboPassCheck*/
[preset setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"];
/* Picture Filters */
+ [preset setObject:[NSNumber numberWithInt:[fPictureFilterController useDecomb]] forKey:@"PictureDecombDeinterlace"];
[preset setObject:[NSNumber numberWithInt:[fPictureFilterController deinterlace]] forKey:@"PictureDeinterlace"];
+ [preset setObject:[fPictureFilterController deinterlaceCustomString] forKey:@"PictureDeinterlaceCustom"];
[preset setObject:[NSNumber numberWithInt:[fPictureFilterController detelecine]] forKey:@"PictureDetelecine"];
- //[preset setObject:[NSNumber numberWithInt:[fPictureFilterController vfr]] forKey:@"VFR"];
+ [preset setObject:[fPictureFilterController detelecineCustomString] forKey:@"PictureDetelecineCustom"];
[preset setObject:[NSNumber numberWithInt:[fPictureFilterController denoise]] forKey:@"PictureDenoise"];
+ [preset setObject:[fPictureFilterController denoiseCustomString] forKey:@"PictureDenoiseCustom"];
[preset setObject:[NSNumber numberWithInt:[fPictureFilterController deblock]] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:[fPictureFilterController decomb]] forKey:@"PictureDecomb"];
+ [preset setObject:[fPictureFilterController decombCustomString] forKey:@"PictureDecombCustom"];
+ [preset setObject:[NSNumber numberWithInt:[fPictureFilterController grayscale]] forKey:@"VideoGrayScale"];
/*Audio*/