diff --git a/src/mod/formats/mod_png/mod_png.c b/src/mod/formats/mod_png/mod_png.c index 7e1470989b..8fe80bea5f 100644 --- a/src/mod/formats/mod_png/mod_png.c +++ b/src/mod/formats/mod_png/mod_png.c @@ -252,6 +252,11 @@ static switch_bool_t write_png_bug_callback(switch_media_bug_t *bug, void *user_ if (!frame || !frame->img) break; + if (data->both_legs == SWITCH_FALSE) { + switch_img_write_png(frame->img, data->path); + return SWITCH_FALSE; + } + if (!data->write_img) { switch_img_copy(frame->img, &data->write_img); } @@ -304,7 +309,7 @@ SWITCH_STANDARD_API(uuid_write_png_function) argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); } - if (argc < 2 || (argc > 2 && strcasecmp(argv[2], "concat") && strcasecmp(argv[2], "split"))) { + if (argc < 2 || (argc > 2 && strcasecmp(argv[2], "concat") && strcasecmp(argv[2], "split") && strcasecmp(argv[2], "write"))) { stream->write_function(stream, "-USAGE: [concat | split ]\n"); goto end; } @@ -325,29 +330,34 @@ SWITCH_STANDARD_API(uuid_write_png_function) bug_data = switch_core_session_alloc(session_, sizeof(*bug_data)); if (argc > 2) { - switch_channel_t *channel_ = switch_core_session_get_channel(session_); + if (!strcasecmp(argv[2], "write")) { + flags = SMBF_WRITE_VIDEO_PING; + } else { - if (!switch_channel_test_flag_partner(channel_, CF_VIDEO)) { - stream->write_function(stream, "-ERR Session must be bridged and other leg must have video.\n"); - switch_core_session_rwunlock(session_); - goto end; - } + switch_channel_t *channel_ = switch_core_session_get_channel(session_); - bug_data->both_legs = SWITCH_TRUE; - flags |= SMBF_WRITE_VIDEO_PING; - - if (!strcasecmp(argv[2], "split")) { - if (argc == 3) { - stream->write_function(stream, "-ERR Second filename expected but not given.\n"); + if (!switch_channel_test_flag_partner(channel_, CF_VIDEO)) { + stream->write_function(stream, "-ERR Session must be bridged and other leg must have video.\n"); switch_core_session_rwunlock(session_); goto end; } - if (!switch_is_file_path(argv[3])) { - const char *prefix = SWITCH_GLOBAL_dirs.images_dir; - bug_data->other_path = switch_core_session_sprintf(session_, "%s%s%s", prefix, SWITCH_PATH_SEPARATOR, argv[3]); - } else { - bug_data->other_path = switch_core_session_strdup(session_, argv[3]); + bug_data->both_legs = SWITCH_TRUE; + flags |= SMBF_WRITE_VIDEO_PING; + + if (!strcasecmp(argv[2], "split")) { + if (argc == 3) { + stream->write_function(stream, "-ERR Second filename expected but not given.\n"); + switch_core_session_rwunlock(session_); + goto end; + } + + if (!switch_is_file_path(argv[3])) { + const char *prefix = SWITCH_GLOBAL_dirs.images_dir; + bug_data->other_path = switch_core_session_sprintf(session_, "%s%s%s", prefix, SWITCH_PATH_SEPARATOR, argv[3]); + } else { + bug_data->other_path = switch_core_session_strdup(session_, argv[3]); + } } } } @@ -398,6 +408,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_png_load) SWITCH_ADD_API(api_interface, "uuid_write_png", "grab an image from a call",uuid_write_png_function, ""); + switch_console_set_complete("add uuid_write_png ::console::list_uuid"); + /* indicate that the module should continue to be loaded */ return SWITCH_STATUS_SUCCESS; }