Asterisk - The Open Source Telephony Project GIT-master-2de1a68
Functions | Variables
conf_chan_record.c File Reference

ConfBridge recorder channel driver. More...

#include "asterisk.h"
#include "asterisk/channel.h"
#include "asterisk/bridge.h"
#include "asterisk/format_cache.h"
#include "include/confbridge.h"
Include dependency graph for conf_chan_record.c:

Go to the source code of this file.

Functions

struct ast_channel_techconf_record_get_tech (void)
 Get ConfBridge record channel technology struct. More...
 
static int rec_call (struct ast_channel *chan, const char *addr, int timeout)
 
static struct ast_framerec_read (struct ast_channel *ast)
 
static struct ast_channelrec_request (const char *type, struct ast_format_cap *cap, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause)
 
static int rec_write (struct ast_channel *ast, struct ast_frame *f)
 

Variables

static unsigned int name_sequence = 0
 
static struct ast_channel_tech record_tech
 

Detailed Description

ConfBridge recorder channel driver.

Author
Richard Mudgett rmudg.nosp@m.ett@.nosp@m.digiu.nosp@m.m.co.nosp@m.m

See Also:

Definition in file conf_chan_record.c.

Function Documentation

◆ conf_record_get_tech()

struct ast_channel_tech * conf_record_get_tech ( void  )

Get ConfBridge record channel technology struct.

Since
12.0.0
Returns
ConfBridge record channel technology.

Definition at line 102 of file conf_chan_record.c.

103{
104 return &record_tech;
105}
static struct ast_channel_tech record_tech

References record_tech.

Referenced by load_module(), rec_request(), and unload_module().

◆ rec_call()

static int rec_call ( struct ast_channel chan,
const char *  addr,
int  timeout 
)
static

Definition at line 41 of file conf_chan_record.c.

42{
43 /* Make sure anyone calling ast_call() for this channel driver is going to fail. */
44 return -1;
45}

◆ rec_read()

static struct ast_frame * rec_read ( struct ast_channel ast)
static

Definition at line 47 of file conf_chan_record.c.

48{
49 return &ast_null_frame;
50}
struct ast_frame ast_null_frame
Definition: main/frame.c:79

References ast_null_frame.

◆ rec_request()

static struct ast_channel * rec_request ( const char *  type,
struct ast_format_cap cap,
const struct ast_assigned_ids assignedids,
const struct ast_channel requestor,
const char *  data,
int *  cause 
)
static

Definition at line 57 of file conf_chan_record.c.

58{
59 struct ast_channel *chan;
60 const char *conf_name = data;
61 RAII_VAR(struct ast_format_cap *, capabilities, NULL, ao2_cleanup);
62 int generated_seqno = ast_atomic_fetchadd_int((int *) &name_sequence, +1);
63
65 if (!capabilities) {
66 return NULL;
67 }
69
71 "CBRec/%s-%08x",
72 conf_name, (unsigned) generated_seqno);
73 if (!chan) {
74 return NULL;
75 }
76 if (ast_channel_add_bridge_role(chan, "recorder")) {
79 return NULL;
80 }
81
83 ast_channel_nativeformats_set(chan, capabilities);
89 return chan;
90}
#define ao2_cleanup(obj)
Definition: astobj2.h:1934
int ast_channel_add_bridge_role(struct ast_channel *chan, const char *role_name)
Adds a bridge role to a channel.
Definition: bridge_roles.c:313
#define ast_channel_alloc(needqueue, state, cid_num, cid_name, acctcode, exten, context, assignedids, requestor, amaflag,...)
Create a channel structure.
Definition: channel.h:1258
void ast_channel_nativeformats_set(struct ast_channel *chan, struct ast_format_cap *value)
void ast_channel_set_rawreadformat(struct ast_channel *chan, struct ast_format *format)
void ast_channel_set_rawwriteformat(struct ast_channel *chan, struct ast_format *format)
struct ast_channel * ast_channel_release(struct ast_channel *chan)
Unlink and release reference to a channel.
Definition: channel.c:1584
void ast_channel_set_readformat(struct ast_channel *chan, struct ast_format *format)
void ast_channel_tech_set(struct ast_channel *chan, const struct ast_channel_tech *value)
#define ast_channel_unlock(chan)
Definition: channel.h:2923
void ast_channel_set_writeformat(struct ast_channel *chan, struct ast_format *format)
@ AST_STATE_UP
Definition: channelstate.h:42
@ AST_MEDIA_TYPE_AUDIO
Definition: codec.h:32
struct ast_channel_tech * conf_record_get_tech(void)
Get ConfBridge record channel technology struct.
static unsigned int name_sequence
struct ast_format * ast_format_slin
Built-in cached signed linear 8kHz format.
Definition: format_cache.c:41
int ast_format_cap_append_by_type(struct ast_format_cap *cap, enum ast_media_type type)
Add all codecs Asterisk knows about for a specific type to the capabilities structure.
Definition: format_cap.c:216
@ AST_FORMAT_CAP_FLAG_DEFAULT
Definition: format_cap.h:38
#define ast_format_cap_alloc(flags)
Allocate a new ast_format_cap structure.
Definition: format_cap.h:49
int ast_atomic_fetchadd_int(volatile int *p, int v)
Atomically add v to *p and return the previous value of *p.
Definition: lock.h:757
#define NULL
Definition: resample.c:96
Main Channel structure associated with a channel.
const char * data
Format capabilities structure, holds formats + preference order + etc.
Definition: format_cap.c:54
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.
Definition: utils.h:941

References ao2_cleanup, ast_atomic_fetchadd_int(), ast_channel_add_bridge_role(), ast_channel_alloc, ast_channel_nativeformats_set(), ast_channel_release(), ast_channel_set_rawreadformat(), ast_channel_set_rawwriteformat(), ast_channel_set_readformat(), ast_channel_set_writeformat(), ast_channel_tech_set(), ast_channel_unlock, ast_format_cap_alloc, ast_format_cap_append_by_type(), AST_FORMAT_CAP_FLAG_DEFAULT, ast_format_slin, AST_MEDIA_TYPE_AUDIO, AST_STATE_UP, conf_record_get_tech(), ast_channel::data, name_sequence, NULL, and RAII_VAR.

◆ rec_write()

static int rec_write ( struct ast_channel ast,
struct ast_frame f 
)
static

Definition at line 52 of file conf_chan_record.c.

53{
54 return 0;
55}

Variable Documentation

◆ name_sequence

unsigned int name_sequence = 0
static

Definition at line 39 of file conf_chan_record.c.

Referenced by rec_request().

◆ record_tech

struct ast_channel_tech record_tech
static

Definition at line 92 of file conf_chan_record.c.

Referenced by conf_record_get_tech().