[queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->height] forKey:@"PictureHeight"];
[queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->keep_ratio] forKey:@"PictureKeepRatio"];
[queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.mode] forKey:@"PicturePAR"];
+ [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->modulus] forKey:@"PictureModulus"];
/* if we are custom anamorphic, store the exact storage, par and display dims */
if (fTitle->job->anamorphic.mode == 3)
{
- [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.modulus] forKey:@"PicturePARModulus"];
+ [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->modulus] forKey:@"PicturePARModulus"];
[queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->width] forKey:@"PicturePARStorageWidth"];
[queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->height] forKey:@"PicturePARStorageHeight"];
[self writeToActivityLog: "applyQueueSettingsToMainWindow: queue item found"];
}
/* Set title number and chapters */
- /* since the queue only scans a single title, we really don't need to pick a title */
- [fSrcTitlePopUp selectItemAtIndex: [[queueToApply objectForKey:@"TitleNumber"] intValue] - 1];
+ /* since the queue only scans a single title, its already been selected in showNewScan
+ so do not try to reset it here. However if we do decide to do full source scans on
+ a queue edit rescan, we would need it. So leaving in for now but commenting out. */
+ //[fSrcTitlePopUp selectItemAtIndex: [[queueToApply objectForKey:@"TitleNumber"] intValue] - 1];
[fSrcChapterStartPopUp selectItemAtIndex: [[queueToApply objectForKey:@"ChapterStart"] intValue] - 1];
[fSrcChapterEndPopUp selectItemAtIndex: [[queueToApply objectForKey:@"ChapterEnd"] intValue] - 1];
}
+ job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue];
/* we check to make sure the presets width/height does not exceed the sources width/height */
if (fTitle->width < [[queueToApply objectForKey:@"PictureWidth"] intValue] || fTitle->height < [[queueToApply objectForKey:@"PictureHeight"] intValue])
}
}
job->anamorphic.mode = [[queueToApply objectForKey:@"PicturePAR"] intValue];
-
+ job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue];
[self writeToActivityLog: "applyQueueSettingsToMainWindow: picture sizing set up"];
/* we call SetTitle: in fPictureController so we get an instant update in the Picture Settings window */
[fPictureController SetTitle:fTitle];
- [fPictureController SetTitle:fTitle];
[self calculatePictureSizing:nil];
[self writeToActivityLog: "applyQueueSettingsToMainWindow: picture filters set up"];
job->keep_ratio = [[queueToApply objectForKey:@"PictureKeepRatio"] intValue];
job->anamorphic.mode = [[queueToApply objectForKey:@"PicturePAR"] intValue];
+ job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue];
if ([[queueToApply objectForKey:@"PicturePAR"] intValue] == 3)
{
/* insert our custom values here for capuj */
job->width = [[queueToApply objectForKey:@"PicturePARStorageWidth"] intValue];
job->height = [[queueToApply objectForKey:@"PicturePARStorageHeight"] intValue];
- job->anamorphic.modulus = [[queueToApply objectForKey:@"PicturePARModulus"] intValue];
+ job->modulus = [[queueToApply objectForKey:@"PicturePARModulus"] intValue];
job->anamorphic.par_width = [[queueToApply objectForKey:@"PicturePARPixelWidth"] intValue];
job->anamorphic.par_height = [[queueToApply objectForKey:@"PicturePARPixelHeight"] intValue];
hb_title_t * title = (hb_title_t*)
hb_list_item( list, [fSrcTitlePopUp indexOfSelectedItem] );
- /* If we are a stream type, grok the output file name from title->name upon title change */
- if (title->type == HB_STREAM_TYPE)
+ /* If we are a stream type and a batch scan, grok the output file name from title->name upon title change */
+ if (title->type == HB_STREAM_TYPE && hb_list_count( list ) > 1 )
{
/* we set the default name according to the new title->name */
[fDstFile2Field setStringValue: [NSString stringWithFormat:
@"%@/%@.%@", [[fDstFile2Field stringValue] stringByDeletingLastPathComponent],
[NSString stringWithUTF8String: title->name],
[[fDstFile2Field stringValue] pathExtension]]];
- /* If we have more than one title and are stream then we have a batch, change the source to read out the parent folder also */
- if ( hb_list_count( list ) > 1 )
- {
- [fSrcDVD2Field setStringValue:[NSString stringWithFormat:@"%@/%@", browsedSourceDisplayName,[NSString stringWithUTF8String: title->name]]];
- }
+
+ /* Change the source to read out the parent folder also */
+ [fSrcDVD2Field setStringValue:[NSString stringWithFormat:@"%@/%@", browsedSourceDisplayName,[NSString stringWithUTF8String: title->name]]];
}
/* For point a to point b pts encoding, set the start and end fields to 0 and the title duration in seconds respectively */
float sliderRfInverse = ([fVidQualitySlider maxValue] - [fVidQualitySlider floatValue]) + [fVidQualitySlider minValue];
/* If the encoder is theora, use the float, otherwise use the inverse float*/
- float sliderRfToPercent;
+ //float sliderRfToPercent;
if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_THEORA)
{
- [fVidQualityRFField setStringValue: [NSString stringWithFormat: @"%.2f", [fVidQualitySlider floatValue]]];
- sliderRfToPercent = [fVidQualityRFField floatValue] / ([fVidQualitySlider maxValue] - [fVidQualitySlider minValue]);
+ [fVidQualityRFField setStringValue: [NSString stringWithFormat: @"%.2f", [fVidQualitySlider floatValue]]];
}
else
{
[fVidQualityRFField setStringValue: [NSString stringWithFormat: @"%.2f", sliderRfInverse]];
- sliderRfToPercent = ( ([fVidQualitySlider maxValue] - [fVidQualitySlider minValue]) - ([fVidQualityRFField floatValue] - [fVidQualitySlider minValue])) / ([fVidQualitySlider maxValue] - [fVidQualitySlider minValue]);
}
- [fVidConstantCell setTitle: [NSString stringWithFormat:
- NSLocalizedString( @"Constant quality: %.2f %%", @"" ), 100 * sliderRfToPercent]];
-
[self customSettingUsed: sender];
}
fTitle->job->keep_ratio = 0;
}
- [fPictureSizeField setStringValue: [NSString stringWithFormat:@"Picture Size: %@", [fPictureController getPictureSizeInfoString]]];
-
+ if (fTitle->job->anamorphic.mode != 1) // we are not strict so show the modulus
+ {
+ [fPictureSizeField setStringValue: [NSString stringWithFormat:@"Picture Size: %@, Modulus: %d", [fPictureController getPictureSizeInfoString], fTitle->job->modulus]];
+ }
+ else
+ {
+ [fPictureSizeField setStringValue: [NSString stringWithFormat:@"Picture Size: %@", [fPictureController getPictureSizeInfoString]]];
+ }
NSString *picCropping;
/* Set the display field for crop as per boolean */
if (![fPictureController autoCrop])
{
case 0:
/* MP4 */
- // FAAC
- menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AAC (faac)" action: NULL keyEquivalent: @""];
- [menuItem setTag: HB_ACODEC_FAAC];
-
// 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];
case 1:
/* MKV */
- // FAAC
- menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"AAC (faac)" action: NULL keyEquivalent: @""];
- [menuItem setTag: HB_ACODEC_FAAC];
// 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];
menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"Vorbis (vorbis)" action: NULL keyEquivalent: @""];
[menuItem setTag: HB_ACODEC_VORBIS];
break;
-
- case 2:
- /* AVI */
- // 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 3:
- /* OGM */
- // Vorbis
- menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"Vorbis (vorbis)" action: NULL keyEquivalent: @""];
- [menuItem setTag: HB_ACODEC_VORBIS];
- // MP3
- menuItem = [[audiocodecPopUp menu] addItemWithTitle:@"MP3 (lame)" action: NULL keyEquivalent: @""];
- [menuItem setTag: HB_ACODEC_LAME];
- break;
}
[audiocodecPopUp selectItemAtIndex:0];
}
}
/* 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 MP3 for avi and aac for all
- * other containers.
+ * 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)
{
- /* If we are using the avi container, we select MP3 as there is no aac available*/
- if ([[fDstFormatPopUp selectedItem] tag] == HB_MUX_AVI)
- {
- [audiocodecPopUp selectItemWithTag: HB_ACODEC_LAME];
- }
- else
- {
- [audiocodecPopUp selectItemWithTag: HB_ACODEC_FAAC];
- }
+ [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 MP3 for avi and aac for all
- * other containers.
+ * 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)
{
- /* If we are using the avi container, we select MP3 as there is no aac available*/
- if ([[fDstFormatPopUp selectedItem] tag] == HB_MUX_AVI)
- {
- [audiocodecPopUp selectItemWithTag: HB_ACODEC_LAME];
- }
- else
- {
- [audiocodecPopUp selectItemWithTag: HB_ACODEC_FAAC];
- }
+ [audiocodecPopUp selectItemWithTag: HB_ACODEC_CA_AAC];
}
/* Setup our samplerate and bitrate popups we will need based on mixdown */
}
[self audioTrackPopUpChanged: trackLangPopUp];
[audiocodecPopUp selectItemWithTitle:[tempObject objectForKey:@"AudioEncoder"]];
- /* check our pref for core audio and use it in place of faac if applicable */
- if ([[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES &&
+ /* 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"]];
- /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default
+ [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];
}
[self audioTrackPopUpChanged: fAudLang1PopUp];
[fAudTrack1CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Encoder"]];
- /* check our pref for core audio and use it in place of faac if applicable */
- if ([[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES &&
+ /* 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
}
[self audioTrackPopUpChanged: fAudLang2PopUp];
[fAudTrack2CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Encoder"]];
- /* check our pref for core audio and use it in place of faac if applicable */
- if ([[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES &&
+ /* 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: fAudLang3PopUp];
[fAudTrack3CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Encoder"]];
- /* check our pref for core audio and use it in place of faac if applicable */
- if ([[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES &&
+ /* 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: fAudLang4PopUp];
[fAudTrack4CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Encoder"]];
- /* check our pref for core audio and use it in place of faac if applicable */
- if ([[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] == YES &&
+ /* 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)"];
}
-
+ /* Set modulus */
+ if ([chosenPreset objectForKey:@"PictureModulus"])
+ {
+ job->modulus = [[chosenPreset objectForKey:@"PictureModulus"] intValue];
+ }
+ else
+ {
+ job->modulus = 16;
+ }
+
/* Check to see if the objectForKey:@"UsesPictureSettings is 2 which is "Use Max for the source */
if ([[chosenPreset objectForKey:@"UsesPictureSettings"] intValue] == 2 || [[chosenPreset objectForKey:@"UsesMaxPictureSettings"] intValue] == 1)
{
[preset setObject:[NSNumber numberWithInt:fTitle->job->height] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:fTitle->job->keep_ratio] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.mode] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:fTitle->job->modulus] forKey:@"PictureModulus"];
/* Set crop settings here */
[preset setObject:[NSNumber numberWithInt:[fPictureController autoCrop]] forKey:@"PictureAutoCrop"];