2014 snapchat source code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
1.7 KiB

//
// SCExposureAdjustProcessingModule.m
// Snapchat
//
// Created by Yu-Kuan (Anthony) Lai on 6/1/17.
// Copyright © 2017 Snapchat, Inc. All rights reserved.
//
#import "SCExposureAdjustProcessingModule.h"
#import "SCProcessingModuleUtils.h"
@import CoreImage;
@import CoreMedia;
static const CGFloat kSCExposureAdjustProcessingModuleMaxEVValue = 2.0;
@implementation SCExposureAdjustProcessingModule {
CIContext *_context;
CIFilter *_filter;
CFMutableDictionaryRef _attributes;
CVPixelBufferPoolRef _bufferPool;
}
- (instancetype)init
{
if (self = [super init]) {
_context = [CIContext context];
_filter = [CIFilter filterWithName:@"CIExposureAdjust"];
[_filter setValue:@0.0 forKey:@"inputEV"];
}
return self;
}
- (void)setEVValue:(CGFloat)value
{
CGFloat newEVValue = value * kSCExposureAdjustProcessingModuleMaxEVValue;
[_filter setValue:@(newEVValue) forKey:@"inputEV"];
}
- (void)dealloc
{
CVPixelBufferPoolFlush(_bufferPool, kCVPixelBufferPoolFlushExcessBuffers);
CVPixelBufferPoolRelease(_bufferPool);
}
- (BOOL)requiresDepthData
{
return NO;
}
- (CMSampleBufferRef)render:(RenderData)renderData
{
CMSampleBufferRef input = renderData.sampleBuffer;
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(input);
CIImage *image = [CIImage imageWithCVPixelBuffer:pixelBuffer];
[_filter setValue:image forKey:kCIInputImageKey];
CIImage *result = [_filter outputImage];
return [SCProcessingModuleUtils sampleBufferFromImage:result
oldSampleBuffer:input
bufferPool:_bufferPool
context:_context];
}
@end