libbpg-0.9.3
This commit is contained in:
commit
b21307932d
266 changed files with 108670 additions and 0 deletions
181
jctvc/TLibCommon/TComPic.h
Normal file
181
jctvc/TLibCommon/TComPic.h
Normal file
|
@ -0,0 +1,181 @@
|
|||
/* The copyright in this software is being made available under the BSD
|
||||
* License, included below. This software may be subject to other third party
|
||||
* and contributor rights, including patent rights, and no such rights are
|
||||
* granted under this license.
|
||||
*
|
||||
* Copyright (c) 2010-2014, ITU/ISO/IEC
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
|
||||
* be used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/** \file TComPic.h
|
||||
\brief picture class (header)
|
||||
*/
|
||||
|
||||
#ifndef __TCOMPIC__
|
||||
#define __TCOMPIC__
|
||||
|
||||
// Include files
|
||||
#include "CommonDef.h"
|
||||
#include "TComPicSym.h"
|
||||
#include "TComPicYuv.h"
|
||||
#include "TComBitStream.h"
|
||||
|
||||
//! \ingroup TLibCommon
|
||||
//! \{
|
||||
|
||||
// ====================================================================================================================
|
||||
// Class definition
|
||||
// ====================================================================================================================
|
||||
|
||||
/// picture class (symbol + YUV buffers)
|
||||
|
||||
class TComPic
|
||||
{
|
||||
public:
|
||||
typedef enum { PIC_YUV_ORG=0, PIC_YUV_REC=1, PIC_YUV_TRUE_ORG=2, NUM_PIC_YUV=3 } PIC_YUV_T;
|
||||
// TRUE_ORG is the input file without any pre-encoder colour space conversion (but with possible bit depth increment)
|
||||
TComPicYuv* getPicYuvTrueOrg() { return m_apcPicYuv[PIC_YUV_TRUE_ORG]; }
|
||||
|
||||
private:
|
||||
UInt m_uiTLayer; // Temporal layer
|
||||
Bool m_bUsedByCurr; // Used by current picture
|
||||
Bool m_bIsLongTerm; // IS long term picture
|
||||
TComPicSym* m_apcPicSym; // Symbol
|
||||
TComPicYuv* m_apcPicYuv[NUM_PIC_YUV];
|
||||
|
||||
TComPicYuv* m_pcPicYuvPred; // Prediction
|
||||
TComPicYuv* m_pcPicYuvResi; // Residual
|
||||
Bool m_bReconstructed;
|
||||
Bool m_bNeededForOutput;
|
||||
UInt m_uiCurrSliceIdx; // Index of current slice
|
||||
Bool m_bCheckLTMSB;
|
||||
|
||||
Int m_numReorderPics[MAX_TLAYER];
|
||||
Window m_conformanceWindow;
|
||||
Window m_defaultDisplayWindow;
|
||||
|
||||
Bool m_isTop;
|
||||
Bool m_isField;
|
||||
|
||||
std::vector<std::vector<TComDataCU*> > m_vSliceCUDataLink;
|
||||
|
||||
SEIMessages m_SEIs; ///< Any SEI messages that have been received. If !NULL we own the object.
|
||||
|
||||
public:
|
||||
TComPic();
|
||||
virtual ~TComPic();
|
||||
|
||||
Void create( Int iWidth, Int iHeight, ChromaFormat chromaFormatIDC, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth, Window &conformanceWindow, Window &defaultDisplayWindow,
|
||||
Int *numReorderPics,Bool bIsVirtual /*= false*/ );
|
||||
|
||||
virtual Void destroy();
|
||||
|
||||
UInt getTLayer() const { return m_uiTLayer; }
|
||||
Void setTLayer( UInt uiTLayer ) { m_uiTLayer = uiTLayer; }
|
||||
|
||||
Bool getUsedByCurr() const { return m_bUsedByCurr; }
|
||||
Void setUsedByCurr( Bool bUsed ) { m_bUsedByCurr = bUsed; }
|
||||
Bool getIsLongTerm() const { return m_bIsLongTerm; }
|
||||
Void setIsLongTerm( Bool lt ) { m_bIsLongTerm = lt; }
|
||||
Void setCheckLTMSBPresent (Bool b ) {m_bCheckLTMSB=b;}
|
||||
Bool getCheckLTMSBPresent () { return m_bCheckLTMSB;}
|
||||
|
||||
TComPicSym* getPicSym() { return m_apcPicSym; }
|
||||
TComSlice* getSlice(Int i) { return m_apcPicSym->getSlice(i); }
|
||||
Int getPOC() const { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getPOC(); }
|
||||
TComDataCU* getCtu( UInt ctuRsAddr ) { return m_apcPicSym->getCtu( ctuRsAddr ); }
|
||||
const TComDataCU* getCtu( UInt ctuRsAddr ) const { return m_apcPicSym->getCtu( ctuRsAddr ); }
|
||||
|
||||
TComPicYuv* getPicYuvOrg() { return m_apcPicYuv[PIC_YUV_ORG]; }
|
||||
TComPicYuv* getPicYuvRec() { return m_apcPicYuv[PIC_YUV_REC]; }
|
||||
|
||||
TComPicYuv* getPicYuvPred() { return m_pcPicYuvPred; }
|
||||
TComPicYuv* getPicYuvResi() { return m_pcPicYuvResi; }
|
||||
Void setPicYuvPred( TComPicYuv* pcPicYuv ) { m_pcPicYuvPred = pcPicYuv; }
|
||||
Void setPicYuvResi( TComPicYuv* pcPicYuv ) { m_pcPicYuvResi = pcPicYuv; }
|
||||
|
||||
UInt getNumberOfCtusInFrame() const { return m_apcPicSym->getNumberOfCtusInFrame(); }
|
||||
UInt getNumPartInCtuWidth() const { return m_apcPicSym->getNumPartInCtuWidth(); }
|
||||
UInt getNumPartInCtuHeight() const { return m_apcPicSym->getNumPartInCtuHeight(); }
|
||||
UInt getNumPartitionsInCtu() const { return m_apcPicSym->getNumPartitionsInCtu(); }
|
||||
UInt getFrameWidthInCtus() const { return m_apcPicSym->getFrameWidthInCtus(); }
|
||||
UInt getFrameHeightInCtus() const { return m_apcPicSym->getFrameHeightInCtus(); }
|
||||
UInt getMinCUWidth() const { return m_apcPicSym->getMinCUWidth(); }
|
||||
UInt getMinCUHeight() const { return m_apcPicSym->getMinCUHeight(); }
|
||||
|
||||
Int getStride(const ComponentID id) const { return m_apcPicYuv[PIC_YUV_REC]->getStride(id); }
|
||||
Int getComponentScaleX(const ComponentID id) const { return m_apcPicYuv[PIC_YUV_REC]->getComponentScaleX(id); }
|
||||
Int getComponentScaleY(const ComponentID id) const { return m_apcPicYuv[PIC_YUV_REC]->getComponentScaleY(id); }
|
||||
ChromaFormat getChromaFormat() const { return m_apcPicYuv[PIC_YUV_REC]->getChromaFormat(); }
|
||||
Int getNumberValidComponents() const { return m_apcPicYuv[PIC_YUV_REC]->getNumberValidComponents(); }
|
||||
|
||||
Void setReconMark (Bool b) { m_bReconstructed = b; }
|
||||
Bool getReconMark () const { return m_bReconstructed; }
|
||||
Void setOutputMark (Bool b) { m_bNeededForOutput = b; }
|
||||
Bool getOutputMark () const { return m_bNeededForOutput; }
|
||||
|
||||
Void setNumReorderPics(Int i, UInt tlayer) { m_numReorderPics[tlayer] = i; }
|
||||
Int getNumReorderPics(UInt tlayer) { return m_numReorderPics[tlayer]; }
|
||||
|
||||
Void compressMotion();
|
||||
UInt getCurrSliceIdx() const { return m_uiCurrSliceIdx; }
|
||||
Void setCurrSliceIdx(UInt i) { m_uiCurrSliceIdx = i; }
|
||||
UInt getNumAllocatedSlice() const {return m_apcPicSym->getNumAllocatedSlice();}
|
||||
Void allocateNewSlice() {m_apcPicSym->allocateNewSlice(); }
|
||||
Void clearSliceBuffer() {m_apcPicSym->clearSliceBuffer(); }
|
||||
|
||||
Window& getConformanceWindow() { return m_conformanceWindow; }
|
||||
Window& getDefDisplayWindow() { return m_defaultDisplayWindow; }
|
||||
|
||||
Bool getSAOMergeAvailability(Int currAddr, Int mergeAddr);
|
||||
|
||||
UInt getSubstreamForCtuAddr(const UInt ctuAddr, const Bool bAddressInRaster, TComSlice *pcSlice);
|
||||
|
||||
/* field coding parameters*/
|
||||
|
||||
Void setTopField(Bool b) {m_isTop = b;}
|
||||
Bool isTopField() {return m_isTop;}
|
||||
Void setField(Bool b) {m_isField = b;}
|
||||
Bool isField() {return m_isField;}
|
||||
|
||||
/** transfer ownership of seis to this picture */
|
||||
Void setSEIs(SEIMessages& seis) { m_SEIs = seis; }
|
||||
|
||||
/**
|
||||
* return the current list of SEI messages associated with this picture.
|
||||
* Pointer is valid until this->destroy() is called */
|
||||
SEIMessages& getSEIs() { return m_SEIs; }
|
||||
|
||||
/**
|
||||
* return the current list of SEI messages associated with this picture.
|
||||
* Pointer is valid until this->destroy() is called */
|
||||
const SEIMessages& getSEIs() const { return m_SEIs; }
|
||||
};// END CLASS DEFINITION TComPic
|
||||
|
||||
//! \}
|
||||
|
||||
#endif // __TCOMPIC__
|
Loading…
Add table
Add a link
Reference in a new issue