示例#1
0
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]);

    }
}
示例#2
0
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]);

    }
}