378 changes: 336 additions & 42 deletions mythtv/libs/libmythtv/mythnvdeccontext.cpp

Large diffs are not rendered by default.

37 changes: 35 additions & 2 deletions mythtv/libs/libmythtv/mythnvdeccontext.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,27 @@
#define MYTHNVDECCONTEXT_H

// MythTV
#include "mythframe.h"
#include "mythcodecid.h"
#include "mythcodeccontext.h"

// FFmpeg
extern "C" {
#include "libavutil/pixfmt.h"
#include "libavutil/hwcontext.h"
#include "libavcodec/avcodec.h"
#include "libavutil/pixdesc.h"
#include "compat/cuda/dynlink_loader.h"
}

class MythNVDECContext
class MythNVDECContext : public MythCodecContext
{
public:
static int HwDecoderInit (AVCodecContext *Context);
explicit MythNVDECContext(MythCodecID CodecID);
int HwDecoderInit (AVCodecContext *Context) override;
void SetDeinterlacing (AVCodecContext *Context,
VideoDisplayProfile *Profile, bool DoubleRate) override;
void PostProcessFrame (AVCodecContext *Context, VideoFrame *Frame) override;
static MythCodecID GetSupportedCodec (AVCodecContext *CodecContext,
AVCodec **Codec,
const QString &Decoder,
Expand All @@ -26,6 +33,32 @@ class MythNVDECContext
AVFrame *Frame, int Flags);
static int InitialiseDecoder (AVCodecContext *Context);
static bool HaveNVDEC (void);

private:
class MythNVDECCaps
{
public:
MythNVDECCaps(cudaVideoCodec Codec, uint Depth, cudaVideoChromaFormat Format,
QSize Minimum, QSize Maximum, uint MacroBlocks);

cudaVideoCodec m_codec;
uint m_depth;
cudaVideoChromaFormat m_format;
QSize m_minimum;
QSize m_maximum;
uint m_macroBlocks;
};

static QMutex* s_NVDECLock;
static bool s_NVDECAvailable;
static vector<MythNVDECCaps> s_NVDECDecoderCaps;
static void NVDECCheck (void);
static void NVDECCheckCallback (void *Wait, void*, void*);

private:
MythCodecID m_codecID { kCodec_NONE };
MythDeintType m_deinterlacer { DEINT_NONE };
bool m_deinterlacer2x { false };
};

#endif // MYTHNVDECCONTEXT_H
109 changes: 0 additions & 109 deletions mythtv/libs/libmythtv/nvdeccontext.cpp

This file was deleted.

52 changes: 0 additions & 52 deletions mythtv/libs/libmythtv/nvdeccontext.h

This file was deleted.