diff --git a/src/call.h b/src/call.h
index bdf4ca5524c479605e7bbb15760a00826c770273..48d74cbb48d16d348a6ff22a20ab53fc7fe4d572 100644
--- a/src/call.h
+++ b/src/call.h
@@ -56,6 +56,10 @@ class Call;
 
 using CallMap = std::map<std::string, std::shared_ptr<Call>>;
 
+namespace video {
+class VideoGenerator;
+}
+
 /*
  * @file call.h
  * @brief A call is the base class for protocol-based calls
@@ -64,9 +68,6 @@ using CallMap = std::map<std::string, std::shared_ptr<Call>>;
 class Call : public Recordable, public PeerRecorder, public std::enable_shared_from_this<Call>
 {
 public:
-    // Opaque type to pass video receiver instances.
-    typedef void* VideoReceiverOpq;
-
     // A map to pass media attributes between the daemon and the clients.
     using MediaMap = std::map<std::string, std::string>;
     /**
@@ -337,7 +338,7 @@ public: // media management
 
     virtual void enterConference(const std::string& confId) = 0;
     virtual void exitConference() = 0;
-    virtual VideoReceiverOpq getVideoReceiver() = 0;
+    virtual video::VideoGenerator* getVideoReceiver() = 0;
 
     std::vector<std::map<std::string, std::string>> getConferenceInfos() const
     {
diff --git a/src/sip/sipcall.h b/src/sip/sipcall.h
index e3ba523946748b527d0cb0e57dbecaec7622407c..76e63cc8bb90ddbbedebe144311acc1210d33e42 100644
--- a/src/sip/sipcall.h
+++ b/src/sip/sipcall.h
@@ -121,9 +121,9 @@ public:
 
     void enterConference(const std::string& confId) override;
     void exitConference() override;
-    VideoReceiverOpq getVideoReceiver() override
+    video::VideoGenerator* getVideoReceiver() override
     {
-        return reinterpret_cast<VideoReceiverOpq>(videortp_->getVideoReceive().get());
+        return videortp_->getVideoReceive().get();
     }
 
     // Overrides of Recordable base class.