<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/1328/">https://reviewboard.asterisk.org/r/1328/</a>
     </td>
    </tr>
   </table>
   <br />





 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Just to explain the bug a little more clearly, in case anyone is curious...

This occurs when music on hold gets interrupted by app_queue to play the various intermittent speeches about how close you are to getting answered and that usual stuff.  If music on hold is near the end of a music on hold sound file as the interruption occurs, what happens is music on hold is stopped, the interruption occurs, and then music on hold is told to pick up at an offset based on how far into the song it would be if the interruption hadn&#39;t occured.

So basically 
new_start = end_of_last_playback + time_of_interruption

If this new_start value happens to point to an offset that is after the end of the song file, the queue playback gets stuck, and rather than simply going on to the next song from there, music on hold won&#39;t start playing again.  The interruptions still occur, and after each interruption is finished, it will again try to start music on hold at the location of failure and fail again.

This patch fixes that by detecting when failures from that occur and then doing a second seek at a frame before the end of the file, and that has fixed the problem as I have observed it.

I suspect that the reason this affects g722 rather than the other codecs I&#39;ve tried is because the seek value seeks by byte or something of fixed size while g722, being an HD format, has a larger frame size.</pre>
 <br />







<p>- jrose</p>


<br />
<p>On July 21st, 2011, 2:56 p.m., opticron 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 opticron.</div>


<p style="color: grey;"><i>Updated July 21, 2011, 2:56 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;">With a g722 call connected to the queue, after listening up to the end of the second song, the music on hold will be interrupted by a generic Allison message about representatives being busy and once the message concludes, the following error will show up:

WARNING[16606]: format_pcm.c:140 pcm_seek: offset too large 2303040, truncating to 2232088

and at this point, the music will not resume and interruptions will continue as normal. That message will continue to play with those same values after each interruption.

Note: This was only experienced with G.722 out of several codecs tested, but could conceivably happen with other codecs.</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;">Confirmed that the patch fixes the issue described.</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-18077">ASTERISK-18077</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_musiconhold.c <span style="color: grey">(329103)</span></li>

</ul>

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




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








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