const PicArray& Picture::UpData(CompSort cs) const { const int c = (int) cs; if (m_up_pic_data[c] != NULL) return *(m_up_pic_data[c]); else {//we have to do the upconversion m_up_pic_data[c] = new PicArray( 2*m_pic_data[c]->LengthY(), 2*m_pic_data[c]->LengthX() ); UpConverter* myupconv; if (c>0) myupconv = new UpConverter(-(1 << (m_pparams.ChromaDepth()-1)), (1 << (m_pparams.ChromaDepth()-1))-1, m_pparams.ChromaXl(), m_pparams.ChromaYl()); else myupconv = new UpConverter(-(1 << (m_pparams.LumaDepth()-1)), (1 << (m_pparams.LumaDepth()-1))-1, m_pparams.Xl(), m_pparams.Yl()); myupconv->DoUpConverter( *(m_pic_data[c]) , *(m_up_pic_data[c]) ); delete myupconv; return *(m_up_pic_data[c]); } }
const PicArray& EncPicture::UpFiltData(CompSort cs) const { const int c = (int) cs; if (m_filt_up_data[c] != NULL) return *m_filt_up_data[c]; else {//we have to do the upconversion const PicArray& filt_data = FiltData( cs ); m_filt_up_data[c] = new PicArray( filt_data.LengthY(), filt_data.LengthX() ); UpConverter* myupconv; if (c>0) myupconv = new UpConverter(-(1 << (m_pparams.ChromaDepth()-1)), (1 << (m_pparams.ChromaDepth()-1))-1, m_pparams.ChromaXl(), m_pparams.ChromaYl()); else myupconv = new UpConverter(-(1 << (m_pparams.LumaDepth()-1)), (1 << (m_pparams.LumaDepth()-1))-1, m_pparams.Xl(), m_pparams.Yl()); myupconv->DoUpConverter( filt_data , *(m_filt_up_data[c]) ); delete myupconv; return *(m_filt_up_data[c]); } }