video2x/include/libvideo2x/interpolator_rife.h
k4yt3x 498385274d
feat: add rife as processor option
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-30 00:00:00 +00:00

56 lines
1.4 KiB
C++

#ifndef INTERPOLATOR_RIFE_H
#define INTERPOLATOR_RIFE_H
extern "C" {
#include <libavcodec/avcodec.h>
}
#include "char_defs.h"
#include "processor.h"
#include "rife.h"
// InterpolatorRIFE class definition
class InterpolatorRIFE : public Interpolator {
private:
RIFE *rife_;
int gpuid_;
bool tta_mode_;
bool tta_temporal_mode_;
bool uhd_mode_;
int num_threads_;
bool rife_v2_;
bool rife_v4_;
const StringType model_name_;
AVRational in_time_base_;
AVRational out_time_base_;
AVPixelFormat out_pix_fmt_;
public:
// Constructor
InterpolatorRIFE(
int gpuid = 0,
bool tta_mode = false,
bool tta_temporal_mode = false,
bool uhd_mode = false,
int num_threads = 1,
bool rife_v2 = false,
bool rife_v4 = true,
const StringType model_name = STR("rife-v4.6")
);
// Destructor
virtual ~InterpolatorRIFE() override;
// Initializes the processor with decoder and encoder contexts
int init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVBufferRef *hw_ctx) override;
// Processes an input frame and returns the processed frame
int interpolate(AVFrame *prev_frame, AVFrame *in_frame, AVFrame **out_frame, float time_step)
override;
// Returns the processor's type
ProcessorType get_processor_type() const override { return PROCESSOR_RIFE; }
};
#endif // INTERPOLATOR_RIFE_H