Fork me on GitHub
Loading...
Searching...
No Matches
Macros | Functions
record.c File Reference
#include <arpa/inet.h>
#include <sys/stat.h>
#include <errno.h>
#include <libgen.h>
#include <glib.h>
#include <jansson.h>
#include "record.h"
#include "debug.h"
#include "utils.h"
Include dependency graph for record.c:

Macros

#define htonll(x)   ((1==htonl(1)) ? (x) : ((gint64)htonl((x) & 0xFFFFFFFF) << 32) | htonl((x) >> 32))
 
#define ntohll(x)   ((1==ntohl(1)) ? (x) : ((gint64)ntohl((x) & 0xFFFFFFFF) << 32) | ntohl((x) >> 32))
 

Functions

void janus_recorder_init (gboolean tempnames, const char *extension)
 Initialize the recorder code.
 
void janus_recorder_deinit (void)
 De-initialize the recorder code.
 
janus_recorderjanus_recorder_create (const char *dir, const char *codec, const char *filename)
 Create a new recorder.
 
janus_recorderjanus_recorder_create_full (const char *dir, const char *codec, const char *fmtp, const char *filename)
 Create a new recorder with additional info.
 
int janus_recorder_pause (janus_recorder *recorder)
 Pause recording packets.
 
int janus_recorder_resume (janus_recorder *recorder)
 Resume recording packets.
 
int janus_recorder_add_extmap (janus_recorder *recorder, int id, const char *extmap)
 Add an RTP extension to this recording.
 
int janus_recorder_opusred (janus_recorder *recorder, int red_pt)
 Mark this recording as using RED for audio.
 
int janus_recorder_encrypted (janus_recorder *recorder)
 Mark this recorder as end-to-end encrypted (e.g., via Insertable Streams)
 
int janus_recorder_save_frame (janus_recorder *recorder, char *buffer, uint length)
 Save an RTP frame in the recorder.
 
int janus_recorder_close (janus_recorder *recorder)
 Close the recorder.
 
void janus_recorder_destroy (janus_recorder *recorder)
 Destroy the recorder instance.
 

Macro Definition Documentation

◆ htonll

#define htonll ( x)    ((1==htonl(1)) ? (x) : ((gint64)htonl((x) & 0xFFFFFFFF) << 32) | htonl((x) >> 32))

◆ ntohll

#define ntohll ( x)    ((1==ntohl(1)) ? (x) : ((gint64)ntohl((x) & 0xFFFFFFFF) << 32) | ntohl((x) >> 32))

Function Documentation

◆ janus_recorder_add_extmap()

int janus_recorder_add_extmap ( janus_recorder * recorder,
int id,
const char * extmap )

Add an RTP extension to this recording.

Note
This will only be possible BEFORE the first frame is written, as it needs to be reflected in the .mjr header: doing this after that will return an error.
Parameters
[in]recorderThe janus_recorder instance to add the extension to
[in]idNumeric ID of the RTP extension
[in]extmapNamespace of the RTP extension
Returns
0 in case of success, a negative integer otherwise

◆ janus_recorder_close()

int janus_recorder_close ( janus_recorder * recorder)

Close the recorder.

Parameters
[in]recorderThe janus_recorder instance to close
Returns
0 in case of success, a negative integer otherwise

◆ janus_recorder_create()

janus_recorder * janus_recorder_create ( const char * dir,
const char * codec,
const char * filename )

Create a new recorder.

Note
If no target directory is provided, the current directory will be used. If no filename is passed, a random filename will be used.
Parameters
[in]dirPath of the directory to save the recording into (will try to create it if it doesn't exist)
[in]codecCodec the packets to record are encoded in ("vp8", "opus", "h264", "g711", "vp9")
[in]filenameFilename to use for the recording
Returns
A valid janus_recorder instance in case of success, NULL otherwise

◆ janus_recorder_create_full()

janus_recorder * janus_recorder_create_full ( const char * dir,
const char * codec,
const char * fmtp,
const char * filename )

Create a new recorder with additional info.

Note
This is to allow adding more arguments to janus_recorder_create, but still keep janus_recorder_create in place for backwards compatibility.
Parameters
[in]dirPath of the directory to save the recording into (will try to create it if it doesn't exist)
[in]codecCodec the packets to record are encoded in ("vp8", "opus", "h264", "g711", "vp9")
[in]fmtpCodec-specific details (e.g., the H.264 or VP9 profile)
[in]filenameFilename to use for the recording
Returns
A valid janus_recorder instance in case of success, NULL otherwise

◆ janus_recorder_deinit()

void janus_recorder_deinit ( void )

De-initialize the recorder code.

◆ janus_recorder_destroy()

void janus_recorder_destroy ( janus_recorder * recorder)

Destroy the recorder instance.

Parameters
[in]recorderThe janus_recorder instance to destroy

◆ janus_recorder_encrypted()

int janus_recorder_encrypted ( janus_recorder * recorder)

Mark this recorder as end-to-end encrypted (e.g., via Insertable Streams)

Note
This will only be possible BEFORE the first frame is written, as it needs to be reflected in the .mjr header: doing this after that will return an error. Also notice that an encrypted recording will NOT be processable with janus-pp-rec out of the box, since the post-processor will not have access to unencrypted media
Parameters
[in]recorderThe janus_recorder instance to mark as encrypted
Returns
0 in case of success, a negative integer otherwise

◆ janus_recorder_init()

void janus_recorder_init ( gboolean tempnames,
const char * extension )

Initialize the recorder code.

Parameters
[in]tempnamesWhether the filenames should have a temporary extension, while saving, or not
[in]extensionExtension to add in case tempnames is true

◆ janus_recorder_opusred()

int janus_recorder_opusred ( janus_recorder * recorder,
int red_pt )

Mark this recording as using RED for audio.

Note
This will only be possible BEFORE the first frame is written, as it needs to be reflected in the .mjr header: doing this after that will return an error.
Parameters
[in]recorderThe janus_recorder instance to configure
[in]red_ptPayload type of RED
Returns
0 in case of success, a negative integer otherwise

◆ janus_recorder_pause()

int janus_recorder_pause ( janus_recorder * recorder)

Pause recording packets.

Note
This is to allow pause and resume recorder functionality.
Parameters
[in]recorderThe janus_recorder to pause
Returns
0 in case of success, a negative integer otherwise

◆ janus_recorder_resume()

int janus_recorder_resume ( janus_recorder * recorder)

Resume recording packets.

Note
This is to allow pause and resume recorder functionality.
Parameters
[in]recorderThe janus_recorder to resume
Returns
0 in case of success, a negative integer otherwise

◆ janus_recorder_save_frame()

int janus_recorder_save_frame ( janus_recorder * recorder,
char * buffer,
uint length )

Save an RTP frame in the recorder.

Parameters
[in]recorderThe janus_recorder instance to save the frame to
[in]bufferThe frame data to save
[in]lengthThe frame data length
Returns
0 in case of success, a negative integer otherwise