Skip to content

Commit

Permalink
[Encode] [PDVT-SH] Upstream vp9 encode for PTL
Browse files Browse the repository at this point in the history
PTL vp9e upstream.
  • Loading branch information
MicroYY authored and intel-mediadev committed Feb 26, 2025
1 parent b19d7bb commit 79dc210
Show file tree
Hide file tree
Showing 29 changed files with 3,806 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@

media_include_subdirectory(avc)
media_include_subdirectory(av1)
media_include_subdirectory(vp9)
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* Copyright (c) 2021, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/

//!
//! \file encode_vp9_vdenc_const_settings_xe2_lpm.cpp
//! \brief Defines the common interface for vp9 vdenc const settings
//!

#include "encode_vp9_vdenc_const_settings_xe2_lpm.h"
#include "encode_utils.h"

namespace encode
{

const uint32_t EncodeVp9VdencConstSettingsXe2_Lpm::m_numMergeCandidateCu64x64Xe2_Lpm[] = {0, 3, 3, 3, 3, 3, 2, 2};
const uint32_t EncodeVp9VdencConstSettingsXe2_Lpm::m_numMergeCandidateCu32x32Xe2_Lpm[] = {0, 3, 3, 3, 3, 3, 2, 2};
const uint32_t EncodeVp9VdencConstSettingsXe2_Lpm::m_numMergeCandidateCu16x16Xe2_Lpm[] = {0, 3, 3, 2, 2, 2, 2, 2};
const uint32_t EncodeVp9VdencConstSettingsXe2_Lpm::m_numMergeCandidateCu8x8Xe2_Lpm[] = {0, 3, 3, 2, 2, 2, 1, 1};
const uint8_t EncodeVp9VdencConstSettingsXe2_Lpm::m_numImePredictorsXe2_Lpm[] = {0, 12, 12, 8, 8, 8, 4, 4};


MOS_STATUS EncodeVp9VdencConstSettingsXe2_Lpm::SetTUSettings()
{
ENCODE_FUNC_CALL();
ENCODE_CHK_NULL_RETURN(m_featureSetting);
MOS_STATUS eStatus = MOS_STATUS_SUCCESS;

auto setting = static_cast<Vp9VdencFeatureSettings *>(m_featureSetting);
ENCODE_CHK_NULL_RETURN(setting);

setting->NumMergeCandidateCu8x8 = (uint32_t *)m_numMergeCandidateCu8x8Xe2_Lpm;
setting->NumMergeCandidateCu16x16 = (uint32_t *)m_numMergeCandidateCu16x16Xe2_Lpm;
setting->NumMergeCandidateCu32x32 = (uint32_t *)m_numMergeCandidateCu32x32Xe2_Lpm;
setting->NumMergeCandidateCu64x64 = (uint32_t *)m_numMergeCandidateCu64x64Xe2_Lpm;
setting->NumImePredictors = (uint8_t *)m_numImePredictorsXe2_Lpm;

return eStatus;
}

} // namespace encode
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
* Copyright (c) 2021, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/

//!
//! \file encode_vp9_vdenc_const_settings_xe2_lpm.h
//! \brief Defines the common interface for vp9 vdenc const settings
//!

#ifndef __ENCODE_VP9_VDENC_CONST_SETTINGS_XE2_LPM_H__
#define __ENCODE_VP9_VDENC_CONST_SETTINGS_XE2_LPM_H__
#include <vector>
#include "encode_vp9_vdenc_const_settings.h"

namespace encode
{

class EncodeVp9VdencConstSettingsXe2_Lpm : public EncodeVp9VdencConstSettings
{
public:
//!
//! \brief EncodeVp9VdencConstSettingsXe2_Lpm deconstructor
//!
virtual ~EncodeVp9VdencConstSettingsXe2_Lpm() {}

protected:
//!
//! \brief Prepare TU related settings
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
//!
virtual MOS_STATUS SetTUSettings() override;

static const uint32_t m_numMergeCandidateCu64x64Xe2_Lpm[NUM_TARGET_USAGE_MODES + 1];
static const uint32_t m_numMergeCandidateCu32x32Xe2_Lpm[NUM_TARGET_USAGE_MODES + 1];
static const uint32_t m_numMergeCandidateCu16x16Xe2_Lpm[NUM_TARGET_USAGE_MODES + 1];
static const uint32_t m_numMergeCandidateCu8x8Xe2_Lpm[NUM_TARGET_USAGE_MODES + 1];
static const uint8_t m_numImePredictorsXe2_Lpm[NUM_TARGET_USAGE_MODES + 1];

MEDIA_CLASS_DEFINE_END(encode__EncodeVp9VdencConstSettingsXe2_Lpm)
};

} // namespace encode
#endif // !__ENCODE_VP9_VDENC_CONST_SETTINGS_XE2_LPM_H__
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Copyright (c) 2021-2022, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/

