<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/2265/">https://reviewboard.asterisk.org/r/2265/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On January 21st, 2013, 8:23 a.m., <b>opticron</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I have mixed feelings about normal playback being able to be controlled, but there are use cases I can think of for it.</pre>
 </blockquote>




 <p>On January 21st, 2013, 8:38 a.m., <b>Matt Jordan</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I have mixed feelings too. Here&#39;s a proposal:

When a control frame is processed by a call to ast_waitstreamfr_w_cb/ast_waitstream_fr, the control frame value is passed back. Otherwise, the control frame breaks the media playback (as currently implemented), but the value is handled by the ast_waistream* function call and passed back as 0, indicating playback &#39;success&#39;.

This would limit the potential damage from someone using AMI to stop a playback in, say, app_voicemail.</pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">That sounds reasonable.</pre>
<br />








<p>- opticron</p>


<br />
<p>On January 13th, 2013, 8:34 p.m., Matt Jordan wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By Matt Jordan.</div>


<p style="color: grey;"><i>Updated Jan. 13, 2013, 8:34 p.m.</i></p>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This patch adds a new AMI command &quot;ControlPlayback&quot; that allows a connected AMI client to control media being played to some channel. This behaves in one of two ways:
* If the media was initiated using the ControlPlayback application or AGI command, all media operations (fast forward, reverse, pause, stop, restart) behave exactly as if the user had initiated it via DTMF.
* If the media was initiated using the Playback application or AGI command (or any other mechanism of calling into ast_waitstream), the fast forward and reverse operations will move the media stream appropriately. Stop, pause, and restart all immediately stop playback.

As an added benefit, the AGI command &#39;control stream file&#39; and &#39;stream file&#39; now set the appropriate channel variables when done.

A corresponding set of tests was written for the Asterisk Test Suite, and is up for review at https://reviewboard.asterisk.org/r/2270

</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Automated:
The tests check for an AMI connection controlling both ControlPlayback as well as Playback. They test all five operations, and check that the channel variables have the appropriate values set after the test. Verification of stream manipulation is performed via test events.

System:
Connected a SIP phone, dropped it into an AGI, and initiated a &#39;stream file&#39; or &#39;control stream file&#39;. Verified that an AMI connection could manipulate the stream. Listened to tt-monkeys incessantly, probably driving the people in the offices next to me crazy.

MONKEYS.</pre>
  </td>
 </tr>
</table>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-20882">ASTERISK-20882</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/trunk/res/res_agi.c <span style="color: grey">(378998)</span></li>

 <li>/trunk/main/file.c <span style="color: grey">(378998)</span></li>

 <li>/trunk/main/channel.c <span style="color: grey">(378998)</span></li>

 <li>/trunk/main/app.c <span style="color: grey">(378998)</span></li>

 <li>/trunk/include/asterisk/frame.h <span style="color: grey">(378998)</span></li>

 <li>/trunk/funcs/func_frame_trace.c <span style="color: grey">(378998)</span></li>

 <li>/trunk/include/asterisk/file.h <span style="color: grey">(378998)</span></li>

 <li>/trunk/apps/app_playback.c <span style="color: grey">(378998)</span></li>

 <li>/trunk/apps/app_controlplayback.c <span style="color: grey">(378998)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/2265/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>