Module: sems
Branch: master
Commit: fcf0186040d68cdd86770892a35b6903ee1370f2
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=fcf0186040d68cdd86770892a35b6903ee1370f2

Author: Raphael Coeffic <[email protected]>
Committer: Raphael Coeffic <[email protected]>
Date:   Wed Dec 14 12:34:45 2011 +0100

moved payload provider to AmRtpStream.

---

 core/AmPlugIn.h       |    8 ++++----
 core/AmPrecodedFile.h |   12 +++++++-----
 core/AmRtpAudio.cpp   |    9 ++++-----
 core/AmRtpAudio.h     |    3 +--
 core/AmRtpStream.cpp  |   19 +++++++++++--------
 core/AmRtpStream.h    |    7 +++++--
 core/AmSdp.cpp        |    2 +-
 core/AmSdp.h          |    2 +-
 core/AmSession.cpp    |    7 +------
 core/AmSession.h      |    6 ------
 10 files changed, 35 insertions(+), 40 deletions(-)

diff --git a/core/AmPlugIn.h b/core/AmPlugIn.h
index e443f33..2d0c661 100644
--- a/core/AmPlugIn.h
+++ b/core/AmPlugIn.h
@@ -55,10 +55,10 @@ struct amci_inoutfmt_t;
 struct amci_subtype_t;
 
 /** Interface that a payload provider needs to implement */
