/* * Oak Video Editor - Non-Linear Video Editor * Copyright (C) 2025 Olive CE Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ // // Created by mikesolar on 25-10-1. // #ifndef OLIVECLIP_H #define OLIVECLIP_H #include "image.h" #include "ofxCore.h" #include "ofxhClip.h" #include "render/texture.h" #include "render/videoparams.h" #include #include namespace olive { namespace plugin { class OliveClipInstance: public OFX::Host::ImageEffect::ClipInstance { public: OliveClipInstance(OFX::Host::ImageEffect::Instance* effectInstance, OFX::Host::ImageEffect::ClipDescriptor& desc,VideoParams ¶ms) : ClipInstance(effectInstance, desc) , name_(desc.getName()) { params_ = params; } OFX::Host::ImageEffect::Image* getOutputImage(OfxTime time); const std::string &getUnmappedBitDepth() const override; const std::string &getUnmappedComponents() const override; const std::string &getPremult() const override; double getAspectRatio() const override; double getFrameRate() const override; void getFrameRange(double &startFrame, double &endFrame) const override; const std::string &getFieldOrder() const override; bool getConnected() const override; double getUnmappedFrameRate() const override; void getUnmappedFrameRange(double &startFrame, double &endFrame) const override; bool getContinuousSamples() const override; OFX::Host::ImageEffect::Image* getImage(OfxTime time, const OfxRectD *optionalBounds) override; OfxRectD getRegionOfDefinition(OfxTime time) const override; void setRegionOfDefinition(OfxRectD regionOfDefinition, OfxTime time); void setDefaultRegionOfDefinition(OfxRectD regionOfDefinition); void setParams(const VideoParams ¶ms); # ifdef OFX_SUPPORTS_OPENGLRENDER OFX::Host::ImageEffect::Texture* loadTexture(OfxTime time, const char *format, const OfxRectD *optionalBounds) override; # endif void setInputTexture(TexturePtr texture, OfxTime time); void setOutputTexture(TexturePtr texture, OfxTime time); private: VideoParams params_; QMap regionOfDefinitions_; OfxRectD defaultRegionOfDefinitions_; std::string name_; QMap images_; #ifdef OFX_SUPPORTS_OPENGLRENDER QMap input_textures_; QMap output_textures_; #endif }; } } #endif //OLIVECLIP_H