On Fri, Jun 2, 2017 at 6:40 PM, <bha...@multicorewareinc.com> wrote: > # HG changeset patch > # User Bhavna Hariharan <bha...@multicorewareinc.com> > # Date 1496390566 -19800 > # Fri Jun 02 13:32:46 2017 +0530 > # Node ID 4f0d56f5faf7eeba55a97f276e4af2f147258522 > # Parent f850cdbe381c196758fd445a367487416fef62f9 > csv: add scenecut information and improve docs >
Pushed to default branch > > diff -r f850cdbe381c -r 4f0d56f5faf7 doc/reST/cli.rst > --- a/doc/reST/cli.rst Tue May 23 12:42:54 2017 +0530 > +++ b/doc/reST/cli.rst Fri Jun 02 13:32:46 2017 +0530 > @@ -83,9 +83,45 @@ > it adds one line per run. If :option:`--csv-log-level` is greater > than > 0, it writes one line per frame. Default none > > + The following statistics are available when > :option:`--csv-log-level` is > + greater than or equal to 1: > + > + **Encode Order** The frame order in which the encoder encodes. > + > + **Type** Slice type of the frame. > + > + **POC** Picture Order Count - The display order of the frames. > + > + **QP** Quantization Parameter decided for the frame. > + > + **Bits** Number of bits consumed by the frame. > + > + **Scenecut** 1 if the frame is a scenecut, 0 otherwise. > + > + **RateFactor** Applicable only when CRF is enabled. The rate > factor depends > + on the CRF given by the user. This is used to determine the QP so > as to > + target a certain quality. > + > + **BufferFill** Bits available for the next frame. Includes bits > carried > + over from the current frame. > + > + **Latency** Latency in terms of number of frames between when the > frame > + was given in and when the frame is given out. > + > + **PSNR** Peak signal to noise ratio for Y, U and V planes. > + > + **SSIM** A quality metric that denotes the structural similarity > between frames. > + > + **Ref lists** POC of references in lists 0 and 1 for the frame. > + > Several statistics about the encoded bitstream and encoder > performance are > available when :option:`--csv-log-level` is greater than or equal > to 2: > > + **I/P cost ratio:** The ratio between the cost when a frame is > decided as an > + I frame to that when it is decided as a P frame as computed from > the > + quarter-resolution frame in look-ahead. This, in combination with > other parameters > + such as position of the frame in the GOP, is used to decide scene > transitions. > + > **Analysis statistics:** > > **CU Statistics** percentage of CU modes. > @@ -132,6 +168,8 @@ > **Stall Time ms** the number of milliseconds of the reported wall > time that were spent with zero worker threads, aka all compression > was completely stalled. > + > + **Total frame time** Total time spent to encode the frame. > > **Avg WPP** the average number of worker threads working on this > frame, at any given time. This value is sampled at the completion > of > diff -r f850cdbe381c -r 4f0d56f5faf7 source/common/framedata.h > --- a/source/common/framedata.h Tue May 23 12:42:54 2017 +0530 > +++ b/source/common/framedata.h Fri Jun 02 13:32:46 2017 +0530 > @@ -62,6 +62,7 @@ > double percentMergeCu[NUM_CU_DEPTH]; > double percentIntraDistribution[NUM_CU_DEPTH][INTRA_MODES]; > double percentInterDistribution[NUM_CU_DEPTH][3]; // > 2Nx2N, RECT, AMP modes percentage > + double ipCostRatio; > > uint64_t cntIntraNxN; > uint64_t totalCu; > diff -r f850cdbe381c -r 4f0d56f5faf7 source/common/lowres.h > --- a/source/common/lowres.h Tue May 23 12:42:54 2017 +0530 > +++ b/source/common/lowres.h Fri Jun 02 13:32:46 2017 +0530 > @@ -118,6 +118,8 @@ > bool bKeyframe; > bool bLastMiniGopBFrame; > > + double ipCostRatio; > + > /* lookahead output data */ > int64_t costEst[X265_BFRAME_MAX + 2][X265_BFRAME_MAX + 2]; > int64_t costEstAq[X265_BFRAME_MAX + 2][X265_BFRAME_MAX + 2]; > diff -r f850cdbe381c -r 4f0d56f5faf7 source/encoder/encoder.cpp > --- a/source/encoder/encoder.cpp Tue May 23 12:42:54 2017 +0530 > +++ b/source/encoder/encoder.cpp Fri Jun 02 13:32:46 2017 +0530 > @@ -1723,6 +1723,7 @@ > frameStats->qp = curEncData.m_avgQpAq; > frameStats->bits = bits; > frameStats->bScenecut = curFrame->m_lowres.bScenecut; > + frameStats->ipCostRatio = curFrame->m_lowres.ipCostRatio; > frameStats->bufferFill = m_rateControl->m_bufferFillActual; > frameStats->frameLatency = inPoc - poc; > if (m_param->rc.rateControlMode == X265_RC_CRF) > diff -r f850cdbe381c -r 4f0d56f5faf7 source/encoder/slicetype.cpp > --- a/source/encoder/slicetype.cpp Tue May 23 12:42:54 2017 +0530 > +++ b/source/encoder/slicetype.cpp Fri Jun 02 13:32:46 2017 +0530 > @@ -1638,6 +1638,13 @@ > m_isSceneTransition = false; /* Signal end of scene > transitioning */ > } > > + if (m_param->logLevel >= 2) > + { > + int64_t icost = frames[p1]->costEst[0][0]; > + int64_t pcost = frames[p1]->costEst[p1 - p0][0]; > + frames[p1]->ipCostRatio = (double)icost / pcost; > + } > + > /* A frame is always analysed with bRealScenecut = true first, and > then bRealScenecut = false, > the former for I decisions and the latter for P/B decisions. It's > possible that the first > analysis detected scenecuts which were later nulled due to scene > transitioning, in which > diff -r f850cdbe381c -r 4f0d56f5faf7 source/x265-extras.cpp > --- a/source/x265-extras.cpp Tue May 23 12:42:54 2017 +0530 > +++ b/source/x265-extras.cpp Fri Jun 02 13:32:46 2017 +0530 > @@ -62,6 +62,8 @@ > if (level) > { > fprintf(csvfp, "Encode Order, Type, POC, QP, Bits, > Scenecut, "); > + if (level >= 2) > + fprintf(csvfp, "I/P cost ratio, "); > if (param.rc.rateControlMode == X265_RC_CRF) > fprintf(csvfp, "RateFactor, "); > if (param.rc.vbvBufferSize) > @@ -159,6 +161,8 @@ > const x265_frame_stats* frameStats = &pic.frameData; > fprintf(csvfp, "%d, %c-SLICE, %4d, %2.2lf, %10d, %d,", > frameStats->encoderOrder, frameStats->sliceType, frameStats->poc, > > frameStats->qp, (int)frameStats->bits, frameStats->bScenecut); > + if (level >= 2) > + fprintf(csvfp, "%.2f,", frameStats->ipCostRatio); > if (param.rc.rateControlMode == X265_RC_CRF) > fprintf(csvfp, "%.3lf,", frameStats->rateFactor); > if (param.rc.vbvBufferSize) > diff -r f850cdbe381c -r 4f0d56f5faf7 source/x265.h > --- a/source/x265.h Tue May 23 12:42:54 2017 +0530 > +++ b/source/x265.h Fri Jun 02 13:32:46 2017 +0530 > @@ -181,6 +181,7 @@ > > char sliceType; > int bScenecut; > + double ipCostRatio; > int frameLatency; > x265_cu_stats cuStats; > x265_pu_stats puStats; > _______________________________________________ > x265-devel mailing list > x265-devel@videolan.org > https://mailman.videolan.org/listinfo/x265-devel >
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel