Add ControlPlayback manager action

This patch adds the capability for asynchronous manipulation of audio being
played back to a channel though a new AMI action "ControlPlayback". The
ControlPlayback action supports a number of operations, the availability of
which depend on the application being used to send audio to the channel.
When the audio playback was initiated using the ControlPlayback application
or CONTROL STREAM FILE AGI command, the audio can be paused, stopped,
restarted, reversed, or skipped forward. When initiated by other mechanisms
(such as the Playback application), the audio can be stopped, reversed, or
skipped forward.

Review: https://reviewboard.asterisk.org/r/2265/

(closes issue ASTERISK-20882)
Reported by: mjordan



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@379830 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matthew Jordan
2013-01-22 15:16:20 +00:00
parent 985ea8b2c9
commit 7d9871b394
10 changed files with 392 additions and 53 deletions

View File

@@ -327,8 +327,23 @@ static void print_frame(struct ast_frame *frame)
case AST_CONTROL_PVT_CAUSE_CODE:
ast_verbose("SubClass: PVT_CAUSE_CODE\n");
break;
case AST_CONTROL_STREAM_STOP:
ast_verbose("SubClass: STREAM_STOP\n");
break;
case AST_CONTROL_STREAM_SUSPEND:
ast_verbose("SubClass: STREAM_SUSPEND\n");
break;
case AST_CONTROL_STREAM_RESTART:
ast_verbose("SubClass: STREAM_RESTART\n");
break;
case AST_CONTROL_STREAM_REVERSE:
ast_verbose("SubClass: STREAM_REVERSE\n");
break;
case AST_CONTROL_STREAM_FORWARD:
ast_verbose("SubClass: STREAM_FORWARD\n");
break;
}
if (frame->subclass.integer == -1) {
ast_verbose("SubClass: %d\n", frame->subclass.integer);
}