[asterisk-dev] [Code Review] Asterisk media architecture conversion - no more format bitfields

Terry Wilson reviewboard at asterisk.org
Sat Jan 29 11:09:20 CST 2011


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1083/#review3151
-----------------------------------------------------------


Ugh, I thought I was finishing page 4. I'm only on page 3. This is going to take forever. You are a superhero for completing this patch.


/trunk/channels/chan_gtalk.c
<https://reviewboard.asterisk.org/r/1083/#comment6488>

    With all of the other format API having copy functions, do you think that it would be more consistent to hide this behind an API in case the underlying structure changes to include a pointer for some reason?



/trunk/channels/chan_gtalk.c
<https://reviewboard.asterisk.org/r/1083/#comment6489>

    Like the copy comment above, should we hide this behind an API call? It looks like format_pref.h actually declares and documents ast_format_pref_init, but it isn't actually defined anywhere. Pretty easy to find most of the mem(set|cpy) instances with `grep -nIr "mem\w\{3\}\s*(.*pref" *|grep -v svn`



/trunk/channels/chan_h323.c
<https://reviewboard.asterisk.org/r/1083/#comment6490>

    I think there are about 23 calls to ast_format_cap_remove_all() followed immediately by a call to ast_format_cap_add() in various parts of the code. It might be useful to add a ast_format_cap_set (set_format? replace?) for what seems like a pretty common case.



/trunk/channels/chan_h323.c
<https://reviewboard.asterisk.org/r/1083/#comment6491>

    The commented out code would no longer work. :-p



/trunk/channels/chan_h323.c
<https://reviewboard.asterisk.org/r/1083/#comment6492>

    the if(a) { if (b) {}} could be simplified to if (a && b). Did you mean to nix the debug statement as well?



/trunk/channels/chan_iax2.c
<https://reviewboard.asterisk.org/r/1083/#comment6493>

    newline
    return
    }
    instead of
    return
    newline
    }



/trunk/channels/chan_jingle.c
<https://reviewboard.asterisk.org/r/1083/#comment6494>

    I'm not sure about this one. It looks like the original code specifically tries to keep any video nativeformats, whereas the new version removes all nativeformats and replaces them with the format of the frame. Is this intentional?



/trunk/channels/chan_local.c
<https://reviewboard.asterisk.org/r/1083/#comment6495>

    The original code looks like it replaces nativeformats completely while the new code uses an append? Intentional?



/trunk/channels/chan_mgcp.c
<https://reviewboard.asterisk.org/r/1083/#comment6496>

    extra newline



/trunk/channels/chan_oss.c
<https://reviewboard.asterisk.org/r/1083/#comment6497>

    C++-style comments.



/trunk/channels/chan_phone.c
<https://reviewboard.asterisk.org/r/1083/#comment6498>

    weird spacing (though so was the original)



/trunk/channels/chan_phone.c
<https://reviewboard.asterisk.org/r/1083/#comment6499>

    If we fail, here, we don't destroy the prior capabilities allocs.



/trunk/channels/chan_sip.c
<https://reviewboard.asterisk.org/r/1083/#comment6500>

    Personally, I tend to like initializing like this. You tend to use ast_format_clear() everywhere else I've seen so far, though.



/trunk/channels/chan_sip.c
<https://reviewboard.asterisk.org/r/1083/#comment6501>

    Is a hardcoded 63 here what we really want?



/trunk/channels/chan_skinny.c
<https://reviewboard.asterisk.org/r/1083/#comment6502>

    ast_best_codec returns the pointer, so it could have stayed all in one line here and elsewhere in the file. I only point it out since you usually use ast_format_set that way.



