<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Rtplib in Call Control</title>
    <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422591#M40</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks so much!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 17 Nov 2014 15:02:55 GMT</pubDate>
    <dc:creator>npetrele</dc:creator>
    <dc:date>2014-11-17T15:02:55Z</dc:date>
    <item>
      <title>Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422588#M37</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is there an sample code anywhere on how to use the Rtplib API to play an announcement?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ben&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Nov 2014 20:46:35 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422588#M37</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2014-11-07T20:46:35Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422589#M38</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ben,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We covered this in the trouble ticket, and you've got it working.&amp;nbsp; Would you feel comfortable sharing your final code for this one operation? There's nothing confidential in the code snippet you sent me.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's the sequence, for the benefit of others:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EpOpenById&lt;/P&gt;&lt;P&gt;EpGetStreamHandle&lt;/P&gt;&lt;P&gt;EpStreamStart&lt;/P&gt;&lt;P&gt;EpStreamWrite&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Nov 2014 19:37:49 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422589#M38</guid>
      <dc:creator>npetrele</dc:creator>
      <dc:date>2014-11-13T19:37:49Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422590#M39</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is the code sample that worked for me:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;int rc;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!EpApiInit ((PRTPLIBTRACE)rtpInitCallback, 21100, 500, AF_INET, NULL)) {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;rc = EpApiGetLastError();&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;ERROR("TAPIWaveOut() - failed to initialize with error %d\n", rc);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_media_handle = EpOpenById(p_dwWaveDeviceIDOut, Both, (PRTPENDPOINTCALLBACK)rtpEndpointCallback);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_media_handle == NULL) {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;rc = EpApiGetLastError();&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;ERROR("TAPIWaveOut() - failed to open media handle with error %d\n", rc);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;m_stream_handle&amp;nbsp;&amp;nbsp;&amp;nbsp; = EpGetStreamHandle (m_media_handle, STREAM_TYPE_AUDIO, ToNwk);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_stream_handle == NULL) {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;rc = EpApiGetLastError();&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;ERROR("MediaStreamStart() - failed to open stream handle with error %d\n", rc);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;return -1;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = EpStreamStart (m_stream_handle, (PRTPENDPOINTCALLBACK)rtpDataCallback);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rc == 0) {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;rc = EpApiGetLastError();&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;ERROR("MediaStreamStart() - failed to start stream with error %d\n", rc);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;return -1;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FILE *fd = fopen(m_strFileName.c_str(), "r");&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fseek(fd, 0, SEEK_END);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int fileSize = ftell(fd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fseek(fd, 0, SEEK_SET);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;char *wav_buffer = (char *) malloc (sizeof(char)*fileSize);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int rc = fread(wav_buffer, 1, fileSize, fd);&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = EpStreamWrite (m_stream_handle, (PUCHAR)wav_buffer, fileSize, NULL, (PRTPENDPOINTCALLBACK)rtpWriteCallback);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rc == 0) {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;rc = EpApiGetLastError();&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;ERROR("Play() - failed to write stream with error %d\n", rc);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;return -1;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt; &lt;/TD&gt;&lt;TD&gt;INFO("Play() - start stream succeeded\n");&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Nov 2014 14:52:53 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422590#M39</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2014-11-17T14:52:53Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422591#M40</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks so much!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Nov 2014 15:02:55 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422591#M40</guid>
      <dc:creator>npetrele</dc:creator>
      <dc:date>2014-11-17T15:02:55Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422592#M41</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I came back to this project after tabling it for a bit. Quite often, in response to my EpOpenById() calls I'm getting a EP_ERR_TOAPP_INVALID_STATE error. It doesn't happen every time, sometimes the call is successful. After I get the error I just wait some period of time and try again and it works. Any ideas? The documentation for TAPI media is sorely lacking.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ben&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Mar 2015 20:54:23 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422592#M41</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2015-03-31T20:54:23Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422593#M42</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You'll get an &lt;SPAN style="color: #3d3d3d; font-family: arial; font-size: 12px;"&gt;EP_ERR_TOAPP_INVALID_STATE error if the stream is already started with &lt;SPAN style="color: #3d3d3d; font-family: arial; font-size: 12px;"&gt;EpStreamStart&lt;/SPAN&gt;.&amp;nbsp; Maybe you're experiencing a timing issue or race condition?&amp;nbsp; Are you doing the epClose?&amp;nbsp; epApiClose before you exit the app?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Mar 2015 21:22:40 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422593#M42</guid>
      <dc:creator>npetrele</dc:creator>
      <dc:date>2015-03-31T21:22:40Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422594#M43</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am doing an EpClose. I'm not calling EpApiClose because right now there is no graceful way to shut down the app. The sequence of function calls is this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EpApiInit()&lt;/P&gt;&lt;P&gt;EpOpenById()&lt;/P&gt;&lt;P&gt;EpGetStreamHandle()&lt;/P&gt;&lt;P&gt;EpStreamStart()&lt;/P&gt;&lt;P&gt;EpStreamWrite()&lt;/P&gt;&lt;P&gt;EpStreamStop()&lt;/P&gt;&lt;P&gt;EpClose()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Strangely, I can't seem to get this to work at all now even after not running anything overnight. Does the rtplib output any logs anywhere? Is there a way to check if there are outstanding open streams and is there a way to force close them? &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Apr 2015 13:22:48 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422594#M43</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2015-04-01T13:22:48Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422595#M44</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I managed to get things to a point where it is pretty reproducible and these are the steps and what I see:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EpApiInit()&lt;/P&gt;&lt;P&gt;EpOpenById()&lt;/P&gt;&lt;P&gt;EpGetStreamHandle()&lt;/P&gt;&lt;P&gt;EpStreamStart()&lt;/P&gt;&lt;P&gt;EpStreamWrite()&lt;/P&gt;&lt;P&gt;EpStreamStop()&lt;/P&gt;&lt;P&gt;EpClose()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This all succeeds. Then a second attempt (without restarting the app) fails on EpOpenById() with the &lt;SPAN style="color: #3d3d3d; font-family: arial; font-size: 12px;"&gt;EP_ERR_TOAPP_INVALID_STATE error.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial; font-size: 12px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial; font-size: 12px;"&gt;If I stop my application and restart it I get the same exact behavior where the first attempt succeeds and the second one fails.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 18:23:22 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422595#M44</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2015-04-02T18:23:22Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422596#M45</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What are your callbacks doing to make sure the data transfer is completed?&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As an aside, isn't there a way to capture whatever event closes the application so you can execute EpApiClose() in order to stop everything cleanly?&amp;nbsp; Even if that's not the cause of this problem, it's a good practice.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 20:00:30 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422596#M45</guid>
      <dc:creator>npetrele</dc:creator>
      <dc:date>2015-04-02T20:00:30Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422597#M46</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's another strange thing, even when everything works properly the only callback that gets called is the callback for EpStreamWrite(). In this case I'm just dumping the data out to the console so I can see when the transfer is done.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 20:12:42 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422597#M46</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2015-04-02T20:12:42Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422598#M47</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I just realized that at some point (probably after changing the code to properly shut things down) the error code changed to 17003 (EP_ERR_PARAM_INVALID) rather than 1301. I enabled highest level rtplib debugging and the exact error is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EP_ERR_PARAM_INVALID: EpOpenAndSetId remote address not set for id: 34&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 20:27:22 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422598#M47</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2015-04-02T20:27:22Z</dc:date>
    </item>
    <item>
      <title>Re: Rtplib</title>
      <link>https://community.cisco.com/t5/call-control/rtplib/m-p/3422599#M48</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Figured it out. Turns out you have to wait for a LINE_DEVSPECIFIC event before you can call EpOpenById(). The API documentation says that you need to wait for an event of type SLDSMT_START_TRANSMISION, however I was never seeing this type of event but I am getting an event of type SLDSMT_START_TRANSMISION_ADDRESSING_MODE (transmission is misspelled in the header file).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Apr 2015 15:23:45 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/rtplib/m-p/3422599#M48</guid>
      <dc:creator>bhoover02</dc:creator>
      <dc:date>2015-04-03T15:23:45Z</dc:date>
    </item>
  </channel>
</rss>

