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(); }