[asterisk-commits] pabelanger: branch pabelanger/issue18556 r306255 - in /team/pabelanger/issue1...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Feb 4 10:25:20 CST 2011


Author: pabelanger
Date: Fri Feb  4 10:25:04 2011
New Revision: 306255

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=306255
Log:
Merged revisions 305988,306010,306053,306086,306125,306128,306216 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r305988 | lathama | 2011-02-03 11:13:40 -0500 (Thu, 03 Feb 2011) | 8 lines
  
  res_phoneprov add snom 300, 320, 360, 370, 820, 821, 870 support
  
  (issue #18713)
  Reported by: lathama
  Patches:
       snom_dir.diff uploaded by lathama (license 1028)
  Tested by: lathama
................
  r306010 | dvossel | 2011-02-03 11:22:10 -0500 (Thu, 03 Feb 2011) | 15 lines
  
  Asterisk media architecture conversion - no more format bitfields
  
  This patch is the foundation of an entire new way of looking at media in Asterisk.
  The code present in this patch is everything required to complete phase1 of my
  Media Architecture proposal.  For more information about this project visit the link below.
  https://wiki.asterisk.org/wiki/display/AST/Media+Architecture+Proposal
  
  The primary function of this patch is to convert all the usages of format
  bitfields in Asterisk to use the new format and format_cap APIs.  Functionally
  no change in behavior should be present in this patch.  Thanks to twilson
  and russell for all the time they spent reviewing these changes.
  
  Review: https://reviewboard.asterisk.org/r/1083/
................
  r306053 | dvossel | 2011-02-03 13:12:57 -0500 (Thu, 03 Feb 2011) | 2 lines
  
  Fixes output of "core show codecs" to display image types correctly.
................
  r306086 | qwell | 2011-02-03 13:37:06 -0500 (Thu, 03 Feb 2011) | 1 line
  
  Modify alignment of 'core show codecs', since the ID is no longer a huge int.
................
  r306125 | jpeeler | 2011-02-03 15:51:09 -0500 (Thu, 03 Feb 2011) | 24 lines
  
  Merged revisions 306124 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.8
  
  ................
    r306124 | jpeeler | 2011-02-03 14:50:48 -0600 (Thu, 03 Feb 2011) | 17 lines
    
    Merged revisions 306123 via svnmerge from 
    https://origsvn.digium.com/svn/asterisk/branches/1.6.2
    
    ........
      r306123 | jpeeler | 2011-02-03 14:49:48 -0600 (Thu, 03 Feb 2011) | 10 lines
      
      Set exception on channel in parking thread when POLLPRI event detected.
      
      This is done just to make the code be equivalent to the old select code. As
      noted in 303106 the same issue was already fixed in this branch, but the
      exception was not set on the channel in the case of POLLPRI. The reason that
      this did not cause a problem here is because in 122923 the check in __ast_read
      to check the exception flag was removed.
      
      (related to #18637)
    ........
  ................
................
  r306128 | twilson | 2011-02-03 16:13:11 -0500 (Thu, 03 Feb 2011) | 30 lines
  
  Merged revisions 306127 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.8
  
  ................
    r306127 | twilson | 2011-02-03 13:03:26 -0800 (Thu, 03 Feb 2011) | 23 lines
    
    Merged revisions 306126 via svnmerge from 
    https://origsvn.digium.com/svn/asterisk/branches/1.6.2
    
    ................
      r306126 | twilson | 2011-02-03 12:56:00 -0800 (Thu, 03 Feb 2011) | 16 lines
      
      Merged revisions 306119 via svnmerge from 
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
        r306119 | twilson | 2011-02-03 12:36:34 -0800 (Thu, 03 Feb 2011) | 9 lines
        
        Set hangup cause in local_hangup
        
        When a call involves a local channel (like SIP -> Local -> SIP), the hangup
        cause was not being set. This resulted in SIP channels sometimes getting a
        503 error instead of a 486 when the far side sent a busy. In Asterisk 1.8+
        this also can cause issues with CCSS that involve a local channel. This patch
        sets the hangupcause for one side of the local channel to the other in
        local_hangup for outbound calls.
      ........
    ................
  ................
................
  r306216 | jpeeler | 2011-02-03 18:50:08 -0500 (Thu, 03 Feb 2011) | 26 lines
  
  Merged revisions 306215 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.8
  
  ........
    r306215 | jpeeler | 2011-02-03 17:49:28 -0600 (Thu, 03 Feb 2011) | 20 lines
    
    Fix SIP deadlock involving state changes.
    
    Once again a call to pbx_builtin_getvar_helper (and pbx_builtin_setvar_helper)
    has caused locking problems. Both of these functions lock the channel when
    the channel argument is passed in!
    
    In this case, the suspected problem (the backtrace makes it impossible to tell)
    was the private being locked in sip_set_rtp_peer and then:
    transmit_reinvite_with_sdp
     try_suggested_sip_codec
       pbx_builtin_getvar_helper
    (Traced to verify that the fix was only required in 1.8 and later.)
    
    (closes issue #18491)
    Reported by: cmaj
    Patches: 
          chan_sip_fix_deadlocks_bug_18491.txt uploaded by cmaj (license 830)
    Tested by: cmaj
  ........
................

Added:
    team/pabelanger/issue18556/include/asterisk/format.h
      - copied unchanged from r306216, trunk/include/asterisk/format.h
    team/pabelanger/issue18556/include/asterisk/format_cap.h
      - copied unchanged from r306216, trunk/include/asterisk/format_cap.h
    team/pabelanger/issue18556/include/asterisk/format_pref.h
      - copied unchanged from r306216, trunk/include/asterisk/format_pref.h
    team/pabelanger/issue18556/main/format.c
      - copied unchanged from r306216, trunk/main/format.c
    team/pabelanger/issue18556/main/format_cap.c
      - copied unchanged from r306216, trunk/main/format_cap.c
    team/pabelanger/issue18556/main/format_pref.c
      - copied unchanged from r306216, trunk/main/format_pref.c
    team/pabelanger/issue18556/tests/test_format_api.c
      - copied unchanged from r306216, trunk/tests/test_format_api.c
Modified:
    team/pabelanger/issue18556/   (props changed)
    team/pabelanger/issue18556/addons/chan_mobile.c
    team/pabelanger/issue18556/addons/chan_ooh323.c
    team/pabelanger/issue18556/addons/chan_ooh323.h
    team/pabelanger/issue18556/addons/format_mp3.c
    team/pabelanger/issue18556/addons/ooh323cDriver.c
    team/pabelanger/issue18556/addons/ooh323cDriver.h
    team/pabelanger/issue18556/apps/app_alarmreceiver.c
    team/pabelanger/issue18556/apps/app_amd.c
    team/pabelanger/issue18556/apps/app_chanspy.c
    team/pabelanger/issue18556/apps/app_confbridge.c
    team/pabelanger/issue18556/apps/app_dahdibarge.c
    team/pabelanger/issue18556/apps/app_dictate.c
    team/pabelanger/issue18556/apps/app_dumpchan.c
    team/pabelanger/issue18556/apps/app_echo.c
    team/pabelanger/issue18556/apps/app_fax.c
    team/pabelanger/issue18556/apps/app_festival.c
    team/pabelanger/issue18556/apps/app_followme.c
    team/pabelanger/issue18556/apps/app_ices.c
    team/pabelanger/issue18556/apps/app_jack.c
    team/pabelanger/issue18556/apps/app_meetme.c
    team/pabelanger/issue18556/apps/app_milliwatt.c
    team/pabelanger/issue18556/apps/app_mixmonitor.c
    team/pabelanger/issue18556/apps/app_mp3.c
    team/pabelanger/issue18556/apps/app_nbscat.c
    team/pabelanger/issue18556/apps/app_originate.c
    team/pabelanger/issue18556/apps/app_parkandannounce.c
    team/pabelanger/issue18556/apps/app_record.c
    team/pabelanger/issue18556/apps/app_rpt.c
    team/pabelanger/issue18556/apps/app_sms.c
    team/pabelanger/issue18556/apps/app_speech_utils.c
    team/pabelanger/issue18556/apps/app_talkdetect.c
    team/pabelanger/issue18556/apps/app_test.c
    team/pabelanger/issue18556/apps/app_voicemail.c
    team/pabelanger/issue18556/apps/app_waitforsilence.c
    team/pabelanger/issue18556/bridges/bridge_multiplexed.c
    team/pabelanger/issue18556/bridges/bridge_simple.c
    team/pabelanger/issue18556/bridges/bridge_softmix.c
    team/pabelanger/issue18556/channels/chan_agent.c
    team/pabelanger/issue18556/channels/chan_alsa.c
    team/pabelanger/issue18556/channels/chan_bridge.c
    team/pabelanger/issue18556/channels/chan_console.c
    team/pabelanger/issue18556/channels/chan_dahdi.c
    team/pabelanger/issue18556/channels/chan_gtalk.c
    team/pabelanger/issue18556/channels/chan_h323.c
    team/pabelanger/issue18556/channels/chan_iax2.c
    team/pabelanger/issue18556/channels/chan_jingle.c
    team/pabelanger/issue18556/channels/chan_local.c
    team/pabelanger/issue18556/channels/chan_mgcp.c
    team/pabelanger/issue18556/channels/chan_misdn.c
    team/pabelanger/issue18556/channels/chan_multicast_rtp.c
    team/pabelanger/issue18556/channels/chan_nbs.c
    team/pabelanger/issue18556/channels/chan_oss.c
    team/pabelanger/issue18556/channels/chan_phone.c
    team/pabelanger/issue18556/channels/chan_sip.c
    team/pabelanger/issue18556/channels/chan_skinny.c
    team/pabelanger/issue18556/channels/chan_unistim.c
    team/pabelanger/issue18556/channels/chan_usbradio.c
    team/pabelanger/issue18556/channels/chan_vpb.cc
    team/pabelanger/issue18556/channels/h323/ast_h323.cxx
    team/pabelanger/issue18556/channels/h323/chan_h323.h
    team/pabelanger/issue18556/channels/iax2-parser.c
    team/pabelanger/issue18556/channels/iax2-parser.h
    team/pabelanger/issue18556/channels/iax2-provision.c
    team/pabelanger/issue18556/channels/iax2.h
    team/pabelanger/issue18556/channels/sip/include/globals.h
    team/pabelanger/issue18556/channels/sip/include/sip.h
    team/pabelanger/issue18556/codecs/codec_a_mu.c
    team/pabelanger/issue18556/codecs/codec_adpcm.c
    team/pabelanger/issue18556/codecs/codec_alaw.c
    team/pabelanger/issue18556/codecs/codec_dahdi.c
    team/pabelanger/issue18556/codecs/codec_g722.c
    team/pabelanger/issue18556/codecs/codec_g726.c
    team/pabelanger/issue18556/codecs/codec_gsm.c
    team/pabelanger/issue18556/codecs/codec_ilbc.c
    team/pabelanger/issue18556/codecs/codec_lpc10.c
    team/pabelanger/issue18556/codecs/codec_resample.c
    team/pabelanger/issue18556/codecs/codec_speex.c
    team/pabelanger/issue18556/codecs/codec_ulaw.c
    team/pabelanger/issue18556/codecs/ex_adpcm.h
    team/pabelanger/issue18556/codecs/ex_alaw.h
    team/pabelanger/issue18556/codecs/ex_g722.h
    team/pabelanger/issue18556/codecs/ex_g726.h
    team/pabelanger/issue18556/codecs/ex_gsm.h
    team/pabelanger/issue18556/codecs/ex_lpc10.h
    team/pabelanger/issue18556/codecs/ex_speex.h
    team/pabelanger/issue18556/codecs/ex_ulaw.h
    team/pabelanger/issue18556/configs/phoneprov.conf.sample
    team/pabelanger/issue18556/formats/format_g719.c
    team/pabelanger/issue18556/formats/format_g723.c
    team/pabelanger/issue18556/formats/format_g726.c
    team/pabelanger/issue18556/formats/format_g729.c
    team/pabelanger/issue18556/formats/format_gsm.c
    team/pabelanger/issue18556/formats/format_h263.c
    team/pabelanger/issue18556/formats/format_h264.c
    team/pabelanger/issue18556/formats/format_ilbc.c
    team/pabelanger/issue18556/formats/format_jpeg.c
    team/pabelanger/issue18556/formats/format_ogg_vorbis.c
    team/pabelanger/issue18556/formats/format_pcm.c
    team/pabelanger/issue18556/formats/format_siren14.c
    team/pabelanger/issue18556/formats/format_siren7.c
    team/pabelanger/issue18556/formats/format_sln.c
    team/pabelanger/issue18556/formats/format_sln16.c
    team/pabelanger/issue18556/formats/format_vox.c
    team/pabelanger/issue18556/formats/format_wav.c
    team/pabelanger/issue18556/formats/format_wav_gsm.c
    team/pabelanger/issue18556/funcs/func_channel.c
    team/pabelanger/issue18556/funcs/func_frame_trace.c
    team/pabelanger/issue18556/funcs/func_pitchshift.c
    team/pabelanger/issue18556/include/asterisk/abstract_jb.h
    team/pabelanger/issue18556/include/asterisk/astobj2.h
    team/pabelanger/issue18556/include/asterisk/audiohook.h
    team/pabelanger/issue18556/include/asterisk/bridging.h
    team/pabelanger/issue18556/include/asterisk/bridging_technology.h
    team/pabelanger/issue18556/include/asterisk/callerid.h
    team/pabelanger/issue18556/include/asterisk/channel.h
    team/pabelanger/issue18556/include/asterisk/data.h
    team/pabelanger/issue18556/include/asterisk/file.h
    team/pabelanger/issue18556/include/asterisk/frame.h
    team/pabelanger/issue18556/include/asterisk/frame_defs.h
    team/pabelanger/issue18556/include/asterisk/image.h
    team/pabelanger/issue18556/include/asterisk/mod_format.h
    team/pabelanger/issue18556/include/asterisk/pbx.h
    team/pabelanger/issue18556/include/asterisk/rtp_engine.h
    team/pabelanger/issue18556/include/asterisk/slin.h
    team/pabelanger/issue18556/include/asterisk/slinfactory.h
    team/pabelanger/issue18556/include/asterisk/speech.h
    team/pabelanger/issue18556/include/asterisk/translate.h
    team/pabelanger/issue18556/main/abstract_jb.c
    team/pabelanger/issue18556/main/app.c
    team/pabelanger/issue18556/main/asterisk.c
    team/pabelanger/issue18556/main/astobj2.c
    team/pabelanger/issue18556/main/audiohook.c
    team/pabelanger/issue18556/main/bridging.c
    team/pabelanger/issue18556/main/callerid.c
    team/pabelanger/issue18556/main/ccss.c
    team/pabelanger/issue18556/main/channel.c
    team/pabelanger/issue18556/main/cli.c
    team/pabelanger/issue18556/main/data.c
    team/pabelanger/issue18556/main/dial.c
    team/pabelanger/issue18556/main/dsp.c
    team/pabelanger/issue18556/main/features.c
    team/pabelanger/issue18556/main/file.c
    team/pabelanger/issue18556/main/frame.c
    team/pabelanger/issue18556/main/image.c
    team/pabelanger/issue18556/main/indications.c
    team/pabelanger/issue18556/main/manager.c
    team/pabelanger/issue18556/main/pbx.c
    team/pabelanger/issue18556/main/rtp_engine.c
    team/pabelanger/issue18556/main/slinfactory.c
    team/pabelanger/issue18556/main/translate.c
    team/pabelanger/issue18556/main/udptl.c
    team/pabelanger/issue18556/pbx/pbx_spool.c
    team/pabelanger/issue18556/res/res_adsi.c
    team/pabelanger/issue18556/res/res_agi.c
    team/pabelanger/issue18556/res/res_calendar.c
    team/pabelanger/issue18556/res/res_clioriginate.c
    team/pabelanger/issue18556/res/res_fax.c
    team/pabelanger/issue18556/res/res_fax_spandsp.c
    team/pabelanger/issue18556/res/res_musiconhold.c
    team/pabelanger/issue18556/res/res_rtp_asterisk.c
    team/pabelanger/issue18556/res/res_rtp_multicast.c
    team/pabelanger/issue18556/res/res_speech.c

Propchange: team/pabelanger/issue18556/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.

Propchange: team/pabelanger/issue18556/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Feb  4 10:25:04 2011
@@ -1,1 +1,1 @@
-/trunk:1-305968
+/trunk:1-305968,305988-306216

Modified: team/pabelanger/issue18556/addons/chan_mobile.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18556/addons/chan_mobile.c?view=diff&rev=306255&r1=306254&r2=306255
==============================================================================
--- team/pabelanger/issue18556/addons/chan_mobile.c (original)
+++ team/pabelanger/issue18556/addons/chan_mobile.c Fri Feb  4 10:25:04 2011
@@ -71,7 +71,7 @@
 #define DEVICE_FRAME_FORMAT AST_FORMAT_SLINEAR
 #define CHANNEL_FRAME_SIZE 320
 
-static format_t prefformat = DEVICE_FRAME_FORMAT;
+static struct ast_format prefformat;
 
 static int discovery_interval = 60;			/* The device discovery interval, default 60 seconds. */
 static pthread_t discovery_thread = AST_PTHREADT_NULL;	/* The discovery thread */
@@ -196,7 +196,7 @@
 
 static struct ast_channel *mbl_new(int state, struct mbl_pvt *pvt, char *cid_num,
 		const struct ast_channel *requestor);
-static struct ast_channel *mbl_request(const char *type, format_t format,
+static struct ast_channel *mbl_request(const char *type, struct ast_format_cap *cap,
 		const struct ast_channel *requestor, void *data, int *cause);
 static int mbl_call(struct ast_channel *ast, char *dest, int timeout);
 static int mbl_hangup(struct ast_channel *ast);
@@ -450,10 +450,9 @@
  * channel stuff
  */
 
-static const struct ast_channel_tech mbl_tech = {
+static struct ast_channel_tech mbl_tech = {
 	.type = "Mobile",
 	.description = "Bluetooth Mobile Device Channel Driver",
-	.capabilities = AST_FORMAT_SLINEAR,
 	.requester = mbl_request,
 	.call = mbl_call,
 	.hangup = mbl_hangup,
@@ -844,11 +843,11 @@
 	}
 
 	chn->tech = &mbl_tech;
-	chn->nativeformats = prefformat;
-	chn->rawreadformat = prefformat;
-	chn->rawwriteformat = prefformat;
-	chn->writeformat = prefformat;
-	chn->readformat = prefformat;
+	ast_format_cap_add(chn->nativeformats, &prefformat);
+	ast_format_copy(&chn->rawreadformat, &prefformat);
+	ast_format_copy(&chn->rawwriteformat, &prefformat);
+	ast_format_copy(&chn->writeformat, &prefformat);
+	ast_format_copy(&chn->readformat, &prefformat);
 	chn->tech_pvt = pvt;
 
 	if (state == AST_STATE_RING)
@@ -867,7 +866,7 @@
 	return NULL;
 }
 
-static struct ast_channel *mbl_request(const char *type, format_t format,
+static struct ast_channel *mbl_request(const char *type, struct ast_format_cap *cap,
 		const struct ast_channel *requestor, void *data, int *cause)
 {
 
@@ -875,7 +874,6 @@
 	struct mbl_pvt *pvt;
 	char *dest_dev = NULL;
 	char *dest_num = NULL;
-	format_t oldformat;
 	int group = -1;
 
 	if (!data) {
@@ -884,10 +882,9 @@
 		return NULL;
 	}
 
-	oldformat = format;
-	format &= (AST_FORMAT_SLINEAR);
-	if (!format) {
-		ast_log(LOG_WARNING, "Asked to get a channel of unsupported format '%s'\n", ast_getformatname(oldformat));
+	if (!(ast_format_cap_iscompatible(cap, &prefformat))) {
+		char tmp[256];
+		ast_log(LOG_WARNING, "Asked to get a channel of unsupported format '%s'\n", ast_getformatname_multiple(tmp, sizeof(tmp), cap));
 		*cause = AST_CAUSE_FACILITY_NOT_IMPLEMENTED;
 		return NULL;
 	}
@@ -1099,7 +1096,7 @@
 
 	memset(&pvt->fr, 0x00, sizeof(struct ast_frame));
 	pvt->fr.frametype = AST_FRAME_VOICE;
-	pvt->fr.subclass.codec = DEVICE_FRAME_FORMAT;
+	ast_format_set(&pvt->fr.subclass.format, DEVICE_FRAME_FORMAT, 0);
 	pvt->fr.src = "Mobile";
 	pvt->fr.offset = AST_FRIENDLY_OFFSET;
 	pvt->fr.mallocd = 0;
@@ -4534,6 +4531,7 @@
 	if (sdp_session)
 		sdp_close(sdp_session);
 
+	mbl_tech.capabilities = ast_format_cap_destroy(mbl_tech.capabilities);
 	return 0;
 }
 
@@ -4542,6 +4540,11 @@
 
 	int dev_id, s;
 
+	if (!(mbl_tech.capabilities = ast_format_cap_alloc())) {
+		return AST_MODULE_LOAD_DECLINE;
+	}
+	ast_format_set(&prefformat, DEVICE_FRAME_FORMAT, 0);
+	ast_format_cap_add(mbl_tech.capabilities, &prefformat);
 	/* Check if we have Bluetooth, no point loading otherwise... */
 	dev_id = hci_get_route(NULL);
 	s = hci_open_dev(dev_id);

Modified: team/pabelanger/issue18556/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18556/addons/chan_ooh323.c?view=diff&rev=306255&r1=306254&r2=306255
==============================================================================
--- team/pabelanger/issue18556/addons/chan_ooh323.c (original)
+++ team/pabelanger/issue18556/addons/chan_ooh323.c Fri Feb  4 10:25:04 2011
@@ -66,7 +66,7 @@
 static struct ast_jb_conf global_jbconf;
 
 /* Channel Definition */
-static struct ast_channel *ooh323_request(const char *type, format_t format, 
+static struct ast_channel *ooh323_request(const char *type, struct ast_format_cap *cap,
 			const struct ast_channel *requestor,  void *data, int *cause);
 static int ooh323_digit_begin(struct ast_channel *ast, char digit);
 static int ooh323_digit_end(struct ast_channel *ast, char digit, unsigned int duration);
@@ -82,7 +82,7 @@
 static enum ast_rtp_glue_result ooh323_get_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance **rtp);
 static enum ast_rtp_glue_result ooh323_get_vrtp_peer(struct ast_channel *chan, struct ast_rtp_instance **rtp);
 static int ooh323_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *rtp, 
-          struct ast_rtp_instance *vrtp, struct ast_rtp_instance *trtp, format_t codecs, int nat_active);
+          struct ast_rtp_instance *vrtp, struct ast_rtp_instance *trtp, const struct ast_format_cap *codecs, int nat_active);
 
 static struct ast_udptl *ooh323_get_udptl_peer(struct ast_channel *chan);
 static int ooh323_set_udptl_peer(struct ast_channel *chan, struct ast_udptl *udptl);
@@ -92,10 +92,9 @@
 struct ooh323_peer *find_friend(const char *name, int port);
 
 
-static const struct ast_channel_tech ooh323_tech = {
+static struct ast_channel_tech ooh323_tech = {
 	.type = type,
 	.description = tdesc,
-	.capabilities = -1,
 	.properties = AST_CHAN_TP_WANTSJITTER | AST_CHAN_TP_CREATESJITTER,
 	.requester = ooh323_request,
 	.send_digit_begin = ooh323_digit_begin,
@@ -172,9 +171,9 @@
 	char callee_url[AST_MAX_EXTENSION];
  
 	int port;
-	format_t readformat;   /* negotiated read format */
-	format_t writeformat;  /* negotiated write format */
-	format_t capability;
+	struct ast_format readformat;   /* negotiated read format */
+	struct ast_format writeformat;  /* negotiated write format */
+	struct ast_format_cap *cap;
 	struct ast_codec_pref prefs;
 	int dtmfmode;
 	int dtmfcodec;
@@ -204,7 +203,7 @@
 	unsigned    inUse;
 	char        accountcode[20];
 	int         amaflags;
-	format_t    capability;
+	struct ast_format_cap *cap;
 	struct ast_codec_pref prefs;
 	int         dtmfmode;
 	int	    dtmfcodec;
@@ -225,7 +224,7 @@
 	char        name[256];
 	unsigned    outgoinglimit;
 	unsigned    outUse;
-	format_t    capability;
+	struct ast_format_cap *cap;
 	struct ast_codec_pref prefs;
 	char        accountcode[20];
 	int         amaflags;
@@ -286,7 +285,7 @@
 static char gIP[20];
 static char gCallerID[AST_MAX_EXTENSION] = "";
 static struct ooAliases *gAliasList;
-static format_t gCapability = AST_FORMAT_ULAW;
+static struct ast_format_cap *gCap;
 static struct ast_codec_pref gPrefs;
 static int  gDTMFMode = H323_DTMF_RFC2833;
 static int  gDTMFCodec = 101;
@@ -337,14 +336,14 @@
 
 
 static struct ast_channel *ooh323_new(struct ooh323_pvt *i, int state,
-                                             const char *host, int capability, const char *linkedid) 
+                                             const char *host, struct ast_format_cap *cap, const char *linkedid) 
 {
 	struct ast_channel *ch = NULL;
-	int fmt = 0;
-	if (gH323Debug)
-		ast_verbose("---   ooh323_new - %s, %d\n", host, capability);
-
-
+	struct ast_format tmpfmt;
+	if (gH323Debug)
+		ast_verbose("---   ooh323_new - %s\n", host);
+
+	ast_format_clear(&tmpfmt);
 	/* Don't hold a h323 pvt lock while we allocate a channel */
 	ast_mutex_unlock(&i->lock);
    	ch = ast_channel_alloc(1, state, i->callerid_num, i->callerid_name, 
@@ -360,12 +359,14 @@
 		ast_channel_lock(ch);
 		ch->tech = &ooh323_tech;
 
-		if (capability)
-			fmt = ast_best_codec(capability);
-		if (!fmt) 
-			fmt = ast_codec_pref_index(&i->prefs, 0);
-
-		ch->nativeformats = ch->rawwriteformat = ch->rawreadformat = fmt;
+		if (cap)
+			ast_best_codec(cap, &tmpfmt);
+		if (!tmpfmt.id)
+			ast_codec_pref_index(&i->prefs, 0, &tmpfmt);
+
+		ast_format_cap_add(ch->nativeformats, &tmpfmt);
+		ast_format_copy(&ch->rawwriteformat, &tmpfmt);
+		ast_format_copy(&ch->rawreadformat, &tmpfmt);
 
 		ast_channel_set_fd(ch, 0, ast_rtp_instance_fd(i->rtp, 0));
 		ast_channel_set_fd(ch, 1, ast_rtp_instance_fd(i->rtp, 1));
@@ -377,8 +378,8 @@
 			ch->rings = 1;
 
 		ch->adsicpe = AST_ADSI_UNAVAILABLE;
-		ast_set_write_format(ch, fmt);
-		ast_set_read_format(ch, fmt);
+		ast_set_write_format(ch, &tmpfmt);
+		ast_set_read_format(ch, &tmpfmt);
 		ch->tech_pvt = i;
 		i->owner = ch;
 		ast_module_ref(myself);
@@ -472,6 +473,11 @@
 		ast_log(LOG_ERROR, "Couldn't allocate private ooh323 structure\n");
 		return NULL;
 	}
+	if (!(pvt->cap = ast_format_cap_alloc_nolock())) {
+		ast_free(pvt);
+		ast_log(LOG_ERROR, "Couldn't allocate private ooh323 structure\n");
+		return NULL;
+	}
 
 	ast_mutex_init(&pvt->lock);
 	ast_mutex_lock(&pvt->lock);
@@ -529,7 +535,7 @@
 	ast_copy_string(pvt->accountcode, gAccountcode, sizeof(pvt->accountcode));
 
 	pvt->amaflags = gAMAFLAGS;
-	pvt->capability = gCapability;
+	ast_format_cap_copy(pvt->cap, gCap);
 	memcpy(&pvt->prefs, &gPrefs, sizeof(pvt->prefs));
 
 	ast_mutex_unlock(&pvt->lock); 
@@ -549,7 +555,7 @@
 /*
 	Possible data values - peername, exten/peername, exten at ip
  */
-static struct ast_channel *ooh323_request(const char *type, format_t format,
+static struct ast_channel *ooh323_request(const char *type, struct ast_format_cap *cap,
 		const struct ast_channel *requestor, void *data, int *cause)
 
 {
@@ -560,17 +566,14 @@
 	char *ext = NULL;
 	char tmp[256];
 	char formats[FORMAT_STRING_SIZE];
-	int oldformat;
 	int port = 0;
 
 	if (gH323Debug)
 		ast_verbose("---   ooh323_request - data %s format %s\n", (char*)data,  
-										ast_getformatname_multiple(formats,FORMAT_STRING_SIZE,format));
-
-	oldformat = format;
-	format &= AST_FORMAT_AUDIO_MASK;
-	if (!format) {
-		ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%lld'\n", (long long) format);
+										ast_getformatname_multiple(formats,FORMAT_STRING_SIZE,cap));
+
+	if (!(ast_format_cap_has_type(cap, AST_FORMAT_TYPE_AUDIO))) {
+		ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n", ast_getformatname_multiple(formats,FORMAT_STRING_SIZE,cap));
 		return NULL;
 	}
 
@@ -633,7 +636,7 @@
 		if (ext)
 			ast_copy_string(p->exten, ext, sizeof(p->exten));
 
-		p->capability = peer->capability;
+		ast_format_cap_copy(p->cap, peer->cap);
 		memcpy(&p->prefs, &peer->prefs, sizeof(struct ast_codec_pref));
 		p->dtmfmode |= peer->dtmfmode;
 		p->dtmfcodec  = peer->dtmfcodec;
@@ -667,7 +670,7 @@
 		p->dtmfcodec = gDTMFCodec;
 		p->t38support = gT38Support;
 		p->rtptimeout = gRTPTimeout;
-		p->capability = gCapability;
+		ast_format_cap_copy(p->cap, gCap);
 		p->rtdrinterval = gRTDRInterval;
 		p->rtdrcount = gRTDRCount;
 		p->faststart = gFastStart;
@@ -686,7 +689,7 @@
 	}
 
 
-	chan = ooh323_new(p, AST_STATE_DOWN, p->username, format,
+	chan = ooh323_new(p, AST_STATE_DOWN, p->username, cap,
 				 requestor ? requestor->linkedid : NULL);
 	
 	ast_mutex_unlock(&p->lock);
@@ -1138,16 +1141,16 @@
 			}
 
 
-			if (!(f->subclass.codec & ast->nativeformats)) {
-				if (ast->nativeformats != 0) {
+			if (!(ast_format_cap_iscompatible(ast->nativeformats, &f->subclass.format))) {
+				if (!(ast_format_cap_is_empty(ast->nativeformats))) {
 					ast_log(LOG_WARNING,
 							"Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
-							ast_getformatname(f->subclass.codec),
+							ast_getformatname(&f->subclass.format),
 							ast_getformatname_multiple(buf, sizeof(buf), ast->nativeformats),
-							ast_getformatname(ast->readformat),
-							ast_getformatname(ast->writeformat));
-
-					ast_set_write_format(ast, f->subclass.codec);
+							ast_getformatname(&ast->readformat),
+							ast_getformatname(&ast->writeformat));
+
+					ast_set_write_format(ast, &f->subclass.format);
 				} else {
 					/* ast_set_write_format(ast, f->subclass);
 					ast->nativeformats = f->subclass; */
@@ -1410,14 +1413,14 @@
 }
 
 
-void ooh323_set_write_format(ooCallData *call, int fmt, int txframes)
+void ooh323_set_write_format(ooCallData *call, struct ast_format *fmt, int txframes)
 {
 	struct ooh323_pvt *p = NULL;
 	char formats[FORMAT_STRING_SIZE];
 
 	if (gH323Debug)
 		ast_verbose("---   ooh323_update_writeformat %s/%d\n",
-				ast_getformatname_multiple(formats,FORMAT_STRING_SIZE, fmt), txframes);
+				ast_getformatname(fmt), txframes);
 
 	p = find_call(call);
 	if (!p) {
@@ -1427,7 +1430,7 @@
 
 	ast_mutex_lock(&p->lock);
 
-	p->writeformat = fmt;
+	ast_format_copy(&p->writeformat, fmt);
 
 	if (p->owner) {
 		while (p->owner && ast_channel_trylock(p->owner)) {
@@ -1441,8 +1444,8 @@
 		}
 		if (gH323Debug)
 			ast_verbose("Writeformat before update %s/%s\n",
-			  ast_getformatname_multiple(formats,FORMAT_STRING_SIZE, p->owner->writeformat),
-			  ast_getformatname_multiple(formats,FORMAT_STRING_SIZE, p->owner->nativeformats));
+			  ast_getformatname(&p->owner->writeformat),
+			  ast_getformatname_multiple(formats, sizeof(formats), p->owner->nativeformats));
 		if (txframes)
 			ast_codec_pref_setsize(&p->prefs, fmt, txframes);
 		ast_rtp_codecs_packetization_set(ast_rtp_instance_get_codecs(p->rtp), p->rtp, &p->prefs);
@@ -1455,9 +1458,9 @@
 				 p->rtp, p->dtmfcodec, "audio", "cisco-telephone-event", 0);
 		}
 
-		p->owner->nativeformats = fmt;
-	  	ast_set_write_format(p->owner, p->owner->writeformat);
-	  	ast_set_read_format(p->owner, p->owner->readformat);
+		ast_format_cap_set(p->owner->nativeformats, fmt);
+	  	ast_set_write_format(p->owner, &p->owner->writeformat);
+	  	ast_set_read_format(p->owner, &p->owner->readformat);
 		ast_channel_unlock(p->owner);
    	} else
 		ast_log(LOG_ERROR, "No owner found\n");
@@ -1469,14 +1472,13 @@
 		ast_verbose("+++   ooh323_update_writeformat\n");
 }
 
-void ooh323_set_read_format(ooCallData *call, int fmt)
+void ooh323_set_read_format(ooCallData *call, struct ast_format *fmt)
 {
 	struct ooh323_pvt *p = NULL;
-	char formats[FORMAT_STRING_SIZE];
 
 	if (gH323Debug)
 		ast_verbose("---   ooh323_update_readformat %s\n", 
-				ast_getformatname_multiple(formats,FORMAT_STRING_SIZE, fmt));
+				ast_getformatname(fmt));
 
 	p = find_call(call);
 	if (!p) {
@@ -1486,8 +1488,7 @@
 
 	ast_mutex_lock(&p->lock);
 
-	p->readformat = fmt;
-
+	ast_format_copy(&p->readformat, fmt);
 
 	if (p->owner) {
 		while (p->owner && ast_channel_trylock(p->owner)) {
@@ -1502,9 +1503,9 @@
 
 		if (gH323Debug)
 			ast_verbose("Readformat before update %s\n",
-				  ast_getformatname_multiple(formats,FORMAT_STRING_SIZE, p->owner->readformat));
-		p->owner->nativeformats = fmt;
-		ast_set_read_format(p->owner, p->owner->readformat);
+				  ast_getformatname(&p->owner->readformat));
+		ast_format_cap_set(p->owner->nativeformats, fmt);
+		ast_set_read_format(p->owner, &p->owner->readformat);
 		ast_channel_unlock(p->owner);
 	} else
 		ast_log(LOG_ERROR, "No owner found\n");
@@ -1761,7 +1762,7 @@
 		ast_copy_string(p->context, user->context, sizeof(p->context));
 		ast_copy_string(p->accountcode, user->accountcode, sizeof(p->accountcode));
 		p->amaflags = user->amaflags;
-		p->capability = user->capability;
+		ast_format_cap_copy(p->cap, user->cap);
 		memcpy(&p->prefs, &user->prefs, sizeof(struct ast_codec_pref));
 		p->dtmfmode |= user->dtmfmode;
 		p->dtmfcodec = user->dtmfcodec;
@@ -1805,7 +1806,7 @@
 	 }
 	}
 
-	ooh323c_set_capability_for_call(call, &p->prefs, p->capability, p->dtmfmode, p->dtmfcodec,
+	ooh323c_set_capability_for_call(call, &p->prefs, p->cap, p->dtmfmode, p->dtmfcodec,
 					 p->t38support);
 	configure_local_rtp(p, call);
 
@@ -1972,7 +1973,7 @@
 				p->username?p->username:"NULL", call->callToken, prefsBuf);
 		}
 
-      		ooh323c_set_capability_for_call(call, &p->prefs, p->capability, 
+      		ooh323c_set_capability_for_call(call, &p->prefs, p->cap,
                                      p->dtmfmode, p->dtmfcodec, p->t38support);
 
 		configure_local_rtp(p, call);
@@ -2158,6 +2159,7 @@
       if(peer->url)      free(peer->url);
       if(peer->e164)     free(peer->e164);
 
+		peer->cap = ast_format_cap_destroy(peer->cap);
 		free(peer);
 	}  
 
@@ -2177,10 +2179,14 @@
 
    	user = ast_calloc(1,sizeof(struct ooh323_user));
 	if (user) {
+		if (!(user->cap = ast_format_cap_alloc_nolock())) {
+			ast_free(user);
+			return NULL;
+		}
 		memset(user, 0, sizeof(struct ooh323_user));
 		ast_mutex_init(&user->lock);
 		ast_copy_string(user->name, name, sizeof(user->name));
-		user->capability = gCapability;
+		ast_format_cap_copy(user->cap, gCap);
 		memcpy(&user->prefs, &gPrefs, sizeof(user->prefs));
 		user->rtptimeout = gRTPTimeout;
 		user->dtmfmode = gDTMFMode;
@@ -2224,14 +2230,14 @@
 				} else user->rtpmask = NULL;
 			} else if (!strcasecmp(v->name, "disallow")) {
 				ast_parse_allow_disallow(&user->prefs, 
-					&user->capability,  v->value, 0);
+					user->cap,  v->value, 0);
 			} else if (!strcasecmp(v->name, "allow")) {
 				const char* tcodecs = v->value;
 				if (!strcasecmp(v->value, "all")) {
 					tcodecs = "ulaw,alaw,g729,g723,gsm";
 				}
 				ast_parse_allow_disallow(&user->prefs,
-					 &user->capability,  tcodecs, 1);
+					 user->cap,  tcodecs, 1);
 			} else if (!strcasecmp(v->name, "amaflags")) {
 				user->amaflags = ast_cdr_amaflags2int(v->value);
 			} else if (!strcasecmp(v->name, "ip")) {
@@ -2286,10 +2292,14 @@
 
 	peer = ast_calloc(1, sizeof(*peer));
 	if (peer) {
+		if (!(peer->cap = ast_format_cap_alloc_nolock())) {
+			ast_free(peer);
+			return NULL;
+		}
 		memset(peer, 0, sizeof(struct ooh323_peer));
 		ast_mutex_init(&peer->lock);
 		ast_copy_string(peer->name, name, sizeof(peer->name));
-		peer->capability = gCapability;
+		ast_format_cap_copy(peer->cap, gCap);
       		memcpy(&peer->prefs, &gPrefs, sizeof(peer->prefs));
 		peer->rtptimeout = gRTPTimeout;
 		ast_copy_string(peer->accountcode, gAccountcode, sizeof(peer->accountcode));
@@ -2363,14 +2373,14 @@
 								sizeof(peer->rtpmaskstr));
 				} else peer->rtpmask = NULL;
 			} else if (!strcasecmp(v->name, "disallow")) {
-				ast_parse_allow_disallow(&peer->prefs, &peer->capability, 
+				ast_parse_allow_disallow(&peer->prefs, peer->cap, 
 												 v->value, 0); 
 			} else if (!strcasecmp(v->name, "allow")) {
 				const char* tcodecs = v->value;
 				if (!strcasecmp(v->value, "all")) {
 					tcodecs = "ulaw,alaw,g729,g723,gsm";
 				}
-				ast_parse_allow_disallow(&peer->prefs, &peer->capability, 
+				ast_parse_allow_disallow(&peer->prefs, peer->cap, 
 												 tcodecs, 1);				 
 			} else if (!strcasecmp(v->name,  "amaflags")) {
 				peer->amaflags = ast_cdr_amaflags2int(v->value);
@@ -2476,6 +2486,7 @@
 	struct ooh323_peer *peer = NULL;
 	char *cat;
 	const char *utype;
+	struct ast_format tmpfmt;
 
 	if (gH323Debug)
 		ast_verbose("---   reload_config\n");
@@ -2510,7 +2521,7 @@
 	gPort = 1720;
 	gIP[0] = '\0';
 	strcpy(gCallerID, DEFAULT_H323ID);
-   	gCapability = AST_FORMAT_ALAW;
+	ast_format_cap_set(gCap, ast_format_set(&tmpfmt, AST_FORMAT_ALAW, 0));
 	memset(&gPrefs, 0, sizeof(struct ast_codec_pref));
 	gDTMFMode = H323_DTMF_RFC2833;
 	gDTMFCodec = 101;
@@ -2679,13 +2690,13 @@
 		} else if (!strcasecmp(v->name, "accountcode")) {
          ast_copy_string(gAccountcode, v->value, sizeof(gAccountcode));
 		} else if (!strcasecmp(v->name, "disallow")) {
-			ast_parse_allow_disallow(&gPrefs, &gCapability, v->value, 0);
+			ast_parse_allow_disallow(&gPrefs, gCap, v->value, 0);
 		} else if (!strcasecmp(v->name, "allow")) {
 			const char* tcodecs = v->value;
 			if (!strcasecmp(v->value, "all")) {
 				tcodecs = "ulaw,alaw,g729,g723,gsm";
 			}
-			ast_parse_allow_disallow(&gPrefs, &gCapability, tcodecs, 1);
+			ast_parse_allow_disallow(&gPrefs, gCap, tcodecs, 1);
 		} else if (!strcasecmp(v->name, "dtmfmode")) {
 			if (!strcasecmp(v->value, "inband"))
 				gDTMFMode = H323_DTMF_INBAND;
@@ -2894,7 +2905,7 @@
      ast_cli(a->fd, FORMAT, peer->name, 
 					peer->accountcode,
 					ip_port,
-                 ast_getformatname_multiple(formats,FORMAT_STRING_SIZE,peer->capability));
+                 ast_getformatname_multiple(formats,FORMAT_STRING_SIZE,peer->cap));
 		prev = peer;
 		peer = peer->next;
 		ast_mutex_unlock(&prev->lock);
@@ -2908,15 +2919,15 @@
 /*! \brief Print codec list from preference to CLI/manager */
 static void print_codec_to_cli(int fd, struct ast_codec_pref *pref)
 {
-	int x, codec;
-
+	int x;
+	struct ast_format tmpfmt;
 	for (x = 0; x < 32; x++) {
-		codec = ast_codec_pref_index(pref, x);
-		if (!codec)
+		ast_codec_pref_index(pref, x, &tmpfmt);
+		if (!tmpfmt.id)
 			break;
-		ast_cli(fd, "%s", ast_getformatname(codec));
+		ast_cli(fd, "%s", ast_getformatname(&tmpfmt));
 		ast_cli(fd, ":%d", pref->framing[x]);
-		if (x < 31 && ast_codec_pref_index(pref, x + 1))
+		if (x < 31 && ast_codec_pref_index(pref, x + 1, &tmpfmt))
 			ast_cli(fd, ",");
 	}
 	if (!x)
@@ -3039,7 +3050,7 @@
 		ast_mutex_lock(&user->lock);
      		ast_cli(a->fd, FORMAT1, user->name, 
 					user->accountcode, user->context,
-					ast_getformatname_multiple(formats, FORMAT_STRING_SIZE, user->capability));
+					ast_getformatname_multiple(formats, FORMAT_STRING_SIZE, user->cap));
 		prev = user;
 		user = user->next;
 		ast_mutex_unlock(&prev->lock);
@@ -3138,7 +3149,7 @@
    ast_cli(a->fd,  "%-20s%s\n", "Context:", gContext);
    
    ast_cli(a->fd,  "%-20s%s\n", "Capability:", 
-           ast_getformatname_multiple(value,FORMAT_STRING_SIZE,gCapability));
+           ast_getformatname_multiple(value,FORMAT_STRING_SIZE,gCap));
 
    ast_cli(a->fd, "%-20s", "DTMF Mode: ");
 	if (gDTMFMode & H323_DTMF_CISCO) {
@@ -3208,6 +3219,7 @@
 	int res;
 	struct ooAliases * pNewAlias = NULL;
 	struct ooh323_peer *peer = NULL;
+	struct ast_format tmpfmt;
 	OOH225MsgCallbacks h225Callbacks = {0, 0, 0, 0};
 
 	OOH323CALLBACKS h323Callbacks = {
@@ -3222,6 +3234,14 @@
 		.onReceivedDTMF = ooh323_onReceivedDigit,
 		.onModeChanged = onModeChanged
 	};
+	if (!(gCap = ast_format_cap_alloc())) {
+		return 1;
+	}
+	if (!(ooh323_tech.capabilities = ast_format_cap_alloc())) {
+		return 1;
+	}
+	ast_format_cap_add(gCap, ast_format_set(&tmpfmt, AST_FORMAT_ULAW, 0));
+	ast_format_cap_add_all(ooh323_tech.capabilities);
 
 	myself = ast_module_info->self;
 
@@ -3335,7 +3355,7 @@
 		ooH323EpSetH323Callbacks(h323Callbacks);
 
 		/* Add endpoint capabilities */
-		if (ooh323c_set_capability(&gPrefs, gCapability, gDTMFMode, gDTMFCodec) < 0) {
+		if (ooh323c_set_capability(&gPrefs, gCap, gDTMFMode, gDTMFCodec) < 0) {
 			ast_log(LOG_ERROR, "Capabilities failure for OOH323. OOH323 Disabled.\n");
 			return 1;
 		}
@@ -3559,7 +3579,7 @@
 
 		ast_mutex_unlock(&cur->lock);
 		ast_mutex_destroy(&cur->lock);
-
+		cur->cap = ast_format_cap_destroy(cur->cap);
 		ast_free(cur);
 	}
 
@@ -3624,6 +3644,7 @@
 	  			free(prev->rtpmask);
       			}
       		}
