| 1175 | } |
| 1176 | |
| 1177 | static int write_padding(AVCodecContext *avctx, uint32_t padding, |
| 1178 | uint8_t *data, size_t *data_len) |
| 1179 | { |
| 1180 | int err; |
| 1181 | VulkanEncodeAV1Context *enc = avctx->priv_data; |
| 1182 | CodedBitstreamFragment *obu = &enc->current_access_unit; |
| 1183 | |
| 1184 | AV1RawOBU padding_obu = { 0 }; |
| 1185 | AV1RawPadding *raw_padding = &padding_obu.obu.padding; |
| 1186 | |
| 1187 | if (!padding) |
| 1188 | padding = 16; |
| 1189 | |
| 1190 | /* 2 byte header + 1 byte trailing bits */ |
| 1191 | padding_obu.header.obu_type = AV1_OBU_PADDING; |
| 1192 | *raw_padding = (AV1RawPadding) { |
| 1193 | .payload = enc->padding_payload, |
| 1194 | .payload_size = padding, |
| 1195 | }; |
| 1196 | |
| 1197 | err = vulkan_encode_av1_add_obu(avctx, obu, AV1_OBU_PADDING, &padding_obu); |
| 1198 | if (err < 0) |
| 1199 | goto fail; |
| 1200 | |
| 1201 | err = vulkan_encode_av1_write_obu(avctx, data, data_len, obu); |
| 1202 | fail: |
| 1203 | ff_cbs_fragment_reset(obu); |
| 1204 | return err; |
| 1205 | } |
| 1206 | |
| 1207 | static const FFVulkanCodec enc_cb = { |
| 1208 | .flags = FF_HW_FLAG_B_PICTURES | |
nothing calls this directly
no test coverage detected