[asterisk-dev] [Code Review] Add asynchronous control of media playback using AMI

Matt Jordan reviewboard at asterisk.org
Mon Jan 21 09:57:33 CST 2013

This is an automatically generated e-mail. To reply, visit:

(Updated Jan. 21, 2013, 9:57 a.m.)

Review request for Asterisk Developers.


Updated so that non-control stream implementations of the ast_waitstream family of functions do not pass back control frame values as a return code. Instead, that treat breakage of the stream by an external source to be a successful completion of the stream.

This should prevent odd situations where an AMI connection terminates a stream on someone in an application like VoiceMail and the application treats the return code as a hangup.


This patch adds a new AMI command "ControlPlayback" 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 'control stream file' and 'stream file' 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

This addresses bug ASTERISK-20882.

Diffs (updated)

  /trunk/apps/app_controlplayback.c 379697 
  /trunk/apps/app_playback.c 379697 
  /trunk/funcs/func_frame_trace.c 379697 
  /trunk/include/asterisk/file.h 379697 
  /trunk/include/asterisk/frame.h 379697 
  /trunk/main/app.c 379697 
  /trunk/main/channel.c 379697 
  /trunk/main/file.c 379697 
  /trunk/res/res_agi.c 379697 

Diff: https://reviewboard.asterisk.org/r/2265/diff


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.

Connected a SIP phone, dropped it into an AGI, and initiated a 'stream file' or 'control stream file'. 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.




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20130121/fbd42a36/attachment.htm>

More information about the asterisk-dev mailing list