def pgie_src_pad_buffer_probe_custom(pad, info, u_data): gst_buffer = info.get_buffer() if not gst_buffer: print("Unable to get GstBuffer ") return batch_meta = pyds.gst_buffer_get_nvds_batch_meta(hash(gst_buffer)) l_frame = batch_meta.frame_meta_list label_names = get_label_names_from_file("./custom_model/labels.txt") while l_frame is not None: try: frame_meta = pyds.NvDsFrameMeta.cast(l_frame.data) except StopIteration: break l_user = frame_meta.frame_user_meta_list while l_user is not None: try: user_meta = pyds.NvDsUserMeta.cast(l_user.data) except StopIteration: break if (user_meta.base_meta.meta_type != pyds.NvDsMetaType.NVDSINFER_TENSOR_OUTPUT_META): continue tensor_meta = pyds.NvDsInferTensorMeta.cast(user_meta.user_meta_data) layers_info = [] for i in range(tensor_meta.num_output_layers): layer = pyds.get_nvds_LayerInfo(tensor_meta, i) layers_info.append(layer) frame_object_list = nvds_infer_parse_custom_tf_customparser(layers_info) try: l_user = l_user.next except StopIteration: break for frame_object in frame_object_list: add_obj_meta_to_frame(frame_object, batch_meta, frame_meta, label_names) try: l_frame = l_frame.next except StopIteration: break return Gst.PadProbeReturn.OK