Index: pjproject/trunk/pjmedia/include/pjmedia/conference.h
===================================================================
--- pjproject/trunk/pjmedia/include/pjmedia/conference.h	(revision 3664)
+++ pjproject/trunk/pjmedia/include/pjmedia/conference.h	(revision 5792)
@@ -72,4 +72,6 @@
     unsigned		listener_cnt;	    /**< Number of listeners.	    */
     unsigned	       *listener_slots;	    /**< Array of listeners.	    */
+    unsigned	       *listener_adj_level; /**< Array of listeners' level
+    						 adjustment		    */
     unsigned		transmitter_cnt;    /**< Number of transmitter.	    */
     unsigned		clock_rate;	    /**< Clock rate of the port.    */
@@ -296,14 +298,33 @@
 
 /**
- * Enable unidirectional audio from the specified source slot to the
- * specified sink slot.
+ * Enable unidirectional audio from the specified source slot to the specified
+ * sink slot.
+ * Application may adjust the level to make signal transmitted from the source
+ * slot to the sink slot either louder or more quiet. The level adjustment is
+ * calculated with this formula:
+ * <b><tt>output = input * (adj_level+128) / 128</tt></b>. Using this, zero
+ * indicates no adjustment, the value -128 will mute the signal, and the value
+ * of +128 will make the signal 100% louder, +256 will make it 200% louder,
+ * etc.
+ *
+ * The level adjustment will apply to a specific connection only (i.e. only
+ * for the signal from the source to the sink), as compared to
+ * pjmedia_conf_adjust_tx_level()/pjmedia_conf_adjust_rx_level() which
+ * applies to all signals from/to that port. The signal adjustment
+ * will be cumulative, in this following order:
+ * signal from the source will be adjusted with the level specified
+ * in pjmedia_conf_adjust_rx_level(), then with the level specified
+ * via this API, and finally with the level specified to the sink's
+ * pjmedia_conf_adjust_tx_level(). 
  *
  * @param conf		The conference bridge.
  * @param src_slot	Source slot.
  * @param sink_slot	Sink slot.
- * @param level		This argument is reserved for future improvements
- *			where it is possible to adjust the level of signal
- *			transmitted in a specific connection. For now,
- *			this argument MUST be zero.
+ * @param adj_level	Adjustment level, which must be greater than or equal
+ *			to -128. A value of zero means there is no level
+ *			adjustment to be made, the value -128 will mute the
+ *			signal, and the value of +128 will make the signal
+ *			100% louder, +256 will make it 200% louder, etc.
+ *			See the function description for the formula.
  *
  * @return		PJ_SUCCES on success.
@@ -312,5 +333,5 @@
 						unsigned src_slot,
 						unsigned sink_slot,
-						int level );
+						int adj_level );
 
 
@@ -497,4 +518,38 @@
 
 
+/**
+ * Adjust the level of signal to be transmitted from the source slot to the
+ * sink slot.
+ * Application may adjust the level to make signal transmitted from the source
+ * slot to the sink slot either louder or more quiet. The level adjustment is
+ * calculated with this formula:
+ * <b><tt>output = input * (adj_level+128) / 128</tt></b>. Using this, zero
+ * indicates no adjustment, the value -128 will mute the signal, and the value
+ * of +128 will make the signal 100% louder, +256 will make it 200% louder,
+ * etc.
+ *
+ * The level adjustment value will stay with the connection until the
+ * connection is removed or new adjustment value is set. The current level
+ * adjustment value is reported in the media port info when the
+ * #pjmedia_conf_get_port_info() function is called.
+ *
+ * @param conf		The conference bridge.
+ * @param src_slot	Source slot.
+ * @param sink_slot	Sink slot.
+ * @param adj_level	Adjustment level, which must be greater than or equal
+ *			to -128. A value of zero means there is no level
+ *			adjustment to be made, the value -128 will mute the 
+ *			signal, and the value of +128 will make the signal 
+ *			100% louder, +256 will make it 200% louder, etc. 
+ *			See the function description for the formula.
+ *
+ * @return		PJ_SUCCESS on success.
+ */
+PJ_DECL(pj_status_t) pjmedia_conf_adjust_conn_level( pjmedia_conf *conf,
+						     unsigned src_slot,
+						     unsigned sink_slot,
+						     int adj_level );
+
+
 
 PJ_END_DECL
