aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_alsa.c
AgeCommit message (Collapse)AuthorFilesLines
2009-03-18Fix cases where the internal poll() was not being used when it needed to be.russell1-0/+1
We have seen a number of problems caused by poll() not working properly on Mac OSX. If you search around, you'll find a number of references to using select() instead of poll() to work around these issues. In Asterisk, we've had poll.c which implements poll() using select() internally. However, we were still getting reports of problems. vadim investigated a bit and realized that at least on his system, even though we were compiling in poll.o, the system poll() was still being used. So, the primary purpose of this patch is to ensure that we're using the internal poll() when we want it to be used. The changes are: 1) Remove logic for when internal poll should be used from the Makefile. Instead, put it in the configure script. The logic in the configure script is the same as it was in the Makefile. Ideally, we would have a functionality test for the problem, but that's not actually possible, since we would have to be able to run an application on the _target_ system to test poll() behavior. 2) Always include poll.o in the build, but it will be empty if AST_POLL_COMPAT is not defined. 3) Change uses of poll() throughout the source tree to ast_poll(). I feel that it is good practice to give the API call a new name when we are changing its behavior and not using the system version directly in all cases. So, normally, ast_poll() is just redefined to poll(). On systems where AST_POLL_COMPAT is defined, ast_poll() is redefined to ast_internal_poll(). 4) Change poll() in main/poll.c to be ast_internal_poll(). It's worth noting that any code that still uses poll() directly will work fine (if they worked fine before). So, for example, out of tree modules that are using poll() will not stop working or anything. However, for modules to work properly on Mac OSX, ast_poll() needs to be used. (closes issue #13404) Reported by: agalbraith Tested by: russell, vadim http://reviewboard.digium.com/r/198/ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@182810 f38db490-d61c-443f-a65b-d21fe96a405b
2009-01-01Repeat attempts to write when we receive -EAGAIN from the driver, as detailedtilghman1-3/+9
in the ALSA sample code (see http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html#a32) Reported by: Jerry Geis (via the -users list) Fixed by: me (license 14) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@167095 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-26rename these files so as to avoid conflicts when users update their working ↵kpfleming1-2/+2
copies and have unversioned files already in place git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@159571 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-01fix a bunch of potential problems found by gcc 4.3.x, primarily bare strings ↵kpfleming1-7/+18
being passed to printf()-like functions and ignored results from read()/write() and friends git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@153337 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-29Add some debugging code that ensures that when we do deadlock avoidance, wetilghman1-3/+1
don't lose the information about how a lock was originally acquired. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@118953 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-13Use the right flag to open the audio in non-blocking.file1-2/+1
(closes issue #12616) Reported by: nicklewisdigiumuser git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115944 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-05Add a control frame to indicate the source of media has changed. Depending ↵file1-26/+28
on the underlying technology it may need to change some things. (closes issue #12148) Reported by: jcomellas git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@106235 f38db490-d61c-443f-a65b-d21fe96a405b
2007-09-26avoid the weird usage of assert() in the ALSA header files that gcc 4.2 ↵kpfleming1-2/+4
wants to complain about git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@83974 f38db490-d61c-443f-a65b-d21fe96a405b
2007-05-14Properly handle AST_CONTROL_PROGRESS by just ignoring it. An unknown indicationrussell1-0/+1
will trigger an error and cause sounds to stop, which in this case, is ringing. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@64306 f38db490-d61c-443f-a65b-d21fe96a405b
2007-04-09This is a big improvement over the current CDR fixes. It may still need ↵murf1-1/+1
refinement, but this won't have as many folks bothered. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@60989 f38db490-d61c-443f-a65b-d21fe96a405b
2007-02-26Restore the behavior of Asterisk 1.2 where if a device was not specified inrussell1-2/+2
alsa.conf, then we just use the system default, instead of creating our own default of hw:0,0. (issue #9139) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@56888 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-23Update channel drivers to use module referencing so that unloading them ↵file1-9/+2
while in use will not result in crashes. (issue #8897 reported by junky) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@51788 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-19Merge the changes from the /team/group/vldtmf_fixup branch.russell1-3/+4
The main bug being addressed here is a problem introduced when two SIP channels using SIP INFO dtmf have their media directly bridged. So, when a DTMF END frame comes into Asterisk from an incoming INFO message, Asterisk would try to emulate a digit of some length by first sending a DTMF BEGIN frame and sending a DTMF END later timed off of incoming audio. However, since there was no audio coming in, the DTMF_END was never generated. This caused DTMF based features to no longer work. To fix this, the core now knows when a channel doesn't care about DTMF BEGIN frames (such as a SIP channel sending INFO dtmf). If this is the case, then Asterisk will not emulate a digit of some length, and will instead just pass through the single DTMF END event. Channel drivers also now get passed the length of the digit to their digit_end callback. This improves SIP INFO support even further by enabling us to put the real digit duration in the INFO message instead of a hard coded 250ms. Also, for an incoming INFO message, the duration is read from the frame and passed into the core instead of just getting ignored. (issue #8597, maybe others...) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@51311 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-07These mods are to solve the problem in bug 7506. It's a lot of rework to ↵murf1-3/+1
solve a fairly small problem... such is life. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@47303 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-25apparently developers are still not aware that they should be use ↵kpfleming1-6/+6
ast_copy_string instead of strncpy... fix up many more users, and fix some bugs in the process git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@46200 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-04update thread creation code a bitkpfleming1-1/+1
reduce standard thread stack size slightly to allow the pthreads library to allocate the stack+data and not overflow a power-of-2 allocation in the kernel and waste memory/address space add a new stack size for 'background' threads (those that don't handle PBX calls) when LOW_MEMORY is defined git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@44378 f38db490-d61c-443f-a65b-d21fe96a405b
2006-09-18merge qwell's CLI verbification workkpfleming1-24/+246
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@43212 f38db490-d61c-443f-a65b-d21fe96a405b
2006-09-08Formatting fixes for chan_alsa (issue #7807 reported by Mithraen with more ↵file1-253/+247
mods done by myself) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@42388 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-31Merge in VLDTMF support with Zaptel/Core done by the ever great Darumkilla ↵file1-1/+1
Russell Bryant and the RTP portion done by myself, Muffinlicious Joshua Colp. This has gone through so many discussions/revisions it's not funny but we finally have it! git-svn-id: http://svn.digium.com/svn/asterisk/trunk@41507 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-21merge new_loader_completion branch, including (at least):kpfleming1-14/+3
- restructured build tree and makefiles to eliminate recursion problems - support for embedded modules - support for static builds - simpler cross-compilation support - simpler module/loader interface (no exported symbols) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40722 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-16move the calls to ast_jb_configure() to before the PBX thread is started on therussell1-2/+1
channel to remove the theoretical race condition that the channel could get bridged before the channel's jitterbuffer gets configured. This was pointed out by PCadach on IRC. Thanks! git-svn-id: http://svn.digium.com/svn/asterisk/trunk@39964 f38db490-d61c-443f-a65b-d21fe96a405b
2006-07-19merge Russell's 'hold_handling' branch, finally implementing music-on-hold ↵kpfleming1-13/+28
handling the way it was decided at AstriDevCon Europe 2006 (and the way people really want it to be) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@37988 f38db490-d61c-443f-a65b-d21fe96a405b
2006-06-23revert my changes that converted the jb on the channel to be dynamicallyrussell1-11/+7
allocated. These changes caused crashes when using a channel type that did not support the jitterbuffer. Instead of fixing why it's crashing, I'm going to implement this in a better way next week. The way I did it caused a jitterbuffer to be allocated on every channel where the channel type supported jitterbuffers, even if they were disabled. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@35746 f38db490-d61c-443f-a65b-d21fe96a405b
2006-06-22- dynamically allocate the ast_jb structure that is on the channel structurerussell1-7/+11
so that channels not using a jitterbuffer don't waste as much memory - ensure that the channel drivers that use jitterbuffers can handle a failure from configuring a jitterbuffer on a new channel because of a memory allocation error - On passing through these channel drivers, configure the jitterbuffer before starting the PBX thread instead of afterwards. If the pbx fails to start for whatever reason, this would have caused a crash. - Also on passing, move the increase of the usecount to after all of the possible failure conditions in the function - fix a place where ast_update_use_count() was not called - ensure that the owner channel pointer of the channel pvt strcutures is set to NULL in failure conditions git-svn-id: http://svn.digium.com/svn/asterisk/trunk@35553 f38db490-d61c-443f-a65b-d21fe96a405b
2006-06-07simplify autoconfig include mechanism (make tholo happy he can use lint ↵kpfleming1-4/+4
again :-) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32846 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-31move the includes of abstract_jb.h to be with the rest of the asterisk includes.russell1-2/+2
These used to be wrapped in a #ifdef git-svn-id: http://svn.digium.com/svn/asterisk/trunk@31078 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-31Add support for using a jitterbuffer for RTP on bridged calls. This includesrussell1-0/+22
a new implementation of a fixed size jitterbuffer, as well as support for the existing adaptive jitterbuffer implementation. (issue #3854, Slav Klenov) Thank you very much to Slav Klenov of Securax and all of the people involved in the testing of this feature for all of your hard work! git-svn-id: http://svn.digium.com/svn/asterisk/trunk@31052 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-10ensure that control frames with payload can be sent to channel drivers via ↵kpfleming1-2/+2
->indicate() update iax2_indicate to pass control frame payload to the connected channel add an API call for sending an indication with payload, and use it for control frames with payload git-svn-id: http://svn.digium.com/svn/asterisk/trunk@26417 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-24Thanks to the fine work of Russell Bryant and Dancho Lazarov, we now have ↵kpfleming1-11/+9
autoconf and menuselect tools for Asterisk! git-svn-id: http://svn.digium.com/svn/asterisk/trunk@22267 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-17more module loader related fixeskpfleming1-5/+5
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@20963 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-08since the module API is changing, it's a good time to const-ify the ↵kpfleming1-2/+2
description() and key() return values git-svn-id: http://svn.digium.com/svn/asterisk/trunk@18552 f38db490-d61c-443f-a65b-d21fe96a405b
2006-02-01use string fields for some stuff in ast_channelkpfleming1-10/+9
const-ify some more APIs remove 'type' field from ast_channel, in favor of the one in the channel's tech structure allow string field module users to specify the 'chunk size' for pool allocations update chan_alsa to be compatible with recent const-ification patches git-svn-id: http://svn.digium.com/svn/asterisk/trunk@9060 f38db490-d61c-443f-a65b-d21fe96a405b
2006-01-20Change chan_alsa to default open the first sound card devicemattf1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@8346 f38db490-d61c-443f-a65b-d21fe96a405b
2006-01-11convert some channels to use the memory allocation wrappers.russell1-2/+2
(This is being added to the janitor projects list.) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7954 f38db490-d61c-443f-a65b-d21fe96a405b
2005-12-30update doxygen docs to specify authorsrussell1-0/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7682 f38db490-d61c-443f-a65b-d21fe96a405b
2005-12-21Merged revisions 7582 via svnmerge fromtilghman1-2/+4
/branches/1.2 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7583 f38db490-d61c-443f-a65b-d21fe96a405b
2005-11-29git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7221 ↵kpfleming1-0/+0
f38db490-d61c-443f-a65b-d21fe96a405b
2005-11-15issue #5672kpfleming1-2/+8
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7106 f38db490-d61c-443f-a65b-d21fe96a405b
2005-11-06issue #5605russell1-0/+5
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6979 f38db490-d61c-443f-a65b-d21fe96a405b
2005-10-27Remove unnecessary checks before calls to ast_strlen_zero. Also, changerussell1-10/+10
some places where strlen is used instead of ast_strlen_zero git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6866 f38db490-d61c-443f-a65b-d21fe96a405b
2005-10-24Doxygen documentation update from oej (issue #5505)russell1-0/+4
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6847 f38db490-d61c-443f-a65b-d21fe96a405b
2005-10-16Make alsa/oss ignore VIDUPDATE control framesmarkster1-0/+3
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6799 f38db490-d61c-443f-a65b-d21fe96a405b
2005-09-14update MANY more files with proper copyright/license info (thanks Ian!)kpfleming1-3/+11
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6596 f38db490-d61c-443f-a65b-d21fe96a405b
2005-08-05Fix newline issue (bug #4632)markster1-0/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6291 f38db490-d61c-443f-a65b-d21fe96a405b
2005-07-10define an AST_MAX_CONTEXT for use instead of AST_MAX_EXTENSIONrussell1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6076 f38db490-d61c-443f-a65b-d21fe96a405b
2005-06-24don't use locks when reading usecounts (reading only, not writing)kpfleming1-5/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5994 f38db490-d61c-443f-a65b-d21fe96a405b
2005-06-06more file version tagskpfleming1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5866 f38db490-d61c-443f-a65b-d21fe96a405b
2005-06-06another round of version tag updates, along with 'show version files' ↵kpfleming1-11/+16
pattern filtering git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5865 f38db490-d61c-443f-a65b-d21fe96a405b
2005-04-21use double-quotes instead of angle-brackets for non-system include files ↵kpfleming1-11/+11
(bug #4058) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5490 f38db490-d61c-443f-a65b-d21fe96a405b
2005-04-13Fixed chan_alsa.c unload bug (bug #4019)mattf1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5464 f38db490-d61c-443f-a65b-d21fe96a405b