Re: [Alsa-user] How can you programmatically tell that audio is playing?
Brought to you by:
perex
From: Dominique M. <dom...@vt...> - 2008-12-27 20:14:32
|
Le Fri, 26 Dec 2008 11:53:48 -0500, Christian Brink <cb...@r-...> a écrit : > J. Pauli wrote: > > Christian Brink wrote: > > > >> How can you programmatically tell that audio is playing or at least > >> being sent to the soundcard? > >> > >> I've got an application that occasionally fails to pick up a remote > >> stream, but the process hangs around so I can't tell that it failed just > >> by checking the process list. I would like to be able to tell if the > >> application is sending audio or not so I can retry. > >> > >> I've checked the archives, googled, and tried cat'ing /dev/audio (which > >> seems to return data whether or not audio is playing). > >> > >> > > > > Check the files > > /proc/asound/cardX/pcmYp/subZ/[status|hw_params|sw_params], where X,Y > > and Z is the soundcard, device and subdevice you want to monitor. If > > nothing is being sent to the soundcard it should contain "closed". > > Unfortunately you need to activate "verbose proc something" in your > > kernel, which most distributions don't have by default. > > > > I've also written some small (and really buggy) program to monitor all > > devices and subdevices of a soundcard but you still need that kernel > > option or it will crash. You can get it here: > > http://stinfwww.informatik.uni-leipzig.de/~mai00bgn/aproc/ (source code > > only). Sorry for the propaganda. > > > > > Jan - > > Thanks for the info, it's been a great help. I had a couple more > questions if you'd being willing to help. > > I've been doing some testing on a couple of different machines (Fedora > and Deb). 'closed' only seems to show up when the card is not "open" by > an application. So if I have a mp3 player app open (Rhythmbox for > example) but not playing or paused, it shows the card not "closed" even > though no music is playing. > Is this normal? A paused application just pause the playing but doesn't close the thread that make the playing, so the card will still "see" the app. If you make a stop instead of pause, a good written app would close the thread that make the playing and the card would not "see" the app anymore. > or is this the difference between having the kernel flag on and not? I don't know. Ciao, Dominique |