/trunk/channels/chan_skinny.c
<https://reviewboard.asterisk.org/r/1083/#comment6503>

    I think this should be if (!ast_format_cap_is_empty(tmp->nativeformats)



/trunk/channels/chan_unistim.c
<https://reviewboard.asterisk.org/r/1083/#comment6504>

    A few things here. unistim_line_copy goes against the normal copy function argument order of (dst, src). This can sometimes lead to confusion/bugs. For instance, the memcpy in this function looks backward. I'm having a little trouble figuring out what should be going on. If the memcpy is backward, then the tmp=src->cap, src->cap = tmp is redundant. In any case, I wonder if the cap should be dup'd instead of just copying over the link.



/trunk/channels/chan_unistim.c
<https://reviewboard.asterisk.org/r/1083/#comment6505>

    It seems like a lot of the code here could actually be part of unistim_line_copy, since just wrapping the memcpy and trying to handle the cap structure might not really warrant having the function if we are going to do a lot of other fixup stuff later.



/trunk/channels/chan_unistim.c
<https://reviewboard.asterisk.org/r/1083/#comment6506>

    buff_failed: doesn't free the caps.



/trunk/channels/chan_vpb.cc
<https://reviewboard.asterisk.org/r/1083/#comment6507>

    Everywhere else you have just deleted the entry.



/trunk/channels/chan_vpb.cc
<https://reviewboard.asterisk.org/r/1083/#comment6508>

    here too.


- Terry


On 2011-01-24 15:25:45, David Vossel wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1083/
> -----------------------------------------------------------
> 
> (Updated 2011-01-24 15:25:45)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> This patch is the foundation of an entire new way of looking at media in Asterisk.  The code present in this review 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
> 
> 
> Diffs
> -----
> 
>   /trunk/addons/chan_mobile.c 303557 
>   /trunk/addons/chan_ooh323.h 303557 
>   /trunk/addons/chan_ooh323.c 303557 
>   /trunk/addons/format_mp3.c 303557 
>   /trunk/addons/ooh323cDriver.h 303557 
>   /trunk/addons/ooh323cDriver.c 303557 
>   /trunk/apps/app_alarmreceiver.c 303557 
>   /trunk/apps/app_amd.c 303557 
>   /trunk/apps/app_chanspy.c 303557 
>   /trunk/apps/app_confbridge.c 303557 
>   /trunk/apps/app_dahdibarge.c 303557 
>   /trunk/apps/app_dictate.c 303557 
>   /trunk/apps/app_dumpchan.c 303557 
>   /trunk/apps/app_echo.c 303557 
>   /trunk/apps/app_fax.c 303557 
>   /trunk/apps/app_festival.c 303557 
>   /trunk/apps/app_followme.c 303557 
>   /trunk/apps/app_ices.c 303557 
>   /trunk/apps/app_jack.c 303557 
>   /trunk/apps/app_meetme.c 303557 
>   /trunk/apps/app_milliwatt.c 303557 
>   /trunk/apps/app_mixmonitor.c 303557 
>   /trunk/apps/app_mp3.c 303557 
>   /trunk/apps/app_nbscat.c 303557 
>   /trunk/apps/app_originate.c 303557 
>   /trunk/apps/app_parkandannounce.c 303557 
>   /trunk/apps/app_record.c 303557 
>   /trunk/apps/app_rpt.c 303557 
>   /trunk/apps/app_sms.c 303557 
>   /trunk/apps/app_speech_utils.c 303557 
>   /trunk/apps/app_talkdetect.c 303557 
>   /trunk/apps/app_test.c 303557 
>   /trunk/apps/app_voicemail.c 303557 
>   /trunk/apps/app_waitforsilence.c 303557 
>   /trunk/bridges/bridge_multiplexed.c 303557 
>   /trunk/bridges/bridge_simple.c 303557 
>   /trunk/bridges/bridge_softmix.c 303557 
>   /trunk/channels/chan_agent.c 303557 
>   /trunk/channels/chan_alsa.c 303557 
>   /trunk/channels/chan_bridge.c 303557 
>   /trunk/channels/chan_console.c 303557 
>   /trunk/channels/chan_dahdi.c 303557 
>   /trunk/channels/chan_gtalk.c 303557 
>   /trunk/channels/chan_h323.c 303557 
>   /trunk/channels/chan_iax2.c 303557 
>   /trunk/channels/chan_jingle.c 303557 
>   /trunk/channels/chan_local.c 303557 
>   /trunk/channels/chan_mgcp.c 303557 
>   /trunk/channels/chan_misdn.c 303557 
>   /trunk/channels/chan_multicast_rtp.c 303557 
>   /trunk/channels/chan_nbs.c 303557 
>   /trunk/channels/chan_oss.c 303557 
>   /trunk/channels/chan_phone.c 303557 
>   /trunk/channels/chan_sip.c 303557 
>   /trunk/channels/chan_skinny.c 303557 
>   /trunk/channels/chan_unistim.c 303557 
>   /trunk/channels/chan_usbradio.c 303557 
>   /trunk/channels/chan_vpb.cc 303557 
>   /trunk/channels/h323/ast_h323.cxx 303557 
>   /trunk/channels/h323/chan_h323.h 303557 
>   /trunk/channels/iax2-parser.h 303557 
>   /trunk/channels/iax2-parser.c 303557 
>   /trunk/channels/iax2-provision.c 303557 
>   /trunk/channels/iax2.h 303557 
>   /trunk/channels/sip/include/globals.h 303557 
>   /trunk/channels/sip/include/sip.h 303557 
>   /trunk/codecs/codec_a_mu.c 303557 
>   /trunk/codecs/codec_adpcm.c 303557 
>   /trunk/codecs/codec_alaw.c 303557 
>   /trunk/codecs/codec_dahdi.c 303557 
>   /trunk/codecs/codec_g722.c 303557 
>   /trunk/codecs/codec_g726.c 303557 
>   /trunk/codecs/codec_gsm.c 303557 
>   /trunk/codecs/codec_ilbc.c 303557 
>   /trunk/codecs/codec_lpc10.c 303557 
>   /trunk/codecs/codec_resample.c 303557 
>   /trunk/codecs/codec_speex.c 303557 
>   /trunk/codecs/codec_ulaw.c 303557 
>   /trunk/codecs/ex_adpcm.h 303557 
>   /trunk/codecs/ex_alaw.h 303557 
>   /trunk/codecs/ex_g722.h 303557 
>   /trunk/codecs/ex_g726.h 303557 
>   /trunk/codecs/ex_gsm.h 303557 
>   /trunk/codecs/ex_lpc10.h 303557 
>   /trunk/codecs/ex_speex.h 303557 
>   /trunk/codecs/ex_ulaw.h 303557 
>   /trunk/formats/format_g719.c 303557 
>   /trunk/formats/format_g723.c 303557 
>   /trunk/formats/format_g726.c 303557 
>   /trunk/formats/format_g729.c 303557 
>   /trunk/formats/format_gsm.c 303557 
>   /trunk/formats/format_h263.c 303557 
>   /trunk/formats/format_h264.c 303557 
>   /trunk/formats/format_ilbc.c 303557 
>   /trunk/formats/format_jpeg.c 303557 
>   /trunk/formats/format_ogg_vorbis.c 303557 
>   /trunk/formats/format_pcm.c 303557 
>   /trunk/formats/format_siren14.c 303557 
>   /trunk/formats/format_siren7.c 303557 
>   /trunk/formats/format_sln.c 303557 
>   /trunk/formats/format_sln16.c 303557 
>   /trunk/formats/format_vox.c 303557 
>   /trunk/formats/format_wav.c 303557 
>   /trunk/formats/format_wav_gsm.c 303557 
>   /trunk/funcs/func_channel.c 303557 
>   /trunk/funcs/func_frame_trace.c 303557 
>   /trunk/funcs/func_pitchshift.c 303557 
>   /trunk/include/asterisk/abstract_jb.h 303557 
>   /trunk/include/asterisk/astobj2.h 303557 
>   /trunk/include/asterisk/audiohook.h 303557 
>   /trunk/include/asterisk/bridging.h 303557 
>   /trunk/include/asterisk/bridging_technology.h 303557 
>   /trunk/include/asterisk/callerid.h 303557 
>   /trunk/include/asterisk/channel.h 303557 
>   /trunk/include/asterisk/data.h 303557 
>   /trunk/include/asterisk/file.h 303557 
>   /trunk/include/asterisk/format.h PRE-CREATION 
>   /trunk/include/asterisk/format_cap.h PRE-CREATION 
>   /trunk/include/asterisk/format_pref.h PRE-CREATION 
>   /trunk/include/asterisk/frame.h 303557 
>   /trunk/include/asterisk/frame_defs.h 303557 
>   /trunk/include/asterisk/image.h 303557 
>   /trunk/include/asterisk/mod_format.h 303557 
>   /trunk/include/asterisk/pbx.h 303557 
>   /trunk/include/asterisk/rtp_engine.h 303557 
>   /trunk/include/asterisk/slin.h 303557 
>   /trunk/include/asterisk/slinfactory.h 303557 
>   /trunk/include/asterisk/speech.h 303557 
>   /trunk/include/asterisk/translate.h 303557 
>   /trunk/main/abstract_jb.c 303557 
>   /trunk/main/app.c 303557 
>   /trunk/main/asterisk.c 303557 
>   /trunk/main/astobj2.c 303557 
>   /trunk/main/audiohook.c 303557 
>   /trunk/main/bridging.c 303557 
>   /trunk/main/callerid.c 303557 
>   /trunk/main/ccss.c 303557 
>   /trunk/main/channel.c 303557 
>   /trunk/main/cli.c 303557 
>   /trunk/main/data.c 303557 
>   /trunk/main/dial.c 303557 
>   /trunk/main/dsp.c 303557 
>   /trunk/main/features.c 303557 
>   /trunk/main/file.c 303557 
>   /trunk/main/format.c PRE-CREATION 
>   /trunk/main/format_cap.c PRE-CREATION 
>   /trunk/main/format_pref.c PRE-CREATION 
>   /trunk/main/frame.c 303557 
>   /trunk/main/image.c 303557 
>   /trunk/main/indications.c 303557 
>   /trunk/main/manager.c 303557 
>   /trunk/main/pbx.c 303557 
>   /trunk/main/rtp_engine.c 303557 
>   /trunk/main/slinfactory.c 303557 
>   /trunk/main/translate.c 303557 
>   /trunk/main/udptl.c 303557 
>   /trunk/pbx/pbx_spool.c 303557 
>   /trunk/res/res_adsi.c 303557 
>   /trunk/res/res_agi.c 303557 
>   /trunk/res/res_calendar.c 303557 
>   /trunk/res/res_clioriginate.c 303557 
>   /trunk/res/res_fax.c 303557 
>   /trunk/res/res_fax_spandsp.c 303557 
>   /trunk/res/res_musiconhold.c 303557 
>   /trunk/res/res_rtp_asterisk.c 303557 
>   /trunk/res/res_rtp_multicast.c 303557 
>   /trunk/res/res_speech.c 303557 
>   /trunk/tests/test_format_api.c PRE-CREATION 
> 
> Diff: https://reviewboard.asterisk.org/r/1083/diff
> 
> 
> Testing
> -------
> 
> Below are the major areas I tested during development.  I will continue testing as this patch is being reviewed.
> -Local Channel + IAX2 channel load testing
> -SIP Calls with and without video
> -IAX2 Calls
> -AudioHooks and apps using audiohooks
> -Masquerades
> -DTMF Attended Transfers
> -SIP Transfers
> -Gtalk
> 
> 
> Thanks,
> 
> David
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110129/bc191d01/attachment-0001.htm>


More information about the asterisk-dev mailing list