+		prev->cap = ast_format_cap_destroy(prev->cap);
 		free(prev);
 		if (cur == userl.users) {
 			break;
@@ -3752,6 +3773,8 @@
 		ast_verbose("+++ ooh323  unload_module \n");	
 	}
 
+	gCap = ast_format_cap_destroy(gCap);
+	ooh323_tech.capabilities = ast_format_cap_destroy(ooh323_tech.capabilities);
 	return 0;
 }
 
@@ -3803,22 +3826,23 @@
 	(ooCallData *call, struct ast_codec_pref *prefs)
 {
 	int i = 0;
-	int codec = ast_codec_pref_index(prefs, i);
+	struct ast_format tmpfmt;
+
+	ast_codec_pref_index(prefs, i, &tmpfmt);
 
 	ooResetCapPrefs(call);
-	while (codec) {
-		ooAppendCapToCapPrefs(call, ooh323_convertAsteriskCapToH323Cap(codec));
-		codec = ast_codec_pref_index(prefs, ++i);
+	while (tmpfmt.id) {
+		ooAppendCapToCapPrefs(call, ooh323_convertAsteriskCapToH323Cap(&tmpfmt));
+		ast_codec_pref_index(prefs, ++i, &tmpfmt);
 	}
 
 	return 0;
 }
 
 
-int ooh323_convertAsteriskCapToH323Cap(format_t cap)
-{
-	char formats[FORMAT_STRING_SIZE];
-	switch (cap) {
+int ooh323_convertAsteriskCapToH323Cap(struct ast_format *format)
+{
+	switch (format->id) {
 	case AST_FORMAT_ULAW:
 		return OO_G711ULAW64K;
 	case AST_FORMAT_ALAW:
@@ -3846,14 +3870,13 @@
 	case AST_FORMAT_H263:
 		return OO_H263VIDEO;
 	default:
-		ast_log(LOG_NOTICE, "Don't know how to deal with mode %s\n", 
-                        ast_getformatname_multiple(formats,FORMAT_STRING_SIZE,cap));
+		ast_log(LOG_NOTICE, "Don't know how to deal with mode %s\n", ast_getformatname(format));
 		return -1;
 	}
 }
 
 static int ooh323_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *rtp,
-	 struct ast_rtp_instance *vrtp, struct ast_rtp_instance *trtp, format_t codecs, int nat_active)
+	 struct ast_rtp_instance *vrtp, struct ast_rtp_instance *trtp, const struct ast_format_cap *cap, int nat_active)
 {
 	/* XXX Deal with Video */

[... 21259 lines stripped ...]



More information about the asterisk-commits mailing list