Added FilterType.js with all filters that do not require extra parameters
This commit is contained in:
parent
40fb19f7c7
commit
22d65addd3
18
FilterType.js
Normal file
18
FilterType.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
NONE: '',
|
||||||
|
INVERT: 'CIColorInvert',
|
||||||
|
MONOCHROME: 'CIColorMonochrome',
|
||||||
|
POSTERIZE: 'CIColorPosterize',
|
||||||
|
FALSE: 'CIFalseColor',
|
||||||
|
MAXIMUMCOMPONENT: 'CIMaximumComponent',
|
||||||
|
MINIMUMCOMPONENT: 'CIMinimumComponent',
|
||||||
|
CHROME: 'CIPhotoEffectChrome',
|
||||||
|
FADE: 'CIPhotoEffectFade',
|
||||||
|
INSTANT: 'CIPhotoEffectInstant',
|
||||||
|
MONO: 'CIPhotoEffectMono',
|
||||||
|
NOIR: 'CIPhotoEffectNoir',
|
||||||
|
PROCESS: 'CIPhotoEffectProcess',
|
||||||
|
TONAL: 'CIPhotoEffectTonal',
|
||||||
|
TRANSFER: 'CIPhotoEffectTransfer',
|
||||||
|
SEPIA: 'CISepiaTone'
|
||||||
|
};
|
26
Video.js
26
Video.js
@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
|||||||
import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image, Platform, findNodeHandle} from 'react-native';
|
import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image, Platform, findNodeHandle} from 'react-native';
|
||||||
import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource';
|
import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource';
|
||||||
import TextTrackType from './TextTrackType';
|
import TextTrackType from './TextTrackType';
|
||||||
|
import FilterType from './FilterType';
|
||||||
import VideoResizeMode from './VideoResizeMode.js';
|
import VideoResizeMode from './VideoResizeMode.js';
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
@ -11,7 +12,7 @@ const styles = StyleSheet.create({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export { TextTrackType };
|
export { TextTrackType, FilterType };
|
||||||
|
|
||||||
export default class Video extends Component {
|
export default class Video extends Component {
|
||||||
|
|
||||||
@ -71,7 +72,7 @@ export default class Video extends Component {
|
|||||||
this.setNativeProps({ fullscreen: false });
|
this.setNativeProps({ fullscreen: false });
|
||||||
};
|
};
|
||||||
|
|
||||||
saveAsync = async (options?) => {
|
save = async (options?) => {
|
||||||
return await NativeModules.VideoManager.save(options, findNodeHandle(this._root));
|
return await NativeModules.VideoManager.save(options, findNodeHandle(this._root));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,10 +279,25 @@ export default class Video extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Video.filterTypes = ['Normal', 'Country', 'Winter', 'Black N White', 'Sunrise', 'Artistic'];
|
|
||||||
|
|
||||||
Video.propTypes = {
|
Video.propTypes = {
|
||||||
filter: PropTypes.oneOf(Video.filterTypes),
|
filter: PropTypes.oneOf([
|
||||||
|
FilterType.NONE,
|
||||||
|
FilterType.INVERT,
|
||||||
|
FilterType.MONOCHROME,
|
||||||
|
FilterType.POSTERIZE,
|
||||||
|
FilterType.FALSE,
|
||||||
|
FilterType.MAXIMUMCOMPONENT,
|
||||||
|
FilterType.MINIMUMCOMPONENT,
|
||||||
|
FilterType.CHROME,
|
||||||
|
FilterType.FADE,
|
||||||
|
FilterType.INSTANT,
|
||||||
|
FilterType.MONO,
|
||||||
|
FilterType.NOIR,
|
||||||
|
FilterType.PROCESS,
|
||||||
|
FilterType.TONAL,
|
||||||
|
FilterType.TRANSFER,
|
||||||
|
FilterType.SEPIA
|
||||||
|
]),
|
||||||
/* Native only */
|
/* Native only */
|
||||||
src: PropTypes.object,
|
src: PropTypes.object,
|
||||||
seek: PropTypes.oneOfType([
|
seek: PropTypes.oneOfType([
|
||||||
|
@ -66,7 +66,7 @@ static int const RCTVideoUnset = -1;
|
|||||||
BOOL _fullscreen;
|
BOOL _fullscreen;
|
||||||
NSString * _fullscreenOrientation;
|
NSString * _fullscreenOrientation;
|
||||||
BOOL _fullscreenPlayerPresented;
|
BOOL _fullscreenPlayerPresented;
|
||||||
NSString *_filter;
|
NSString *_filterName;
|
||||||
UIViewController * _presentingViewController;
|
UIViewController * _presentingViewController;
|
||||||
#if __has_include(<react-native-video/RCTVideoCache.h>)
|
#if __has_include(<react-native-video/RCTVideoCache.h>)
|
||||||
RCTVideoCache * _videoCache;
|
RCTVideoCache * _videoCache;
|
||||||
@ -862,7 +862,7 @@ static int const RCTVideoUnset = -1;
|
|||||||
[self setResizeMode:_resizeMode];
|
[self setResizeMode:_resizeMode];
|
||||||
[self setRepeat:_repeat];
|
[self setRepeat:_repeat];
|
||||||
[self setPaused:_paused];
|
[self setPaused:_paused];
|
||||||
[self setFilter:_filter];
|
[self setFilter:_filterName];
|
||||||
[self setControls:_controls];
|
[self setControls:_controls];
|
||||||
[self setAllowsExternalPlayback:_allowsExternalPlayback];
|
[self setAllowsExternalPlayback:_allowsExternalPlayback];
|
||||||
}
|
}
|
||||||
@ -1254,24 +1254,14 @@ static int const RCTVideoUnset = -1;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setFilter:(NSString *)filter {
|
- (void)setFilter:(NSString *)filterName {
|
||||||
|
|
||||||
_filter = filter;
|
_filterName = filterName;
|
||||||
|
|
||||||
AVAsset *asset = _playerItem.asset;
|
AVAsset *asset = _playerItem.asset;
|
||||||
|
|
||||||
if (asset != nil) {
|
if (asset != nil) {
|
||||||
|
|
||||||
NSDictionary *filters = @{
|
|
||||||
@"Normal": @"",
|
|
||||||
@"Country": @"CISepiaTone",
|
|
||||||
@"Winter": @"CIPhotoEffectProcess",
|
|
||||||
@"Black N White": @"CIPhotoEffectNoir",
|
|
||||||
@"Sunrise": @"CIPhotoEffectTransfer",
|
|
||||||
@"Artistic": @"CIColorPosterize",
|
|
||||||
};
|
|
||||||
|
|
||||||
NSString *filterName = filters[filter];
|
|
||||||
CIFilter *filter = [CIFilter filterWithName:filterName];
|
CIFilter *filter = [CIFilter filterWithName:filterName];
|
||||||
|
|
||||||
_playerItem.videoComposition = [AVVideoComposition
|
_playerItem.videoComposition = [AVVideoComposition
|
||||||
|
Loading…
Reference in New Issue
Block a user