# HG changeset patch # User Aarthi Thirumalai # Date 1404205105 -19800 # Tue Jul 01 14:28:25 2014 +0530 # Node ID f62d90e934084689c2a13b85f66cb87a074a01a9 # Parent a5a439242bbf367f5d76356b841cfa1ee9e119e4 rc: move structure FrameStats to FrameEncoder class
Stats are not needed post encode, moving it to FrameEncoder. diff -r a5a439242bbf -r f62d90e93408 source/common/frame.cpp --- a/source/common/frame.cpp Wed Jul 02 14:06:12 2014 +0530 +++ b/source/common/frame.cpp Tue Jul 01 14:28:25 2014 +0530 @@ -45,7 +45,6 @@ m_reconRowCount.set(0); m_countRefEncoders = 0; memset(&m_lowres, 0, sizeof(m_lowres)); - memset(&m_stats, 0, sizeof(m_stats)); m_next = NULL; m_prev = NULL; m_qpaAq = NULL; @@ -135,7 +134,6 @@ } if (param->rc.aqMode) memset(m_qpaAq, 0, numRows * sizeof(double)); - memset(&m_stats, 0, sizeof(m_stats)); } void Frame::destroy() diff -r a5a439242bbf -r f62d90e93408 source/common/frame.h --- a/source/common/frame.h Wed Jul 02 14:06:12 2014 +0530 +++ b/source/common/frame.h Tue Jul 01 14:28:25 2014 +0530 @@ -37,20 +37,6 @@ class Encoder; -/* Current frame stats for 2 pass */ -struct FrameStats -{ - /* MV bits (MV+Ref+Block Type) */ - int mvBits; - /* Texture bits (DCT coefs) */ - int coeffBits; - int miscBits; - /* CU type counts */ - int cuCount_i; - int cuCount_p; - int cuCount_skip; -}; - class Frame { public: @@ -98,7 +84,6 @@ double m_avgQpAq; // avg QP as decided by AQ in addition to ratecontrol double m_rateFactor; // calculated based on the Frame QP int32_t m_forceqp; // Force to use the qp specified in qp file - FrameStats m_stats; // stats of current frame for multipass encodes Frame(); virtual ~Frame(); diff -r a5a439242bbf -r f62d90e93408 source/encoder/frameencoder.cpp --- a/source/encoder/frameencoder.cpp Wed Jul 02 14:06:12 2014 +0530 +++ b/source/encoder/frameencoder.cpp Tue Jul 01 14:28:25 2014 +0530 @@ -48,6 +48,7 @@ m_bAllRowsStop = false; m_vbvResetTriggerRow = -1; m_outStreams = NULL; + memset(&m_frameStats, 0, sizeof(m_frameStats)); memset(&m_rce, 0, sizeof(RateControlEntry)); } @@ -143,6 +144,7 @@ ok = false; } + memset(&m_frameStats, 0, sizeof(m_frameStats)); memset(m_nr.offsetDenoise, 0, sizeof(m_nr.offsetDenoise[0][0]) * 8 * 1024); memset(m_nr.residualSumBuf, 0, sizeof(m_nr.residualSumBuf[0][0][0]) * 4 * 8 * 1024); memset(m_nr.countBuf, 0, sizeof(m_nr.countBuf[0][0]) * 4 * 8); @@ -699,9 +701,9 @@ getBufferSBac(lin)->loadContexts(getSbacCoder(subStrm)); // Collect Frame Stats for 2 pass - m_frame->m_stats.mvBits += cu->m_mvBits; - m_frame->m_stats.coeffBits += cu->m_coeffBits; - m_frame->m_stats.miscBits += cu->m_totalBits - (cu->m_mvBits + cu->m_coeffBits); + m_frameStats.mvBits += cu->m_mvBits; + m_frameStats.coeffBits += cu->m_coeffBits; + m_frameStats.miscBits += cu->m_totalBits - (cu->m_mvBits + cu->m_coeffBits); } if (slice->getPPS()->getCabacInitPresentFlag()) diff -r a5a439242bbf -r f62d90e93408 source/encoder/frameencoder.h --- a/source/encoder/frameencoder.h Wed Jul 02 14:06:12 2014 +0530 +++ b/source/encoder/frameencoder.h Tue Jul 01 14:28:25 2014 +0530 @@ -54,6 +54,20 @@ class ThreadPool; class Encoder; +/* Current frame stats for 2 pass */ +struct FrameStats +{ + /* MV bits (MV+Ref+Block Type) */ + int mvBits; + /* Texture bits (DCT coefs) */ + int coeffBits; + int miscBits; + /* CU type counts */ + int cuCount_i; + int cuCount_p; + int cuCount_skip; +}; + // Manages the wave-front processing of a single encoding frame class FrameEncoder : public WaveFront, public Thread { @@ -172,6 +186,7 @@ double m_elapsedCompressTime; // elapsed time spent in worker threads double m_frameTime; // wall time from frame start to finish ThreadLocalData m_tld; + FrameStats m_frameStats; // stats of current frame for multipass encodes volatile bool m_bAllRowsStop; volatile int m_vbvResetTriggerRow; _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel