Module: sems Branch: master Commit: d746c94c1ddb7fa1b39adcbf7b74425922934d9d URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=d746c94c1ddb7fa1b39adcbf7b74425922934d9d
Author: Raphael Coeffic <[email protected]> Committer: Raphael Coeffic <[email protected]> Date: Wed Dec 14 16:26:22 2011 +0100 adapted to new payload provider in AmRtpStream --- apps/precoded_announce/PrecodedAnnounce.cpp | 26 +++----------------------- apps/precoded_announce/PrecodedAnnounce.h | 9 +-------- core/AmPrecodedFile.cpp | 18 +++++++----------- core/AmPrecodedFile.h | 10 +++------- 4 files changed, 14 insertions(+), 49 deletions(-) diff --git a/apps/precoded_announce/PrecodedAnnounce.cpp b/apps/precoded_announce/PrecodedAnnounce.cpp index b29e9a2..aff125d 100644 --- a/apps/precoded_announce/PrecodedAnnounce.cpp +++ b/apps/precoded_announce/PrecodedAnnounce.cpp @@ -62,37 +62,17 @@ AmSession* PrecodedFactory::onInvite(const AmSipRequest& req, const string& app_ PrecodedDialog::PrecodedDialog(AmPrecodedFile* file_def) : file_def(file_def) { + RTPStream()->setPayloadProvider(file_def); } PrecodedDialog::~PrecodedDialog() { } -AmPayloadProviderInterface* PrecodedDialog::getPayloadProvider() { - return file_def; -} - -AmAudioRtpFormat* PrecodedDialog::getNewRtpFormat() { - if (m_payloads.empty()) { - ERROR("can not create RTP format without payloads.\n"); - return NULL; - } - - current_payload = m_payloads[0]->payload_type; - - precoded_payload_t *precoded_payload = - static_cast<precoded_payload_t*>(file_def->payload(current_payload)); - if (precoded_payload == NULL) { - ERROR("new payload not provided\n"); - return NULL; - } - return new AmPrecodedRtpFormat(*precoded_payload, m_payloads); -} - void PrecodedDialog::onSessionStart() { - AmPrecodedFileInstance* file = file_def->getFileInstance(current_payload, - m_payloads); + AmPrecodedFileInstance* file = + file_def->getFileInstance(RTPStream()->getPayloadType()); if (!file) { ERROR("no payload\n"); } diff --git a/apps/precoded_announce/PrecodedAnnounce.h b/apps/precoded_announce/PrecodedAnnounce.h index 2b0788b..6eec2dc 100644 --- a/apps/precoded_announce/PrecodedAnnounce.h +++ b/apps/precoded_announce/PrecodedAnnounce.h @@ -48,22 +48,15 @@ public: class PrecodedDialog : public AmSession { - AmPrecodedFile* file_def; - int current_payload; -protected: - AmAudioRtpFormat* getNewRtpFormat(); - - public: +public: PrecodedDialog(AmPrecodedFile* file_def); ~PrecodedDialog(); void onSessionStart(); void onBye(const AmSipRequest& req); - - AmPayloadProviderInterface* getPayloadProvider(); }; #endif diff --git a/core/AmPrecodedFile.cpp b/core/AmPrecodedFile.cpp index 9325849..5235695 100644 --- a/core/AmPrecodedFile.cpp +++ b/core/AmPrecodedFile.cpp @@ -58,9 +58,8 @@ void AmPrecodedFile::initPlugin() { AmPlugIn::instance()->addPayload(&it->second); } -AmPrecodedRtpFormat::AmPrecodedRtpFormat(precoded_payload_t& precoded_payload, - const vector<SdpPayload *>& payloads) - : AmAudioRtpFormat(/*payloads*/), precoded_payload(precoded_payload) +AmPrecodedRtpFormat::AmPrecodedRtpFormat(precoded_payload_t& precoded_payload) + : AmAudioRtpFormat(), precoded_payload(precoded_payload) { channels = precoded_payload.channels; rate = precoded_payload.sample_rate; @@ -120,9 +119,8 @@ int precoded_file_close(FILE* fp, struct amci_file_desc_t* fmt_desc, int options return 0; } -AmPrecodedFileInstance::AmPrecodedFileInstance(precoded_payload_t& precoded_payload, - const vector<SdpPayload*>& payloads) - : AmAudioFile(), precoded_payload(precoded_payload), payloads(payloads) +AmPrecodedFileInstance::AmPrecodedFileInstance(precoded_payload_t& precoded_payload) + : AmAudioFile(), precoded_payload(precoded_payload) { memset(&m_iofmt, 0, sizeof(amci_inoutfmt_t)); m_iofmt.open = &precoded_file_open; @@ -142,7 +140,7 @@ int AmPrecodedFileInstance::open() { } AmPrecodedRtpFormat* AmPrecodedFileInstance::getRtpFormat() { - return new AmPrecodedRtpFormat(precoded_payload, payloads); + return new AmPrecodedRtpFormat(precoded_payload); } AmPrecodedFile::AmPrecodedFile() @@ -242,11 +240,9 @@ void AmPrecodedFile::getPayloads(vector<SdpPayload>& pl_vec) const } } -AmPrecodedFileInstance* AmPrecodedFile::getFileInstance(int payload_id, - const vector<SdpPayload*>& m_payloads) { +AmPrecodedFileInstance* AmPrecodedFile::getFileInstance(int payload_id) { std::map<int,precoded_payload_t>::iterator it=payloads.find(payload_id); if (it != payloads.end()) - return new AmPrecodedFileInstance(it->second, m_payloads); - + return new AmPrecodedFileInstance(it->second); return NULL; } diff --git a/core/AmPrecodedFile.h b/core/AmPrecodedFile.h index 29cba56..05aa6f5 100644 --- a/core/AmPrecodedFile.h +++ b/core/AmPrecodedFile.h @@ -68,8 +68,7 @@ class AmPrecodedRtpFormat : public AmAudioRtpFormat { precoded_payload_t& precoded_payload; public: - AmPrecodedRtpFormat(precoded_payload_t& precoded_payload, - const vector<SdpPayload *>& payloads); + AmPrecodedRtpFormat(precoded_payload_t& precoded_payload); ~AmPrecodedRtpFormat(); protected: @@ -80,12 +79,10 @@ class AmPrecodedFileInstance : public AmAudioFile { precoded_payload_t& precoded_payload; - const vector<SdpPayload*>& payloads; amci_inoutfmt_t m_iofmt; public: - AmPrecodedFileInstance(precoded_payload_t& precoded_payload, - const vector<SdpPayload*>& payloads); + AmPrecodedFileInstance(precoded_payload_t& precoded_payload); ~AmPrecodedFileInstance(); AmPrecodedRtpFormat* getRtpFormat(); @@ -111,8 +108,7 @@ class AmPrecodedFile /** need to call after open() */ void initPlugin(); - AmPrecodedFileInstance* getFileInstance(int payload_id, - const vector<SdpPayload*>& m_payloads); + AmPrecodedFileInstance* getFileInstance(int payload_id); /** from @AmPayloadProvider */ amci_payload_t* payload(int payload_id) const; _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
