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

Function write_extra_headers

libavcodec/vulkan_encode_av1.c:1115–1175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1113}
1114
1115static int write_extra_headers(AVCodecContext *avctx,
1116 FFHWBaseEncodePicture *base_pic,
1117 uint8_t *data, size_t *data_len)
1118{
1119 int err;
1120 VulkanEncodeAV1Context *enc = avctx->priv_data;
1121 VulkanEncodeAV1Picture *ap = base_pic->codec_priv;
1122 FFVulkanEncodePicture *vp = base_pic->priv;
1123 CodedBitstreamFragment *obu = &enc->current_access_unit;
1124
1125 if (vp->non_independent_frame) {
1126 err = vulkan_encode_av1_add_obu(avctx, obu, AV1_OBU_FRAME_HEADER, &enc->hidden_obu);
1127 if (err < 0)
1128 goto fail;
1129
1130 // Only for tracking ref frame in context, not to be output
1131 err = ff_cbs_write_fragment_data(enc->cbs, obu);
1132 if (err < 0)
1133 goto fail;
1134
1135 ff_cbs_fragment_reset(obu);
1136 ((CodedBitstreamAV1Context *)enc->cbs->priv_data)->seen_frame_header = 0;
1137
1138 err = vulkan_encode_av1_add_obu(avctx, obu, AV1_OBU_FRAME_HEADER, &enc->tail_obu);
1139 if (err < 0)
1140 goto fail;
1141
1142 err = vulkan_encode_av1_write_obu(avctx, vp->tail_data, &vp->tail_size, obu);
1143 if (err < 0)
1144 goto fail;
1145 }
1146
1147 if (ap->units_needed & UNIT_MASTERING_DISPLAY) {
1148 err = vulkan_encode_av1_add_obu(avctx, obu,
1149 AV1_OBU_METADATA,
1150 &enc->meta_mastering_obu);
1151 if (err < 0)
1152 goto fail;
1153 }
1154
1155 if (ap->units_needed & UNIT_CONTENT_LIGHT_LEVEL) {
1156 err = vulkan_encode_av1_add_obu(avctx, obu,
1157 AV1_OBU_METADATA,
1158 &enc->meta_cll_obu);
1159 if (err < 0)
1160 goto fail;
1161 }
1162
1163 if (ap->units_needed) {
1164 err = vulkan_encode_av1_write_obu(avctx, data, data_len, obu);
1165 if (err < 0)
1166 goto fail;
1167 } else {
1168 err = 0;
1169 *data_len = 0;
1170 }
1171
1172fail:

Callers

nothing calls this directly

Calls 2

Tested by

no test coverage detected