Fork me on GitHub
janus_lua_data.h
Go to the documentation of this file.
1 
23 #ifndef JANUS_LUA_DATA_H
24 #define JANUS_LUA_DATA_H
25 
26 #include <lua.h>
27 #include <lualib.h>
28 #include <lauxlib.h>
29 
30 #include "plugin.h"
31 
32 #include "debug.h"
33 #include "apierror.h"
34 #include "config.h"
35 #include "mutex.h"
36 #include "rtp.h"
37 #include "rtcp.h"
38 #include "sdp-utils.h"
39 #include "record.h"
40 #include "utils.h"
41 
42 /* Core pointer and related flags */
43 extern volatile gint lua_initialized, lua_stopping;
45 
46 /* Lua state: we define state and mutex as extern */
47 extern lua_State *lua_state;
48 extern janus_mutex lua_mutex;
49 
50 /* Lua session: we keep only the barebone stuff here, the rest will be in the Lua script */
51 typedef struct janus_lua_session {
52  janus_plugin_session *handle; /* Pointer to the core-plugin session */
53  uint32_t id; /* Unique session ID (will be used to correlate with the Lua script) */
54  /* The following are only needed for media manipulation, feedback and routing, and may not all be used */
55  gboolean accept_audio; /* Whether incoming audio can be accepted or must be dropped */
56  gboolean accept_video; /* Whether incoming video can be accepted or must be dropped */
57  gboolean accept_data; /* Whether incoming data can be accepted or must be dropped */
58  gboolean send_audio; /* Whether outgoing audio can be sent or must be dropped */
59  gboolean send_video; /* Whether outgoing video can be sent or must be dropped */
60  gboolean send_data; /* Whether outgoing data can be sent or must be dropped */
62  janus_videocodec vcodec; /* Video codec this session is using */
63  uint32_t ssrc[3]; /* Only needed in case VP8 (or H.264) simulcasting is involved */
64  char *rid[3]; /* Only needed if simulcasting is rid-based */
65  int rid_extmap_id; /* rid extmap ID */
68  uint32_t bitrate; /* Bitrate limit */
69  uint16_t pli_freq; /* Regular PLI frequency (0=disabled) */
70  gint64 pli_latest; /* Time of latest sent PLI (to avoid flooding) */
71  GSList *recipients; /* Sessions that should receive media from this session */
72  struct janus_lua_session *sender; /* Other session this session is receiving media from */
73  janus_mutex recipients_mutex; /* Mutex to lock the recipients list */
74  janus_recorder *arc; /* The Janus recorder instance for audio, if enabled */
75  janus_recorder *vrc; /* The Janus recorder instance for video, if enabled */
76  janus_recorder *drc; /* The Janus recorder instance for data, if enabled */
79  gboolean e2ee; /* Whether media is encrypted, e.g., using Insertable Streams */
80  janus_mutex rec_mutex; /* Mutex to protect the recorders from race conditions */
81  volatile gint started; /* Whether this session's PeerConnection is ready or not */
82  volatile gint dataready; /* Whether the data channel was established on this sessions's PeerConnection */
83  volatile gint hangingup; /* Whether this session's PeerConnection is hanging up */
84  volatile gint destroyed; /* Whether this session's been marked as destroyed */
85  /* If you need any additional property (e.g., for hooks you added in janus_lua_extra.c) add them below this line */
86 
87  /* Reference counter */
90 extern GHashTable *lua_sessions, *lua_ids;
93 
94 #endif
janus_rtp_simulcasting_context
Helper struct for processing and tracking simulcast streams.
Definition: rtp.h:276
janus_lua_session::pli_freq
uint16_t pli_freq
Definition: janus_lua_data.h:69
janus_lua_session::rid_extmap_id
int rid_extmap_id
Definition: janus_lua_data.h:65
lua_mutex
janus_mutex lua_mutex
Definition: janus_lua.c:274
janus_vp8_simulcast_context
VP8 simulcasting context, in order to make sure SSRC changes result in coherent picid/temporal level ...
Definition: utils.h:311
apierror.h
Janus API errors definition.
janus_lua_lookup_session
janus_lua_session * janus_lua_lookup_session(janus_plugin_session *handle)
Definition: janus_lua.c:1738
janus_lua_session::pli_latest
gint64 pli_latest
Definition: janus_lua_data.h:70
lua_sessions_mutex
janus_mutex lua_sessions_mutex
Definition: janus_lua.c:346
janus_lua_session::accept_data
gboolean accept_data
Definition: janus_lua_data.h:57
janus_lua_session::rec_ctx
janus_rtp_switching_context rec_ctx
Definition: janus_lua_data.h:77
lua_sessions
GHashTable * lua_sessions
Definition: janus_lua.c:345
lua_stopping
volatile gint lua_stopping
Definition: janus_lua_data.h:43
janus_lua_session::send_data
gboolean send_data
Definition: janus_lua_data.h:60
janus_plugin_session
Plugin-Gateway session mapping.
Definition: plugin.h:239
janus_lua_session::drc
janus_recorder * drc
Definition: janus_lua_data.h:76
janus_lua_session::sim_context
janus_rtp_simulcasting_context sim_context
Definition: janus_lua_data.h:66
janus_videocodec
janus_videocodec
Definition: rtp.h:110
plugin.h
Plugin-Core communication (implementation)
janus_lua_session::vrc
janus_recorder * vrc
Definition: janus_lua_data.h:75
janus_lua_session::ref
janus_refcount ref
Definition: janus_lua_data.h:88
janus_lua_session::accept_video
gboolean accept_video
Definition: janus_lua_data.h:56
record.h
Audio/Video recorder.
janus_lua_session::arc
janus_recorder * arc
Definition: janus_lua_data.h:74
janus_lua_session::handle
janus_plugin_session * handle
Definition: janus_lua_data.h:52
janus_lua_session::dataready
volatile gint dataready
Definition: janus_lua_data.h:82
lua_janus_core
janus_callbacks * lua_janus_core
Definition: janus_lua.c:270
janus_lua_session::send_audio
gboolean send_audio
Definition: janus_lua_data.h:58
janus_lua_session
Definition: janus_lua_data.h:51
janus_lua_session::vrtpctx
janus_rtp_switching_context vrtpctx
Definition: janus_lua_data.h:61
janus_recorder
Structure that represents a recorder.
Definition: record.h:40
utils.h
TURN REST API client.
janus_refcount
Definition: refcount.h:78
janus_lua_session::accept_audio
gboolean accept_audio
Definition: janus_lua_data.h:55
janus_lua_session::recipients_mutex
janus_mutex recipients_mutex
Definition: janus_lua_data.h:73
janus_lua_session::sender
struct janus_lua_session * sender
Definition: janus_lua_data.h:72
lua_ids
GHashTable * lua_ids
Definition: janus_lua_data.h:90
janus_lua_session::rec_simctx
janus_rtp_simulcasting_context rec_simctx
Definition: janus_lua_data.h:78
lua_state
lua_State * lua_state
Definition: janus_lua.c:273
janus_rtp_switching_context
RTP context, in order to make sure SSRC changes result in coherent seq/ts increases.
Definition: rtp.h:237
janus_lua_session::e2ee
gboolean e2ee
Definition: janus_lua_data.h:79
janus_lua_session::vcodec
janus_videocodec vcodec
Definition: janus_lua_data.h:62
rtp.h
RTP processing (headers)
janus_lua_session::recipients
GSList * recipients
Definition: janus_lua_data.h:71
janus_lua_session::vp8_context
janus_vp8_simulcast_context vp8_context
Definition: janus_lua_data.h:67
janus_lua_session::rid
char * rid[3]
Definition: janus_lua_data.h:64
mutex.h
Semaphors, Mutexes and Conditions.
janus_lua_session
struct janus_lua_session janus_lua_session
lua_initialized
volatile gint lua_initialized
Definition: janus_lua.c:269
janus_callbacks
Callbacks to contact the Janus core.
Definition: plugin.h:355
janus_lua_session::send_video
gboolean send_video
Definition: janus_lua_data.h:59
janus_lua_session::rec_mutex
janus_mutex rec_mutex
Definition: janus_lua_data.h:80
config.h
Configuration files parsing (headers)
rtcp.h
RTCP processing (headers)
janus_lua_session::artpctx
janus_rtp_switching_context artpctx
Definition: janus_lua_data.h:61
janus_lua_session::bitrate
uint32_t bitrate
Definition: janus_lua_data.h:68
sdp-utils.h
SDP utilities (headers)
janus_mutex
GMutex janus_mutex
Janus mutex implementation.
Definition: mutex.h:61
debug.h
Logging and Debugging.
janus_lua_session::started
volatile gint started
Definition: janus_lua_data.h:81
janus_lua_session::hangingup
volatile gint hangingup
Definition: janus_lua_data.h:83
janus_lua_session::id
uint32_t id
Definition: janus_lua_data.h:53
janus_lua_session::ssrc
uint32_t ssrc[3]
Definition: janus_lua_data.h:63
janus_lua_session::destroyed
volatile gint destroyed
Definition: janus_lua_data.h:84