Fork me on GitHub
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. More...
 
void janus_recorder_deinit (void)
 De-initialize the recorder code. More...
 
janus_recorderjanus_recorder_create (const char *dir, const char *codec, const char *filename)
 Create a new recorder. More...
 
janus_recorderjanus_recorder_create_full (const char *dir, const char *codec, const char *fmtp, const char *filename)
 Create a new recorder with additional info. More...
 
int janus_recorder_save_frame (janus_recorder *recorder, char *buffer, uint length)
 Save an RTP frame in the recorder. More...
 
int janus_recorder_close (janus_recorder *recorder)
 Close the recorder. More...
 
void janus_recorder_destroy (janus_recorder *recorder)
 Destroy the recorder instance. More...
 

Macro Definition Documentation

#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))

Function Documentation

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* 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* 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
void janus_recorder_deinit ( void  )

De-initialize the recorder code.

void janus_recorder_destroy ( janus_recorder recorder)

Destroy the recorder instance.

Parameters
[in]recorderThe janus_recorder instance to destroy
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
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