//!
//! \file encode_vp9_vdenc_feature_manager_xe2_lpm.cpp
//! \brief Defines the common interface for vp9 vdenc feature manager
//!

#include "encode_vp9_vdenc_feature_manager_xe2_lpm.h"

namespace encode
{

MOS_STATUS EncodeVp9VdencFeatureManagerXe2_Lpm::CreateConstSettings()
{
ENCODE_FUNC_CALL();
m_featureConstSettings = MOS_New(EncodeVp9VdencConstSettingsXe2_Lpm);
return MOS_STATUS_SUCCESS;
}

} // namespace encode
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
* Copyright (c) 2021-2022, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/

//!
//! \file encode_vp9_vdenc_feature_manager_xe2_lpm.h
//! \brief Defines the common interface for vp9 vdenc feature manager
//!

#ifndef __ENCODE_VP9_VDENC_FEATURE_MANAGER_XE2_LPM_H__
#define __ENCODE_VP9_VDENC_FEATURE_MANAGER_XE2_LPM_H__
#include <vector>
#include "encode_vp9_vdenc_feature_manager.h"
#include "encode_vp9_vdenc_const_settings_xe2_lpm.h"

namespace encode
{
class EncodeVp9VdencFeatureManagerXe2_Lpm : public EncodeVp9VdencFeatureManager
{
public:
//!
//! \brief EncodeVp9VdencFeatureManagerXe2_Lpm constructor
//! \param [in] allocator
//! Pointer to EncodeAllocator
//! \param [in] hwInterface
//! Pointer to CodechalHwInterface
//! \param [in] trackedBuf
//! Pointer to TrackedBuffer
//! \param [in] recycleBuf
//! Pointer to RecycleResource
//!
EncodeVp9VdencFeatureManagerXe2_Lpm(EncodeAllocator *allocator,
CodechalHwInterfaceNext *hwInterface,
TrackedBuffer *trackedBuf,
RecycleResource *recycleBuf):
EncodeVp9VdencFeatureManager(allocator, hwInterface, trackedBuf, recycleBuf){};

//!
//! \brief EncodeVp9VdencFeatureManagerXe2_Lpm deconstructor
//!
virtual ~EncodeVp9VdencFeatureManagerXe2_Lpm(){};

protected:
//!
//! \brief Create feature const settings
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
//!
MOS_STATUS CreateConstSettings();

MEDIA_CLASS_DEFINE_END(encode__EncodeVp9VdencFeatureManagerXe2_Lpm)
};

} // namespace encode
#endif // !__ENCODE_VP9_VDENC_FEATURE_MANAGER_XE2_LPM_H__
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Copyright (c) 2021-2022, Intel Corporation
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

#encode

set(TMP_SOURCES_
${CMAKE_CURRENT_LIST_DIR}/encode_vp9_vdenc_feature_manager_xe2_lpm.cpp
${CMAKE_CURRENT_LIST_DIR}/encode_vp9_vdenc_const_settings_xe2_lpm.cpp
)

set(TMP_HEADERS_
${CMAKE_CURRENT_LIST_DIR}/encode_vp9_vdenc_feature_manager_xe2_lpm.h
${CMAKE_CURRENT_LIST_DIR}/encode_vp9_vdenc_const_settings_xe2_lpm.h
)

set(SOFTLET_ENCODE_VP9_HEADERS_
${SOFTLET_ENCODE_VP9_HEADERS_}
${TMP_HEADERS_}
)

set(SOFTLET_ENCODE_VP9_SOURCES_
${SOFTLET_ENCODE_VP9_SOURCES_}
${TMP_SOURCES_}
)

source_group( CodecHalNext\\Xe2_LPM\\Encode FILES ${TMP_SOURCES_} ${TMP_HEADERS_} )

set(TMP_SOURCES_ "")
set(TMP_HEADERS_ "")

set(SOFTLET_ENCODE_VP9_PRIVATE_INCLUDE_DIRS_
${SOFTLET_ENCODE_VP9_PRIVATE_INCLUDE_DIRS_}
${CMAKE_CURRENT_LIST_DIR}
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright (c) 2021, Intel Corporation
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

media_include_subdirectory(features)
media_include_subdirectory(packet)
media_include_subdirectory(pipeline)
Loading

0 comments on commit 79dc210

Please sign in to comment.