| 1113 | } |
| 1114 | |
| 1115 | static 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 | |
| 1172 | fail: |
nothing calls this directly
no test coverage detected