-class AmPayloadProviderInterface {
+class AmPayloadProvider {
  public: 
-  AmPayloadProviderInterface() { }
-  virtual ~AmPayloadProviderInterface() { }
+  AmPayloadProvider() { }
+  virtual ~AmPayloadProvider() { }
   
   /** 
    * Payload lookup function.
@@ -83,7 +83,7 @@ class AmPayloadProviderInterface {
 /**
  * \brief Container for loaded Plug-ins.
  */
-class AmPlugIn : public AmPayloadProviderInterface
+class AmPlugIn : public AmPayloadProvider
 {
  private:
   static AmPlugIn* _instance;
diff --git a/core/AmPrecodedFile.h b/core/AmPrecodedFile.h
index 0b3b293..29cba56 100644
--- a/core/AmPrecodedFile.h
+++ b/core/AmPrecodedFile.h
@@ -97,7 +97,7 @@ class AmPrecodedFileInstance
 };
 
 class AmPrecodedFile 
-: public AmPayloadProviderInterface {
+: public AmPayloadProvider {
 
   std::map<int,precoded_payload_t>  payloads;
 
@@ -105,17 +105,19 @@ class AmPrecodedFile
   AmPrecodedFile();
   ~AmPrecodedFile();
 
+  /** Open the file */
+  int open(const std::string& filename);
+
   /** need to call after open() */
   void initPlugin();
 
-  int open(const std::string& filename);
+  AmPrecodedFileInstance* getFileInstance(int payload_id, 
+                            const vector<SdpPayload*>&  m_payloads);
 
+  /** from @AmPayloadProvider */
   amci_payload_t*  payload(int payload_id) const;
   int getDynPayload(const string& name, int rate, int encoding_param) const;
-
   void getPayloads(vector<SdpPayload>& pl_vec) const;
-
-  AmPrecodedFileInstance* getFileInstance(int payload_id, const 
vector<SdpPayload*>&  m_payloads);
 };
 
 #endif
diff --git a/core/AmRtpAudio.cpp b/core/AmRtpAudio.cpp
index 48eae7c..f352a34 100644
--- a/core/AmRtpAudio.cpp
+++ b/core/AmRtpAudio.cpp
@@ -151,13 +151,12 @@ void AmRtpAudio::getSdpAnswer(const SdpMedia& offer, 
SdpMedia& answer)
   AmRtpStream::getSdpAnswer(offer,answer);
 }
 
-int AmRtpAudio::init(AmPayloadProviderInterface* payload_provider,
-                     unsigned char media_i, 
-                     const AmSdp& local,
-                     const AmSdp& remote)
+int AmRtpAudio::init(unsigned char media_i, 
+                    const AmSdp& local,
+                    const AmSdp& remote)
 {
   DBG("AmRtpAudio::init(...)\n");
-  if(AmRtpStream::init(payload_provider,media_i,local,remote)){
+  if(AmRtpStream::init(media_i,local,remote)){
     return -1;
   }
 
diff --git a/core/AmRtpAudio.h b/core/AmRtpAudio.h
index a2d52e2..08499d5 100644
--- a/core/AmRtpAudio.h
+++ b/core/AmRtpAudio.h
@@ -119,8 +119,7 @@ public:
   void getSdpOffer(SdpMedia& offer);
   void getSdpAnswer(const SdpMedia& offer, SdpMedia& answer);
 
-  int init(AmPayloadProviderInterface* payload_provider,
-          unsigned char media_i, 
+  int init(unsigned char media_i, 
           const AmSdp& local,
           const AmSdp& remote);
 
diff --git a/core/AmRtpStream.cpp b/core/AmRtpStream.cpp
index 8bece6b..88c75fb 100644
--- a/core/AmRtpStream.cpp
+++ b/core/AmRtpStream.cpp
@@ -441,6 +441,9 @@ AmRtpStream::AmRtpStream(AmSession* _s, int _if)
   l_ssrc = get_random();
   sequence = get_random();
   gettimeofday(&last_recv_time,NULL);
+
+  // by default the system codecs
+  payload_provider = AmPlugIn::instance();
 }
 
 AmRtpStream::~AmRtpStream()
@@ -563,21 +566,16 @@ void AmRtpStream::getSdp(SdpMedia& m)
 void AmRtpStream::getSdpOffer(SdpMedia& offer)
 {
   getSdp(offer);
-
-  // TODO: transfer ownership of the payload provider also into AmRtpStream
-  session->getPayloadProvider()->getPayloads(offer.payloads);
+  payload_provider->getPayloads(offer.payloads);
 }
 
 void AmRtpStream::getSdpAnswer(const SdpMedia& offer, SdpMedia& answer)
 {
   getSdp(answer);
-
-  // TODO: transfer ownership of the payload provider also into AmRtpStream
-  offer.calcAnswer(session->getPayloadProvider(),answer);
+  offer.calcAnswer(payload_provider,answer);
 }
 
-int AmRtpStream::init(AmPayloadProviderInterface* payload_provider,
-                     unsigned char media_i, 
+int AmRtpStream::init(unsigned char media_i, 
                      const AmSdp& local,
                      const AmSdp& remote)
 {
@@ -896,6 +894,11 @@ int AmRtpStream::getLocalTelephoneEventRate()
   return 0;
 }
 
+void AmRtpStream::setPayloadProvider(AmPayloadProvider* pl_prov)
+{
+  payload_provider = pl_prov;
+}
+
 void AmRtpStream::sendDtmf(int event, unsigned int duration_ms) {
   dtmf_send_queue_mut.lock();
   dtmf_send_queue.push(std::make_pair(event, duration_ms * 
getLocalTelephoneEventRate() 
diff --git a/core/AmRtpStream.h b/core/AmRtpStream.h
index a006d0a..5d63241 100644
--- a/core/AmRtpStream.h
+++ b/core/AmRtpStream.h
@@ -192,6 +192,8 @@ protected:
   pair<int, unsigned int> current_send_dtmf;
   unsigned int current_send_dtmf_ts;
   int send_dtmf_end_repeat;
+  /** Payload provider */
+  AmPayloadProvider* payload_provider;
 
   /** handle symmetric RTP - if in passive mode, update raddr from rp */
   void handleSymmetricRtp(AmRtpPacket* rp);
@@ -283,6 +285,8 @@ public:
 
   int getLocalTelephoneEventRate();
 
+  void setPayloadProvider(AmPayloadProvider* pl_prov);
+
   /**
    * send a DTMF as RTP payload (RFC4733)
    * @param event event ID (e.g. key press), see rfc
@@ -310,8 +314,7 @@ public:
    * @warning It should be called only if the stream has been completly 
initialized,
    * @warning and only once per session. Use resume() then.
    */
-  virtual int init(AmPayloadProviderInterface* payload_provider,
-                  unsigned char media_i, 
+  virtual int init(unsigned char media_i, 
                   const AmSdp& local,
                   const AmSdp& remote);
 
diff --git a/core/AmSdp.cpp b/core/AmSdp.cpp
index 6a3859f..066e2eb 100644
--- a/core/AmSdp.cpp
+++ b/core/AmSdp.cpp
@@ -293,7 +293,7 @@ void AmSdp::clear()
   l_origin = SdpOrigin();
 }
 
-void SdpMedia::calcAnswer(const AmPayloadProviderInterface* payload_prov,
+void SdpMedia::calcAnswer(const AmPayloadProvider* payload_prov,
                          SdpMedia& answer) const
 {
   if(!recv) answer.send = false;
diff --git a/core/AmSdp.h b/core/AmSdp.h
index 4bbdc6e..e7b81db 100644
--- a/core/AmSdp.h
+++ b/core/AmSdp.h
@@ -156,7 +156,7 @@ struct SdpMedia
    * inserts them into the answer, compute send/recv attributes
    * and direction according to the offer.
    */
-  void calcAnswer(const AmPayloadProviderInterface* payload_prov, 
+  void calcAnswer(const AmPayloadProvider* payload_prov, 
                  SdpMedia& answer) const;
 };
 
diff --git a/core/AmSession.cpp b/core/AmSession.cpp
index 0220572..a9350ef 100644
--- a/core/AmSession.cpp
+++ b/core/AmSession.cpp
@@ -272,11 +272,6 @@ int AmSession::getRPort()
   return RTPStream()->getRPort();
 }
 
-AmPayloadProviderInterface* AmSession::getPayloadProvider() {
-  // by default the system codecs
-  return AmPlugIn::instance();
-}
-
 #ifdef SESSION_THREADPOOL
 void AmSession::start() {
   AmSessionProcessorThread* processor_thread = 
@@ -1056,7 +1051,7 @@ int AmSession::onSdpCompleted(const AmSdp& local_sdp, 
const AmSdp& remote_sdp)
   //     should be created or updated   
   //
   lockAudio();
-  int ret = RTPStream()->init(getPayloadProvider(),0,local_sdp,remote_sdp);
+  int ret = RTPStream()->init(0,local_sdp,remote_sdp);
   unlockAudio();
   
   if(ret){
diff --git a/core/AmSession.h b/core/AmSession.h
index 4a6691b..2cd58b9 100644
--- a/core/AmSession.h
+++ b/core/AmSession.h
@@ -371,12 +371,6 @@ public:
   /** Gets the port number of the remote part of the session */
   int getRPort();
 
-  /** Set whether on positive reply session should be negotiated */
-  //void setNegotiateOnReply(bool n) { negotiate_onreply = n; }
-
-  /** get the payload provider for the session */
-  virtual AmPayloadProviderInterface* getPayloadProvider();
-
   /* ----         Call control                         ---- */
 
   /** refresh the session - re-INVITE or UPDATE*/

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to