can the auto-record send the conference to an icecast stream using mod_shout?<br><br><div class="gmail_quote">On Mon, Jul 7, 2008 at 5:36 PM, Chris Danielson &lt;<a href="mailto:chris@maxpowersoft.com">chris@maxpowersoft.com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



<div bgcolor="#ffffff" text="#000000">
FreeSWITCH may or may not need this but I added an auto-record feature
into the mod_conference module.&nbsp; Essentially, one can specify within
the &quot;conf/autoload_configs/conference.conf.xml&quot; the following attribute:<br>
&lt;param name=&quot;auto-record&quot; value=&quot;/var/myNFSshare/audio/&quot; /&gt;<br>
When this is specified the conference will automatically record the
conference-&gt;name with an appended &quot;.wav&quot; into that folder.&nbsp; I built
this out of necessity for my current implementation.&nbsp; I thought since
it is able to be toggled off and on based on specifying the
&quot;auto-record&quot; parameter that it might be worthy of inclusion.&nbsp; <br>
<br>
Attached is my svn diff.<br>
<br>
Kind Regards,<br>
Chris<br>
<br>
<div>-- <br>
<b>Chris Danielson</b>
<br>
Software Consultant and Co-Founder
<br>
Web: <a href="http://www.maxpowersoft.com/" target="_blank">MaxPowerSoft, LLC</a>
<br>
Email: <a href="mailto:chris@maxpowersoft.com" target="_blank">chris@maxpowersoft.com</a>
<br>
</div>
</div>

<br>Index: mod_conference.c<br>
===================================================================<br>
--- mod_conference.c &nbsp; &nbsp;(revision 8910)<br>
+++ mod_conference.c &nbsp; &nbsp;(working copy)<br>
@@ -27,8 +27,8 @@<br>
 &nbsp;* Neal Horman &lt;neal at wanlink dot com&gt;<br>
 &nbsp;* Bret McDanel &lt;trixter at 0xdecafbad dot com&gt;<br>
 &nbsp;* Dale Thatcher &lt;freeswitch at dalethatcher dot com&gt;<br>
+ * Chris Danielson &lt;chris at maxpowersoft dot com&gt;<br>
 &nbsp;*<br>
- *<br>
 &nbsp;* mod_conference.c -- Software Conference Bridge<br>
 &nbsp;*<br>
 &nbsp;*/<br>
@@ -230,6 +230,7 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;char *caller_id_number;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;char *sound_prefix;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;char *special_announce;<br>
+ &nbsp; &nbsp; &nbsp; char *auto_record;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;uint32_t max_members;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;char *maxmember_sound;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;uint32_t anounce_count;<br>
@@ -880,6 +881,14 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;switch_mutex_lock(globals.hash_mutex);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;globals.threads++;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;switch_mutex_unlock(globals.hash_mutex);<br>
+<br>
+ &nbsp; &nbsp; &nbsp; if (conference-&gt;auto_record) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; char *rfile = switch_mprintf(&quot;%s%s%s&quot;, conference-&gt;auto_record, conference-&gt;name, &quot;.wav&quot;);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch_assert(rfile);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, &quot;Auto recording file: %s\n&quot;, rfile);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; launch_conference_record_thread(conference, rfile);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch_safe_free(rfile);<br>
+ &nbsp; &nbsp; &nbsp; }<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;while (globals.running &amp;&amp; !switch_test_flag(conference, CFLAG_DESTRUCT)) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch_size_t file_sample_len = samples;<br>
@@ -4806,6 +4815,7 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;switch_status_t status;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int comfort_noise_level = 0;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;char *suppress_events = NULL;<br>
+ &nbsp; &nbsp; &nbsp; char *auto_record = NULL;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/* Validate the conference name */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if (switch_strlen_zero(name)) {<br>
@@ -4923,6 +4933,8 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (!strcasecmp(var, &quot;suppress-events&quot;) &amp;&amp; !switch_strlen_zero(val)) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;suppress_events = val;<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else if (!strcasecmp(var, &quot;auto-record&quot;) &amp;&amp; !switch_strlen_zero(val)) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; auto_record = val;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
@@ -5078,6 +5090,10 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;clear_eflags(suppress_events, &amp;conference-&gt;eflags);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
+ &nbsp; &nbsp; &nbsp; if (!switch_strlen_zero(auto_record)) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; conference-&gt;auto_record = switch_core_strdup(conference-&gt;pool, auto_record);<br>
+ &nbsp; &nbsp; &nbsp; }<br>
+<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/* caller control configuration chores */<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if (switch_ivr_digit_stream_parser_new(conference-&gt;pool, &amp;conference-&gt;dtmf_parser) == SWITCH_STATUS_SUCCESS) {<br>
<br>
<br>_______________________________________________<br>
Freeswitch-users mailing list<br>
<a href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br>