Project import generated by Copybara.

GitOrigin-RevId: 1610e588e497817fae2d9a458093ab6a370e2972
This commit is contained in:
MediaPipe Team
2021-08-18 17:45:46 -07:00
committed by jqtang
parent b899d17f18
commit 710fb3de58
158 changed files with 10104 additions and 1568 deletions
+38 -31
View File
@@ -34,6 +34,13 @@ typedef int DimensionsPacketType[2];
namespace mediapipe {
constexpr char kLeftRightPaddingTag[] = "LEFT_RIGHT_PADDING";
constexpr char kTopBottomPaddingTag[] = "TOP_BOTTOM_PADDING";
constexpr char kOptionsTag[] = "OPTIONS";
constexpr char kOutputDimensionsTag[] = "OUTPUT_DIMENSIONS";
constexpr char kRotationTag[] = "ROTATION";
constexpr char kImageTag[] = "IMAGE";
using Image = mediapipe::Image;
// Scales, rotates, horizontal or vertical flips the image.
@@ -102,41 +109,41 @@ REGISTER_CALCULATOR(GlScalerCalculator);
// static
absl::Status GlScalerCalculator::GetContract(CalculatorContract* cc) {
if (cc->Inputs().HasTag("IMAGE")) {
cc->Inputs().Tag("IMAGE").Set<Image>();
if (cc->Inputs().HasTag(kImageTag)) {
cc->Inputs().Tag(kImageTag).Set<Image>();
} else {
TagOrIndex(&cc->Inputs(), "VIDEO", 0).Set<GpuBuffer>();
}
if (cc->Outputs().HasTag("IMAGE")) {
cc->Outputs().Tag("IMAGE").Set<Image>();
if (cc->Outputs().HasTag(kImageTag)) {
cc->Outputs().Tag(kImageTag).Set<Image>();
} else {
TagOrIndex(&cc->Outputs(), "VIDEO", 0).Set<GpuBuffer>();
}
if (cc->Inputs().HasTag("ROTATION")) {
cc->Inputs().Tag("ROTATION").Set<int>();
if (cc->Inputs().HasTag(kRotationTag)) {
cc->Inputs().Tag(kRotationTag).Set<int>();
}
if (cc->Inputs().HasTag("OUTPUT_DIMENSIONS")) {
cc->Inputs().Tag("OUTPUT_DIMENSIONS").Set<DimensionsPacketType>();
if (cc->Inputs().HasTag(kOutputDimensionsTag)) {
cc->Inputs().Tag(kOutputDimensionsTag).Set<DimensionsPacketType>();
}
MP_RETURN_IF_ERROR(GlCalculatorHelper::UpdateContract(cc));
if (cc->InputSidePackets().HasTag("OPTIONS")) {
cc->InputSidePackets().Tag("OPTIONS").Set<GlScalerCalculatorOptions>();
if (cc->InputSidePackets().HasTag(kOptionsTag)) {
cc->InputSidePackets().Tag(kOptionsTag).Set<GlScalerCalculatorOptions>();
}
if (HasTagOrIndex(&cc->InputSidePackets(), "OUTPUT_DIMENSIONS", 1)) {
TagOrIndex(&cc->InputSidePackets(), "OUTPUT_DIMENSIONS", 1)
.Set<DimensionsPacketType>();
}
if (cc->InputSidePackets().HasTag("ROTATION")) {
if (cc->InputSidePackets().HasTag(kRotationTag)) {
// Counterclockwise rotation.
cc->InputSidePackets().Tag("ROTATION").Set<int>();
cc->InputSidePackets().Tag(kRotationTag).Set<int>();
}
if (cc->Outputs().HasTag("TOP_BOTTOM_PADDING") &&
cc->Outputs().HasTag("LEFT_RIGHT_PADDING")) {
cc->Outputs().Tag("TOP_BOTTOM_PADDING").Set<float>();
cc->Outputs().Tag("LEFT_RIGHT_PADDING").Set<float>();
if (cc->Outputs().HasTag(kTopBottomPaddingTag) &&
cc->Outputs().HasTag(kLeftRightPaddingTag)) {
cc->Outputs().Tag(kTopBottomPaddingTag).Set<float>();
cc->Outputs().Tag(kLeftRightPaddingTag).Set<float>();
}
return absl::OkStatus();
}
@@ -187,8 +194,8 @@ absl::Status GlScalerCalculator::Open(CalculatorContext* cc) {
dst_width_ = dimensions[0];
dst_height_ = dimensions[1];
}
if (cc->InputSidePackets().HasTag("ROTATION")) {
rotation_ccw = cc->InputSidePackets().Tag("ROTATION").Get<int>();
if (cc->InputSidePackets().HasTag(kRotationTag)) {
rotation_ccw = cc->InputSidePackets().Tag(kRotationTag).Get<int>();
}
MP_RETURN_IF_ERROR(FrameRotationFromInt(&rotation_, rotation_ccw));
@@ -197,22 +204,22 @@ absl::Status GlScalerCalculator::Open(CalculatorContext* cc) {
}
absl::Status GlScalerCalculator::Process(CalculatorContext* cc) {
if (cc->Inputs().HasTag("OUTPUT_DIMENSIONS")) {
if (cc->Inputs().Tag("OUTPUT_DIMENSIONS").IsEmpty()) {
if (cc->Inputs().HasTag(kOutputDimensionsTag)) {
if (cc->Inputs().Tag(kOutputDimensionsTag).IsEmpty()) {
// OUTPUT_DIMENSIONS input stream is specified, but value is missing.
return absl::OkStatus();
}
const auto& dimensions =
cc->Inputs().Tag("OUTPUT_DIMENSIONS").Get<DimensionsPacketType>();
cc->Inputs().Tag(kOutputDimensionsTag).Get<DimensionsPacketType>();
dst_width_ = dimensions[0];
dst_height_ = dimensions[1];
}
return helper_.RunInGlContext([this, cc]() -> absl::Status {
const auto& input =
cc->Inputs().HasTag("IMAGE")
? cc->Inputs().Tag("IMAGE").Get<Image>().GetGpuBuffer()
cc->Inputs().HasTag(kImageTag)
? cc->Inputs().Tag(kImageTag).Get<Image>().GetGpuBuffer()
: TagOrIndex(cc->Inputs(), "VIDEO", 0).Get<GpuBuffer>();
QuadRenderer* renderer = nullptr;
GlTexture src1;
@@ -254,8 +261,8 @@ absl::Status GlScalerCalculator::Process(CalculatorContext* cc) {
RET_CHECK(renderer) << "Unsupported input texture type";
// Override input side packet if ROTATION input packet is provided.
if (cc->Inputs().HasTag("ROTATION")) {
int rotation_ccw = cc->Inputs().Tag("ROTATION").Get<int>();
if (cc->Inputs().HasTag(kRotationTag)) {
int rotation_ccw = cc->Inputs().Tag(kRotationTag).Get<int>();
MP_RETURN_IF_ERROR(FrameRotationFromInt(&rotation_, rotation_ccw));
}
@@ -263,18 +270,18 @@ absl::Status GlScalerCalculator::Process(CalculatorContext* cc) {
int dst_height;
GetOutputDimensions(src1.width(), src1.height(), &dst_width, &dst_height);
if (cc->Outputs().HasTag("TOP_BOTTOM_PADDING") &&
cc->Outputs().HasTag("LEFT_RIGHT_PADDING")) {
if (cc->Outputs().HasTag(kTopBottomPaddingTag) &&
cc->Outputs().HasTag(kLeftRightPaddingTag)) {
float top_bottom_padding;
float left_right_padding;
GetOutputPadding(src1.width(), src1.height(), dst_width, dst_height,
&top_bottom_padding, &left_right_padding);
cc->Outputs()
.Tag("TOP_BOTTOM_PADDING")
.Tag(kTopBottomPaddingTag)
.AddPacket(
MakePacket<float>(top_bottom_padding).At(cc->InputTimestamp()));
cc->Outputs()
.Tag("LEFT_RIGHT_PADDING")
.Tag(kLeftRightPaddingTag)
.AddPacket(
MakePacket<float>(left_right_padding).At(cc->InputTimestamp()));
}
@@ -304,9 +311,9 @@ absl::Status GlScalerCalculator::Process(CalculatorContext* cc) {
glFlush();
if (cc->Outputs().HasTag("IMAGE")) {
if (cc->Outputs().HasTag(kImageTag)) {
auto output = dst.GetFrame<Image>();
cc->Outputs().Tag("IMAGE").Add(output.release(), cc->InputTimestamp());
cc->Outputs().Tag(kImageTag).Add(output.release(), cc->InputTimestamp());
} else {
auto output = dst.GetFrame<GpuBuffer>();
TagOrIndex(&cc->Outputs(), "VIDEO", 0)