summaryrefslogtreecommitdiffstats
path: root/macosx/HBJob.m
diff options
context:
space:
mode:
authorritsuka <[email protected]>2014-08-19 16:38:33 +0000
committerritsuka <[email protected]>2014-08-19 16:38:33 +0000
commita37c2119baece04d28cd75816cd31270e317197a (patch)
tree567c00bd0ca0e34a0e0e0da978bf442797ec490e /macosx/HBJob.m
parent5c5d825990ac79b9e7faa2d79a3edbd8b6232eea (diff)
MacGui: added support for NLMeans denoise. Added the HBFilters class to store the filters settings, previously they were stored directly in the HBPictureController window controller.
Removed the filter tab animations for now, they will be added back later. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6319 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'macosx/HBJob.m')
-rw-r--r--macosx/HBJob.m191
1 files changed, 191 insertions, 0 deletions
diff --git a/macosx/HBJob.m b/macosx/HBJob.m
new file mode 100644
index 000000000..78e6a317b
--- /dev/null
+++ b/macosx/HBJob.m
@@ -0,0 +1,191 @@
+/* HBJob.m $
+
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.fr/>.
+ It may be used under the terms of the GNU General Public License. */
+
+#import "HBJob.h"
+#import "HBAudioSettings.h"
+#import "HBSubtitlesSettings.h"
+#import "HBPreset.h"
+
+#include "lang.h"
+
+extern NSString *keyAudioTrackIndex;
+extern NSString *keyAudioTrackName;
+extern NSString *keyAudioInputBitrate;
+extern NSString *keyAudioInputSampleRate;
+extern NSString *keyAudioInputCodec;
+extern NSString *keyAudioInputCodecParam;
+extern NSString *keyAudioInputChannelLayout;
+extern NSString *keyAudioTrackLanguageIsoCode;
+
+extern NSString *keySubTrackName;
+extern NSString *keySubTrackIndex;
+extern NSString *keySubTrackLanguage;
+extern NSString *keySubTrackLanguageIsoCode;
+extern NSString *keySubTrackType;
+
+extern NSString *keySubTrackForced;
+extern NSString *keySubTrackBurned;
+extern NSString *keySubTrackDefault;
+
+extern NSString *keySubTrackSrtOffset;
+extern NSString *keySubTrackSrtFilePath;
+extern NSString *keySubTrackSrtCharCode;
+
+@implementation HBJob
+
+- (instancetype)initWithTitle:(hb_title_t *)title url:(NSURL *)fileURL andPreset:(HBPreset *)preset
+{
+ self = [super init];
+ if (self) {
+ _title = title;
+ _fileURL = [fileURL copy];
+
+ _audioTracks = [[NSMutableArray alloc] init];
+ _subtitlesTracks = [[NSMutableArray alloc] init];
+ _chapters = [[NSMutableArray alloc] init];
+
+ _audioSettings = [[HBAudioSettings alloc] init];
+ _subtitlesSettings = [[HBSubtitlesSettings alloc] init];
+
+ [self loadAudioTracks];
+ [self loadSubtitlesTracks];
+ [self loadChapters];
+ }
+ return self;
+}
+
+- (void)applyPreset:(HBPreset *)preset
+{
+ [self.audioSettings applySettingsFromPreset:preset.content];
+ [self.subtitlesSettings applySettingsFromPreset:preset.content];
+}
+
+#pragma mark - initialization
+
+- (void)loadAudioTracks
+{
+ hb_audio_config_t *audio;
+ hb_list_t *list = self.title->list_audio;
+ int count = hb_list_count(list);
+
+ // Initialize the audio list of available audio tracks from this title
+ for (int i = 0; i < count; i++)
+ {
+ audio = (hb_audio_config_t *) hb_list_audio_config_item(list, i);
+ [self.audioTracks addObject: @{keyAudioTrackIndex: @(i + 1),
+ keyAudioTrackName: [NSString stringWithFormat: @"%d: %s", i, audio->lang.description],
+ keyAudioInputBitrate: @(audio->in.bitrate / 1000),
+ keyAudioInputSampleRate: @(audio->in.samplerate),
+ keyAudioInputCodec: [NSNumber numberWithUnsignedInteger: audio->in.codec],
+ keyAudioInputCodecParam: [NSNumber numberWithUnsignedInteger: audio->in.codec_param],
+ keyAudioInputChannelLayout: @(audio->in.channel_layout),
+ keyAudioTrackLanguageIsoCode: @(audio->lang.iso639_2)}];
+ }
+}
+
+- (void)loadSubtitlesTracks
+{
+ hb_subtitle_t *subtitle;
+ hb_list_t *list = self.title->list_audio;
+ int count = hb_list_count(list);
+
+ NSMutableArray *forcedSourceNamesArray = [[NSMutableArray alloc] init];
+ //NSString *foreignAudioSearchTrackName = nil;
+
+ for (int i = 0; i < count; i++)
+ {
+ subtitle = (hb_subtitle_t *)hb_list_item(self.title->list_subtitle, i);
+
+ /* Human-readable representation of subtitle->source */
+ NSString *bitmapOrText = subtitle->format == PICTURESUB ? @"Bitmap" : @"Text";
+ NSString *subSourceName = @(hb_subsource_name(subtitle->source));
+
+ /* if the subtitle track can be forced, add its source name to the array */
+ if (hb_subtitle_can_force(subtitle->source) && [forcedSourceNamesArray containsObject:subSourceName] == NO)
+ {
+ [forcedSourceNamesArray addObject:subSourceName];
+ }
+
+ // Use the native language name if available
+ iso639_lang_t *language = lang_for_code2(subtitle->iso639_2);
+ NSString *nativeLanguage = strlen(language->native_name) ? @(language->native_name) : @(language->eng_name);
+
+ /* create a dictionary of source subtitle information to store in our array */
+ [self.subtitlesTracks addObject:@{keySubTrackName: [NSString stringWithFormat:@"%d: %@ (%@) (%@)", i, nativeLanguage, bitmapOrText, subSourceName],
+ keySubTrackIndex: @(i),
+ keySubTrackType: @(subtitle->source),
+ keySubTrackLanguage: nativeLanguage,
+ keySubTrackLanguageIsoCode: @(subtitle->iso639_2)}];
+ }
+
+ /* now set the name of the Foreign Audio Search track */
+ if ([forcedSourceNamesArray count])
+ {
+ [forcedSourceNamesArray sortUsingComparator:^(id obj1, id obj2)
+ {
+ return [((NSString *)obj1) compare:((NSString *)obj2)];
+ }];
+
+ NSString *tempList = @"";
+ for (NSString *tempString in forcedSourceNamesArray)
+ {
+ if ([tempList length])
+ {
+ tempList = [tempList stringByAppendingString:@", "];
+ }
+ tempList = [tempList stringByAppendingString:tempString];
+ }
+ //foreignAudioSearchTrackName = [NSString stringWithFormat:@"Foreign Audio Search (Bitmap) (%@)", tempList];
+ }
+ else
+ {
+ //foreignAudioSearchTrackName = @"Foreign Audio Search (Bitmap)";
+ }
+ [forcedSourceNamesArray release];
+}
+
+- (void)loadChapters
+{
+ for (int i = 0; i < hb_list_count(self.title->job->list_chapter); i++)
+ {
+ hb_chapter_t *chapter = hb_list_item(self.title->job->list_chapter, i);
+ if (chapter != NULL)
+ {
+ if (chapter->title != NULL)
+ {
+ [self.chapters addObject:[NSString
+ stringWithFormat:@"%s",
+ chapter->title]];
+ }
+ else
+ {
+ [self.chapters addObject:[NSString
+ stringWithFormat:@"Chapter %d",
+ i + 1]];
+ }
+ }
+ }
+}
+
+#pragma mark - NSCoding
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+}
+
+- (id)initWithCoder:(NSCoder *)decoder
+{
+ return nil;
+}
+
+#pragma mark - NSCopying
+
+- (instancetype)copyWithZone:(NSZone *)zone
+{
+ return nil;
+}
+
+@end