Janus EchoTest plugin. More...
#include "plugin.h"
#include <jansson.h>
#include "../debug.h"
#include "../apierror.h"
#include "../config.h"
#include "../mutex.h"
#include "../record.h"
#include "../rtcp.h"
#include "../sdp-utils.h"
#include "../utils.h"
Data Structures | |
struct | janus_echotest_message |
struct | janus_echotest_session |
Macros | |
#define | JANUS_ECHOTEST_VERSION 6 |
#define | JANUS_ECHOTEST_VERSION_STRING "0.0.6" |
#define | JANUS_ECHOTEST_DESCRIPTION "This is a trivial EchoTest plugin for Janus, just used to showcase the plugin interface." |
#define | JANUS_ECHOTEST_NAME "JANUS EchoTest plugin" |
#define | JANUS_ECHOTEST_AUTHOR "Meetecho s.r.l." |
#define | JANUS_ECHOTEST_PACKAGE "janus.plugin.echotest" |
#define | JANUS_ECHOTEST_ERROR_NO_MESSAGE 411 |
#define | JANUS_ECHOTEST_ERROR_INVALID_JSON 412 |
#define | JANUS_ECHOTEST_ERROR_INVALID_ELEMENT 413 |
#define | JANUS_ECHOTEST_ERROR_INVALID_SDP 414 |
Typedefs | |
typedef struct janus_echotest_message | janus_echotest_message |
typedef struct janus_echotest_session | janus_echotest_session |
Janus EchoTest plugin.
This is a trivial EchoTest plugin for Janus, just used to showcase the plugin interface. A peer attaching to this plugin will receive back the same RTP packets and RTCP messages he sends: the RTCP messages, of course, would be modified on the way by the gateway to make sure they are coherent with the involved SSRCs. In order to demonstrate how peer-provided messages can change the behaviour of a plugin, this plugin implements a simple API based on three messages:
There's a single unnamed request you can send and it's asynchronous, which means all responses (successes and errors) will be delivered as events with the same transaction.
The request has to be formatted as follows. All the attributes are optional, so any request can contain a subset of them:
{ "audio" : true|false, "video" : true|false, "bitrate" : <numeric bitrate value>, "record" : true|false, "filename" : <base path/filename to use for the recording> }
audio
instructs the plugin to do or do not bounce back audio frames; video
does the same for video; bitrate
caps the bandwidth to force on the browser encoding side (e.g., 128000 for 128kbps).
The first request must be sent together with a JSEP offer to negotiate a PeerConnection: a JSEP answer will be provided with the asynchronous response notification. Subsequent requests (e.g., to dynamically manipulate the bitrate while testing) have to be sent without any JSEP payload attached.
A successful request will result in an ok
event:
{ "echotest" : "event", "result": "ok" }
An error instead will provide both an error code and a more verbose description of the cause of the issue:
{ "echotest" : "event", "error_code" : <numeric ID, check Macros below>, "error" : "<error description as a string>" }
If the plugin detects a loss of the associated PeerConnection, a "done" notification is triggered to inform the application the Echo Test session is over:
{ "echotest" : "event", "result": "done" }
#define JANUS_ECHOTEST_AUTHOR "Meetecho s.r.l." |
#define JANUS_ECHOTEST_DESCRIPTION "This is a trivial EchoTest plugin for Janus, just used to showcase the plugin interface." |
#define JANUS_ECHOTEST_ERROR_INVALID_ELEMENT 413 |
#define JANUS_ECHOTEST_ERROR_INVALID_JSON 412 |
#define JANUS_ECHOTEST_ERROR_INVALID_SDP 414 |
#define JANUS_ECHOTEST_ERROR_NO_MESSAGE 411 |
#define JANUS_ECHOTEST_NAME "JANUS EchoTest plugin" |
#define JANUS_ECHOTEST_PACKAGE "janus.plugin.echotest" |
#define JANUS_ECHOTEST_VERSION 6 |
#define JANUS_ECHOTEST_VERSION_STRING "0.0.6" |
typedef struct janus_echotest_message janus_echotest_message |
typedef struct janus_echotest_session janus_echotest_session |
janus_plugin* create | ( | void | ) |
void janus_echotest_create_session | ( | janus_plugin_session * | handle, |
int * | error | ||
) |
void janus_echotest_destroy | ( | void | ) |
void janus_echotest_destroy_session | ( | janus_plugin_session * | handle, |
int * | error | ||
) |
int janus_echotest_get_api_compatibility | ( | void | ) |
const char * janus_echotest_get_author | ( | void | ) |
const char * janus_echotest_get_description | ( | void | ) |
const char * janus_echotest_get_name | ( | void | ) |
const char * janus_echotest_get_package | ( | void | ) |
int janus_echotest_get_version | ( | void | ) |
const char * janus_echotest_get_version_string | ( | void | ) |
struct janus_plugin_result * janus_echotest_handle_message | ( | janus_plugin_session * | handle, |
char * | transaction, | ||
json_t * | message, | ||
json_t * | jsep | ||
) |
void janus_echotest_hangup_media | ( | janus_plugin_session * | handle | ) |
void janus_echotest_incoming_data | ( | janus_plugin_session * | handle, |
char * | buf, | ||
int | len | ||
) |
void janus_echotest_incoming_rtcp | ( | janus_plugin_session * | handle, |
int | video, | ||
char * | buf, | ||
int | len | ||
) |
void janus_echotest_incoming_rtp | ( | janus_plugin_session * | handle, |
int | video, | ||
char * | buf, | ||
int | len | ||
) |
int janus_echotest_init | ( | janus_callbacks * | callback, |
const char * | config_path | ||
) |
json_t * janus_echotest_query_session | ( | janus_plugin_session * | handle | ) |
void janus_echotest_setup_media | ( | janus_plugin_session * | handle | ) |
void janus_echotest_slow_link | ( | janus_plugin_session * | handle, |
int | uplink, | ||
int | video | ||
) |