Switch Filters with VideoCore VCSimpleSession

338 Views Asked by At

There is a filter property on VCSimpleSession of type VCFilter:

typedef NS_ENUM(NSInteger, VCFilter) {
    VCFilterNormal,
    VCFilterGray,
    VCFilterInvertColors,
    VCFilterSepia,
    VCFilterFisheye,
    VCFilterGlow
};

Where is the implementation for these filters? How can I use them?

1

There are 1 best solutions below

2
On BEST ANSWER

Each filter lives in their own file in filters/Basic directory, and added at runtime with FilterFactory.cpp:

FilterFactory::FilterFactory() {
    {
        filters::BasicVideoFilterBGRA b;
        filters::GrayscaleVideoFilter g;
        filters::InvertColorsVideoFilter i;
        filters::SepiaVideoFilter s;
        filters::FisheyeVideoFilter f;
        filters::GlowVideoFilter gl;
    }
}

You can set the filters using the setFilter: method. The sample app iterates through all of the filters with a UIButton like so:

- (IBAction)btnFilterTouch:(id)sender {
    switch (_session.filter) {
        case VCFilterNormal:
            [_session setFilter:VCFilterGray];
            break;
        case VCFilterGray:
            [_session setFilter:VCFilterInvertColors];
            break;
        case VCFilterInvertColors:
            [_session setFilter:VCFilterSepia];
            break;
        case VCFilterSepia:
            [_session setFilter:VCFilterFisheye];
            break;
        case VCFilterFisheye:
            [_session setFilter:VCFilterGlow];
            break;
        case VCFilterGlow:
            [_session setFilter:VCFilterNormal];
            break;
        default:
            break;
    }
}