<div dir="ltr">Yes.this flag is used to decide whether to perform transform or not in cu-lossless and lossless mode.<div>But it seems this is redundant. We can directly read the value from cu.m_tqBypass[] and decide whether to perform transform or not. </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 12, 2015 at 4:23 PM, Steve Borho <span dir="ltr"><<a href="mailto:steve@borho.org" target="_blank">steve@borho.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 08/12, Ashok Kumar Mishra wrote:<br>
> On Wed, Aug 12, 2015 at 1:05 PM, Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>> wrote:<br>
><br>
> > On 08/11, <a href="mailto:ashok@multicorewareinc.com">ashok@multicorewareinc.com</a> wrote:<br>
> > > # HG changeset patch<br>
> > > # User Ashok Kumar Mishra<<a href="mailto:ashok@multicorewareinc.com">ashok@multicorewareinc.com</a>><br>
> > > # Date 1439283627 -19800<br>
> > > #      Tue Aug 11 14:30:27 2015 +0530<br>
> > > # Node ID 854f0f9aabf7ec45da3cb301e0f78a5bd1e96391<br>
> > > # Parent  3eb2ec5922be1cd934dec7f7ed886d03c0125ef5<br>
> > > Quant: fix for decoding hash mismatch in lossless mode<br>
> > ><br>
> > > diff -r 3eb2ec5922be -r 854f0f9aabf7 source/common/quant.cpp<br>
> > > --- a/source/common/quant.cpp Wed Aug 05 12:20:01 2015 +0530<br>
> > > +++ b/source/common/quant.cpp Tue Aug 11 14:30:27 2015 +0530<br>
> > > @@ -228,9 +228,6 @@<br>
> > ><br>
> > >  void Quant::setQPforQuant(const CUData& ctu, int qp)<br>
> > >  {<br>
> > > -    m_tqBypass = !!ctu.m_tqBypass[0];<br>
> > > -    if (m_tqBypass)<br>
> > > -        return;<br>
> ><br>
> > that's a bit unexpected. what field needs to be initialized for<br>
> > cu-lossless to work right?<br>
> ><br>
> > >      m_nr = m_frameNr ? &m_frameNr[ctu.m_encData->m_frameEncoderID] :<br>
> > NULL;<br>
> > >      m_qpParam[TEXT_LUMA].setQpParam(qp + QP_BD_OFFSET);<br>
> > >      setChromaQP(qp + ctu.m_slice->m_pps->chromaQpOffset[0],<br>
> > TEXT_CHROMA_U, ctu.m_chromaFormat);<br>
><br>
</div></div><span class="">> When cu-lossless mode is set, we are comparing rate distortion cost for<br>
> normal encoding and lossless encoding.<br>
> For that tq_bypss flag is OFF for normal encoding and ON for lossless<br>
> encoding. But since the qgSize is set to 32,<br>
> qp value will change for depth 1 (32x32 CU). So for normal encoding we need<br>
> to set the new qp value. The reason for hash mismatch<br>
> was we were encoding the CU with the old qp value and signalling the<br>
> decoder new qp value.<br>
<br>
</span>Ahh, Analysis::tryLossless() is setting m_quant.m_tqBypass directly. Ok,<br>
this makes sense then.<br>
<br>
Any idea why Search::checkIntra() does this:<br>
<br>
  m_quant.m_tqBypass = !!cu.m_tqBypass[0];<br>
<br>
it doesn't seem helpful<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
Steve Borho<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</div></div></blockquote></div><br></div>