Skip to content

Commit

Permalink
macui support for filter dict settings
Browse files Browse the repository at this point in the history
  • Loading branch information
jstebbins committed Mar 9, 2016
1 parent a44ccb4 commit b7f4685
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 53 deletions.
22 changes: 9 additions & 13 deletions macosx/HBFilters.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#import "HBFilters.h"
#import "HBCodingUtilities.h"
#import "NSDictionary+HBAdditions.h"
#include "hb.h"

NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification";
Expand Down Expand Up @@ -135,7 +136,7 @@ - (void)validateDeinterlacePreset
filter_id = HB_FILTER_DEINTERLACE;
}

if (hb_validate_filter_preset(filter_id, self.deinterlacePreset.UTF8String, NULL))
if (hb_validate_filter_preset(filter_id, self.deinterlacePreset.UTF8String, NULL, NULL))
{
_deinterlacePreset = @"default";
}
Expand Down Expand Up @@ -412,7 +413,7 @@ - (void)writeToPreset:(HBMutablePreset *)preset

preset[@"PictureDeblock"] = @(self.deblock);
preset[@"VideoGrayScale"] = @(self.grayscale);
preset[@"PictureRotate"] = [NSString stringWithFormat:@"%d:%d", self.rotate, self.flip];
preset[@"PictureRotate"] = [NSString stringWithFormat:@"angle=%d:hflip=%d", self.rotate, self.flip];
}

- (void)applyPreset:(HBPreset *)preset
Expand Down Expand Up @@ -445,17 +446,12 @@ - (void)applyPreset:(HBPreset *)preset
NSString *rotate = preset[@"PictureRotate"];
if ([rotate isKindOfClass:[NSString class]])
{
NSArray<NSString *> *components = [rotate componentsSeparatedByString:@":"];
if (components.count == 2)
{
self.rotate = [components[0] intValue];
self.flip = [components[1] boolValue];
}
else
{
self.rotate = 0;
self.flip = NO;
}
hb_dict_t * hbdict = hb_parse_filter_settings(rotate.UTF8String);
NSDictionary * dict = [[NSDictionary alloc] initWithHBDict:hbdict];
hb_value_free(&hbdict);

self.rotate = [dict[@"angle"] intValue];
self.flip = [dict[@"hflip"] boolValue];
}
}

Expand Down
72 changes: 32 additions & 40 deletions macosx/HBJob+HBJobConversion.m
Original file line number Diff line number Diff line change
Expand Up @@ -304,14 +304,6 @@ - (hb_job_t *)hb_job
}
}

if (one_burned)
{
hb_filter_object_t *filter = hb_filter_init( HB_FILTER_RENDER_SUB );
hb_add_filter(job, filter, [NSString stringWithFormat:@"%d:%d:%d:%d",
self.picture.cropTop, self.picture.cropBottom,
self.picture.cropLeft, self.picture.cropRight].UTF8String);
}

// Audio Defaults
job->acodec_copy_mask = 0;

Expand Down Expand Up @@ -413,11 +405,13 @@ - (hb_job_t *)hb_job
if (![self.filters.detelecine isEqualToString:@"off"])
{
int filter_id = HB_FILTER_DETELECINE;
const char *filter_str = hb_generate_filter_settings(filter_id,
hb_dict_t *filter_dict = hb_generate_filter_settings(filter_id,
self.filters.detelecine.UTF8String,
NULL,
self.filters.detelecineCustomString.UTF8String);
filter = hb_filter_init(filter_id);
hb_add_filter(job, filter, filter_str);
hb_add_filter_dict(job, filter, filter_dict);
hb_value_free(&filter_dict);
}

// Deinterlace
Expand All @@ -429,51 +423,48 @@ - (hb_job_t *)hb_job
filter_id = HB_FILTER_DEINTERLACE;
}

