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.
92 lines
2.5 KiB
92 lines
2.5 KiB
7 months ago
|
//
|
||
|
// Copyright (C) 2011 The Android Open Source Project
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
//
|
||
|
|
||
|
// Imports ---------------------------------------------------
|
||
|
@import android.filterpacks.base;
|
||
|
@import android.filterpacks.ui;
|
||
|
@import android.filterpacks.videosrc;
|
||
|
@import android.filterpacks.videoproc;
|
||
|
@import android.filterpacks.videosink;
|
||
|
|
||
|
@setting autoBranch = "synced";
|
||
|
|
||
|
// Externals -------------------------------------------------
|
||
|
|
||
|
@external textureSourceCallback;
|
||
|
@external recordingWidth;
|
||
|
@external recordingHeight;
|
||
|
@external recordingProfile;
|
||
|
@external recordingDoneListener;
|
||
|
|
||
|
@external previewSurfaceTexture;
|
||
|
@external previewWidth;
|
||
|
@external previewHeight;
|
||
|
|
||
|
@external orientation;
|
||
|
|
||
|
@external learningDoneListener;
|
||
|
|
||
|
// Filters ---------------------------------------------------
|
||
|
|
||
|
// Camera input
|
||
|
@filter SurfaceTextureSource source {
|
||
|
sourceListener = $textureSourceCallback;
|
||
|
width = $recordingWidth;
|
||
|
height = $recordingHeight;
|
||
|
closeOnTimeout = true;
|
||
|
}
|
||
|
|
||
|
// Background video input
|
||
|
@filter MediaSource background {
|
||
|
sourceUrl = "no_file_specified";
|
||
|
waitForNewFrame = false;
|
||
|
sourceIsUrl = true;
|
||
|
orientation = $orientation;
|
||
|
}
|
||
|
|
||
|
// Background replacer
|
||
|
@filter BackDropperFilter replacer {
|
||
|
autowbToggle = 1;
|
||
|
learningDoneListener = $learningDoneListener;
|
||
|
orientation = $orientation;
|
||
|
}
|
||
|
|
||
|
// Display output
|
||
|
@filter SurfaceTextureTarget display {
|
||
|
surfaceTexture = $previewSurfaceTexture;
|
||
|
width = $previewWidth;
|
||
|
height = $previewHeight;
|
||
|
}
|
||
|
|
||
|
// Recording output
|
||
|
@filter MediaEncoderFilter recorder {
|
||
|
recordingProfile = $recordingProfile;
|
||
|
recordingDoneListener = $recordingDoneListener;
|
||
|
recording = false;
|
||
|
width = $recordingWidth;
|
||
|
height = $recordingHeight;
|
||
|
// outputFile, orientationHint, inputRegion,
|
||
|
// audioSource, listeners, captureRate
|
||
|
// will be set when recording starts
|
||
|
}
|
||
|
|
||
|
// Connections -----------------------------------------------
|
||
|
@connect source[video] => replacer[video];
|
||
|
@connect background[video] => replacer[background];
|
||
|
@connect replacer[video] => display[frame];
|
||
|
@connect replacer[video] => recorder[videoframe];
|
||
|
|