// Constructor for encoding SequenceHeaderByteIO::SequenceHeaderByteIO( SourceParams& src_params, EncoderParams& enc_params): ParseUnitByteIO(), m_parseparams_byteio(*this, m_parse_params, enc_params), // create default source parameters for comparisions m_default_src_params(src_params.GetVideoFormat()), m_src_params(src_params), m_sourceparams_byteio( m_src_params, m_default_src_params, *this), m_codec_params(enc_params), m_codingparams_byteio(m_src_params, m_codec_params, m_default_src_params, *this) { }
void SetDefaultSourceParameters(const VideoFormat &vf, SourceParams& sparams) { std::ostringstream errstr; sparams.SetVideoFormat(vf); sparams.SetCFormat(format420); sparams.SetSourceSampling(0); sparams.SetTopFieldFirst(true); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_1_1); sparams.SetSignalRange(SIGNAL_RANGE_8BIT_FULL); sparams.SetLeftOffset(0); sparams.SetTopOffset(0); sparams.SetColourSpecification(1); switch (vf) { case VIDEO_FORMAT_CUSTOM: sparams.SetXl(640); sparams.SetYl(480); sparams.SetTopFieldFirst(false); sparams.SetFrameRate(FRAMERATE_23p97_FPS); sparams.SetCleanWidth(640); sparams.SetCleanHeight(480); sparams.SetColourSpecification(0); break; case VIDEO_FORMAT_QSIF525: sparams.SetXl(176); sparams.SetYl(120); sparams.SetTopFieldFirst(false); sparams.SetFrameRate(FRAMERATE_14p98_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_10_11); sparams.SetCleanWidth(176); sparams.SetCleanHeight(120); sparams.SetColourSpecification(1); break; case VIDEO_FORMAT_QCIF: sparams.SetXl(176); sparams.SetYl(144); sparams.SetFrameRate(FRAMERATE_12p5_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_12_11); sparams.SetCleanWidth(176); sparams.SetCleanHeight(144); sparams.SetColourSpecification(2); break; case VIDEO_FORMAT_SIF525: sparams.SetXl(352); sparams.SetYl(240); sparams.SetTopFieldFirst(false); sparams.SetFrameRate(FRAMERATE_14p98_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_10_11); sparams.SetCleanWidth(352); sparams.SetCleanHeight(240); sparams.SetColourSpecification(1); break; case VIDEO_FORMAT_CIF: sparams.SetXl(352); sparams.SetYl(288); sparams.SetFrameRate(FRAMERATE_12p5_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_12_11); sparams.SetCleanWidth(352); sparams.SetCleanHeight(288); sparams.SetColourSpecification(2); break; case VIDEO_FORMAT_4SIF525: sparams.SetXl(704); sparams.SetYl(480); sparams.SetTopFieldFirst(false); sparams.SetFrameRate(FRAMERATE_14p98_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_10_11); sparams.SetCleanWidth(704); sparams.SetCleanHeight(480); sparams.SetColourSpecification(1); break; case VIDEO_FORMAT_4CIF: sparams.SetXl(704); sparams.SetYl(576); sparams.SetFrameRate(FRAMERATE_12p5_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_12_11); sparams.SetCleanWidth(704); sparams.SetCleanHeight(576); sparams.SetColourSpecification(2); break; case VIDEO_FORMAT_SD_480I60: sparams.SetXl(720); sparams.SetYl(480); sparams.SetCFormat(format422); sparams.SetSourceSampling(1); sparams.SetTopFieldFirst(false); sparams.SetFrameRate(FRAMERATE_29p97_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_10_11); sparams.SetCleanWidth(704); sparams.SetCleanHeight(480); sparams.SetLeftOffset(8); sparams.SetSignalRange(SIGNAL_RANGE_10BIT_VIDEO); sparams.SetColourSpecification(1); break; case VIDEO_FORMAT_SD_576I50: sparams.SetXl(720); sparams.SetYl(576); sparams.SetCFormat(format422); sparams.SetSourceSampling(1); sparams.SetFrameRate(FRAMERATE_25_FPS); sparams.SetPixelAspectRatio(PIXEL_ASPECT_RATIO_12_11); sparams.SetCleanWidth(704); sparams.SetCleanHeight(576); sparams.SetLeftOffset(8); sparams.SetSignalRange(SIGNAL_RANGE_10BIT_VIDEO); sparams.SetColourSpecification(2); break; case VIDEO_FORMAT_HD_720P50: case VIDEO_FORMAT_HD_720P60: sparams.SetXl(1280); sparams.SetYl(720); sparams.SetCFormat(format422); if (vf == VIDEO_FORMAT_HD_720P50) sparams.SetFrameRate(FRAMERATE_50_FPS); else sparams.SetFrameRate(FRAMERATE_59p94_FPS); sparams.SetCleanWidth(1280); sparams.SetCleanHeight(720); sparams.SetSignalRange(SIGNAL_RANGE_10BIT_VIDEO); sparams.SetColourSpecification(3); break; case VIDEO_FORMAT_HD_1080I60: case VIDEO_FORMAT_HD_1080I50: case VIDEO_FORMAT_HD_1080P60: case VIDEO_FORMAT_HD_1080P50: sparams.SetXl(1920); sparams.SetYl(1080); sparams.SetCFormat(format422); switch (vf) { case VIDEO_FORMAT_HD_1080I60: sparams.SetSourceSampling(1); sparams.SetFrameRate(FRAMERATE_29p97_FPS); break; case VIDEO_FORMAT_HD_1080I50: sparams.SetSourceSampling(1); sparams.SetFrameRate(FRAMERATE_25_FPS); break; case VIDEO_FORMAT_HD_1080P60: sparams.SetFrameRate(FRAMERATE_59p94_FPS); break; case VIDEO_FORMAT_HD_1080P50: sparams.SetFrameRate(FRAMERATE_50_FPS); break; default: break; } sparams.SetSignalRange(SIGNAL_RANGE_10BIT_VIDEO); sparams.SetCleanWidth(1920); sparams.SetCleanHeight(1080); sparams.SetColourSpecification(3); break; case VIDEO_FORMAT_DIGI_CINEMA_2K24: sparams.SetXl(2048); sparams.SetYl(1080); sparams.SetCFormat(format444); sparams.SetFrameRate(FRAMERATE_24_FPS); sparams.SetCleanWidth(2048); sparams.SetCleanHeight(1080); sparams.SetSignalRange(SIGNAL_RANGE_12BIT_VIDEO); sparams.SetColourSpecification(4); break; case VIDEO_FORMAT_DIGI_CINEMA_4K24: sparams.SetXl(4096); sparams.SetYl(2160); sparams.SetCFormat(format444); sparams.SetFrameRate(FRAMERATE_24_FPS); sparams.SetCleanWidth(4096); sparams.SetCleanHeight(2160); sparams.SetSignalRange(SIGNAL_RANGE_12BIT_VIDEO); sparams.SetColourSpecification(4); break; case VIDEO_FORMAT_UHDTV_4K60: case VIDEO_FORMAT_UHDTV_4K50: sparams.SetXl(3840); sparams.SetYl(2160); sparams.SetCFormat(format422); sparams.SetSourceSampling(0); switch (vf) { case VIDEO_FORMAT_UHDTV_4K60: sparams.SetFrameRate(FRAMERATE_59p94_FPS); break; case VIDEO_FORMAT_UHDTV_4K50: sparams.SetFrameRate(FRAMERATE_50_FPS); break; default: break; } sparams.SetSignalRange(SIGNAL_RANGE_10BIT_VIDEO); sparams.SetCleanWidth(3840); sparams.SetCleanHeight(2160); sparams.SetColourSpecification(3); break; case VIDEO_FORMAT_UHDTV_8K60: case VIDEO_FORMAT_UHDTV_8K50: sparams.SetXl(7680); sparams.SetYl(4320); sparams.SetCFormat(format422); sparams.SetSourceSampling(0); switch (vf) { case VIDEO_FORMAT_UHDTV_8K60: sparams.SetFrameRate(FRAMERATE_59p94_FPS); break; case VIDEO_FORMAT_UHDTV_8K50: sparams.SetFrameRate(FRAMERATE_50_FPS); break; default: break; } sparams.SetSignalRange(SIGNAL_RANGE_10BIT_VIDEO); sparams.SetCleanWidth(7680); sparams.SetCleanHeight(4320); sparams.SetColourSpecification(3); break; default: errstr << "Unsupported video format " << sparams.GetVideoFormat() << std::endl; DIRAC_THROW_EXCEPTION( ERR_INVALID_VIDEO_FORMAT, errstr.str(), SEVERITY_PICTURE_ERROR); break; } }