const char *filter_str = hb_generate_filter_settings(filter_id,
self.filters.deinterlacePreset.UTF8String,
self.filters.deinterlaceCustomString.UTF8String);
hb_dict_t *filter_dict = hb_generate_filter_settings(filter_id,
self.filters.deinterlacePreset.UTF8String,
NULL,
self.filters.deinterlaceCustomString.UTF8String);
filter = hb_filter_init(filter_id);
hb_add_filter(job, filter, filter_str);
hb_add_filter_dict(job, filter, filter_dict);
hb_value_free(&filter_dict);
}

// Denoise
if (![self.filters.denoise isEqualToString:@"off"])
{
int filter_id = HB_FILTER_HQDN3D;
if ([self.filters.denoise isEqualToString:@"nlmeans"])
filter_id = HB_FILTER_NLMEANS;

if ([self.filters.denoisePreset isEqualToString:@"custom"])
{
const char *filter_str;
filter_str = self.filters.denoiseCustomString.UTF8String;
filter = hb_filter_init(filter_id);
hb_add_filter(job, filter, filter_str);
}
else
{
const char *filter_str, *preset, *tune;
preset = self.filters.denoisePreset.UTF8String;
tune = self.filters.denoiseTune.UTF8String;
filter_str = hb_generate_filter_settings(filter_id, preset, tune);
filter = hb_filter_init(filter_id);
hb_add_filter(job, filter, filter_str);
filter_id = HB_FILTER_NLMEANS;
}

hb_dict_t *filter_dict = hb_generate_filter_settings(filter_id,
self.filters.denoisePreset.UTF8String,
self.filters.denoiseTune.UTF8String,
self.filters.denoiseCustomString.UTF8String);
filter = hb_filter_init(filter_id);
hb_add_filter_dict(job, filter, filter_dict);
hb_dict_free(&filter_dict);
}

// Deblock (uses pp7 default)
if (self.filters.deblock)
{
filter = hb_filter_init(HB_FILTER_DEBLOCK);
hb_add_filter(job, filter, [NSString stringWithFormat:@"%d", self.filters.deblock].UTF8String);
hb_add_filter(job, filter, [NSString stringWithFormat:@"qp=%d", self.filters.deblock].UTF8String);
}

// Add Crop/Scale filter
filter = hb_filter_init(HB_FILTER_CROP_SCALE);
hb_add_filter( job, filter, [NSString stringWithFormat:@"%d:%d:%d:%d:%d:%d",
self.picture.width, self.picture.height,
self.picture.cropTop, self.picture.cropBottom,
self.picture.cropLeft, self.picture.cropRight].UTF8String);
hb_add_filter( job, filter,
[NSString stringWithFormat:
@"width=%d:height=%d:crop-top=%d:crop-bottom=%d:crop-left=%d:crop-right=%d",
self.picture.width, self.picture.height,
self.picture.cropTop, self.picture.cropBottom,
self.picture.cropLeft, self.picture.cropRight].UTF8String);

// Add grayscale filter
if (self.filters.grayscale)
Expand All @@ -486,17 +477,18 @@ - (hb_job_t *)hb_job
if (self.filters.rotate || self.filters.flip)
{
int filter_id = HB_FILTER_ROTATE;
const char *filter_str = hb_generate_filter_settings(filter_id,
[NSString stringWithFormat:@"%d:%d", self.filters.rotate, self.filters.flip].UTF8String,
NULL);
hb_dict_t *filter_dict = hb_generate_filter_settings(filter_id,
NULL, NULL,
[NSString stringWithFormat:@"angle=%d:hflip=%d", self.filters.rotate, self.filters.flip].UTF8String);

filter = hb_filter_init(filter_id);
hb_add_filter(job, filter, filter_str);
hb_add_filter_dict(job, filter, filter_dict);
hb_dict_free(&filter_dict);
}

// Add framerate shaping filter
filter = hb_filter_init(HB_FILTER_VFR);
hb_add_filter(job, filter, [[NSString stringWithFormat:@"%d:%d:%d",
hb_add_filter(job, filter, [[NSString stringWithFormat:@"mode=%d:rate=%d/%d",
fps_mode, fps_num, fps_den] UTF8String]);

return job;
Expand Down

0 comments on commit b7f4685

Please sign in to comment.