Esempio n. 1
0
SequenceCompressor::SequenceCompressor( StreamPicInput* pin ,
                                        EncoderParams& encp,
                                        DiracByteStream& dirac_byte_stream):
    m_all_done(false),
    m_just_finished(true),
    m_srcparams(pin->GetSourceParams()),
    m_encparams(encp),
    m_predparams(encp.GetPicPredParams()),
    m_L1_sep(encp.L1Sep()),
    m_pparams(m_srcparams.CFormat(),
              m_encparams.Xl(),
              m_encparams.Yl(),
              m_encparams.LumaDepth(),
              m_encparams.ChromaDepth() ),
     m_pic_in(pin),
    m_current_display_pnum(-1),
    m_current_code_pnum(0),
    m_show_pnum(-1),m_last_picture_read(-1),
    m_gop_start_num(0),
    m_delay(1),
    m_qmonitor( m_encparams ),
    m_pcoder( m_encparams ),
    m_dirac_byte_stream(dirac_byte_stream),
    m_eos_signalled(false)
{
    // Set up the compression of the sequence

    //TBD: put into the constructor for EncoderParams
    m_encparams.SetEntropyFactors( new EntropyCorrector(m_encparams.TransformDepth()) );

    // Set up generic picture parameters
    m_pparams.SetUsingAC(m_encparams.UsingAC() );

    // Set up a rate controller if rate control being used
    if (m_encparams.TargetRate() != 0)
        m_ratecontrol = new RateController(m_encparams.TargetRate(),
                                           m_pic_in->GetSourceParams(), encp);

    // Copy in the block parameters in case we want to change them dynamically
    m_basic_olb_params2 = &m_predparams.LumaBParams(2);
    m_basic_olb_params1 = new OLBParams( 2*m_predparams.LumaBParams(2).Xblen(),
                                         2*m_predparams.LumaBParams(2).Yblen(),
                                         2*m_predparams.LumaBParams(2).Xbsep(),
                                         2*m_predparams.LumaBParams(2).Ybsep() );

    m_basic_olb_params0 = new OLBParams( 4*m_predparams.LumaBParams(2).Xblen(),
                                         4*m_predparams.LumaBParams(2).Yblen(),
                                         4*m_predparams.LumaBParams(2).Xbsep(),
                                         4*m_predparams.LumaBParams(2).Ybsep() );


    m_intra_olbp = new OLBParams( 2*m_basic_olb_params2->Xbsep() ,
                                  2*m_basic_olb_params2->Ybsep() ,
                                  m_basic_olb_params2->Xbsep() ,
                                  m_basic_olb_params2->Ybsep() );

    SetMotionParameters();

}