*/
int i = 0;
- NSEnumerator *enumerator = [fJobGroups objectEnumerator];
- id tempObject;
- while (tempObject = [enumerator nextObject])
+ for(id tempObject in fJobGroups)
{
NSDictionary *thisQueueDict = tempObject;
if ([[thisQueueDict objectForKey:@"Status"] intValue] == 0) // Completed
- (IBAction)removeSelectedQueueItem: (id)sender
{
NSIndexSet * selectedRows = [fOutlineView selectedRowIndexes];
- int row = [selectedRows firstIndex];
+ NSUInteger row = [selectedRows firstIndex];
+ if( row == NSNotFound )
+ return;
/* if this is a currently encoding job, we need to be sure to alert the user,
* to let them decide to cancel it first, then if they do, we can come back and
* remove it */
- if ([[[fJobGroups objectAtIndex:row] objectForKey:@"Status"] intValue] == 1)
+ if ([[[fJobGroups objectAtIndex:row] objectForKey:@"Status"] integerValue] == 1)
{
/* We pause the encode here so that it doesn't finish right after and then
* screw up the sync while the window is open
[fHBController Pause:NULL];
NSString * alertTitle = [NSString stringWithFormat:NSLocalizedString(@"Stop This Encode and Remove It ?", nil)];
// Which window to attach the sheet to?
- NSWindow * docWindow;
+ NSWindow * docWindow = nil;
if ([sender respondsToSelector: @selector(window)])
docWindow = [sender window];
- (IBAction)togglePauseResume: (id)sender
{
if (!fQueueEncodeLibhb) return;
-
+
hb_state_t s;
hb_get_state2 (fQueueEncodeLibhb, &s);
-
+
if (s.state == HB_STATE_PAUSED)
+ {
hb_resume (fQueueEncodeLibhb);
+ [self startAnimatingCurrentWorkingEncodeInQueue];
+ }
else if ((s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING))
+ {
hb_pause (fQueueEncodeLibhb);
+ [self stopAnimatingCurrentJobGroupInQueue];
+ }
}
#pragma mark -
[item objectForKey:@"Audio1Mixdown"] ,
[item objectForKey:@"Audio1Samplerate"],
[item objectForKey:@"Audio1Bitrate"]];
+
+ if ([[item objectForKey:@"Audio1TrackDRCSlider"] floatValue] > 1.00)
+ {
+ audioDetail1 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail1,[item objectForKey:@"Audio1TrackDRCSlider"]];
+ }
+ else
+ {
+ audioDetail1 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail1];
+ }
}
if ([[item objectForKey:@"Audio2Track"] intValue] > 0)
[item objectForKey:@"Audio2Mixdown"] ,
[item objectForKey:@"Audio2Samplerate"],
[item objectForKey:@"Audio2Bitrate"]];
+
+ if ([[item objectForKey:@"Audio2TrackDRCSlider"] floatValue] > 1.00)
+ {
+ audioDetail2 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail2,[item objectForKey:@"Audio2TrackDRCSlider"]];
+ }
+ else
+ {
+ audioDetail2 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail2];
+ }
}
if ([[item objectForKey:@"Audio3Track"] intValue] > 0)
[item objectForKey:@"Audio3Mixdown"] ,
[item objectForKey:@"Audio3Samplerate"],
[item objectForKey:@"Audio3Bitrate"]];
+
+ if ([[item objectForKey:@"Audio3TrackDRCSlider"] floatValue] > 1.00)
+ {
+ audioDetail3 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail3,[item objectForKey:@"Audio3TrackDRCSlider"]];
+ }
+ else
+ {
+ audioDetail3 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail3];
+ }
}
+
if ([[item objectForKey:@"Audio4Track"] intValue] > 0)
{
audioCodecSummary = [NSString stringWithFormat:@"%@, %@",audioCodecSummary ,[item objectForKey:@"Audio3Encoder"]];
[item objectForKey:@"Audio4Mixdown"] ,
[item objectForKey:@"Audio4Samplerate"],
[item objectForKey:@"Audio4Bitrate"]];
+
+ if ([[item objectForKey:@"Audio4TrackDRCSlider"] floatValue] > 1.00)
+ {
+ audioDetail4 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail4,[item objectForKey:@"Audio4TrackDRCSlider"]];
+ }
+ else
+ {
+ audioDetail4 = [NSString stringWithFormat:@"%@, DRC: Off",audioDetail4];
+ }
}
NSString * jobFormatInfo;
NSString * pictureFilters = @"";
BOOL pictureFiltersPresent = NO;
- if( [[item objectForKey:@"VFR"] intValue] == 1)
- {
- pictureFiltersPresent = YES;
- pictureFilters = [pictureFilters stringByAppendingString:@" - VFR"];
- }
- if( [[item objectForKey:@"PictureDetelecine"] intValue] == 1 )
+
+ if( [[item objectForKey:@"PictureDetelecine"] intValue] == 1)
{
pictureFiltersPresent = YES;
- pictureFilters = [pictureFilters stringByAppendingString:@" - Detelecine"];
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Detelecine (Default)"];
}
-
- if( [[item objectForKey:@"PictureDecomb"] intValue] == 1)
+ else if( [[item objectForKey:@"PictureDetelecine"] intValue] == 2)
{
pictureFiltersPresent = YES;
- pictureFilters = [pictureFilters stringByAppendingString:@" - Decomb "];
+ pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Detelecine (%@)",[item objectForKey:@"PictureDetelecineCustom"]]];
}
- if ([[item objectForKey:@"PictureDeinterlace"] intValue] != 0)
+ if( [[item objectForKey:@"PictureDecombDeinterlace"] intValue] == 1)
{
- pictureFiltersPresent = YES;
- if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 1)
- {
- pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace: Fast "];
- }
- else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 2)
+ if ([[item objectForKey:@"PictureDecomb"] intValue] != 0)
{
- pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace: Slow "];
+ pictureFiltersPresent = YES;
+ if( [[item objectForKey:@"PictureDecomb"] intValue] == 1)
+ {
+ pictureFiltersPresent = YES;
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Decomb (Default)"];
+ }
+ if( [[item objectForKey:@"PictureDecomb"] intValue] == 2)
+ {
+ pictureFiltersPresent = YES;
+ pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Decomb (%@)",[item objectForKey:@"PictureDecombCustom"]]];
+ }
}
- else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 3)
+ }
+ else
+ {
+ if ([[item objectForKey:@"PictureDeinterlace"] intValue] != 0)
{
- pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace: Slower "];
+ pictureFiltersPresent = YES;
+ if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 1)
+ {
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Fast)"];
+ }
+ else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 2)
+ {
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slow)"];
+ }
+ else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 3)
+ {
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slower)"];
+ }
+ else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 4)
+ {
+ pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Deinterlace (%@)",[item objectForKey:@"PictureDeinterlaceCustom"]]];
+ }
+
}
-
}
if ([[item objectForKey:@"PictureDenoise"] intValue] != 0)
{
pictureFiltersPresent = YES;
if ([[item objectForKey:@"PictureDenoise"] intValue] == 1)
{
- pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise: Weak "];
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Weak)"];
}
else if ([[item objectForKey:@"PictureDenoise"] intValue] == 2)
{
- pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise: Medium "];
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Medium)"];
}
else if ([[item objectForKey:@"PictureDenoise"] intValue] == 3)
{
- pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise: Strong "];
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Strong)"];
+ }
+ else if ([[item objectForKey:@"PictureDenoise"] intValue] == 4)
+ {
+ pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Denoise (%@)",[item objectForKey:@"PictureDenoiseCustom"]]];
}
}
if ([[item objectForKey:@"PictureDeblock"] intValue] != 0)
{
pictureFiltersPresent = YES;
- pictureFilters = [pictureFilters stringByAppendingString: [NSString stringWithFormat:@" - Deblock (pp7) (%d) ",[[item objectForKey:@"PictureDeblock"] intValue]]];
+ pictureFilters = [pictureFilters stringByAppendingString: [NSString stringWithFormat:@" - Deblock (pp7) (%d)",[[item objectForKey:@"PictureDeblock"] intValue]]];
+ }
+
+ if ([[item objectForKey:@"VideoGrayScale"] intValue] == 1)
+ {
+ pictureFiltersPresent = YES;
+ pictureFilters = [pictureFilters stringByAppendingString:@" - Grayscale"];
}
+
if (pictureFiltersPresent == YES)
{
[finalString appendString: @"Filters: " withAttributes:detailBoldAttr];
if ([[item objectForKey:@"VideoQualityType"] intValue] == 0)// Target Size MB
{
- videoInfo = [NSString stringWithFormat:@"%@ Target Size: %@(MB)", videoInfo ,[item objectForKey:@"VideoTargetSize"]];
+ videoInfo = [NSString stringWithFormat:@"%@ Target Size: %@(MB) (%d(kbps) abr)", videoInfo ,[item objectForKey:@"VideoTargetSize"],[[item objectForKey:@"VideoAvgBitrate"] intValue]];
}
else if ([[item objectForKey:@"VideoQualityType"] intValue] == 1) // ABR
{
}
else // CRF
{
- videoInfo = [NSString stringWithFormat:@"%@ Constant Quality: %.0f %%", videoInfo ,[[item objectForKey:@"VideoQualitySlider"] floatValue] * 100];
+ videoInfo = [NSString stringWithFormat:@"%@ Constant Quality: %.2f", videoInfo ,[[item objectForKey:@"VideoQualitySlider"] floatValue]];
}
[finalString appendString: @"Video: " withAttributes:detailBoldAttr];
- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard
{
// Dragging is only allowed of the pending items.
- if ([[[fJobGroups objectAtIndex:[outlineView selectedRow]] objectForKey:@"Status"] intValue] != 2) // 2 is pending
+ if ([[[items objectAtIndex:0] objectForKey:@"Status"] integerValue] != 2) // 2 is pending
{
return NO;
}
return NSDragOperationGeneric;
}
-
-
- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id <NSDraggingInfo>)info item:(id)item childIndex:(NSInteger)index
{
- NSMutableIndexSet *moveItems = [NSMutableIndexSet indexSet];
-
- id obj;
- NSEnumerator *enumerator = [fDraggedNodes objectEnumerator];
- while (obj = [enumerator nextObject])
- {
+ NSMutableIndexSet *moveItems = [NSMutableIndexSet indexSet];
+
+ for( id obj in fDraggedNodes )
[moveItems addIndex:[fJobGroups indexOfObject:obj]];
- }
+
// Successful drop, we use moveObjectsInQueueArray:... in fHBController
// to properly rearrange the queue array, save it to plist and then send it back here.
// since Controller.mm is handling all queue array manipulation.