OpenShot Library | libopenshot
0.4.0
|
Go to the documentation of this file.
22 init_effect_details();
29 init_effect_details();
33 void Deinterlace::init_effect_details()
41 info.
description =
"Remove interlacing from a video (i.e. even or odd horizontal lines)";
48 std::shared_ptr<openshot::Frame>
Deinterlace::GetFrame(std::shared_ptr<openshot::Frame> frame, int64_t frame_number)
51 int original_width = frame->GetImage()->width();
52 int original_height = frame->GetImage()->height();
55 std::shared_ptr<QImage> image = frame->GetImage();
56 const unsigned char* pixels = image->bits();
59 QImage deinterlaced_image(image->width(), image->height() / 2, QImage::Format_RGBA8888_Premultiplied);
60 const unsigned char* deinterlaced_pixels = deinterlaced_image.bits();
66 for (
int row =
start; row < image->height(); row += 2) {
67 memcpy((
unsigned char*)deinterlaced_pixels, pixels + (row * image->bytesPerLine()), image->bytesPerLine());
68 deinterlaced_pixels += image->bytesPerLine();
72 image = std::make_shared<QImage>(deinterlaced_image.scaled(
73 original_width, original_height,
74 Qt::IgnoreAspectRatio, Qt::FastTransformation));
77 frame->AddImage(image);
96 root[
"isOdd"] = isOdd;
112 catch (
const std::exception& e)
115 throw InvalidJSON(
"JSON is invalid (missing keys or invalid data types)");
126 if (!root[
"isOdd"].isNull())
127 isOdd = root[
"isOdd"].asBool();
137 root[
"isOdd"] =
add_property_json(
"Is Odd Frame", isOdd,
"bool",
"", NULL, 0, 1,
true, requested_frame);
142 return root.toStyledString();
Json::Value add_property_json(std::string name, float value, std::string type, std::string memo, const Keyframe *keyframe, float min_value, float max_value, bool readonly, int64_t requested_frame) const
Generate JSON for a property.
const Json::Value stringToJson(const std::string value)
Json::Value JsonValue() const override
Generate Json::Value for this object.
EffectInfoStruct info
Information about the current effect.
This namespace is the default namespace for all code in the openshot library.
std::string Json() const override
Generate JSON string of this object.
Json::Value add_property_choice_json(std::string name, int value, int selected_value) const
Generate JSON choice for a property (dropdown properties)
virtual Json::Value JsonValue() const
Generate Json::Value for this object.
Deinterlace()
Default constructor, useful when using Json to load the effect properties.
std::string PropertiesJSON(int64_t requested_frame) const override
Json::Value BasePropertiesJSON(int64_t requested_frame) const
Generate JSON object of base properties (recommended to be used by all effects)
Exception for invalid JSON.
bool has_audio
Determines if this effect manipulates the audio of a frame.
float start
The position in seconds to start playing (used to trim the beginning of a clip)
std::string class_name
The class name of the effect.
std::string description
The description of this effect and what it does.
bool has_video
Determines if this effect manipulates the image of a frame.
void SetJson(const std::string value) override
Load JSON string into this object.
void SetJsonValue(const Json::Value root) override
Load Json::Value into this object.
std::shared_ptr< openshot::Frame > GetFrame(int64_t frame_number) override
This method is required for all derived classes of ClipBase, and returns a new openshot::Frame object...
std::string name
The name of the effect.
Header file for De-interlace class.
Header file for all Exception classes.
virtual void SetJsonValue(const Json::Value root)
Load Json::Value into this object.