source: SHVCSoftware/branches/0.1.1-bugfix/source/Lib/TLibDecoder/TDecGop.h @ 690

Last change on this file since 690 was 2, checked in by seregin, 12 years ago

Initial import by Vadim Seregin <vseregin@…>

File size: 5.3 KB
Line 
1/* The copyright in this software is being made available under the BSD
2 * License, included below. This software may be subject to other third party
3 * and contributor rights, including patent rights, and no such rights are
4 * granted under this license. 
5 *
6 * Copyright (c) 2010-2012, ITU/ISO/IEC
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 *  * Redistributions of source code must retain the above copyright notice,
13 *    this list of conditions and the following disclaimer.
14 *  * Redistributions in binary form must reproduce the above copyright notice,
15 *    this list of conditions and the following disclaimer in the documentation
16 *    and/or other materials provided with the distribution.
17 *  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
18 *    be used to endorse or promote products derived from this software without
19 *    specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34/** \file     TDecGop.h
35    \brief    GOP decoder class (header)
36*/
37
38#ifndef __TDECGOP__
39#define __TDECGOP__
40
41#if _MSC_VER > 1000
42#pragma once
43#endif // _MSC_VER > 1000
44
45#include "TLibCommon/CommonDef.h"
46#include "TLibCommon/TComBitStream.h"
47#include "TLibCommon/TComList.h"
48#include "TLibCommon/TComPicYuv.h"
49#include "TLibCommon/TComPic.h"
50#include "TLibCommon/TComLoopFilter.h"
51#include "TLibCommon/TComAdaptiveLoopFilter.h"
52#include "TLibCommon/TComSampleAdaptiveOffset.h"
53
54#include "TDecEntropy.h"
55#include "TDecSlice.h"
56#include "TDecBinCoder.h"
57#include "TDecBinCoderCABAC.h"
58
59//! \ingroup TLibDecoder
60//! \{
61
62// ====================================================================================================================
63// Class definition
64// ====================================================================================================================
65
66/// GOP decoder class
67class TDecGop
68{
69private:
70  Int                   m_iGopSize;
71  TComList<TComPic*>    m_cListPic;         //  Dynamic buffer
72 
73  //  Access channel
74  TDecEntropy*          m_pcEntropyDecoder;
75  TDecSbac*             m_pcSbacDecoder;
76  TDecBinCABAC*         m_pcBinCABAC;
77  TDecSbac*             m_pcSbacDecoders; // independant CABAC decoders
78  TDecBinCABAC*         m_pcBinCABACs;
79  TDecCavlc*            m_pcCavlcDecoder;
80  TDecSlice*            m_pcSliceDecoder;
81  TComLoopFilter*       m_pcLoopFilter;
82 
83#if !REMOVE_ALF
84  // Adaptive Loop filter
85  TComAdaptiveLoopFilter*       m_pcAdaptiveLoopFilter;
86#endif
87  TComSampleAdaptiveOffset*     m_pcSAO;
88  Double                m_dDecTime;
89  Int                   m_decodedPictureHashSEIEnabled;  ///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message
90
91  //! list that contains the CU address of each slice plus the end address
92  std::vector<Int> m_sliceStartCUAddress;
93  std::vector<Bool> m_LFCrossSliceBoundaryFlag;
94#if !REMOVE_ALF
95  std::vector<Bool> m_sliceAlfEnabled[3];
96#endif
97
98#if SVC_EXTENSION
99  UInt                  m_layerId;
100  TDecTop**             m_ppcTDecTop;
101#endif
102public:
103  TDecGop();
104  virtual ~TDecGop();
105 
106#if SVC_EXTENSION
107Void  init      ( TDecTop**               ppcDecTop,
108                  TDecEntropy*            pcEntropyDecoder, 
109#else
110  Void  init    ( TDecEntropy*            pcEntropyDecoder, 
111#endif
112                 TDecSbac*               pcSbacDecoder, 
113                 TDecBinCABAC*           pcBinCABAC,
114                 TDecCavlc*              pcCavlcDecoder, 
115                 TDecSlice*              pcSliceDecoder, 
116                 TComLoopFilter*         pcLoopFilter,
117#if !REMOVE_ALF
118                 TComAdaptiveLoopFilter* pcAdaptiveLoopFilter,
119#endif
120                 TComSampleAdaptiveOffset* pcSAO
121                 );
122#if SVC_EXTENSION
123  Void  create  (UInt layerId);
124#else
125  Void  create  ();
126#endif
127  Void  destroy ();
128//  Void  decompressGop(TComInputBitstream* pcBitstream, TComPic*& rpcPic, Bool bExecuteDeblockAndAlf );
129  Void  decompressSlice(TComInputBitstream* pcBitstream, TComPic*& rpcPic );
130  Void  filterPicture  (TComPic*& rpcPic );
131  Void  setGopSize( Int i) { m_iGopSize = i; }
132
133  void setDecodedPictureHashSEIEnabled(Int enabled) { m_decodedPictureHashSEIEnabled = enabled; }
134#if SVC_EXTENSION
135  TDecTop*   getLayerDec(UInt LayerId)  { return m_ppcTDecTop[LayerId]; }
136#endif
137
138};
139
140//! \}
141
142#endif // !defined(AFX_TDECGOP_H__29440B7A_7CC0_48C7_8DD5_1A531D3CED45__INCLUDED_)
143
Note: See TracBrowser for help on using the repository browser.