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

Function parse_feedback_units

libavcodec/vulkan_encode_av1.c:935–977  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

933}
934
935static int parse_feedback_units(AVCodecContext *avctx,
936 const uint8_t *data, size_t size)
937{
938 int err;
939 VulkanEncodeAV1Context *enc = avctx->priv_data;
940 AV1RawOBU *seq_obu = &enc->seq_hdr_obu;
941 AV1RawSequenceHeader *seq = &seq_obu->obu.sequence_header;
942
943 CodedBitstreamContext *cbs;
944 CodedBitstreamFragment obu = { 0 };
945
946 err = ff_cbs_init(&cbs, AV_CODEC_ID_AV1, avctx);
947 if (err < 0)
948 return err;
949
950 err = ff_cbs_read(cbs, &obu, NULL, data, size);
951 if (err < 0) {
952 av_log(avctx, AV_LOG_ERROR, "Unable to parse feedback units, bad drivers: %s\n",
953 av_err2str(err));
954 return err;
955 }
956
957 /* If PPS has an override, just copy it entirely. */
958 for (int i = 0; i < obu.nb_units; i++) {
959 if (obu.units[i].type == AV1_OBU_SEQUENCE_HEADER) {
960 AV1RawOBU *f_seq_obu = obu.units[i].content;
961 AV1RawSequenceHeader *f_seq = &f_seq_obu->obu.sequence_header;
962 seq->frame_width_bits_minus_1 = f_seq->frame_width_bits_minus_1;
963 seq->frame_height_bits_minus_1 = f_seq->frame_height_bits_minus_1;
964 seq->max_frame_width_minus_1 = f_seq->max_frame_width_minus_1;
965 seq->max_frame_height_minus_1 = f_seq->max_frame_height_minus_1;
966 seq->seq_choose_screen_content_tools = f_seq->seq_choose_screen_content_tools;
967 seq->seq_force_screen_content_tools = f_seq->seq_force_screen_content_tools;
968 seq->seq_choose_integer_mv = f_seq->seq_choose_integer_mv;
969 seq->seq_force_integer_mv = f_seq->seq_force_integer_mv;
970 }
971 }
972
973 ff_cbs_fragment_free(&obu);
974 ff_cbs_close(&cbs);
975
976 return 0;
977}
978
979static int init_base_units(AVCodecContext *avctx)
980{

Callers 1

init_base_unitsFunction · 0.70

Calls 1

av_logFunction · 0.85

Tested by

no test coverage detected