MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / parse_feedback_units

Function parse_feedback_units

libavcodec/vulkan_encode_h264.c:1050–1088  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1048}
1049
1050static int parse_feedback_units(AVCodecContext *avctx,
1051 const uint8_t *data, size_t size,
1052 int sps_override, int pps_override)
1053{
1054 int err;
1055 VulkanEncodeH264Context *enc = avctx->priv_data;
1056
1057 CodedBitstreamContext *cbs;
1058 CodedBitstreamFragment au = { 0 };
1059
1060 err = ff_cbs_init(&cbs, AV_CODEC_ID_H264, avctx);
1061 if (err < 0)
1062 return err;
1063
1064 err = ff_cbs_read(cbs, &au, NULL, data, size);
1065 if (err < 0) {
1066 av_log(avctx, AV_LOG_ERROR, "Unable to parse feedback units, bad drivers: %s\n",
1067 av_err2str(err));
1068 goto fail;
1069 }
1070
1071 /* If PPS has an override, just copy it entirely. */
1072 if (pps_override) {
1073 for (int i = 0; i < au.nb_units; i++) {
1074 if (au.units[i].type == H264_NAL_PPS) {
1075 H264RawPPS *pps = au.units[i].content;
1076 memcpy(&enc->units.raw_pps, pps, sizeof(*pps));
1077 break;
1078 }
1079 }
1080 }
1081
1082 err = 0;
1083fail:
1084 ff_cbs_fragment_free(&au);
1085 ff_cbs_close(&cbs);
1086
1087 return err;
1088}
1089
1090static int init_base_units(AVCodecContext *avctx)
1091{

Callers 1

init_base_unitsFunction · 0.70

Calls 1

av_logFunction · 0.85

Tested by

no test coverage detected