| OpenShot Library | libopenshot
    0.4.0
    | 
 
 
 
Go to the documentation of this file.
   23     init_effect_details();
 
   30     init_effect_details();
 
   34 void Deinterlace::init_effect_details()
 
   42     info.
description = 
"Remove interlacing from a video (i.e. even or odd horizontal lines)";
 
   49 std::shared_ptr<openshot::Frame> 
Deinterlace::GetFrame(std::shared_ptr<openshot::Frame> frame, int64_t frame_number)
 
   52     int original_width = frame->GetImage()->width();
 
   53     int original_height = frame->GetImage()->height();
 
   56     auto image           = frame->GetImage();
 
   57     const unsigned char* pixels = image->bits();
 
   58     int line_bytes       = image->bytesPerLine();
 
   61     int start = isOdd ? 1 : 0;
 
   66     int rows_to_copy = (original_height - 
start + 1) / 2;
 
   69     QImage deinterlaced_image(
 
   72         QImage::Format_RGBA8888_Premultiplied
 
   74     unsigned char* deinterlaced_pixels = deinterlaced_image.bits();
 
   78 #pragma omp parallel for 
   79     for (
int i = 0; i < rows_to_copy; i++) {
 
   80         int row = 
start + 2 * i;
 
   81         const unsigned char* src = pixels + (row * line_bytes);
 
   82         unsigned char* dst       = deinterlaced_pixels + (i * line_bytes);
 
   83         memcpy(dst, src, line_bytes);
 
   87     image = std::make_shared<QImage>(deinterlaced_image.scaled(
 
   88         original_width, original_height,
 
   89         Qt::IgnoreAspectRatio, Qt::FastTransformation));
 
   92     frame->AddImage(image);
 
  111     root[
"isOdd"] = isOdd;
 
  127     catch (
const std::exception& e)
 
  130         throw InvalidJSON(
"JSON is invalid (missing keys or invalid data types)");
 
  141     if (!root[
"isOdd"].isNull())
 
  142         isOdd = root[
"isOdd"].asBool();
 
  152     root[
"isOdd"] = 
add_property_json(
"Is Odd Frame", isOdd, 
"bool", 
"", NULL, 0, 1, 
false, requested_frame);
 
  157     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.