AmPlugin have not payloads. Solution:

core/AmPrecodedFile.h
---------------------------
struct precoded_payload_t : public amci_payload_t {
 public:
  string c_name;
  string format_parameters;
  unsigned int frame_ms;
  unsigned int frame_bytes;
  string filename;

  precoded_payload_t() {codec_id = PRECODED_CODEC_ID;}
};

// need call after open()
void AmPrecodedFile::initPlugin() {
  for(std::map<int,precoded_payload_t>::iterator it = payloads.begin(); it != payloads.end(); ++it)
    AmPlugIn::instance()->addPayload(&it->second);
}

Or

// not static
void AmPrecodedFile::initPlugin() {
  AmPlugIn::instance()->addCodec(&_codec_precoded);
  for(std::map<int,precoded_payload_t>::iterator it = payloads.begin(); it != payloads.end(); ++it)
    AmPlugIn::instance()->addPayload(&it->second);
}

insted

// static
void AmPrecodedFile::initPrecodedCodec() {
  AmPlugIn::instance()->addCodec(&_codec_precoded);
}

precoded_announce/PrecodedAnnounce.cpp
---------------------------------------------------------------
int PrecodedFactory::onLoad() {
    .................
    if (precoded_file.open(cfg.getParameter("announcement_file")) < 0) {
      ERROR("loading precoded file");
      return -1;
    }

    precoded_file.initPlugin();
    ...................
}

P.S. The precoded_announce with //setReceiving(false); not understand silense (by SJphone) and always inband DTMFs.

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

Reply via email to