Skip to content

Commit

Permalink
[VPP] VFI support 8x/16x and code refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
MicroYY authored and gfxVPLsdm committed Aug 9, 2024
1 parent 8d5a2e1 commit 6751494
Show file tree
Hide file tree
Showing 2 changed files with 225 additions and 186 deletions.
24 changes: 11 additions & 13 deletions _studio/mfx_lib/vpp/include/mfx_vpp_ai_frame_interpolation.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class MFXVideoFrameInterpolation
enum Ratio {
ratio_2x = 2,
ratio_4x = 4,
ratio_8x = 8,
ratio_16x = 16,
ratio_unsupported = -1
};

Expand All @@ -63,6 +65,11 @@ class MFXVideoFrameInterpolation
mfxStatus AddTaskQueue(mfxU32 taskIndex);

private:
mfxStatus ConfigureFrameRate(
mfxU16 IOPattern,
const mfxFrameInfo& inInfo,
const mfxFrameInfo& outInfo);
mfxStatus InitFrameInterpolator(VideoCORE* core, const mfxFrameInfo& outInfo);
bool IsVppNeededForVfi(const mfxFrameInfo& inInfo, const mfxFrameInfo& outInfo);
mfxStatus InitVppAndAllocateSurface(
const mfxFrameInfo& inInfo,
Expand All @@ -74,9 +81,8 @@ class MFXVideoFrameInterpolation

mfxStatus DuplicateFrame();
mfxStatus DoInterpolation();
mfxStatus DoInterpolation2x();
mfxStatus DoInterpolation4x();
mfxStatus InterpolateAi(mfxFrameSurface1* bkw, mfxFrameSurface1* fwd, mfxFrameSurface1* out);
mfxStatus DoInterpolation(mfxU16 leftIdx, mfxU16 rightIdx);
mfxStatus InterpolateAi(mfxFrameSurface1& bkw, mfxFrameSurface1& fwd, mfxFrameSurface1& out);

VideoCORE* m_core;

Expand All @@ -87,13 +93,8 @@ class MFXVideoFrameInterpolation

mfxU16 m_IOPattern;

mfxFrameAllocResponse m_responseIn;
mfxFrameAllocResponse m_responseOut;
mfxFrameSurface1 m_inputFwd;
mfxFrameSurface1 m_inputBkwd;
mfxFrameSurface1 m_output[4];
mfxMemId m_memIdBkwd;
mfxMemId m_memIdFwd;

//scd related
bool m_enableScd;
Expand All @@ -112,15 +113,12 @@ class MFXVideoFrameInterpolation
std::unique_ptr<MfxVppHelper> m_vppBeforeFi0;
std::unique_ptr<MfxVppHelper> m_vppBeforeFi1;
std::unique_ptr<MfxVppHelper> m_vppAfterFi;

mfxFrameAllocResponse m_rgbSurfForFiIn;
mfxFrameAllocResponse m_rgbSurfForFiOut;
mfxFrameSurface1 m_rgbBkwd;
mfxFrameSurface1 m_rgbfwd;
mfxFrameSurface1 m_rgbFiOut;
mfxFrameSurface1 m_rgbSurfArray[17];
mfxFrameAllocResponse m_outSurfForFi;
mfxFrameSurface1 m_fiOut;


// first taskIndex
// second timestamp
using task = std::pair<mfxU32, mfxU16>;
Expand Down
Loading

0 comments on commit 6751494

Please sign in to comment.