Skip to content

Basic Filters

Basic Concepts

GPUPixel is designed with a filter chain architecture, where video or image data flows through a series of filters to achieve various effects. The main components include:

  • Source: Input for video/image data (e.g., SourceRawData)
  • Filters: Processing units that apply effects (e.g., BeautyFaceFilter, FaceReshapeFilter)
  • Sink: Output destination (e.g., SinkRawData)

Initialization

Before using GPUPixel, you need to initialize the context and create the filter chain:

Creating a Filter Chain

A typical filter chain setup includes creating sources, filters, and targets, then linking them together:

cpp
// Declare components
std::shared_ptr<SourceRawData> source_raw_input_;
std::shared_ptr<BeautyFaceFilter> beauty_face_filter_;
std::shared_ptr<SinkRawData> target_raw_output_;

// Create source
source_raw_input_ = SourceRawData::Create();

// Create filters
beauty_face_filter_ = BeautyFaceFilter::Create();

// Create sink
target_raw_output_ = SinkRawData::Create();

// Link the chain
source_raw_input_->AddSink(beauty_face_filter_)
                    ->AddSink(target_raw_output_);

Cleanup

When you're done with GPUPixel, you should clean up resources:

cpp
// Clean up GPUPixel resources
// Release your filter references
source_raw_input_.reset();
beauty_face_filter_.reset();
target_raw_output_.reset();
// Other filters...

Released under the Apache-2.0 License.