static GstFlowReturn gst_lookout_vision_chain()

in src/gst/lookoutvision/gstlookoutvision.cc [218:249]


static GstFlowReturn gst_lookout_vision_chain(GstPad * pad, GstObject * parent, GstBuffer * buf) {
    GstLookoutVision *filter;
    filter = GST_LOOKOUTVISION(parent);

    // Extract image from gstbuffer
    GstMapInfo map;
    gst_buffer_map(buf, &map, GST_MAP_READ);

    // Send image to inference server and get response
    GstLookoutVisionResult* inference_result;
    if (filter->model_component) {
        inference_result = filter->inference_client->DetectAnomalies(filter->model_component, map.data, map.size,
                                                                     filter->width, filter->height);
    } else {
        inference_result = new GstLookoutVisionResult{0, 0, GstLookoutVisionResultStatus::FAILED,
                                                      "No value set for model-component"};
    }

    gst_buffer_add_lookout_vision_meta(buf, inference_result);
    if (inference_result->result_status == GstLookoutVisionResultStatus::SUCCESSFUL) {
        std::cout << "Is Anomalous? " << inference_result->is_anomalous
                << ", Confidence: " << inference_result->confidence << std::endl;
    } else  {
        std::cout << "Inference call failed" << std::endl;
    }

    // Free memory
    gst_buffer_unmap(buf, &map);
    delete inference_result;

    return gst_pad_push(filter->srcpad, buf);
}