diff --git a/recording-daemon/db.c b/recording-daemon/db.c index 59e438bb9..c2c87621d 100644 --- a/recording-daemon/db.c +++ b/recording-daemon/db.c @@ -311,7 +311,7 @@ void db_do_call(metafile_t *mf) { // mf is locked -void db_do_stream(metafile_t *mf, output_t *op, const char *type, stream_t *stream, unsigned long ssrc) { +void db_do_stream(metafile_t *mf, output_t *op, stream_t *stream, unsigned long ssrc) { if (check_conn()) return; if (mf->db_id == 0) @@ -329,7 +329,7 @@ void db_do_stream(metafile_t *mf, output_t *op, const char *type, stream_t *stre my_cstr(&b[3], op->full_filename); my_cstr(&b[4], op->file_format); my_cstr(&b[5], op->file_format); - my_cstr(&b[6], type); + my_cstr(&b[6], op->kind); b[7] = (MYSQL_BIND) { .buffer_type = MYSQL_TYPE_LONG, .buffer = &id, diff --git a/recording-daemon/db.h b/recording-daemon/db.h index ae9112e6f..7725b54b8 100644 --- a/recording-daemon/db.h +++ b/recording-daemon/db.h @@ -6,7 +6,7 @@ void db_do_call(metafile_t *); void db_close_call(metafile_t *); -void db_do_stream(metafile_t *mf, output_t *op, const char *type, stream_t *, unsigned long ssrc); +void db_do_stream(metafile_t *mf, output_t *op, stream_t *, unsigned long ssrc); void db_close_stream(output_t *op); void db_delete_stream(metafile_t *, output_t *op); void db_config_stream(output_t *op); diff --git a/recording-daemon/metafile.c b/recording-daemon/metafile.c index c23c2cf4b..7e76f2b7f 100644 --- a/recording-daemon/metafile.c +++ b/recording-daemon/metafile.c @@ -81,11 +81,11 @@ static void meta_stream_interface(metafile_t *mf, unsigned long snum, char *cont if (output_enabled && output_mixed && mf->recording_on) { pthread_mutex_lock(&mf->mix_lock); if (!mf->mix) { - mf->mix_out = output_new(output_dir, mf->parent, "mix", "mix"); + mf->mix_out = output_new(output_dir, mf->parent, "mix", "mixed", "mix"); if (mix_method == MM_CHANNELS) mf->mix_out->channel_mult = mix_num_inputs; mf->mix = mix_new(); - db_do_stream(mf, mf->mix_out, "mixed", NULL, 0); + db_do_stream(mf, mf->mix_out, NULL, 0); } pthread_mutex_unlock(&mf->mix_lock); } diff --git a/recording-daemon/output.c b/recording-daemon/output.c index 64603d16e..aabba3e31 100644 --- a/recording-daemon/output.c +++ b/recording-daemon/output.c @@ -95,7 +95,7 @@ static output_t *output_alloc(const char *path, const char *name) { return ret; } -output_t *output_new(const char *path, const char *call, const char *type, const char *label) { +output_t *output_new(const char *path, const char *call, const char *type, const char *kind, const char *label) { // construct output file name struct timeval now; struct tm tm; @@ -177,15 +177,17 @@ output_t *output_new(const char *path, const char *call, const char *type, const done:; output_t *ret = output_alloc(path, f->str); create_parent_dirs(ret->full_filename); + ret->kind = kind; g_string_free(f, TRUE); return ret; } -output_t *output_new_from_full_path(const char *path, char *name) { +output_t *output_new_from_full_path(const char *path, char *name, const char *kind) { output_t *ret = output_alloc(path, name); create_parent_dirs(ret->full_filename); + ret->kind = kind; return ret; } diff --git a/recording-daemon/output.h b/recording-daemon/output.h index 166d587e9..becef34bb 100644 --- a/recording-daemon/output.h +++ b/recording-daemon/output.h @@ -10,8 +10,8 @@ extern int mp3_bitrate; void output_init(const char *format); -output_t *output_new(const char *path, const char *call, const char *type, const char *label); -output_t *output_new_from_full_path(const char *path, char *name); +output_t *output_new(const char *path, const char *call, const char *type, const char *kind, const char *label); +output_t *output_new_from_full_path(const char *path, char *name, const char *kind); void output_close(metafile_t *, output_t *); int output_config(output_t *output, const format_t *requested_format, format_t *actual_format); diff --git a/recording-daemon/packet.c b/recording-daemon/packet.c index 97cc48b7b..7c06cc582 100644 --- a/recording-daemon/packet.c +++ b/recording-daemon/packet.c @@ -195,20 +195,20 @@ out: if (sep) { char *filename = sep + 1; *sep = 0; - ret->output = output_new_from_full_path(path, filename); + ret->output = output_new_from_full_path(path, filename, "single"); ret->output->skip_filename_extension = TRUE; } else { - ret->output = output_new_from_full_path(output_dir, path); + ret->output = output_new_from_full_path(output_dir, path, "single"); } } else { char buf[16]; snprintf(buf, sizeof(buf), "%08lx", ssrc); tag_t *tag = tag_get(mf, stream->tag); - ret->output = output_new(output_dir, mf->parent, buf, tag->label); + ret->output = output_new(output_dir, mf->parent, buf, "single", tag->label); } - db_do_stream(mf, ret->output, "single", stream, ssrc); + db_do_stream(mf, ret->output, stream, ssrc); } if ((stream->forwarding_on || mf->forwarding_on) && !ret->tls_fwd_stream && tls_send_to_ep.port) { // initialise the connection diff --git a/recording-daemon/types.h b/recording-daemon/types.h index 5b478dc23..c7fbec5a3 100644 --- a/recording-daemon/types.h +++ b/recording-daemon/types.h @@ -148,6 +148,7 @@ struct output_s { *file_name, *filename; // path + filename + suffix const char *file_format; + const char *kind; // "mixed" or "single" unsigned long long db_id; gboolean skip_filename_extension; unsigned int channel_mult;