1 /*===================== begin_copyright_notice ==================================
2 
3 # Copyright (c) 2020-2021, Intel Corporation
4 
5 # Permission is hereby granted, free of charge, to any person obtaining a
6 # copy of this software and associated documentation files (the "Software"),
7 # to deal in the Software without restriction, including without limitation
8 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 # and/or sell copies of the Software, and to permit persons to whom the
10 # Software is furnished to do so, subject to the following conditions:
11 
12 # The above copyright notice and this permission notice shall be included
13 # in all copies or substantial portions of the Software.
14 
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
19 # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20 # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21 # OTHER DEALINGS IN THE SOFTWARE.
22 
23 ======================= end_copyright_notice ==================================*/
24 //!
25 //! \file     codechal_decode_vc1_xe_xpm.h
26 //! \brief    Implements the decode interface extension for Xe_XPM VC1.
27 //! \details  Implements all functions required by CodecHal for Xe_XPM VC1 decoding.
28 //!
29 
30 
31 #ifndef __CODECHAL_DECODE_VC1_XE_XPM_H__
32 #define __CODECHAL_DECODE_VC1_XE_XPM_H__
33 
34 #include "codechal_decode_vc1_g12.h"
35 #include "codechal_kernel_base.h"
36 #include "codechal_kernel_olp_mdf_xe_xpm.h"
37 
38 class CodechalKernelOlpMdf;
39 
40 //!
41 //! \class CodechalDecodeVc1Xe_Xpm
42 //! \brief This class defines the member fields, functions etc used by Xe_XPM VC1 decoder.
43 //!
44 class CodechalDecodeVc1Xe_Xpm : public CodechalDecodeVc1G12
45 {
46 public:
47     //!
48     //! \brief  Constructor
49     //! \param    [in] hwInterface
50     //!           Hardware interface
51     //! \param    [in] debugInterface
52     //!           Debug interface
53     //! \param    [in] standardInfo
54     //!           The information of decode standard for this instance
55     //!
56     CodechalDecodeVc1Xe_Xpm(
57         CodechalHwInterface   *hwInterface,
58         CodechalDebugInterface* debugInterface,
59         PCODECHAL_STANDARD_INFO standardInfo);
60 
61     //!
62     //! \brief    Copy constructor
63     //!
64     CodechalDecodeVc1Xe_Xpm(const CodechalDecodeVc1Xe_Xpm&) = delete;
65 
66     //!
67     //! \brief    Copy assignment operator
68     //!
69     CodechalDecodeVc1Xe_Xpm& operator=(const CodechalDecodeVc1Xe_Xpm&) = delete;
70 
71     //!
72     //! \brief  Destructor
73     //!
74     ~CodechalDecodeVc1Xe_Xpm();
75 
76 protected:
77     MOS_STATUS AllocateStandard(
78         CodechalSetting *          settings) override;
79 
80     MOS_STATUS PerformVc1Olp() override;
81 
82     MOS_STATUS HandleSkipFrame() override;
83 
84     CodechalKernelOlpMdf *m_olpMdfKernel = nullptr;
85     MOS_SURFACE           m_olpInYSurface;
86     MOS_SURFACE           m_olpInUVSurface;
87     MOS_SURFACE           m_olpOutYSurface;
88     MOS_SURFACE           m_olpOutUVSurface;
89 };
90 
91 
92 #endif // __CODECHAL_DECODE_VC1_XE_XPM_H__
93