libbpg-0.9.3
This commit is contained in:
commit
b21307932d
266 changed files with 108670 additions and 0 deletions
193
jctvc/TLibEncoder/TEncGOP.h
Normal file
193
jctvc/TLibEncoder/TEncGOP.h
Normal file
|
@ -0,0 +1,193 @@
|
|||
/* 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 TEncGOP.h
|
||||
\brief GOP encoder class (header)
|
||||
*/
|
||||
|
||||
#ifndef __TENCGOP__
|
||||
#define __TENCGOP__
|
||||
|
||||
#include <list>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "TLibCommon/TComList.h"
|
||||
#include "TLibCommon/TComPic.h"
|
||||
#include "TLibCommon/TComBitCounter.h"
|
||||
#include "TLibCommon/TComLoopFilter.h"
|
||||
#include "TLibCommon/AccessUnit.h"
|
||||
#include "TEncSampleAdaptiveOffset.h"
|
||||
#include "TEncSlice.h"
|
||||
#include "TEncEntropy.h"
|
||||
#include "TEncCavlc.h"
|
||||
#include "TEncSbac.h"
|
||||
#include "SEIwrite.h"
|
||||
|
||||
#include "TEncAnalyze.h"
|
||||
#include "TEncRateCtrl.h"
|
||||
#include <vector>
|
||||
|
||||
//! \ingroup TLibEncoder
|
||||
//! \{
|
||||
|
||||
class TEncTop;
|
||||
|
||||
// ====================================================================================================================
|
||||
// Class definition
|
||||
// ====================================================================================================================
|
||||
|
||||
class TEncGOP
|
||||
{
|
||||
private:
|
||||
// Data
|
||||
Bool m_bLongtermTestPictureHasBeenCoded;
|
||||
Bool m_bLongtermTestPictureHasBeenCoded2;
|
||||
UInt m_numLongTermRefPicSPS;
|
||||
UInt m_ltRefPicPocLsbSps[MAX_NUM_LONG_TERM_REF_PICS];
|
||||
Bool m_ltRefPicUsedByCurrPicFlag[MAX_NUM_LONG_TERM_REF_PICS];
|
||||
Int m_iLastIDR;
|
||||
Int m_iGopSize;
|
||||
Int m_iNumPicCoded;
|
||||
Bool m_bFirst;
|
||||
#if ALLOW_RECOVERY_POINT_AS_RAP
|
||||
Int m_iLastRecoveryPicPOC;
|
||||
#endif
|
||||
|
||||
// Access channel
|
||||
TEncTop* m_pcEncTop;
|
||||
TEncCfg* m_pcCfg;
|
||||
TEncSlice* m_pcSliceEncoder;
|
||||
TComList<TComPic*>* m_pcListPic;
|
||||
|
||||
TEncEntropy* m_pcEntropyCoder;
|
||||
TEncCavlc* m_pcCavlcCoder;
|
||||
TEncSbac* m_pcSbacCoder;
|
||||
TEncBinCABAC* m_pcBinCABAC;
|
||||
TComLoopFilter* m_pcLoopFilter;
|
||||
|
||||
SEIWriter m_seiWriter;
|
||||
|
||||
//--Adaptive Loop filter
|
||||
TEncSampleAdaptiveOffset* m_pcSAO;
|
||||
TEncRateCtrl* m_pcRateCtrl;
|
||||
// indicate sequence first
|
||||
Bool m_bSeqFirst;
|
||||
|
||||
// clean decoding refresh
|
||||
Bool m_bRefreshPending;
|
||||
Int m_pocCRA;
|
||||
NalUnitType m_associatedIRAPType;
|
||||
Int m_associatedIRAPPOC;
|
||||
|
||||
std::vector<Int> m_vRVM_RP;
|
||||
UInt m_lastBPSEI;
|
||||
UInt m_totalCoded;
|
||||
UInt m_cpbRemovalDelay;
|
||||
UInt m_tl0Idx;
|
||||
UInt m_rapIdx;
|
||||
Bool m_activeParameterSetSEIPresentInAU;
|
||||
Bool m_bufferingPeriodSEIPresentInAU;
|
||||
Bool m_pictureTimingSEIPresentInAU;
|
||||
Bool m_nestedBufferingPeriodSEIPresentInAU;
|
||||
Bool m_nestedPictureTimingSEIPresentInAU;
|
||||
public:
|
||||
TEncGOP();
|
||||
virtual ~TEncGOP();
|
||||
|
||||
Void create ();
|
||||
Void destroy ();
|
||||
|
||||
Void init ( TEncTop* pcTEncTop );
|
||||
Void compressGOP ( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRec,
|
||||
std::list<AccessUnit>& accessUnitsInGOP, Bool isField, Bool isTff, const InputColourSpaceConversion snr_conversion, const Bool printFrameMSE );
|
||||
Void xAttachSliceDataToNalUnit (OutputNALUnit& rNalu, TComOutputBitstream* pcBitstreamRedirect);
|
||||
|
||||
|
||||
Int getGOPSize() { return m_iGopSize; }
|
||||
|
||||
TComList<TComPic*>* getListPic() { return m_pcListPic; }
|
||||
|
||||
Void printOutSummary ( UInt uiNumAllPicCoded, Bool isField, const Bool printMSEBasedSNR, const Bool printSequenceMSE );
|
||||
Void preLoopFilterPicAll ( TComPic* pcPic, UInt64& ruiDist );
|
||||
|
||||
TEncSlice* getSliceEncoder() { return m_pcSliceEncoder; }
|
||||
NalUnitType getNalUnitType( Int pocCurr, Int lastIdr, Bool isField );
|
||||
Void arrangeLongtermPicturesInRPS(TComSlice *, TComList<TComPic*>& );
|
||||
|
||||
protected:
|
||||
TEncRateCtrl* getRateCtrl() { return m_pcRateCtrl; }
|
||||
|
||||
protected:
|
||||
|
||||
Void xInitGOP ( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Bool isField );
|
||||
Void xGetBuffer ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr, Bool isField );
|
||||
|
||||
Void xCalculateAddPSNR ( TComPic* pcPic, TComPicYuv* pcPicD, const AccessUnit&, Double dEncTime, const InputColourSpaceConversion snr_conversion, const Bool printFrameMSE );
|
||||
Void xCalculateInterlacedAddPSNR( TComPic* pcPicOrgFirstField, TComPic* pcPicOrgSecondField,
|
||||
TComPicYuv* pcPicRecFirstField, TComPicYuv* pcPicRecSecondField,
|
||||
const AccessUnit& accessUnit, Double dEncTime, const InputColourSpaceConversion snr_conversion, const Bool printFrameMSE );
|
||||
|
||||
UInt64 xFindDistortionFrame (TComPicYuv* pcPic0, TComPicYuv* pcPic1);
|
||||
|
||||
Double xCalculateRVM();
|
||||
|
||||
SEIActiveParameterSets* xCreateSEIActiveParameterSets (TComSPS *sps);
|
||||
SEIFramePacking* xCreateSEIFramePacking();
|
||||
SEISegmentedRectFramePacking* xCreateSEISegmentedRectFramePacking();
|
||||
SEIDisplayOrientation* xCreateSEIDisplayOrientation();
|
||||
SEIToneMappingInfo* xCreateSEIToneMappingInfo();
|
||||
SEITempMotionConstrainedTileSets* xCreateSEITempMotionConstrainedTileSets ();
|
||||
SEIKneeFunctionInfo* xCreateSEIKneeFunctionInfo();
|
||||
SEIChromaSamplingFilterHint* xCreateSEIChromaSamplingFilterHint(Bool bChromaLocInfoPresent, Int iHorFilterIndex, Int iVerFilterIdc);
|
||||
|
||||
Void xCreateLeadingSEIMessages (/*SEIMessages seiMessages,*/ AccessUnit &accessUnit, TComSPS *sps);
|
||||
Int xGetFirstSeiLocation (AccessUnit &accessUnit);
|
||||
Void xResetNonNestedSEIPresentFlags()
|
||||
{
|
||||
m_activeParameterSetSEIPresentInAU = false;
|
||||
m_bufferingPeriodSEIPresentInAU = false;
|
||||
m_pictureTimingSEIPresentInAU = false;
|
||||
}
|
||||
Void xResetNestedSEIPresentFlags()
|
||||
{
|
||||
m_nestedBufferingPeriodSEIPresentInAU = false;
|
||||
m_nestedPictureTimingSEIPresentInAU = false;
|
||||
}
|
||||
Void dblMetric( TComPic* pcPic, UInt uiNumSlices );
|
||||
};// END CLASS DEFINITION TEncGOP
|
||||
|
||||
//! \}
|
||||
|
||||
#endif // __TENCGOP__
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue