diff options
| author | Danila Malyutin <d.maljutin@yandex.ru> | 2023-05-14 01:35:01 +0400 |
|---|---|---|
| committer | Danila Malyutin <d.maljutin@yandex.ru> | 2023-05-22 01:43:44 +0400 |
| commit | 7701a00a0277ad59c1b743b9aa14c6861624b847 (patch) | |
| tree | 9214202ee896671be1301d0993931a74686955e5 /src/video_core/host1x/codecs/codec.h | |
| parent | f82efe9f65c5fc7aa2bba88ae38e211b98590efd (diff) | |
Add support for deinterlaced videos playback
This is a follow up to #10254 to improve the playback of cut scenes in Layton's Mystery Journey.
It uses ffmpeg's yadif filter for deinterlacing.
Diffstat (limited to 'src/video_core/host1x/codecs/codec.h')
| -rw-r--r-- | src/video_core/host1x/codecs/codec.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/video_core/host1x/codecs/codec.h b/src/video_core/host1x/codecs/codec.h index 0d45fb7fe..06fe00a4b 100644 --- a/src/video_core/host1x/codecs/codec.h +++ b/src/video_core/host1x/codecs/codec.h @@ -15,6 +15,7 @@ extern "C" { #pragma GCC diagnostic ignored "-Wconversion" #endif #include <libavcodec/avcodec.h> +#include <libavfilter/avfilter.h> #if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic pop #endif @@ -61,17 +62,24 @@ public: private: void InitializeAvCodecContext(); + void InitializeAvFilters(AVFrame* frame); + void InitializeGpuDecoder(); bool CreateGpuAvDevice(); bool initialized{}; + bool filters_initialized{}; Host1x::NvdecCommon::VideoCodec current_codec{Host1x::NvdecCommon::VideoCodec::None}; const AVCodec* av_codec{nullptr}; AVCodecContext* av_codec_ctx{nullptr}; AVBufferRef* av_gpu_decoder{nullptr}; + AVFilterContext* av_filter_src_ctx{nullptr}; + AVFilterContext* av_filter_sink_ctx{nullptr}; + AVFilterGraph* av_filter_graph{nullptr}; + Host1x::Host1x& host1x; const Host1x::NvdecCommon::NvdecRegisters& state; std::unique_ptr<Decoder::H264> h264_decoder; |
