Fork me on GitHub
No Matches
Go to the documentation of this file.
149#ifndef JANUS_PLUGIN_H
150#define JANUS_PLUGIN_H
152#include <stdlib.h>
153#include <stdint.h>
154#include <stdio.h>
155#include <string.h>
156#include <ctype.h>
157#include <unistd.h>
158#include <inttypes.h>
160#include <glib.h>
162#include "refcount.h"
192#define JANUS_PLUGIN_INIT(...) { \
193 .init = NULL, \
194 .destroy = NULL, \
195 .get_api_compatibility = NULL, \
196 .get_version = NULL, \
197 .get_version_string = NULL, \
198 .get_description = NULL, \
199 .get_name = NULL, \
200 .get_author = NULL, \
201 .get_package = NULL, \
202 .create_session = NULL, \
203 .handle_message = NULL, \
204 .handle_admin_message = NULL, \
205 .setup_media = NULL, \
206 .incoming_rtp = NULL, \
207 .incoming_rtcp = NULL, \
208 .incoming_data = NULL, \
209 .data_ready = NULL, \
210 .slow_link = NULL, \
211 .hangup_media = NULL, \
212 .destroy_session = NULL, \
213 .query_session = NULL, \
214 ## __VA_ARGS__ }
235/* Use forward declaration to avoid including jansson.h */
236typedef struct json_t json_t;
246 volatile gint stopped;
257 int (* const init)(janus_callbacks *callback, const char *config_path);
259 void (* const destroy)(void);
267 int (* const get_api_compatibility)(void);
269 int (* const get_version)(void);
271 const char *(* const get_version_string)(void);
273 const char *(* const get_description)(void);
275 const char *(* const get_name)(void);
277 const char *(* const get_author)(void);
279 const char *(* const get_package)(void);
284 void (* const create_session)(janus_plugin_session *handle, int *error);
292 struct janus_plugin_result * (* const handle_message)(janus_plugin_session *handle, char *transaction, json_t *message, json_t *jsep);
296 struct json_t * (* const handle_admin_message)(json_t *message);
299 void (* const setup_media)(janus_plugin_session *handle);
303 void (* const incoming_rtp)(janus_plugin_session *handle, janus_plugin_rtp *packet);
307 void (* const incoming_rtcp)(janus_plugin_session *handle, janus_plugin_rtcp *packet);
314 void (* const incoming_data)(janus_plugin_session *handle, janus_plugin_data *packet);
319 void (* const data_ready)(janus_plugin_session *handle);
336 void (* const slow_link)(janus_plugin_session *handle, gboolean uplink, gboolean video);
339 void (* const hangup_media)(janus_plugin_session *handle);
343 void (* const destroy_session)(janus_plugin_session *handle, int *error);
364 int (* const push_event)(janus_plugin_session *handle, janus_plugin *plugin, const char *transaction, json_t *message, json_t *jsep);
369 void (* const relay_rtp)(janus_plugin_session *handle, janus_plugin_rtp *packet);
373 void (* const relay_rtcp)(janus_plugin_session *handle, janus_plugin_rtcp *packet);
380 void (* const relay_data)(janus_plugin_session *handle, janus_plugin_data *packet);
386 void (* const send_pli)(janus_plugin_session *handle);
392 void (* const send_remb)(janus_plugin_session *handle, guint32 bitrate);
398 void (* const close_pc)(janus_plugin_session *handle);
403 void (* const end_session)(janus_plugin_session *handle);
407 gboolean (* const events_is_enabled)(void);
413 void (* const notify_event)(janus_plugin *plugin, janus_plugin_session *handle, json_t *event);
417 gboolean (* const auth_is_signed)(void);
422 gboolean (* const auth_is_signature_valid)(janus_plugin *plugin, const char *token);
428 gboolean (* const auth_signature_contains)(janus_plugin *plugin, const char *token, const char *descriptor);
432typedef janus_plugin* create_p(void);
474 const char *text;
567 uint8_t dd_len;
569 uint8_t dd_content[256];
582 gboolean video;
584 char *buffer;
586 uint16_t length;
600 gboolean video;
602 char *buffer;
604 uint16_t length;
617 char *label;
619 char *protocol;
621 gboolean binary;
623 char *buffer;
625 uint16_t length;
struct json_t json_t
Definition: plugin.h:236
Result types.
Definition: plugin.h:455
The request was correctly handled and notifications will follow with more info (asynchronous)
Definition: plugin.h:461
A severe error happened (not an application level error)
Definition: plugin.h:457
The request was correctly handled and a response is provided (synchronous)
Definition: plugin.h:459
void janus_plugin_rtp_extensions_reset(janus_plugin_rtp_extensions *extensions)
Helper method to initialise/reset the RTP extensions field.
Definition: plugin.c:39
janus_plugin_result * janus_plugin_result_new(janus_plugin_result_type type, const char *text, json_t *content)
Helper to quickly create a janus_plugin_result instance.
Definition: plugin.c:20
void janus_plugin_rtp_reset(janus_plugin_rtp *packet)
Helper method to initialise/reset the RTP packet.
Definition: plugin.c:53
void janus_plugin_data_reset(janus_plugin_data *packet)
Helper method to initialise/reset the data message.
Definition: plugin.c:63
void janus_plugin_rtcp_reset(janus_plugin_rtcp *packet)
Helper method to initialise/reset the RTCP packet.
Definition: plugin.c:59
void janus_plugin_result_destroy(janus_plugin_result *result)
Helper to quickly destroy a janus_plugin_result instance.
Definition: plugin.c:29
janus_plugin * create_p(void)
The hook that plugins need to implement to be created from the Janus core.
Definition: plugin.h:432
Reference counter mechanism.
Callbacks to contact the Janus core.
Definition: plugin.h:354
void(*const end_session)(janus_plugin_session *handle)
Callback to ask the core to get rid of a plugin/gateway session.
Definition: plugin.h:403
void(*const relay_data)(janus_plugin_session *handle, janus_plugin_data *packet)
Callback to relay SCTP/DataChannel messages to a peer.
Definition: plugin.h:380
gboolean(*const events_is_enabled)(void)
Callback to check whether the event handlers mechanism is enabled.
Definition: plugin.h:407
void(*const close_pc)(janus_plugin_session *handle)
Callback to ask the core to close a WebRTC PeerConnection.
Definition: plugin.h:398
gboolean(*const auth_is_signature_valid)(janus_plugin *plugin, const char *token)
Method to check whether a signed token is valid.
Definition: plugin.h:422
gboolean(*const auth_signature_contains)(janus_plugin *plugin, const char *token, const char *descriptor)
Method to verify a signed token grants access to a descriptor.
Definition: plugin.h:428
int(*const push_event)(janus_plugin_session *handle, janus_plugin *plugin, const char *transaction, json_t *message, json_t *jsep)
Callback to push events/messages to a peer.
Definition: plugin.h:364
void(*const relay_rtcp)(janus_plugin_session *handle, janus_plugin_rtcp *packet)
Callback to relay RTCP messages to a peer.
Definition: plugin.h:373
void(*const send_pli)(janus_plugin_session *handle)
Helper to ask for a keyframe via a RTCP PLI.
Definition: plugin.h:386
void(*const notify_event)(janus_plugin *plugin, janus_plugin_session *handle, json_t *event)
Callback to notify an event to the registered and subscribed event handlers.
Definition: plugin.h:413
gboolean(*const auth_is_signed)(void)
Method to check whether the core is using signed tokens.
Definition: plugin.h:417
void(*const send_remb)(janus_plugin_session *handle, guint32 bitrate)
Helper to ask for a keyframe via a RTCP PLI.
Definition: plugin.h:392
void(*const relay_rtp)(janus_plugin_session *handle, janus_plugin_rtp *packet)
Callback to relay RTP packets to a peer.
Definition: plugin.h:369
Janus plugin data message.
Definition: plugin.h:615
gboolean binary
Whether the message data is text (default=FALSE) or binary.
Definition: plugin.h:621
char * buffer
The message data.
Definition: plugin.h:623
char * protocol
The subprotocol this message refers to.
Definition: plugin.h:619
char * label
The label this message belongs to.
Definition: plugin.h:617
uint16_t length
The message length.
Definition: plugin.h:625
Janus plugin result.
Definition: plugin.h:465
const char * text
Text associated with this plugin result.
Definition: plugin.h:474
json_t * content
Result content.
Definition: plugin.h:482
janus_plugin_result_type type
Result type.
Definition: plugin.h:467
Janus plugin RTCP packet.
Definition: plugin.h:598
uint16_t length
The packet length.
Definition: plugin.h:604
char * buffer
The packet data.
Definition: plugin.h:602
gboolean video
Whether this is an audio or video RTCP packet.
Definition: plugin.h:600
Janus plugin RTP extensions.
Definition: plugin.h:550
gboolean video_back_camera
Whether the video orientation extension says this is the back camera.
Definition: plugin.h:560
int16_t min_delay
Min and max playout delay, if available; -1 means no extension.
Definition: plugin.h:565
int8_t audio_level
Audio level, in DB (0-127, 127=silence); -1 means no extension.
Definition: plugin.h:552
int16_t video_rotation
Video orientation rotation (0, 90, 180, 270); -1 means no extension.
Definition: plugin.h:557
int16_t max_delay
Definition: plugin.h:565
gboolean audio_level_vad
Whether the encoder detected voice activity (part of audio-level extension)
Definition: plugin.h:555
gboolean video_flipped
Whether the video orientation extension says it's flipped horizontally.
Definition: plugin.h:563
uint8_t dd_content[256]
Dependency Descriptor content.
Definition: plugin.h:569
uint8_t dd_len
Length of Dependency Descriptor data, if available.
Definition: plugin.h:567
Janus plugin RTP packet.
Definition: plugin.h:580
char * buffer
The packet data.
Definition: plugin.h:584
janus_plugin_rtp_extensions extensions
RTP extensions.
Definition: plugin.h:588
gboolean video
Whether this is an audio or video RTP packet.
Definition: plugin.h:582
uint16_t length
The packet length.
Definition: plugin.h:586
Plugin-Gateway session mapping.
Definition: plugin.h:239
void * gateway_handle
Opaque pointer to the Janus core-level handle.
Definition: plugin.h:241
void * plugin_handle
Opaque pointer to the plugin session.
Definition: plugin.h:243
volatile gint stopped
Whether this mapping has been stopped definitely or not: if so, the plugin shouldn't make use of it a...
Definition: plugin.h:246
janus_refcount ref
Reference counter for this instance.
Definition: plugin.h:248
The plugin session and callbacks interface.
Definition: plugin.h:252
void(*const destroy)(void)
Plugin deinitialization/destructor.
Definition: plugin.h:259
struct janus_plugin_result *(*const handle_message)(janus_plugin_session *handle, char *transaction, json_t *message, json_t *jsep)
Method to handle an incoming message/request from a peer.
Definition: plugin.h:292
const char *(*const get_author)(void)
Informative method to request the author of the plugin.
Definition: plugin.h:277
void(*const hangup_media)(janus_plugin_session *handle)
Callback to be notified about DTLS alerts from a peer (i.e., the PeerConnection is not valid any more...
Definition: plugin.h:339
struct json_t *(*const handle_admin_message)(json_t *message)
Method to handle an incoming Admin API message/request.
Definition: plugin.h:296
void(*const incoming_rtp)(janus_plugin_session *handle, janus_plugin_rtp *packet)
Method to handle an incoming RTP packet from a peer.
Definition: plugin.h:303
void(*const setup_media)(janus_plugin_session *handle)
Callback to be notified when the associated PeerConnection is up and ready to be used.
Definition: plugin.h:299
int(*const get_version)(void)
Informative method to request the numeric version of the plugin.
Definition: plugin.h:269
const char *(*const get_package)(void)
Informative method to request the package name of the plugin (what will be used in web applications t...
Definition: plugin.h:279
const char *(*const get_description)(void)
Informative method to request a description of the plugin.
Definition: plugin.h:273
int(*const get_api_compatibility)(void)
Informative method to request the API version this plugin was compiled against.
Definition: plugin.h:267
void(*const create_session)(janus_plugin_session *handle, int *error)
Method to create a new session/handle for a peer.
Definition: plugin.h:284
void(*const destroy_session)(janus_plugin_session *handle, int *error)
Method to destroy a session/handle for a peer.
Definition: plugin.h:343
void(*const slow_link)(janus_plugin_session *handle, gboolean uplink, gboolean video)
Method to be notified by the core when too many NACKs have been received or sent by Janus,...
Definition: plugin.h:336
const char *(*const get_name)(void)
Informative method to request the name of the plugin.
Definition: plugin.h:275
void(*const incoming_rtcp)(janus_plugin_session *handle, janus_plugin_rtcp *packet)
Method to handle an incoming RTCP packet from a peer.
Definition: plugin.h:307
json_t *(*const query_session)(janus_plugin_session *handle)
Method to get plugin-specific info of a session/handle.
Definition: plugin.h:349
int(*const init)(janus_callbacks *callback, const char *config_path)
Plugin initialization/constructor.
Definition: plugin.h:257
void(*const data_ready)(janus_plugin_session *handle)
Method to be notified about the fact that the datachannel is ready to be written.
Definition: plugin.h:319
void(*const incoming_data)(janus_plugin_session *handle, janus_plugin_data *packet)
Method to handle incoming SCTP/DataChannel data from a peer (text only, for the moment)
Definition: plugin.h:314
const char *(*const get_version_string)(void)
Informative method to request the string version of the plugin.
Definition: plugin.h:271
Definition: refcount.h:78