|
|
|
@ -58,6 +58,7 @@ static void dump_packet_proc(struct media_packet *mp, const str *s); |
|
|
|
static void init_stream_proc(struct packet_stream *); |
|
|
|
static void setup_stream_proc(struct packet_stream *); |
|
|
|
static void setup_media_proc(struct call_media *); |
|
|
|
static void setup_monologue_proc(struct call_monologue *); |
|
|
|
static void kernel_info_proc(struct packet_stream *, struct rtpengine_target_info *); |
|
|
|
|
|
|
|
static void rec_pcap_eth_header(unsigned char *, struct packet_stream *); |
|
|
|
@ -92,6 +93,7 @@ static const struct recording_method methods[] = { |
|
|
|
.init_stream_struct = init_stream_proc, |
|
|
|
.setup_stream = setup_stream_proc, |
|
|
|
.setup_media = setup_media_proc, |
|
|
|
.setup_monologue = setup_monologue_proc, |
|
|
|
.stream_kernel_info = kernel_info_proc, |
|
|
|
}, |
|
|
|
}; |
|
|
|
@ -302,6 +304,10 @@ void recording_start(struct call *call, const char *prefix, str *metadata, str * |
|
|
|
// function is called right at the start of the call, all of the following |
|
|
|
// is essentially a no-op |
|
|
|
GList *l; |
|
|
|
for (l = call->monologues.head; l; l = l->next) { |
|
|
|
struct call_monologue *ml = l->data; |
|
|
|
recording_setup_monologue(ml); |
|
|
|
} |
|
|
|
for (l = call->medias.head; l; l = l->next) { |
|
|
|
struct call_media *m = l->data; |
|
|
|
recording_setup_media(m); |
|
|
|
@ -746,9 +752,6 @@ static void proc_init(struct call *call) { |
|
|
|
static void sdp_before_proc(struct recording *recording, const str *sdp, struct call_monologue *ml, |
|
|
|
enum call_opmode opmode) |
|
|
|
{ |
|
|
|
append_meta_chunk_str(recording, &ml->tag, "TAG %u", ml->unique_id); |
|
|
|
if (ml->label.len) |
|
|
|
append_meta_chunk_str(recording, &ml->label, "LABEL %u", ml->unique_id); |
|
|
|
append_meta_chunk_str(recording, sdp, |
|
|
|
"SDP from %u before %s", ml->unique_id, get_opmode_text(opmode)); |
|
|
|
} |
|
|
|
@ -812,6 +815,18 @@ static void setup_stream_proc(struct packet_stream *stream) { |
|
|
|
append_meta_chunk(recording, buf, len, "STREAM %u interface", stream->unique_id); |
|
|
|
} |
|
|
|
|
|
|
|
static void setup_monologue_proc(struct call_monologue *ml) { |
|
|
|
struct call *call = ml->call; |
|
|
|
struct recording *recording = call->recording; |
|
|
|
|
|
|
|
if (!recording) |
|
|
|
return; |
|
|
|
|
|
|
|
append_meta_chunk_str(recording, &ml->tag, "TAG %u", ml->unique_id); |
|
|
|
if (ml->label.len) |
|
|
|
append_meta_chunk_str(recording, &ml->label, "LABEL %u", ml->unique_id); |
|
|
|
} |
|
|
|
|
|
|
|
static void setup_media_proc(struct call_media *media) { |
|
|
|
struct call *call = media->call; |
|
|
|
struct recording *recording = call->recording; |
|
|
|
|