diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index 98f5e32bf3..ac89f3e276 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -340,6 +340,8 @@ typedef struct switch_mm_s { int scale_w; int scale_h; switch_img_fmt_t fmt; + char *auth_username; + char *auth_password; } switch_mm_t; /*! an abstract representation of a file handle (some parameters based on compat with libsndfile) */ diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 43e2d8c40b..5fd10d95d3 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -391,6 +391,17 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec c->codec_id = codec_id; + if (mm->auth_username) { + char tmp[256] = ""; + switch_snprintf(tmp, sizeof(tmp), "pubUser=%s", mm->auth_username); + av_set_options_string(c, tmp, "=", ":"); + + if (mm->auth_password) { + switch_snprintf(tmp, sizeof(tmp), "pubPasswd=%s", mm->auth_password); + av_set_options_string(c, tmp, "=", ":"); + } + } + /* Resolution must be a multiple of two. */ c->width = mst->width; c->height = mst->height; diff --git a/src/switch_core_file.c b/src/switch_core_file.c index 598876c99f..263e803159 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -177,6 +177,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_file_open(const char *file, fh->mm.try_hardware_encoder = switch_true(val); } + if ((val = switch_event_get_header(fh->params, "auth_username"))) { + fh->mm.auth_username = switch_core_strdup(fh->memory_pool, val); + } + + if ((val = switch_event_get_header(fh->params, "auth_password"))) { + fh->mm.auth_password = switch_core_strdup(fh->memory_pool, val); + } + if ((val = switch_event_get_header(fh->params, "fps"))) { float ftmp = atof(val); if (ftmp > 0.0f) {