# Issue while building extension in DeepStream 6.3

**URL:** <https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340>\
**Category:** DeepStream SDK\
**Tags:** graph-composer, deepstream\
**Created:** [December 10, 2024, 9:57am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340 "2024-12-10T09:57:39Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![amine.ghamgui.anavid](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@amine.ghamgui.anavid](https://forums.developer.nvidia.com/u/amine.ghamgui.anavid)\
**Post date:** [December 10, 2024, 9:57am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/1 "2024-12-10T09:57:39Z")

</div>

Hi,

I am using DeepStream 6.3, and I tried to build an extension. However, I encountered an error. Could you please help me resolve this issue?

Thank you!

* * *

ORUS-ELITE-V2:~/Downloads/test4/test4/extensions$ bazel build …  
Starting local Bazel server and connecting to it…  
INFO: Analyzed 2 targets (44 packages loaded, 474 targets configured).  
INFO: Found 2 targets…  
ERROR: /home/anavid-server/Downloads/test4/test4/extensions/test4/BUILD:7:19: Compiling extensions/test4/HelloWorld.cpp failed: (Exit 1): g+±9 failed: error executing command (from target //extensions/test4:libgxf\_test4.so) /usr/bin/g+±9 -MD -MF bazel-out/k8-opt/bin/extensions/test4/\_objs/libgxf\_test4.so/HelloWorld.d ‘-frandom-seed=bazel-out/k8-opt/bin/extensions/test4/\_objs/libgxf\_test4.so/HelloWorld.o’ … (remaining 50 arguments skipped)

Use --sandbox\_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging  
extensions/test4/HelloWorld.cpp:4:10: fatal error: extensions/nvdsbase/nvds\_probe\_connector.hpp: No such file or directory  
4 | #include “extensions/nvdsbase/nvds\_probe\_connector.hpp”  
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
compilation terminated.  
INFO: Elapsed time: 7.620s, Critical Path: 1.43s  
INFO: 116 processes: 98 internal, 17 linux-sandbox, 1 local.  
FAILED: Build did NOT complete successfully

* * *

#include “HelloWorld.hpp” // NOLINT

#include “extensions/nvdsbase/nvds\_probe\_connector.hpp”  
#include “extensions/nvdsinterface/interfaces.hpp”  
#include “nvdsmeta.h”  
#include “nvds\_obj\_meta.h”  
#include “nvds\_batch\_meta.h”  
#include “nvds\_video\_meta.h”

namespace nvidia {  
namespace deepstream {

class NvDsSampleInPlaceDataHandler : public INvDsInPlaceDataHandler {  
nvidia::gxf::Parameter\<nvidia::gxf::Handle\> probe\_connector\_;

gxf\_result\_t registerInterface(nvidia::gxf::Registrar \*registrar) {  
gxf\_result\_t result = GXF\_SUCCESS;  
// Enregistrer le paramètre probe\_connector\_ (connecteur de probe)  
result &= registrar-\>parameter(  
probe\_connector\_, “probe-connector”, “Probe Connector”,  
“Handle to a nvidia::deepstream::NvDsProbeConnector component”,  
std::nullopt, GXF\_PARAMETER\_FLAGS\_OPTIONAL);  
return result;  
}

gxf\_result\_t initialize() override {  
gxf\_result\_t result = GXF\_SUCCESS;

```
if (probe_connector_.try_get() != std::nullopt) {
  probe_connector_.try_get().value()->set_handler(this);
  probe_connector_.try_get().value()->set_flags(static_cast<NvDsProbeFlags>(
      NvDsProbeFlags::BUFFER | NvDsProbeFlags::EVENT));
}
return result;

```

}

bool handle\_buffer(GstPad \*pad, nvidia::gxf::Entity buffer\_data) override {  
// Vérifier la présence de NvDsBatchMeta et NvBufSurface dans le buffer\_data  
if (!buffer\_data.get(BUF\_DATA\_KEY\_VIDEO\_BATCH\_META)) {  
return true;  
}  
if (!buffer\_data.get(BUF\_DATA\_KEY\_NVBUFSURFACE)) {  
return true;  
}

```
// Extraire les métadonnées du lot (batch)
NvDsBatchMeta *batch_meta = 
    *(buffer_data.get<NvDsBatchMetaHandle>(BUF_DATA_KEY_VIDEO_BATCH_META).value());

// Parcourir les frames du lot
NvDsMetaList *l_frame = nullptr;
for (l_frame = batch_meta->frame_meta_list; l_frame != nullptr; l_frame = l_frame->next) {
  NvDsFrameMeta *frame_meta = (NvDsFrameMeta *)(l_frame->data);

  // Parcourir les objets détectés dans chaque frame
  NvDsMetaList *l_obj = nullptr;
  for (l_obj = frame_meta->obj_meta_list; l_obj != nullptr; l_obj = l_obj->next) {
    NvDsObjectMeta *obj_meta = (NvDsObjectMeta *)(l_obj->data);

    // Vérifier si l'objet est une personne
    if (obj_meta->unique_component_id == PERSON_COMPONENT_ID) { // Remplacer PERSON_CLASS_ID par l'ID de classe approprié
      uint64_t tracking_id = obj_meta->object_id;

      // Accéder aux résultats de classification (âge, genre)
      const gchar *age_label = nullptr;
      const gchar *gender_label = nullptr;

      NvDsClassifierMeta *classifier_meta = nullptr;
      NvDsMetaList *l_classifier = nullptr;
      for (l_classifier = obj_meta->classifier_meta_list; l_classifier != nullptr; l_classifier = l_classifier->next) {
        classifier_meta = (NvDsClassifierMeta *)(l_classifier->data);

        // Extraire les informations de classification
        if (classifier_meta->unique_component_id == AGE_COMPONENT_ID) {
          age_label = classifier_meta->label_info_list->data->result_label;
        } else if (classifier_meta->unique_component_id == GENDER_COMPONENT_ID) {
          gender_label = classifier_meta->label_info_list->data->result_label;
        }
      }

      // Organiser les métadonnées dans un format spécifique
      std::cout << "{ \"person\": [ { \"id-tracking\": " << tracking_id
                << ", \"age\": \"" << (age_label ? age_label : "unknown")
                << "\", \"gender\": \"" << (gender_label ? gender_label : "unknown")
                << "\" } ] }" << std::endl;
    }
  }
}

return true; // Permet de laisser passer le buffer

```

}

bool handle\_event(GstPad \*pad, GstEvent \*event) override {  
// Traitez les événements ici si nécessaire  
return true; // Permet de laisser passer l’événement  
}  
};

} // namespace deepstream  
} // namespace nvidia

----------------------------------------------------------------------------.hpp------------------------------------------

#pragma once

#include “gxf/std/codelet.hpp”

namespace sample {  
namespace test4 {

// Logs a message in start() and tick()  
class HelloWorld : public nvidia::gxf::Codelet {  
public:  
gxf\_result\_t start() override;  
gxf\_result\_t tick() override;  
gxf\_result\_t stop() override { return GXF\_SUCCESS; }  
};

} // namespace test4  
} // namespace sample

---

<div class="post-metadata">

**Author:** ![Fiona.Chen](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/fiona.chen/32/15508_2.png) [@Fiona.Chen](https://forums.developer.nvidia.com/u/Fiona.Chen)\
**Post date:** [December 10, 2024, 10:45am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/5 "2024-12-10T10:45:28Z")

</div>

> [@amine.ghamgui.anavid](#):
>
> extensions/test4/HelloWorld.cpp:4:10: fatal error: extensions/nvdsbase/nvds\_probe\_connector.hpp: No such file or directory

The header file should be downloaded manually. Even after the header file is downloaded, there is no DeepStream extension library downloadable. It is not supported to build the customized DeepStream extension now.

---

<div class="post-metadata">

**Author:** ![Fiona.Chen](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/fiona.chen/32/15508_2.png) [@Fiona.Chen](https://forums.developer.nvidia.com/u/Fiona.Chen)\
**Post date:** [December 10, 2024, 10:47am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/6 "2024-12-10T10:47:17Z")

</div>

As I have put in [Metadata Not Saved in Redis: Issue with Custom Graph Execution](https://forums.developer.nvidia.com/t/metadata-not-saved-in-redis-issue-with-custom-graph-execution/315660). Currently only GXF extension customization is supported.

---

<div class="post-metadata">

**Author:** ![amine.ghamgui.anavid](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@amine.ghamgui.anavid](https://forums.developer.nvidia.com/u/amine.ghamgui.anavid)\
**Post date:** [December 10, 2024, 4:32pm UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/7 "2024-12-10T16:32:01Z")

</div>

I used the following command to generate a codelet:  
python3 /opt/nvidia/graph-composer/extension-dev/generate\_codelet.py   
–output\_dir /home/anavid-server/kk   
–extn\_name amine   
–codelet\_name codelet\_name\_amine

After that, I installed the NvDsInterfaceExt extension using these commands:  
registry extn import interface -n NvDsInterfaceExt -s 1.3.0 -d extensions  
registry extn import interface -n NvDsBaseExt -s 1.4.0 -d extensions

However, I encountered an issue while using this code. Could you please assist me in resolving the problem?

----------------------------------error------------------------------------------------------------------------------------------------------------

E-V2:~/kk/amine/extensions$ bazel build …  
INFO: Analyzed 2 targets (0 packages loaded, 0 targets configured).  
INFO: Found 2 targets…  
ERROR: /home/anavid-server/kk/amine/extensions/amine/BUILD:7:19: Compiling extensions/amine/codelet\_name\_amine.cpp failed: (Exit 1): g+±9 failed: error executing command (from target //extensions/amine:libgxf\_amine.so) /usr/bin/g+±9 -MD -MF bazel-out/k8-opt/bin/extensions/amine/\_objs/libgxf\_amine.so/codelet\_name\_amine.d ‘-frandom-seed=bazel-out/k8-opt/bin/extensions/amine/\_objs/libgxf\_amine.so/codelet\_name\_amine.o’ … (remaining 50 arguments skipped)

Use --sandbox\_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging  
In file included from extensions/amine/codelet\_name\_amine.cpp:4:  
/home/anavid-server/kk/amine/extensions/nvds\_probe\_connector/nvds\_probe\_connector.hpp:21:10: fatal error: nvdsinterface/interfaces.hpp: No such file or directory  
21 | #include “nvdsinterface/interfaces.hpp”  
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
compilation terminated.  
INFO: Elapsed time: 0.339s, Critical Path: 0.27s  
INFO: 17 processes: 17 internal.  
FAILED: Build did NOT complete successfully

------------------------------------------codelet\_name\_amine.cpp-----------------------------------------------------------------------------------------------

#include “codelet\_name\_amine.hpp” // NOLINT

#include “/home/anavid-server/kk/amine/extensions/nvds\_probe\_connector/nvds\_probe\_connector.hpp”  
#include “/home/anavid-server/kk/amine/extensions/nvdsinterface/interfaces.hpp”  
#include “nvdsmeta.h”  
#include “nvds\_obj\_meta.h”  
#include “nvds\_batch\_meta.h”  
#include “nvds\_video\_meta.h”

namespace nvidia {  
namespace deepstream {

class NvDsSampleInPlaceDataHandler : public INvDsInPlaceDataHandler {  
nvidia::gxf::Parameter\<nvidia::gxf::Handle\> probe\_connector\_;

gxf\_result\_t registerInterface(nvidia::gxf::Registrar \*registrar) {  
gxf\_result\_t result = GXF\_SUCCESS;  
// Enregistrer le paramètre probe\_connector\_ (connecteur de probe)  
result &= registrar-\>parameter(  
probe\_connector\_, “probe-connector”, “Probe Connector”,  
“Handle to a nvidia::deepstream::NvDsProbeConnector component”,  
std::nullopt, GXF\_PARAMETER\_FLAGS\_OPTIONAL);  
return result;  
}

gxf\_result\_t initialize() override {  
gxf\_result\_t result = GXF\_SUCCESS;

```
if (probe_connector_.try_get() != std::nullopt) {
  probe_connector_.try_get().value()->set_handler(this);
  probe_connector_.try_get().value()->set_flags(static_cast<NvDsProbeFlags>(
      NvDsProbeFlags::BUFFER | NvDsProbeFlags::EVENT));
}
return result;

```

}

bool handle\_buffer(GstPad \*pad, nvidia::gxf::Entity buffer\_data) override {  
// Vérifier la présence de NvDsBatchMeta et NvBufSurface dans le buffer\_data  
if (!buffer\_data.get(BUF\_DATA\_KEY\_VIDEO\_BATCH\_META)) {  
return true;  
}  
if (!buffer\_data.get(BUF\_DATA\_KEY\_NVBUFSURFACE)) {  
return true;  
}

```
// Extraire les métadonnées du lot (batch)
NvDsBatchMeta *batch_meta = 
    *(buffer_data.get<NvDsBatchMetaHandle>(BUF_DATA_KEY_VIDEO_BATCH_META).value());

// Parcourir les frames du lot
NvDsMetaList *l_frame = nullptr;
for (l_frame = batch_meta->frame_meta_list; l_frame != nullptr; l_frame = l_frame->next) {
  NvDsFrameMeta *frame_meta = (NvDsFrameMeta *)(l_frame->data);

  // Parcourir les objets détectés dans chaque frame
  NvDsMetaList *l_obj = nullptr;
  for (l_obj = frame_meta->obj_meta_list; l_obj != nullptr; l_obj = l_obj->next) {
    NvDsObjectMeta *obj_meta = (NvDsObjectMeta *)(l_obj->data);

    // Vérifier si l'objet est une personne
    if (obj_meta->unique_component_id == PERSON_COMPONENT_ID) { // Remplacer PERSON_CLASS_ID par l'ID de classe approprié
      uint64_t tracking_id = obj_meta->object_id;

      // Accéder aux résultats de classification (âge, genre)
      const gchar *age_label = nullptr;
      const gchar *gender_label = nullptr;

      NvDsClassifierMeta *classifier_meta = nullptr;
      NvDsMetaList *l_classifier = nullptr;
      for (l_classifier = obj_meta->classifier_meta_list; l_classifier != nullptr; l_classifier = l_classifier->next) {
        classifier_meta = (NvDsClassifierMeta *)(l_classifier->data);

        // Extraire les informations de classification
        if (classifier_meta->unique_component_id == AGE_COMPONENT_ID) {
          age_label = classifier_meta->label_info_list->data->result_label;
        } else if (classifier_meta->unique_component_id == GENDER_COMPONENT_ID) {
          gender_label = classifier_meta->label_info_list->data->result_label;
        }
      }

      // Organiser les métadonnées dans un format spécifique
      std::cout << "{ \"person\": [ { \"id-tracking\": " << tracking_id
                << ", \"age\": \"" << (age_label ? age_label : "unknown")
                << "\", \"gender\": \"" << (gender_label ? gender_label : "unknown")
                << "\" } ] }" << std::endl;
    }
  }
}

return true; // Permet de laisser passer le buffer

```

}

bool handle\_event(GstPad \*pad, GstEvent \*event) override {  
// Traitez les événements ici si nécessaire  
return true; // Permet de laisser passer l’événement  
}  
};

} // namespace deepstream  
} // namespace nvidia

---

<div class="post-metadata">

**Author:** ![Fiona.Chen](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/fiona.chen/32/15508_2.png) [@Fiona.Chen](https://forums.developer.nvidia.com/u/Fiona.Chen)\
**Post date:** [December 11, 2024, 1:25am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/8 "2024-12-11T01:25:18Z")

</div>

> [@amine.ghamgui.anavid](#):
>
> /home/anavid-server/kk/amine/extensions/nvds\_probe\_connector/nvds\_probe\_connector.hpp:21:10: fatal error: nvdsinterface/interfaces.hpp: No such file or directory

The header file should be downloaded with NvDsInterfaceExt.

---

<div class="post-metadata">

**Author:** ![Fiona.Chen](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/fiona.chen/32/15508_2.png) [@Fiona.Chen](https://forums.developer.nvidia.com/u/Fiona.Chen)\
**Post date:** [December 17, 2024, 10:15am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/9 "2024-12-17T10:15:20Z")

</div>

Duplicate with [Metadata Not Saved in Redis: Issue with Custom Graph Execution - Intelligent Video Analytics / DeepStream SDK - NVIDIA Developer Forums](https://forums.developer.nvidia.com/t/metadata-not-saved-in-redis-issue-with-custom-graph-execution/315660).

---

<div class="post-metadata">

**Author:** ![amine.ghamgui.anavid](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@amine.ghamgui.anavid](https://forums.developer.nvidia.com/u/amine.ghamgui.anavid)\
**Post date:** [December 19, 2024, 4:41pm UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/10 "2024-12-19T16:41:35Z")

</div>

Hi @Fiona.Chen ,  
I am currently working with the `INvDsInPlaceDataHandler` class but have encountered an issue. I get errors indicating that the following two packages were not found when I try to execute: #include “extensions/nvdsbase/nvds\_probe\_connector.hpp”

#include “extensions/nvdsinterface/interfaces.hpp”

|\_\_\_\_third party

|\_\_\_\_WORKSPACE

```
 | ____.bazelrc

 | ____ apps

          | | ____ app.yaml

 | ____ extensions
      | | ____ nvdsinterface
             | | ____ interfaces.hpp

      | | ____ nvdsbase
             | | ____ nvds_probe_connector.hpp

      | | ____ test

           | | | ____ BUILD

           | | | ____ HelloWorld.hpp

           | | | ____ test.cpp

           | | | ____ HelloWorld.cpp

```

I tried placing the missing packages inside the `extensions` folder (which is at the same level as `WORKSPACE` and `apps`), but I am still encountering the same issue.

Could you please advise on how to resolve this?

[https://docs.nvidia.com/metropolis/deepstream/6.3/dev-guide/text/DS\_Zero\_Coding\_Developing\_Extension.html#implementation-of-invdsinplacedatahandler](https://docs.nvidia.com/metropolis/deepstream/6.3/dev-guide/text/DS_Zero_Coding_Developing_Extension.html#implementation-of-invdsinplacedatahandler)

---

<div class="post-metadata">

**Author:** ![Fiona.Chen](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/fiona.chen/32/15508_2.png) [@Fiona.Chen](https://forums.developer.nvidia.com/u/Fiona.Chen)\
**Post date:** [December 23, 2024, 8:10am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/11 "2024-12-23T08:10:18Z")

</div>

This topic is duplicated with [Metadata Not Saved in Redis: Issue with Custom Graph Execution - Intelligent Video Analytics / DeepStream SDK - NVIDIA Developer Forums](https://forums.developer.nvidia.com/t/metadata-not-saved-in-redis-issue-with-custom-graph-execution/315660)? Which one do you want to keep open for discussion? We need to close one of them.

---

<div class="post-metadata">

**Author:** ![amine.ghamgui.anavid](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@amine.ghamgui.anavid](https://forums.developer.nvidia.com/u/amine.ghamgui.anavid)\
**Post date:** [December 23, 2024, 8:18am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/12 "2024-12-23T08:18:03Z")

</div>

Hi @Fiona.Chen , I have closed the other topic; please continue with this one.

---

<div class="post-metadata">

**Author:** ![amine.ghamgui.anavid](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@amine.ghamgui.anavid](https://forums.developer.nvidia.com/u/amine.ghamgui.anavid)\
**Post date:** [December 23, 2024, 8:21am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/13 "2024-12-23T08:21:14Z")

</div>

How can I resolve this issue?

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/system/32/68080_2.png) [@system](https://forums.developer.nvidia.com/u/system)\
**Post date:** [January 6, 2025, 8:21am UTC](https://forums.developer.nvidia.com/t/issue-while-building-extension-in-deepstream-6-3/316340/14 "2025-01-06T08:21:38Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
