- mfxExtBuffer *ext_buffers[] = {
- (mfxExtBuffer*)&extradata,
- (mfxExtBuffer*)&co,
+#if QSV_HAVE_CO_VPS
+ uint8_t vps_buf[128];
+ mfxExtCodingOptionVPS extradata_vps = {
+ .Header.BufferId = MFX_EXTBUFF_CODING_OPTION_VPS,
+ .Header.BufferSz = sizeof(extradata_vps),
+ .VPSBuffer = vps_buf,
+ .VPSBufSize = sizeof(vps_buf),
+ };
+#endif
+
+ mfxExtBuffer *ext_buffers[2 + QSV_HAVE_CO2 + QSV_HAVE_CO3 + QSV_HAVE_CO_VPS];
+
+ int need_pps = avctx->codec_id != AV_CODEC_ID_MPEG2VIDEO;
+ int ret, ext_buf_num = 0, extradata_offset = 0;
+
+ ext_buffers[ext_buf_num++] = (mfxExtBuffer*)&extradata;
+ ext_buffers[ext_buf_num++] = (mfxExtBuffer*)&co;