From listmgr@mstdev.com Wed, 1 May 2002 12:49:35 -0700 Date: Wed, 1 May 2002 12:49:35 -0700 From: List Manager listmgr@mstdev.com Subject: [Alsaplayer-devel]Introducing Emotion Recognition SDK for programmers Dear Developer, MultiSensory Technology Corporation is developing a software engine that can automatically extract and rank over 130 unique emotions from plain text! - Information Extraction - Voice and E-Mail Analysis - CRM, KM, Customer Service Try it out for FREE! (for a limited time only...) http://www.mstcorporation.com Please tell us what you think too! We would love to hear from you. MultiSensory Technology Corporation 31841 Via Coyote Trabuco Canyon, CA 92679 (949) 713-2869 info@mstcorporation.com ================= To be removed from our list please reply with "remove" in the subject line. We will immediately update our list accordingly. ================= From codedj@echo.ru Thu, 2 May 2002 22:01:36 +0700 Date: Thu, 2 May 2002 22:01:36 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Re: [Alsaplayer-commits] CVS: alsaplayer/scopes/synaescope synaescope.c,1.9,1.10 On Wed, 01 May 2002 18:44:10 -0700, Andy Lo A Foe wrote: ALAF> Remove all C++ style comments Why so? -- ... Evgeny ... [Nothing] From andy@alsaplayer.org Thu, 2 May 2002 18:14:25 +0200 Date: Thu, 2 May 2002 18:14:25 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Re: [Alsaplayer-commits] CVS: alsaplayer/scopes/synaescope synaescope.c,1.9,1.10 On Thu, May 02, 2002 at 10:01:36PM +0700, Evgeny Chukreev wrote: > Why so? No real reason, but I seem to remember some .c compilers (on IRIX) having trouble grasping C++ style comments in .c files. Of course this is moot point since there are many more .c files in the tree that have C++ style comments :) Andy From andy@alsaplayer.org Fri, 3 May 2002 01:13:57 +0200 Date: Fri, 3 May 2002 01:13:57 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]VBR mp3's Hi, I just committed to CVS the MAD code to parse XING headers. VBR's mp3's will now have the correct time displayed! Full speed control is also supported for VBR's. Andy From codedj@echo.ru Fri, 3 May 2002 11:59:22 +0700 Date: Fri, 3 May 2002 11:59:22 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]undefined symbols Hello! After the latest cvs update: ..00 - Awaking the Centuries% alsaplayer * /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init Command line entries /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init -- ... Evgeny ... [Nothing] From andy@alsaplayer.org Fri, 3 May 2002 09:30:01 +0200 Date: Fri, 3 May 2002 09:30:01 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]undefined symbols On Fri, May 03, 2002 at 11:59:22AM +0700, Evgeny Chukreev wrote: > ..00 - Awaking the Centuries% alsaplayer * > /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init > /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init > Command line entries > /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init > /usr/local/lib/alsaplayer/input/libmad_in.so: undefined symbol: xing_init Do you have xing.[c|h] and did you run bootstrap (or just automake) after the checkout? Regards, Andy From greg@ling.lll.hawaii.edu Fri, 03 May 2002 08:31:36 -1000 (HST) Date: Fri, 03 May 2002 08:31:36 -1000 (HST) From: Greg Lee greg@ling.lll.hawaii.edu Subject: [Alsaplayer-devel]undefined symbols On Fri, 3 May 2002, Andy Lo A Foe wrote: ... > Do you have xing.[c|h] and did you run bootstrap (or just automake) > after the checkout? I just updated, recompiled, tested all interfaces and plugins that I have. Everything seems to be in working order. I don't have libmad, libid3tag, libmikmod. Where are they? How about some pointers on debugging? I haven't had any success with gdb. If I start alsaplayer from inside gdb, it starts some threads and returns to me, but then when I ask for info on threads, it just says "no stack". I also tried attaching to a thread after starting alsaplayer, but when there's a signal 11, e.g., gcc says the application "exited normally". (I suppose I attached to the wrong thread, but how are you suppose to know?) Greg Lee From andy@alsaplayer.org Fri, 3 May 2002 20:53:05 +0200 Date: Fri, 3 May 2002 20:53:05 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]undefined symbols On Fri, May 03, 2002 at 08:31:36AM -1000, Greg Lee wrote: > I don't have libmad, libid3tag, libmikmod. Where are they? They should come packaged for your distribution. If not here are some download pointers: MAD - http://www.mars.org/home/rob/proj/mpeg/ Highly recommended! The MAD archive includes both libmad and libid3tag LIBMIKMOD - http://www.mikmod.org/download.html I recently discovered that libmikmod is *not* reentrant i.e. you can't have multiple modules loaded simultaneously. I added some code to prevent crashing. > How about some pointers on debugging? I haven't had any success with > gdb. If I start alsaplayer from inside gdb, it starts some threads > and returns to me, but then when I ask for info on threads, it just > says "no stack". I also tried attaching to a thread after starting > alsaplayer, but when there's a signal 11, e.g., gcc says the > application "exited normally". (I suppose I attached to the wrong configure accepts --enable-debug --> Enable debugging (default=no) This will then compile the main binary and all the plugins with debuggig symbols included. gdb should then be able to give you much more information. After a signal 11, you can do bt (backtrace) on the gdb prompt. This should give you a backtrace of the stack, identifying the location of the crash (which function and even the line number). You can also inspect variables with p (print). So far it has worked very well. Of course there's always debugging printf's (e.g. alsaplayer_error calls). > thread, but how are you suppose to know?) I never needed thread switching inside gdb, so I'm not really familiar with the syntax. Andy From mike@mpsharp.com Sat, 4 May 2002 16:56:27 -0700 (PDT) Date: Sat, 4 May 2002 16:56:27 -0700 (PDT) From: Mike Patnode mike@mpsharp.com Subject: [Alsaplayer-devel]alsaplayer no-gap playback I'm considering replacing the mpg123 and ogg123 players in djb (see http://mpsharp.com ) with alsaplayer. The main reason would be to pick up the fast-forward and rewind capabilities across OGG and MP3 (very cool!). Have you noticed any problems by not having the agressive buffering capabilities of the *123 players? Even with realtime scheduling and low-latency kernel patches I can produce problems under heavy load with mpg123 with a 2 meg buffer. The question I have is about the crossfade capability and whether you've experimented with simple gap elimination? IE: I'm playing a live album or The Wall and I get a microsecond slice of silence between each track which you don't get on the album. I don't want crossfade, I just want to play the songs back-to-back, with no gap. Of course, sometimes I want the gap, so I need to be able to switch it on and off. Any thoughts? Also, has anyone written a listener interface for alsaplayer? IE: You run it as a deamon and send commands and filenames via a socket or pipe? Finally, you need to recalculate the total track time on the fly for VBR encoded files. I'll probably fix that if I switch players. thx mp __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com From andy@alsaplayer.org Sun, 5 May 2002 02:09:40 +0200 Date: Sun, 5 May 2002 02:09:40 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]alsaplayer no-gap playback On Sat, May 04, 2002 at 04:56:27PM -0700, Mike Patnode wrote: > cool!). Have you noticed any problems by not having the agressive > buffering capabilities of the *123 players? Even with realtime > scheduling and low-latency kernel patches I can produce problems under > heavy load with mpg123 with a 2 meg buffer. AlsaPlayer performs very well with small buffers. What kind of hardware are you using? (CPU, storage media) > The question I have is about the crossfade capability and whether > you've experimented with simple gap elimination? IE: I'm playing a > live album or The Wall and I get a microsecond slice of silence between > each track which you don't get on the album. This can be minimized by increasing pollig of the playlist thread. Or perhaps try to come up with an interface that prepares the next song in a new player object and triggers it as soon as the current song ends (or perhas a small number of frames before that). > I don't want crossfade, I > just want to play the songs back-to-back, with no gap. Of course, > sometimes I want the gap, so I need to be able to switch it on and off. > Any thoughts? Experimentation should yield the best solution. > Also, has anyone written a listener interface for alsaplayer? IE: You > run it as a deamon and send commands and filenames via a socket or > pipe? That's very easy. An upcoming release will contain a so called 'daemon interface', which will just sit there and wait for external commands (via the control socket). > Finally, you need to recalculate the total track time on the fly for > VBR encoded files. I'll probably fix that if I switch players. I fixed this yesterday :-) Andy From jlewis@lords.com Sun, 5 May 2002 23:31:31 +1000 Date: Sun, 5 May 2002 23:31:31 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]id3 tags Hi, Is there a way to get id3 tag style information from alsaplayer using the control.h interface (or similar?) thanks, Jason From andy@alsaplayer.org Sun, 5 May 2002 18:22:49 +0200 Date: Sun, 5 May 2002 18:22:49 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]id3 tags On Sun, May 05, 2002 at 11:31:31PM +1000, Jason Lewis wrote: > Is there a way to get id3 tag style information from alsaplayer using the > control.h interface (or similar?) For now you can only get the song name: ap_get_string(session_id, AP_GET_STRING_SONG_NAME, &songname) I could extend this with: AP_GET_STRING_ARTIST AP_GET_STRING_ALBUM AP_GET_STRING_GENRE Let me know if you need more... Andy From codedj@echo.ru Sun, 5 May 2002 23:24:06 +0700 Date: Sun, 5 May 2002 23:24:06 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]id3 tags On Sun, 5 May 2002 23:31:31 +1000, Jason Lewis wrote: JL> Is there a way to get id3 tag style information from alsaplayer using the JL> control.h interface (or similar?) No. I'll (if Andy won't) ty to add it after the next release. 2Andy: What do you think about CorePlayerInterface (like PlaylistInterface) ? This could be useful to control volume/pan/speed changes.... -- ... Evgeny ... [Gargoyles Angels Of Darkness] From jlewis@lords.com Mon, 6 May 2002 10:57:56 +1000 Date: Mon, 6 May 2002 10:57:56 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]id3 tags Hi Andy, That would be great to have those added. Would it be worth having a different interface to determine if the information was gleaned from the file name or from the id3 style tag? ie, AP_GET_STRING_ARTIST_IDTAG or AP_GET_STRING_ARTIST_FILENAME Jason > -----Original Message----- > From: alsaplayer-devel-admin@lists.tartarus.org > [mailto:alsaplayer-devel-admin@lists.tartarus.org]On Behalf Of Andy Lo A > Foe > Sent: Monday, 6 May 2002 2:23 AM > To: Jason Lewis > Cc: alsaplayer > Subject: Re: [Alsaplayer-devel]id3 tags > > > On Sun, May 05, 2002 at 11:31:31PM +1000, Jason Lewis wrote: > > > Is there a way to get id3 tag style information from alsaplayer > using the > > control.h interface (or similar?) > > For now you can only get the song name: > > ap_get_string(session_id, AP_GET_STRING_SONG_NAME, &songname) > > I could extend this with: > > AP_GET_STRING_ARTIST > AP_GET_STRING_ALBUM > AP_GET_STRING_GENRE > > Let me know if you need more... > > Andy > > > _______________________________________________ > alsaplayer-devel mailing list > alsaplayer-devel@lists.tartarus.org > http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel > > From andy@alsaplayer.org Mon, 6 May 2002 03:06:47 +0200 Date: Mon, 6 May 2002 03:06:47 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]id3 tags On Mon, May 06, 2002 at 10:57:56AM +1000, Jason Lewis wrote: > That would be great to have those added. Already added it to the internals, the new commands still need to be implemented though. > Would it be worth having a different interface to determine if the > information was gleaned from the file name or from the id3 style tag? That would make it pretty MP3 centric. We can also mine this info from OGG files for example (which don't have metadata bolted on as an afterthought :-) > AP_GET_STRING_ARTIST_IDTAG Is there any good reason to make this distinction? I guess I need more convincing. Regards, Andy From andy@alsaplayer.org Mon, 6 May 2002 03:10:08 +0200 Date: Mon, 6 May 2002 03:10:08 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]id3 tags On Sun, May 05, 2002 at 11:24:06PM +0700, Evgeny Chukreev wrote: > No. I'll (if Andy won't) ty to add it after the next release. Will probably make it in .61 already... > What do you think about CorePlayerInterface (like PlaylistInterface) ? > This could be useful to control volume/pan/speed changes.... You mean a subscription interface for CorePlayer? Andy From codedj@echo.ru Mon, 6 May 2002 08:08:46 +0700 Date: Mon, 6 May 2002 08:08:46 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]id3 tags On Sun, 5 May 2002 18:22:49 +0200, Andy Lo A Foe wrote: ALAF> I could extend this with: ALAF> AP_GET_STRING_ARTIST ALAF> AP_GET_STRING_ALBUM ALAF> AP_GET_STRING_GENRE ALAF> Let me know if you need more... AP_GET_INT_TRACK_NUMBER AP_GET_INT_YEAR -- ... Evgeny ... [Nothing] From jlewis@lords.com Mon, 6 May 2002 11:08:48 +1000 Date: Mon, 6 May 2002 11:08:48 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]id3 tags Andy, I was thinking the distinction could be useful if someone wants to use alsaplayer as an interface for managing the tag and filename of the files. at the moment it may not be possible, but who knows what will happen in the future? > -----Original Message----- > From: Andy Lo A Foe [mailto:andy@loafoe.net]On Behalf Of Andy Lo A Foe > Sent: Monday, 6 May 2002 11:07 AM > To: Jason Lewis > Cc: alsaplayer > Subject: Re: [Alsaplayer-devel]id3 tags > > > On Mon, May 06, 2002 at 10:57:56AM +1000, Jason Lewis wrote: > > > That would be great to have those added. > > Already added it to the internals, the new commands still need to be > implemented though. > > > Would it be worth having a different interface to determine if the > > information was gleaned from the file name or from the id3 style tag? > > That would make it pretty MP3 centric. We can also mine this info from > OGG files for example (which don't have metadata bolted on as an > afterthought :-) > > > AP_GET_STRING_ARTIST_IDTAG > > Is there any good reason to make this distinction? I guess I need more > convincing. > > Regards, > Andy > > From andy@alsaplayer.org Mon, 6 May 2002 03:18:01 +0200 Date: Mon, 6 May 2002 03:18:01 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]id3 tags On Mon, May 06, 2002 at 11:08:48AM +1000, Jason Lewis wrote: > I was thinking the distinction could be useful if someone wants to use > alsaplayer as an interface for managing the tag and filename of the files. > at the moment it may not be possible, but who knows what will happen in the > future? Ok, we can alway add aliases later on, if the need arises. I have the following new commands defined (no implementation yet): AP_GET_STRING_TITLE (this is will be an for AP_GET_STRING_SONG_NAME) AP_GET_STRING_ARTIST AP_GET_STRING_ALBUM AP_GET_STRING_GENRE AP_GET_INT_TRACK_NUMBER AP_GET_INT_YEAR Anything else? Andy From andy@alsaplayer.org Mon, 6 May 2002 03:20:27 +0200 Date: Mon, 6 May 2002 03:20:27 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]id3 tags On Mon, May 06, 2002 at 08:14:33AM +0700, Evgeny Chukreev wrote: > coreplayer->signal_connect ("volume_changed", cb_volume_changed) Ok, callback for changes :) A good idea yes, I will implement this after the upcoming round of exams :) Thanks, Andy From jlewis@lords.com Mon, 6 May 2002 11:16:55 +1000 Date: Mon, 6 May 2002 11:16:55 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]dealing with errors Hi, I was just wondering, how do you know if alsaplayer succesfully loaded a file and if it is playable (using the control.h)? Jason From andy@alsaplayer.org Mon, 6 May 2002 03:27:41 +0200 Date: Mon, 6 May 2002 03:27:41 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]dealing with errors On Mon, May 06, 2002 at 11:16:55AM +1000, Jason Lewis wrote: > I was just wondering, how do you know if alsaplayer succesfully loaded a > file and if it is playable (using the control.h)? There currently no meaningful return value from AP_SET functions. This needs fixing, I'll look into it. Andy From andy@alsaplayer.org Mon, 6 May 2002 04:56:02 +0200 Date: Mon, 6 May 2002 04:56:02 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]dealing with errors IMPORTANT for libalsaplayer users: I modified the control interface protocol so it always returns a result. The return values of the ap_get and ap_set routines has thus changed: zero (0) - the call failed with an error (communication, or other) nonzero (usually 1) - success, parameter values are correct. The old behaviour was to return -1 on communication errors, 0 for other failures, and 1 for success. ---------------- On Mon, May 06, 2002 at 11:16:55AM +1000, Jason Lewis wrote: > I was just wondering, how do you know if alsaplayer succesfully loaded a > file and if it is playable (using the control.h)? This would require a mechanism to load and play a single file. Currently there is only a call to add file(s) to the playlist. I could add the following command: AP_SET_STRING_CAN_HANDLE Which would return 1 if the file is supported by alsaplayer, and 0 otherwise. And perhaps: AP_SET_STRING_ADD_AND_PLAY Which would return 1 if the file was successfully inserted in the queue and started playing, 0 otherwise. Andy From jlewis@lords.com Mon, 6 May 2002 13:04:12 +1000 Date: Mon, 6 May 2002 13:04:12 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]dealing with errors Hi Andy, That would be great if there was an "add and play" command I am attempting to write an interface for irmp3 for alsaplayer (it currently uses mpg123). fyi, irmp3 currently does its own playlist management, - once i get it working alsaplayer i will attempt to get irmp3 to use alsaplayers playlist managment. To do add and play, currently, i have to do a stop, clear, add and then play. and the "can handle" command would be great too! Thanks, Jason > -----Original Message----- > From: alsaplayer-devel-admin@lists.tartarus.org > [mailto:alsaplayer-devel-admin@lists.tartarus.org]On Behalf Of Andy Lo A > Foe > Sent: Monday, 6 May 2002 12:56 PM > To: Jason Lewis > Cc: Alsaplayer > Subject: Re: [Alsaplayer-devel]dealing with errors > > > IMPORTANT for libalsaplayer users: > > I modified the control interface protocol so it always returns a > result. The return values of the ap_get and ap_set routines has thus > changed: > > zero (0) - the call failed with an error (communication, or other) > > nonzero (usually 1) - success, parameter values are correct. > > The old behaviour was to return -1 on communication errors, 0 for other > failures, and 1 for success. > > ---------------- > On Mon, May 06, 2002 at 11:16:55AM +1000, Jason Lewis wrote: > > > I was just wondering, how do you know if alsaplayer succesfully loaded a > > file and if it is playable (using the control.h)? > > This would require a mechanism to load and play a single file. Currently > there is only a call to add file(s) to the playlist. I could add the > following command: > > AP_SET_STRING_CAN_HANDLE > > Which would return 1 if the file is supported by alsaplayer, and 0 > otherwise. And perhaps: > > AP_SET_STRING_ADD_AND_PLAY > > Which would return 1 if the file was successfully inserted in the queue > and started playing, 0 otherwise. > > Andy > > > _______________________________________________ > alsaplayer-devel mailing list > alsaplayer-devel@lists.tartarus.org > http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel > > From jlewis@lords.com Mon, 6 May 2002 13:13:36 +1000 Date: Mon, 6 May 2002 13:13:36 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]dealing with errors Hi Andy, I just had another thought. What if AP_SET_STRING_ADD returns a number which is the position in the play list it was added to? Jason > -----Original Message----- > From: Andy Lo A Foe [mailto:andy@loafoe.net]On Behalf Of Andy Lo A Foe > Sent: Monday, 6 May 2002 12:56 PM > To: Jason Lewis > Cc: Alsaplayer > Subject: Re: [Alsaplayer-devel]dealing with errors > > > IMPORTANT for libalsaplayer users: > > I modified the control interface protocol so it always returns a > result. The return values of the ap_get and ap_set routines has thus > changed: > > zero (0) - the call failed with an error (communication, or other) > > nonzero (usually 1) - success, parameter values are correct. > > The old behaviour was to return -1 on communication errors, 0 for other > failures, and 1 for success. > > ---------------- > On Mon, May 06, 2002 at 11:16:55AM +1000, Jason Lewis wrote: > > > I was just wondering, how do you know if alsaplayer succesfully loaded a > > file and if it is playable (using the control.h)? > > This would require a mechanism to load and play a single file. Currently > there is only a call to add file(s) to the playlist. I could add the > following command: > > AP_SET_STRING_CAN_HANDLE > > Which would return 1 if the file is supported by alsaplayer, and 0 > otherwise. And perhaps: > > AP_SET_STRING_ADD_AND_PLAY > > Which would return 1 if the file was successfully inserted in the queue > and started playing, 0 otherwise. > > Andy > > From tbeamish@cs.ubc.ca Sun, 5 May 2002 21:29:11 -0700 (PDT) Date: Sun, 5 May 2002 21:29:11 -0700 (PDT) From: Tim Beamish tbeamish@cs.ubc.ca Subject: [Alsaplayer-devel]Altering pitch independent of speed Hi guys, What's the chance of implementing a way to change the tempo and pitch of a song independently? This would help remove the "chipmunk" effect when playing songs fast. Any way I can help out with this? Tim From greg@ling.lll.hawaii.edu Sun, 05 May 2002 18:53:40 -1000 (HST) Date: Sun, 05 May 2002 18:53:40 -1000 (HST) From: Greg Lee greg@ling.lll.hawaii.edu Subject: [Alsaplayer-devel]dealing with errors On Mon, 6 May 2002, Andy Lo A Foe wrote: ... > On Mon, May 06, 2002 at 11:16:55AM +1000, Jason Lewis wrote: > > > I was just wondering, how do you know if alsaplayer succesfully loaded a > > file and if it is playable (using the control.h)? > > This would require a mechanism to load and play a single file. Currently > there is only a call to add file(s) to the playlist. I could add the ... There's a problem with adding a single file to the playlist, as I suppose is obvious. If there are already files there and one is playing, what should happen? I arranged for kmidi that a single file, added from the "file open" menu, dragged and dropped, or requested remotely, is added at the beginning of the playlist, and if there is no file playing, the added file starts playing immediately. If there is a file currently playing, the added file will be next to play, and if the user clicks the "next" button, that will start the newly added file playing. (This is not like what happens using kmidi's playlist editor -- there a selected file is added at the end of the playlist.) Greg Lee From pshirkey@boosthardware.com 6 May 2002 06:55:08 -0000 Date: 6 May 2002 06:55:08 -0000 From: pshirkey@boosthardware.com pshirkey@boosthardware.com Subject: [Alsaplayer-devel]Altering pitch independent of speed On 5/6/2002 - 00:52:50, Tim Beamish said: > Hi guys, > > What's the chance of implementing a way to change the tempo and pitch of a > song independently? This would help remove the "chipmunk" effect when > playing songs fast. Any way I can help out with this? > This is not easy to achieve but there was some discussion about how on the Linux audio users list a couple of months ago. I think Steve Harris had a good answer. > Tim > > > > _______________________________________________ > alsaplayer-devel mailing list > alsaplayer-devel@lists.tartarus.org > http://lists.tartarus.org/mailman/listinfo/alsaplayer- devel > > From dhess@bothan.net Tue, 7 May 2002 02:51:12 -0700 (PDT) Date: Tue, 7 May 2002 02:51:12 -0700 (PDT) From: Drew Hess dhess@bothan.net Subject: [Alsaplayer-devel]problem with jack output driver I think there's something broken in the jack output driver, or in jackd. It could be an alsa configuration problem on my end, but I've tried this with 2 different sound cards and the result is the same. Play this file in alsaplayer with the OSS driver or the alsa driver, and then play it with the jack driver: http://bothan.net/~dhess/undone.mp3 With the OSS or alsa driver, I get the correct stereo mix. The first voice at the beginning of the song should come from the right channel, and the second voice should come from the left. With the jack driver, the mix is incorrect. It's not exactly mono, but the first voice is audible in both channels, and the second isn't audible at all. This problem happens with the wav version of the song, too. Here's my jackd output with the snd-cmipci driver: jackd 0.28.1 creating alsa driver ... default|1024|2|48000|swmon And it complains that I'm using a plug layer. I get the same message with the snd-ice1712 driver (also using the plug layer). I can't get jackd to work with a hw device on either card, so I can't test that config. I'm using jack out of CVS, alsa 0.9.0rc1, and alsaplayer-0.99.60. The same problem occurred with alsa 0.9.0pre12. -dwh- From dhess@bothan.net Tue, 7 May 2002 03:10:44 -0700 (PDT) Date: Tue, 7 May 2002 03:10:44 -0700 (PDT) From: Drew Hess dhess@bothan.net Subject: [Alsaplayer-devel]buffer size Hey Andy, I have a working flac input plugin for alsaplayer (see http://flac.sf.net for info on the flac format). I had to make one hack to the alsaplayer source to get the plugin to work with a minimum of hassle: I changed BUF_SIZE in CorePlayer.h to 20480 bytes. Most (all?) of the flac files I have use a decoded frame size of 18432 bytes (4608 samples per channel * 2 bytes per sample * 2 channels). SampleBuffer::GetBufferSizeBytes returns 0 if the input frame size is greater than BUF_SIZE because (byte_count / frame_size) is always 0 in this case: int SampleBuffer::GetBufferSizeBytes(int frame_size) { if (frame_size < 0) return buffer_size * sample_size; else { int byte_count = buffer_size * sample_size; int frame_mul = frame_size * (byte_count / frame_size); return frame_mul; } } It took me awhile to figure out why alsaplayer wasn't playing my flac files :) If this method returns 0, alsaplayer just sits there and does nothing -- no complaints, won't go to the next song, etc. Anyway, is this a feature or a bug? Should input plugins do their own buffer management in case their frames are larger than BUF_SIZE, or do you want to handle that in alsaplayer? flac files can have frame sizes ranging from 192 to 32ksamples, though the default for CD audio is 4608 samples. According to the spec, it's legal to have multiple frame sizes per file, but the reference encoder always uses one size for a given file. Once this is resolved, I'll send you the flac plugin code. thanks -dwh- From andy@alsaplayer.org Tue, 7 May 2002 12:45:47 +0200 Date: Tue, 7 May 2002 12:45:47 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]problem with jack output driver Hi Drew, On Tue, May 07, 2002 at 02:51:12AM -0700, Drew Hess wrote: > http://bothan.net/~dhess/undone.mp3 > > With the OSS or alsa driver, I get the correct stereo mix. The first > voice at the beginning of the song should come from the right channel, and > the second voice should come from the left. > > With the jack driver, the mix is incorrect. It's not exactly mono, but > the first voice is audible in both channels, and the second isn't audible > at all. this could very well be because of the channel mapping that jack does. What does jack -v tell you about registered ports? AlsaPlayer maps left to alsa_pcm:out_1 and right to alsa_pcm:out_2 There is a mechanism to select the jack ports yourself but I broke it in 0.99.60 :( > creating alsa driver ... default|1024|2|48000|swmon > > And it complains that I'm using a plug layer. Yeah, ideally, you should have a custom hardware device for your soundcard. My .asoundrc looks like this: pcm.trident { type hw card NX } ctl.trident { type hw card 0 } And then I pass -d trident to jack. See http://alsa.opensrc.org/index.php?page=.asoundrc for more details Andy From andy@alsaplayer.org Tue, 7 May 2002 12:59:28 +0200 Date: Tue, 7 May 2002 12:59:28 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]buffer size On Tue, May 07, 2002 at 03:10:44AM -0700, Drew Hess wrote: > I have a working flac input plugin for alsaplayer (see http://flac.sf.net > for info on the flac format). Nice! > I had to make one hack to the alsaplayer source to get the plugin to work > with a minimum of hassle: I changed BUF_SIZE in CorePlayer.h to 20480 > bytes. Most (all?) of the flac files I have use a decoded frame size of > 18432 bytes (4608 samples per channel * 2 bytes per sample * 2 > channels). SampleBuffer::GetBufferSizeBytes returns 0 if the input frame > size is greater than BUF_SIZE because (byte_count / frame_size) is always > 0 in this case: Uh oh, yeah, I should really have it complain if a plugin advertises a frame size bigger than BUF_SIZE. bug... > It took me awhile to figure out why alsaplayer wasn't playing my flac > files :) If this method returns 0, alsaplayer just sits there and does > nothing -- no complaints, won't go to the next song, etc. Yeah, the rest of the core doesn't expect it to be 0. > Anyway, is this a feature or a bug? Should input plugins do their own > buffer management in case their frames are larger than BUF_SIZE, or do you > want to handle that in alsaplayer? Plugins should really do their own buffering. Perhaps split a real FLAC frame in 2 whenever it exceeds BUF_SIZE. You would get double the nr of frames, but since the size and amount of frames are attributes of the plugin it can be dealt with accordingly. Have this extra code in the core will probably make things more complicated. > flac files can have frame sizes > ranging from 192 to 32ksamples, though the default for CD audio is 4608 > samples. Ok. BUF_SIZE of 32k would produce jumpy CPU performance on slower machines (since 32k bytes would have to be decoded at once). The 10k figure that is there now is from doing some heuristics. > According to the spec, it's legal to have multiple frame sizes > per file, but the reference encoder always uses one size for a given file. Then buffering should definitely be done in the plugin since the whole core is dependant on fixed size frames being delivered from input plugins. > Once this is resolved, I'll send you the flac plugin code. If you can do the buffering in the plugin, great! :) Thanks, Andy From andy@alsaplayer.org Tue, 7 May 2002 14:16:28 +0200 Date: Tue, 7 May 2002 14:16:28 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Limitations of socket control API Hi, There is a limitation in the current API. It is not possible to pass on multiple arguments to the ap_set and ap_get routines, since the type is hardcoded in the function interface and also in the command ID. A possible solution is to do it the xmms way, and that is to have a separate function for each remote command: ap_get_volume(session, &int_volume); ap_set_volume(session, int_volume); ap_get_speed(session, &float_speed); ap_set_speed(session, float_speed); ap_playlist_insert(session, position, path); Any other ideas? I want to nail this down now before the API gets more widespread usage, so any input is greatly appreciated. Thanks, Andy From codedj@echo.ru Wed, 8 May 2002 07:18:17 +0700 Date: Wed, 8 May 2002 07:18:17 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Limitations of socket control API On Tue, 7 May 2002 14:16:28 +0200, Andy Lo A Foe wrote: ALAF> A possible solution is to do it the xmms way, and that is to have a ALAF> separate function for each remote command: ALAF> ALAF> ap_get_volume(session, &int_volume); ALAF> ap_set_volume(session, int_volume); ALAF> ALAF> ap_get_speed(session, &float_speed); ALAF> ap_set_speed(session, float_speed); ALAF> ALAF> ap_playlist_insert(session, position, path); I do like this style more than GET/SET constants. ALAF> Any other ideas? I see no good ideas. This will work without changes at the protocol (and API) layer: ap_set_string (session, AP_SET_STRING_PLAYLIST_INSERT, "3\0/tmp/blah.mp3") but it is too complicated to understand ;) -- ... Evgeny ... [AlsaPlayer: Nothing] From jlewis@lords.com Wed, 8 May 2002 11:45:34 +1000 Date: Wed, 8 May 2002 11:45:34 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]some questions and suggestions I have some suggestions for alsa player that come from my experience working with irmp3 it would be nice if alsaplayer could remember the position it is in in a playlist and in a song when it is shutdown and reloaded also, it would be good if alsaplayer had a way of loading and saving playlists and also, if you could remember the position you were in in a particular playlist, so you could switch play lists and come back to the first play list and carry on where you left off. Just some suggestions to provoke discussion. Jason From jlewis@lords.com Thu, 9 May 2002 20:45:18 +1000 (EST) Date: Thu, 9 May 2002 20:45:18 +1000 (EST) From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]feature requests Hi Andy I have some feature requests that I think would make alsaplayer more usable programaticaly. Would it be possible to have a function like AP_GET_INT_TITLE_LENGTH that returns the length of the song title string, so you can malloc the correct amount of space before getting the song title? And similar functions for all the other ap_get_string functions. or maybe make the ap_get_string's return value the length of the string it returned? What about an AP_GET_STRING_VERSION that returns the version of alsaplayer? another suggestion. I noticed all the commands are an enum, that means every time you add a new command it shifts the number of old commands that follow the new command? does that make the interface not binary compatible with older versions of alsaplayer? if so, would it be worth allocationg groups of types of commands, and allocating a set of numbers for each group. so if in the future you wanted to add a new command to a group, it wouldn't upset all the following commands? what about an AP_GET_STRING_COMMENT command? also, what about a callback function for when you reach the end of a song? and also a callback function for when you start playing a new song? Anyway, I would like to hear your comments on my suggestions. thanks, Jason From jlewis@lords.com Thu, 9 May 2002 20:48:38 +1000 (EST) Date: Thu, 9 May 2002 20:48:38 +1000 (EST) From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]problem compiling alsaplayer from CVS Hi, when i try and compile alsaplayer from CVS, i get this error. jason@car:~/cvs/alsaplayer$ ./bootstrap running aclocal ... aclocal: configure.ac: 62: macro `AM_PATH_GLIB' not found in library failed! jason@car:~/cvs/alsaplayer$ Any idea how to fix that? Thanks, Jason From codedj@echo.ru Thu, 9 May 2002 06:35:11 +0700 Date: Thu, 9 May 2002 06:35:11 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]feature requests On Thu, 9 May 2002 20:45:18 +1000 (EST), Jason Lewis wrote: JL> Would it be possible to have a function like AP_GET_INT_TITLE_LENGTH that JL> returns the length of the song title string, so you can malloc the correct JL> amount of space before getting the song title? And similar functions for JL> all the other ap_get_string functions. or maybe make the ap_get_string's JL> return value the length of the string it returned? Hm. I hope new ap_get_title will do return malloced string. JL> also, what about a callback function for when you reach the end of a song? JL> and also a callback function for when you start playing a new song? What if you will make interface plugin instead of separate program which controls AlsaPlayer through libalsaplayer? -- ... Evgeny ... [AlsaPlayer: Nothing] From codedj@echo.ru Thu, 9 May 2002 06:43:26 +0700 Date: Thu, 9 May 2002 06:43:26 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]problem compiling alsaplayer from CVS On Thu, 9 May 2002 20:48:38 +1000 (EST), Jason Lewis wrote: JL> jason@car:~/cvs/alsaplayer$ ./bootstrap JL> running aclocal ... JL> aclocal: configure.ac: 62: macro `AM_PATH_GLIB' not found in library JL> failed! JL> jason@car:~/cvs/alsaplayer$ JL> Any idea how to fix that? make sure that you have glib.m4 r!dpkg -S glib.m4 libglib1.2-dev: /usr/share/aclocal/glib.m4 (man aclocal) -- ... Evgeny ... [AlsaPlayer: Nothing] From jlewis@lords.com Thu, 9 May 2002 11:35:47 +1000 Date: Thu, 9 May 2002 11:35:47 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]feature requests Ah, I was unaware that there was such an interface. I will look at it tonight. Thanks, Jason > -----Original Message----- > From: alsaplayer-devel-admin@lists.tartarus.org > [mailto:alsaplayer-devel-admin@lists.tartarus.org]On Behalf Of Evgeny > Chukreev > Sent: Thursday, 9 May 2002 9:35 AM > To: alsaplayer-devel@lists.tartarus.org > Subject: Re: [Alsaplayer-devel]feature requests > > > On Thu, 9 May 2002 20:45:18 +1000 (EST), Jason Lewis > wrote: > > JL> also, what about a callback function for when you reach the > end of a song? > JL> and also a callback function for when you start playing a new song? > What if you will make interface plugin instead of separate > program which controls > AlsaPlayer through libalsaplayer? > > -- > ... Evgeny ... [AlsaPlayer: Nothing] > > > _______________________________________________ > alsaplayer-devel mailing list > alsaplayer-devel@lists.tartarus.org > http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel > > From andy@alsaplayer.org Thu, 9 May 2002 11:02:55 +0200 Date: Thu, 9 May 2002 11:02:55 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]some questions and suggestions On Wed, May 08, 2002 at 11:45:34AM +1000, Jason Lewis wrote: > it would be nice if alsaplayer could remember the position it is in in a > playlist and in a song when it is shutdown and reloaded This can be done by storing the position info somewhere in the playlist. I'll put it on the TODO. > also, it would be good if alsaplayer had a way of loading and saving > playlists You mean via the socket control interface? Loading/Saving is only possible from the playlist window right now. Andy From andy@alsaplayer.org Thu, 9 May 2002 11:08:36 +0200 Date: Thu, 9 May 2002 11:08:36 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]feature requests On Thu, May 09, 2002 at 08:45:18PM +1000, Jason Lewis wrote: > Would it be possible to have a function like AP_GET_INT_TITLE_LENGTH that > returns the length of the song title string, so you can malloc the correct > amount of space before getting the song title? The redesign of the control API will take care of this. Yes, it looks like we'll have to redesign the API. It was a nice first try, but it has some limitations :-) > What about an AP_GET_STRING_VERSION that returns the version of > alsaplayer? There is a special ap_version() function for this. > another suggestion. I noticed all the commands are an enum, that means > every time you add a new command it shifts the number of old commands that > follow the new command? does that make the interface not binary compatible > with older versions of alsaplayer? if so, would it be worth allocationg > groups of types of commands, and allocating a set of numbers for each > group. so if in the future you wanted to add a new command to a group, it > wouldn't upset all the following commands? Yep, I'm thinking of assigning unique ID's to each command, instead of using an ever changing enum. A 32-bit value should suffice. > what about an AP_GET_STRING_COMMENT command? The ID3 comment field? > also, what about a callback function for when you reach the end of a song? > > and also a callback function for when you start playing a new song? This is currently handled in interface plugins, where you get full control over the player. Your code will be dynamically loaded at startup. Evgeny suggested "interface callbacks", not unlike the playlist callbacks interface. It is a very interesting idea. Andy From andy@alsaplayer.org Thu, 9 May 2002 11:33:58 +0200 Date: Thu, 9 May 2002 11:33:58 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Limitations of socket control API On Wed, May 08, 2002 at 07:18:17AM +0700, Evgeny Chukreev wrote: > I do like this style more than GET/SET constants. Ok, I'm thinking about a BMessage (BeOS) like solution, where you build a message, that can consist of multiple keys/types, and then send it off. > This will work without changes at the protocol (and API) layer: > ap_set_string (session, AP_SET_STRING_PLAYLIST_INSERT, "3\0/tmp/blah.mp3") > but it is too complicated to understand ;) Yeah, I think we can still break the API and any binary compatibility. Better now, than later, when there are tons of apps depending upon it! *grin* Andy From codedj@echo.ru Thu, 9 May 2002 21:36:24 +0700 Date: Thu, 9 May 2002 21:36:24 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Limitations of socket control API On Thu, 9 May 2002 11:33:58 +0200, Andy Lo A Foe wrote: ALAF> > I do like this style more than GET/SET constants. ALAF> Ok, I'm thinking about a BMessage (BeOS) like solution, where you build ALAF> a message, that can consist of multiple keys/types, and then send it ALAF> off. I'm thinking that the best way is to create top layer API for end user. This layer should provide functions to hide protocol layer that can be changeable. I mean that user shouldn't see way that libalsaplayer communicates with player. So libalsaplayer user won't care about what BMessage is! ;) ALAF> Yeah, I think we can still break the API and any binary compatibility. I think so. ALAF> Better now, than later, when there are tons of apps depending upon it! ALAF> *grin* ;) -- ... Evgeny ... [AlsaPlayer: Finntroll - Midnattens Widunder] From andy@alsaplayer.org Sat, 11 May 2002 05:28:25 +0200 Date: Sat, 11 May 2002 05:28:25 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]New libalsaplayer API --LZvS9be/3tNcYl/X Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, This evening I rewrote libalsaplayer from scratch. The internal API is now hopefully flexible enough to support all sorts of commands and replies. The internals are now hidden from the end-programmer, making coding much simpler. Binary compatibility has become feasible since command ID's are fixed (instead of enums). Gone are the ap_do and ap_set/ap_get functions. Now every command has its own unique function call. This removes many (all?) limitation imposed by the old function, where you could basically only pass a single argument and expect only a single result. Every function that returns a value allocates the storage space internally. This takes away the need for the programmer to allocate space beforehand (problematic since you never know how large a string will be for example). On the other hand, the programmer is now responsible for free()'ing results (not a biggy). I am including a modified speed.c that shows the basics of the new API. Please test and comment. If there are no grave oversights this will probably be carved in stone pretty soon. The latest code is in CVS. Make sure you run bootstrap, make clean, and configure again, some files were moved/erased. (cvs update -dP is best) Apologies to anyone who used the old libalsaplayer API, but this one is IMHO lightyears ahead :-) Enjoy! Andy --LZvS9be/3tNcYl/X Content-Type: text/x-csrc; charset=us-ascii Content-Disposition: attachment; filename="speed.c" #include #include #include #include #include int main (int argc, char *argv[]) { int i; char *artist = NULL; char *title = NULL; float speed = 0.0; float *qspeed = NULL; int session_id = 0; artist = ap_get_artist(session_id); title = ap_get_title(session_id); if (artist && title) { printf("File playing: %s - %s\n", artist, title); } if (artist) free(artist); if (title) free(title); if (argc == 2) { if (sscanf (argv[1], "%f", &speed) == 1) { if (speed == 0.0) { printf ("Pausing player\n"); ap_pause(session_id); } else { printf ("Setting speed to %.2f\n", speed); ap_set_speed(session_id, speed); } } } qspeed = ap_get_speed(session_id); if (qspeed) { printf ("Current speed = %.2f\n", *qspeed); free(qspeed); } return 0; } --LZvS9be/3tNcYl/X-- From andy@alsaplayer.org Sat, 11 May 2002 05:45:29 +0200 Date: Sat, 11 May 2002 05:45:29 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Limitations of socket control API On Thu, May 09, 2002 at 09:36:24PM +0700, Evgeny Chukreev wrote: > I'm thinking that the best way is to create top layer API for end user. Done. > This layer should provide functions to hide protocol layer that can be > changeable. I mean that user shouldn't see way that libalsaplayer communicates > with player. So libalsaplayer user won't care about what BMessage is! ;) Done :) Internally communication goes via an ap_message. A remote command typically creates a new ap_message, adds some keys to it (float, int32 or string), and sends it off to the alsaplayer session. It then waits for a reply and makes available any results. There is no limits on how many arguments/results you can attach to an ap_message. Of course larger messages will take longer to travel through the FIFO. Andy From andy@alsaplayer.org Sat, 11 May 2002 05:49:55 +0200 Date: Sat, 11 May 2002 05:49:55 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]dealing with errors On Sun, May 05, 2002 at 06:53:40PM -1000, Greg Lee wrote: > There's a problem with adding a single file to the playlist, as I > suppose is obvious. If there are already files there and one is > playing, what should happen? Yep, this is a real dilemma. >I arranged for kmidi that a single file, > added from the "file open" menu, dragged and dropped, or requested > remotely, is added at the beginning of the playlist, and if there is > no file playing, the added file starts playing immediately. If there > is a file currently playing, the added file will be next to play, and > if the user clicks the "next" button, that will start the newly added > file playing. (This is not like what happens using kmidi's playlist > editor -- there a selected file is added at the end of the playlist.) The new API allows us to be flexible about adding files to arbitrary positions in the playlist. We will have to think about the capabilities of the command. ap_add_and_play(session, file); ap_single_shot_play(session, file); ap_add_as_next(session, file); ??? Andy From mike@mpsharp.com Sat, 11 May 2002 15:54:59 -0700 (PDT) Date: Sat, 11 May 2002 15:54:59 -0700 (PDT) From: Mike Patnode mike@mpsharp.com Subject: [Alsaplayer-devel]Re New libalsaplayer API: malloc is evil > This takes away the need for the programmer to allocate space > beforehand (problematic since you never know how large a string > will be for example). > On the other hand, the programmer is now responsible for free()'ing > results (not a biggy). Actually, this is a horrible practice for memory management issues. That's why no Unix API's ever do this. Think about scanf, read, etc. A couple reasons why: 1. I'm now stuck using the memory management interface you chose in the library. For instance I may want to use g_malloc/g_free routines from GLib to debug memory issues or something all together different. 2. For long running programs (software that runs for hours or days at a time), memory fragmentation can become a major issue. The fact that you allocated different size objects everytime hurts performance more than it helps. You don't have any leaks, but overtime your application continues to grow. There are various pooling technics to avoid this, but the easiest one is to use the stack for short term objects. 3. Performance. alloca() is extremely fast (one instruction). A call into a multithread malloc library requires locking and may potentially result in a brk system call, which can lead to swaping, a context switch etc... Having a 1K buffer on the stack for the life of a function call is essentially free. Finally, if you really MUST allocate something long lived in library code, provide a interface to destroy it. Do not count on your user knowing to use the same interface you did. For instance: gtk_create_widget/gtk_destroy_widget I implore you to continue to provide an interface where the buffer is passed in along with the size of the buffer (see snscanf for an example). This is just a better long term programming interface. IE: #define NAME_LEN 80 char artist[NAME_LEN]; char title[NAME_LEN]; ap_get_artist(&artist, NAME_LEN, session_id); ap_get_title(&title, NAME_LEN, session_id); if (strlen(artist) && strlen(title)) { printf("File playing: %s - %s\n", artist, title); } The ap_get_* commands should always null terminate the string, even if it's 0 length (passing in 0 for the length of the string should be an error). You could have the functions return true/false as appropriate: if (ap_get_artist(&artist, NAME_LEN, session_id) && ap_get_title(&title, NAME_LEN, session_id)) { printf("File playing: %s - %s\n", artist, title); } The other mechanism is to have the library create some sort of SongInfo object, that is created and destroyed with the current audio file being opened and close. Then all your "get" routines are just accessors into that object. I assume some sort of "ap_open" operation must take place before I can call "ap_get"? Other than that, the library sounds really cool. Note: The above critical review was directed toward code (unfeeling bits on disk) and not a person. I've run into a number of net programmers who don't take critical feedback well. mp __________________________________________________ Do You Yahoo!? LAUNCH - Your Yahoo! Music Experience http://launch.yahoo.com From codedj@echo.ru Sun, 12 May 2002 08:40:58 +0700 Date: Sun, 12 May 2002 08:40:58 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Re New libalsaplayer API: malloc is evil On Sat, 11 May 2002 15:54:59 -0700 (PDT), Mike Patnode wrote: MP> > This takes away the need for the programmer to allocate space MP> > beforehand (problematic since you never know how large a string MP> > will be for example). MP> > On the other hand, the programmer is now responsible for free()'ing MP> > results (not a biggy). MP> Actually, this is a horrible practice for memory management issues. MP> That's why no Unix API's ever do this. Think about scanf, read, etc. MP> A couple reasons why: If so.. constants like these can be useful: MAX_TITLE_STRING_LENGTH MAX_ALBUM_STRING_LENGTH MAX_GENRE_STRING_LENGTH MAX_ARTIST_STRING_LENGTH MAX_SESSION_NAME_STRING_LENGTH etc Also... I don't see how to control errors in these functions: float *ap_get_speed(int session); char *ap_get_session_name(int session); char *ap_get_title(int session); char *ap_get_artist(int session); char *ap_get_album(int session); char *ap_get_genre(int session); I suppose this style looks better: int ap_get_speed (int session, &speed); int ap_get_session_name (int session, char **buf, size_t len); int ap_get_title (int session, char **buf, size_t len); int ap_get_artist (int session, char **buf, size_t len); int ap_get_album (int session, char **buf, size_t len); int ap_get_genre (int session, char **buf, size_t len); PS I don't sure with right names spelling. -- ... Evgeny ... [AlsaPlayer: ] From andy@alsaplayer.org Sun, 12 May 2002 13:18:52 +0200 Date: Sun, 12 May 2002 13:18:52 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Re New libalsaplayer API: malloc is evil On Sat, May 11, 2002 at 03:54:59PM -0700, Mike Patnode wrote: > 1. I'm now stuck using the memory management interface you chose in the > library. For instance I may want to use g_malloc/g_free routines from > GLib to debug memory issues or something all together different. efence :) > 3. Performance. alloca() is extremely fast (one instruction). A call > into a multithread malloc library requires locking and may potentially > result in a brk system call, which can lead to swaping, a context > switch etc... Having a 1K buffer on the stack for the life of a > function call is essentially free. The calling functions could use alloca(), if we set a max size of strings. I am for it. BTW, the code will still retain lots of malloc()/free() calls for small sizes since we do communications over a FIFO and you only know the amount of data from reading the initial header. This data must be stored somewhere after the read, in an ap_message. Does a buffer pool for each ap_message prevent memory fragmentation? And is it still an issue with current Linux kernels? (I know that DMA'able kernel memory is subject to fragmentation) > IE: > #define NAME_LEN 80 > char artist[NAME_LEN]; > char title[NAME_LEN]; > > ap_get_artist(&artist, NAME_LEN, session_id); > ap_get_title(&title, NAME_LEN, session_id); > > if (strlen(artist) && strlen(title)) { > printf("File playing: %s - %s\n", artist, title); > } Ok, I propose the following prototypes: int ap_get_string(int session_id, char *str, int MAX_LEN); or perhaps: int ap_get_string(int session_id, char *str); (MAX_LEN will be dependant on the string sort i.e. MAX_TITLE_LEN for ap_get_title()) int ap_get_float(int session_id, float *val); int ap_get_int32(int session_id, int32_t *val); Return values are true/false (1/0). Comments? > The other mechanism is to have the library create some sort of SongInfo > object, that is created and destroyed with the current audio file being > opened and close. Then all your "get" routines are just accessors into > that object. I assume some sort of "ap_open" operation must take place > before I can call "ap_get"? I don't like this. > Note: The above critical review was directed toward code (unfeeling > bits on disk) and not a person. I've run into a number of net > programmers who don't take critical feedback well. :-) Thanks for the insightful comments, I would invite everyone to comment on the above proposal. Regards, Andy From andy@alsaplayer.org Sun, 12 May 2002 13:21:52 +0200 Date: Sun, 12 May 2002 13:21:52 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Re New libalsaplayer API: malloc is evil On Sun, May 12, 2002 at 08:40:58AM +0700, Evgeny Chukreev wrote: > MAX_TITLE_STRING_LENGTH > MAX_ALBUM_STRING_LENGTH > MAX_GENRE_STRING_LENGTH > MAX_ARTIST_STRING_LENGTH > MAX_SESSION_NAME_STRING_LENGTH > etc BTW, how do we pass lists? It would be very nice to adopt glib but I'm still resistant of adding that dependancy. OTOH we rely on STL already :) > Also... I don't see how to control errors in these functions: > float *ap_get_speed(int session); > char *ap_get_session_name(int session); > char *ap_get_title(int session); > char *ap_get_artist(int session); > char *ap_get_album(int session); > char *ap_get_genre(int session); The pointer should be checked for NULL (i.e. the call failed), before using it. A non-NULL pointer implies malloc'd() space, so free() should be called. But that is about to change.... (see my earlier message) > int ap_get_session_name (int session, char **buf, size_t len); > int ap_get_title (int session, char **buf, size_t len); > int ap_get_artist (int session, char **buf, size_t len); > int ap_get_album (int session, char **buf, size_t len); > int ap_get_genre (int session, char **buf, size_t len); Why the double pointers? Regards, Andy From mike@mpsharp.com Sun, 12 May 2002 10:08:14 -0700 (PDT) Date: Sun, 12 May 2002 10:08:14 -0700 (PDT) From: Mike Patnode mike@mpsharp.com Subject: [Alsaplayer-devel]Re New libalsaplayer API: malloc is evil > The calling functions could use alloca(), if we set a max size of > strings. I am for it. BTW, the code will still retain lots of > malloc()/free() calls for small sizes since we do communications over > a > FIFO and you only know the amount of data from reading the initial > header. This data must be stored somewhere after the read, in an > ap_message. Does a buffer pool for each ap_message prevent memory > fragmentation? And is it still an issue with current Linux kernels? > (I know that DMA'able kernel memory is subject to fragmentation) What you really want is a tunable malloc which allows you to specify buffer pools for small items, uses mmap or shm for large ones and creates separate heaps for each thread. The good news is that the glibc malloc has some of these features. The bad news is that most Linux distributions disable them (according to the Michigan study below). If any internal mallocs < .5M can be replaced with alloca, I would highly encourage it. I don't know how big the FIFO data can get, but if the max size is less than 5k, it might pay to pre-allocate 10-20 of them at the max size, and just reuse them. That said, I wouldn't spend too much time writing your own memory management, at least without some data that says it's an issue. This paper talks about tuning malloc due to the exact issues I mention: http://www.linuxshowcase.org/full_papers/ezolt/ezolt.pdf Here's another paper about multithreading issues. Their conclusion is that the glibc malloc is pretty good for multithreaded apps, as long as the optimizations are enabled in glibc. http://www.citi.umich.edu/techreports/reports/citi-tr-00-5.pdf I'm going to pull the latest source and look at the code tonight (or I may go see SpiderMan :-). mp __________________________________________________ Do You Yahoo!? LAUNCH - Your Yahoo! Music Experience http://launch.yahoo.com From jlewis@lords.com Tue, 14 May 2002 22:34:09 +1000 (EST) Date: Tue, 14 May 2002 22:34:09 +1000 (EST) From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]questions about new interface Hi Andy, Could you answer a few questions about the new interface for me please? What does the ap_add_path function do? is that how you add a sond to the play list? How do you now tell alsaplayer to quit? there was a command for that in the last interface wasn't there? when i try and do an ap_stop, i get this error: ./irmp3: relocation error: ./irmp3: undefined symbol: ap_stop what does the ap_ping function do? Thanks, Jason From andy@alsaplayer.org Mon, 13 May 2002 14:54:26 +0200 Date: Mon, 13 May 2002 14:54:26 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]questions about new interface On Tue, May 14, 2002 at 10:34:09PM +1000, Jason Lewis wrote: > Could you answer a few questions about the new interface for me please? I just committed some changes so you might want to update since my comments will be based on the latest code. > What does the ap_add_path function do? is that how you add a sond to the > play list? Yes: int ap_add_path(int session, char *path); returns 1 if the call succeeded, 0 otherwise. path is a file or directory name. It will be appended to the playlist. I will commit an implementation for ap_insert_path(int, int pos, char *) later today. This will allow one to insert the file at a specific location in the playlist. If you need other functionality, now is the time :) > How do you now tell alsaplayer to quit? there was a command for that in > the last interface wasn't there? Oh looks like I forgot to readd the ap_quit() definition.. The implementation is very crude. I basically just call exit(0) from within alsaplayer. Sending a HUP signal will be cleaner I guess. > when i try and do an ap_stop, i get this error: > ./irmp3: relocation error: ./irmp3: undefined symbol: ap_stop The call is there. See control.h: int ap_stop(int session); > what does the ap_ping function do? It just returns true (1) if the session is alive and well. You can use it to find active sessions: for (int c=0; c < 10; c++) { printf("Session %d is %s\n", c, ap_ping(c) ? "alive" : "not answering"); } ...will print the status of the first 10 sessions (0-9) Andy From andy@alsaplayer.org Mon, 13 May 2002 15:40:20 +0200 Date: Mon, 13 May 2002 15:40:20 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS commits Hi, The new, hopefully final, changes to the libalsaplayer interface are in CVS. I've settled on the following conventions: - No data allocation by any of the functions. If something needs to be stored a pointer is taken and filled. For strings the maximum length to expect is encoded in an AP_*_MAX define e.g. AP_TITLE_MAX, AP_ARTIST_MAX, AP_SESSION_MAX, etc.. - Most functions return 1 (true) if the they succeed in carrying out their job, 0 otherwise. There are a few exceptions, notably ap_find_session() which returns -1 if the session is not found. Exceptions will be marked clearly. The list of currently available functions follows. The list can be expanded quite easily BTW, just let us know what is needed, or even better, send patches :-) ---------------- cut here -------------------------- #define AP_SESSION_MAX 256 #define AP_TITLE_MAX 256 #define AP_ARTIST_MAX 256 #define AP_ALBUM_MAX 256 #define AP_GENRE_MAX 256 int ap_find_session(char *session_name); int ap_session_running(int session); int ap_version(); int ap_play(int session); int ap_stop(int session); int ap_pause(int session); int ap_unpause(int session); int ap_next(int session); int ap_prev(int session); int ap_ping(int session); int ap_quit(int session); int ap_clear_playlist(int session); int ap_add_path(int session, char *path); int ap_set_speed(int session, float speed); int ap_get_speed(int session, float *val); int ap_get_session_name(int session, char *str); int ap_get_title(int session, char *str); int ap_get_artist(int session, char *str); int ap_get_album(int session, char *str); int ap_get_genre(int session, char *str); ----------------------- end ----------------------------------- Enjoy! Andy From mike@mpsharp.com Tue, 14 May 2002 00:22:24 -0700 (PDT) Date: Tue, 14 May 2002 00:22:24 -0700 (PDT) From: Mike Patnode mike@mpsharp.com Subject: [Alsaplayer-devel]Latest CVS commits > From: Andy Lo A Foe > To: alsaplayer-devel@lists.tartarus.org > Subject: [Alsaplayer-devel]Latest CVS commits > > Hi, > > The new, hopefully final, changes to the libalsaplayer interface are > in > CVS. I've settled on the following conventions: Wow! It looks great. Did you consider providing an interface to get the current song position: int ap_get_position(int session, int *seconds); This would allow a UI to know the current position after a FF or REW. Of course, if you do this, you need a matching: int ap_set_position(int session, int seconds); (Can you tell, I basically want to develop a UI without writing a plugin :-) One more comment. Why ap_unpause() rather than just use ap_play()? What is the behavior of the following: ap_play(s); ap_pause(s); ap_play(s); Does the second ap_play() restart the current song from the beginning? mp __________________________________________________ Do You Yahoo!? LAUNCH - Your Yahoo! Music Experience http://launch.yahoo.com From codedj@echo.ru Tue, 14 May 2002 22:49:43 +0700 Date: Tue, 14 May 2002 22:49:43 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Re New libalsaplayer API: malloc is evil On Sun, 12 May 2002 13:21:52 +0200, Andy Lo A Foe wrote: ALAF> On Sun, May 12, 2002 at 08:40:58AM +0700, Evgeny Chukreev wrote: ALAF> ALAF> > MAX_TITLE_STRING_LENGTH ALAF> > MAX_ALBUM_STRING_LENGTH ALAF> > MAX_GENRE_STRING_LENGTH ALAF> > MAX_ARTIST_STRING_LENGTH ALAF> > MAX_SESSION_NAME_STRING_LENGTH ALAF> > etc ALAF> BTW, how do we pass lists? It would be very nice to adopt glib but I'm ALAF> still resistant of adding that dependancy. It would be better to keep alsaplayer's core lightweight (without unnecessary dependences). What do you think about smth like this? int ap_add_paths (int session, char **paths); How to use: char **paths = { "0.mp3", "1.mp3", NULL } ap_add_paths (0, paths); Why so? Becouse I don't see situation when programmer couldn't create list of pointers. So.. may be I am in error (?). ALAF> OTOH ? -- ... Evgeny ... [AlsaPlayer: freeform - cautious persuit] From andy@alsaplayer.org Tue, 14 May 2002 18:10:25 +0200 Date: Tue, 14 May 2002 18:10:25 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Re New libalsaplayer API: malloc is evil On Tue, May 14, 2002 at 10:49:43PM +0700, Evgeny Chukreev wrote: > It would be better to keep alsaplayer's core lightweight (without > unnecessary dependences). > What do you think about smth like this? > int ap_add_paths (int session, char **paths); > > How to use: > char **paths = { > "0.mp3", > "1.mp3", > NULL > } I thought about this further, it would be very easy to pass multiple strings in a message: ap_add_paths(int session, char **paths) { .... char *p = *paths; int c = 0; while (p) { char num[10]; sprintf(num, "%d", c++); ap_message_add_string(msg, num, p + c); } .... } I will have to add some optimization to ap_message's but there is no need for other list functions. > ALAF> OTOH > ? On The Other Hand :) Going to commit some more code in a minute, just succeeded in turning JACK "plugin" into a *real* plugin :) I will prepare for 0.99.70 shortly, so if you have any patches you like to see in the next release, send them in. Yes, I think we made enough progress to jump .10 points! :-) Regards, Andy From codedj@echo.ru Tue, 14 May 2002 23:32:39 +0700 Date: Tue, 14 May 2002 23:32:39 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Latest CVS commits On Mon, 13 May 2002 15:40:20 +0200, Andy Lo A Foe wrote: ALAF> - Most functions return 1 (true) if the they succeed in carrying out ALAF> their job, 0 otherwise. There are a few exceptions, notably ALAF> ap_find_session() which returns -1 if the session is not found. ALAF> Exceptions will be marked clearly. How about this? int ap_find_session (int *session); -- ... Evgeny ... [AlsaPlayer: - freeform - freeform aviation.mp3] From andy@alsaplayer.org Tue, 14 May 2002 18:50:11 +0200 Date: Tue, 14 May 2002 18:50:11 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS commits On Tue, May 14, 2002 at 11:32:39PM +0700, Evgeny Chukreev wrote: > How about this? > int ap_find_session (int *session); Indeed, problem solved, I'll change this in a minute... Thanks :) Andy From andy@alsaplayer.org Wed, 15 May 2002 01:24:48 +0200 Date: Wed, 15 May 2002 01:24:48 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]NEW plugin and more libalsaplayer functions Hi all, I just added the FLAC input plugin by Drew Hess (thanks Drew!). FLAC is a lossless audio compression format, unlike lossy mp3. See http://flac.sf.net for details on FLAC. Also, more libalsaplayer functions: /* GET/SET position information in seconds */ int ap_set_position(int session, int pos); int ap_get_position(int session, int *val); int ap_get_length(int session, int *length); /* GET/SET position information in frames */ int ap_set_frame(int session, int frame); int ap_get_frame(int session, int *val); int ap_get_frames(int session, int *val); Enjoy! Andy From andy@alsaplayer.org Wed, 15 May 2002 01:41:10 +0200 Date: Wed, 15 May 2002 01:41:10 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS commits On Tue, May 14, 2002 at 12:22:24AM -0700, Mike Patnode wrote: > Wow! It looks great. Did you consider providing an interface to get > the current song position: > > int ap_get_position(int session, int *seconds); > > This would allow a UI to know the current position after a FF or REW. > Of course, if you do this, you need a matching: > > int ap_set_position(int session, int seconds); Yeah, ControlSocket already had implementations of those, the libalsaplayer functions were just missing, they're in CVS now. > (Can you tell, I basically want to develop a UI without writing a > plugin :-) Hehe, sure :-) ..I will probably write a "deamon interface plugin" soon, i.e. this interface will do nothing but wait for external commands. > One more comment. Why ap_unpause() rather than just use ap_play()? > What is the behavior of the following: > > ap_play(s); > ap_pause(s); > ap_play(s); The song will still be paused after this. ap_play starts playing only if the song is stopped. ap_pause() sets the speed to 0.0 ap_unpause() sets the speed to 1.0 > Does the second ap_play() restart the current song from the beginning? Nope, should it? Regards, Andy From mike@mpsharp.com Wed, 15 May 2002 10:01:57 -0700 (PDT) Date: Wed, 15 May 2002 10:01:57 -0700 (PDT) From: Mike Patnode mike@mpsharp.com Subject: [Alsaplayer-devel]Latest CVS commits > ap_play starts playing only if the song is stopped. > > ap_pause() sets the speed to 0.0 > > ap_unpause() sets the speed to 1.0 That's not unreasonable. > > Does the second ap_play() restart the current song from the > beginning? > > Nope, should it? Naw. I think of things from the remote control point of view. If I hit the pause button, I expect the play button to continue as well as the pause button. If I stop a song, and then press play, I expect it to restart. In any case, I can certainly implement that behavior with the current interface. But if I can squeeze in one more request.... How about a mechanism to set a relative position: int ap_set_rel_position(int session, int offset); Which would be equivalent to ap_get_position(session, &val); ap_set_position(session, val+offset); But without the round-trip between the apps. This would allow for a silent rewind & ff. mp __________________________________________________ Do You Yahoo!? LAUNCH - Your Yahoo! Music Experience http://launch.yahoo.com From andy@alsaplayer.org Wed, 15 May 2002 19:16:54 +0200 Date: Wed, 15 May 2002 19:16:54 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS commits On Wed, May 15, 2002 at 10:01:57AM -0700, Mike Patnode wrote: > Naw. I think of things from the remote control point of view. If I > hit the pause button, I expect the play button to continue as well as > the pause button. If I stop a song, and then press play, I expect it > to restart. In any case, I can certainly implement that behavior with > the current interface. Ok, I'll add that functionality to ap_play(). If the speed is 0.0 it will set it to 1.0, just like ap_unpause()... > How about a mechanism to set a relative position: > > int ap_set_rel_position(int session, int offset); > > Which would be equivalent to > > ap_get_position(session, &val); > ap_set_position(session, val+offset); > > But without the round-trip between the apps. This would allow for a > silent rewind & ff. Ok... easy enough :-) Andy From jlewis@lords.com Fri, 17 May 2002 08:24:50 +1000 (EST) Date: Fri, 17 May 2002 08:24:50 +1000 (EST) From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]cvs compile problem Hi, I just tried to compile the latest from cvs, and I get this error when i do a bootstrap: running libtoolize --automake ... running automake --add-missing ... output/Makefile.am:1: required directory output/jack does not exist input/Makefile.am:1: required directory input/flac does not exist failed! Any idea how to fix that? Thanks, Jason From andy@alsaplayer.org Thu, 16 May 2002 00:36:27 +0200 Date: Thu, 16 May 2002 00:36:27 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]cvs compile problem On Fri, May 17, 2002 at 08:24:50AM +1000, Jason Lewis wrote: > I just tried to compile the latest from cvs, and I get this error when i > do a bootstrap: > > running libtoolize --automake ... > running automake --add-missing ... > output/Makefile.am:1: required directory output/jack does not exist > input/Makefile.am:1: required directory input/flac does not exist > failed! Did you do an "update -dP" in the alsaplayer directory before running bootstrap? These directories were recently added to the repository. If the update fails to pull in these directories you might want to try a fresh checkout. Andy From andy@alsaplayer.org Thu, 16 May 2002 02:52:27 +0200 Date: Thu, 16 May 2002 02:52:27 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS commits On Wed, May 15, 2002 at 10:01:57AM -0700, Mike Patnode wrote: > int ap_set_rel_position(int session, int offset); int ap_set_position_relative(int session, int offset) does what you want. A negative offset will jump back. offset is in seconds. Very nice for jumping 10 seconds ahead, etc :) Andy From dawson3k@myrealbox.com Thu, 16 May 2002 10:40:48 +0300 Date: Thu, 16 May 2002 10:40:48 +0300 From: ismail donmez dawson3k@myrealbox.com Subject: [Alsaplayer-devel]Latest CVS compile error I freshly checked out from CVS and when I do ./bootstrap I get : configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' configure.ac:275: invalid unused variable name: `MAD_LDADD' configure.ac:274: invalid unused variable name: `FLAC_LDADD' aclocal.m4:786: invalid unused variable name: `LIBMIKMOD_LDADD' failed! Any idea on whats going on? -- From andy@alsaplayer.org Thu, 16 May 2002 11:06:52 +0200 Date: Thu, 16 May 2002 11:06:52 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS compile error On Thu, May 16, 2002 at 10:40:48AM +0300, ismail donmez wrote: > I freshly checked out from CVS and when I do ./bootstrap I get : > > configure.ac:275: invalid unused variable name: `MAD_LDADD' > configure.ac:274: invalid unused variable name: `FLAC_LDADD' Which version of automake are you using? http://sources.redhat.com/ml/automake/2001-08/msg00046.html Looks like recent versions of automake have done away with this "feature". Andy From richard@tartarus.org 16 May 2002 10:36:54 +0100 Date: 16 May 2002 10:36:54 +0100 From: Richard Boulton richard@tartarus.org Subject: [Alsaplayer-devel]Latest CVS compile error On Thu, 2002-05-16 at 10:06, Andy Lo A Foe wrote: > On Thu, May 16, 2002 at 10:40:48AM +0300, ismail donmez wrote: > > I freshly checked out from CVS and when I do ./bootstrap I get : > > > > configure.ac:275: invalid unused variable name: `MAD_LDADD' > > configure.ac:274: invalid unused variable name: `FLAC_LDADD' > > Which version of automake are you using? This was a bug in automake 1.6. It is fixed in version 1.6.1, and in automake CVS. Let us know if upgrading to 1.6.1 (or downgrading to 1.5) doesn't fix your problem. -- Richard From jlewis@lords.com Sat, 18 May 2002 00:07:37 +1000 (EST) Date: Sat, 18 May 2002 00:07:37 +1000 (EST) From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]run time error Hi, When i try and execute a command in my program, i get this error ./irmp3: relocation error: ./irmp3: undefined symbol: ap_clear_playlist any idea what that means and how can I fix it? the call looks like this: ap_stop(myap_id); and myap_id == 0 at that time. Thanks, Jason From andy@alsaplayer.org Thu, 16 May 2002 16:19:40 +0200 Date: Thu, 16 May 2002 16:19:40 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]run time error On Sat, May 18, 2002 at 12:07:37AM +1000, Jason Lewis wrote: > When i try and execute a command in my program, i get this error > > ./irmp3: relocation error: ./irmp3: undefined symbol: ap_clear_playlist This should be in libalsaplayer.so Does recompiling your application help? > the call looks like this: > > ap_stop(myap_id); > > and myap_id == 0 at that time. ap_stop(id) and ap_clear_playlist(id) should both work... Both these functions returns true (1) if they succeed, 0 otherwise. Also make sure you link your applications against libalsaplayer. The following command should give the right linker parameters: pkg-config alsaplayer --libs Regards, Andy From yeeking@no-future.com 17 May 2002 18:26:22 +0000 Date: 17 May 2002 18:26:22 +0000 From: matt yee-king yeeking@no-future.com Subject: [Alsaplayer-devel]error trying to run alsaplayer on ppc Hello after months of waiting, i've got cvs version of alsa up and running on my mac tibook 400... i'm trying to test it with alsaplayer and i get this error: [root@bennyhill alsaplayer-0.99.70]# alsaplayer alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. AlsaPlayer interrupted by signal 6 [root@bennyhill Audio]# alsaplayer Mixdown.WAV alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. AlsaPlayer interrupted by signal 6 any ideas how to get it to work? alsaplayer version 0.99.70 kernel benh 2.4.19pre8 cheers matthew -- ::::::::::::::::::::::::::: Matthew Yee-King yeeking@no-future.com http://www.yeeking.net/ ::::::::::::::::::::::::::: From jlewis@lords.com Sun, 19 May 2002 06:44:43 +1000 (EST) Date: Sun, 19 May 2002 06:44:43 +1000 (EST) From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]ap_play Hi, I noticed when I call the ap_play command, it starts playing the song I hand to it, but it returns 0. is that the desired functionality? Jason From jlewis@lords.com Sun, 19 May 2002 07:39:16 +1000 (EST) Date: Sun, 19 May 2002 07:39:16 +1000 (EST) From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]a few questions I have a few questions about alsaplayer I am using the control.h interface, how can I find out if the song that was playing has been changed? Also, i start alsaplayer up from within my program, how can i monitor the starting of alsaplayer to find out if it really started and is running properly and is ready to accept control commands? Also, how can I work out that we have reached the end of a song? Thanks, Jason From andy@alsaplayer.org Sat, 18 May 2002 09:09:40 +0200 Date: Sat, 18 May 2002 09:09:40 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]ap_play On Sun, May 19, 2002 at 06:44:43AM +1000, Jason Lewis wrote: > I noticed when I call the ap_play command, it starts playing the song I > hand to it, but it returns 0. > > is that the desired functionality? Nope, I think I found the problem, fixing... It will be in CVS in a couple of hours.. Andy From andy@alsaplayer.org Sat, 18 May 2002 09:27:00 +0200 Date: Sat, 18 May 2002 09:27:00 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]a few questions On Sun, May 19, 2002 at 07:39:16AM +1000, Jason Lewis wrote: > I am using the control.h interface, how can I find out if the song that > was playing has been changed? By polling the interface. There is currently no mechanism to notify external programs about a change. Perhaps we can think of a solution with (system wide) semaphores or some sort of select() construct. But the only method currently available is by polling (you can poll the title and check if the value changed). > Also, i start alsaplayer up from within my program, how can i monitor the > starting of alsaplayer to find out if it really started and is running > properly and is ready to accept control commands? You can ap_ping() the session until you get a proper reply (i.e. ap_ping(session_id) returns 1). It might be difficult to predict the session id so there is another mechanism to identify your alsaplayer process: Start alsaplayer with option -s "my_string_id" Now you can keep trying ap_find_session("my_string_id", &session_id) until this functions returns 1. This means the alsaplayer with session name "my_string_id" is ready to answer your queries. > Also, how can I work out that we have reached the end of a song? Same answer as "how to detect song changes", by polling. Andy From codedj@echo.ru Sat, 18 May 2002 16:06:58 +0700 Date: Sat, 18 May 2002 16:06:58 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]a few questions On Sat, 18 May 2002 09:27:00 +0200, Andy Lo A Foe wrote: ALAF> > I am using the control.h interface, how can I find out if the song that ALAF> > was playing has been changed? ALAF> By polling the interface. There is currently no mechanism to notify ALAF> external programs about a change. Perhaps we can think of a solution ALAF> with (system wide) semaphores or some sort of select() construct. But ALAF> the only method currently available is by polling (you can poll the ALAF> title and check if the value changed). Also there is one more solution. We can implement: int ap_song_changed_at (int session, time_t *stamp); which return internal CorePlayer value which represents time when song was changed. -- ... Evgeny ... [AlsaPlayer: Nightwish - Wishmaster] From andy@alsaplayer.org Sat, 18 May 2002 11:27:14 +0200 Date: Sat, 18 May 2002 11:27:14 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]ap_play On Sat, May 18, 2002 at 09:09:40AM +0200, Andy Lo A Foe wrote: > On Sun, May 19, 2002 at 06:44:43AM +1000, Jason Lewis wrote: > > > I noticed when I call the ap_play command, it starts playing the song I > > hand to it, but it returns 0. > > > > is that the desired functionality? > > Nope, I think I found the problem, fixing... > > It will be in CVS in a couple of hours.. It is there now. ap_play() does the following: - unpauses the song if the song was previously paused - starts the current song if it's not already playing - restarts the current song if it's already playing Andy From andy@alsaplayer.org Sat, 18 May 2002 11:57:43 +0200 Date: Sat, 18 May 2002 11:57:43 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]error trying to run alsaplayer on ppc On Fri, May 17, 2002 at 06:26:22PM +0000, matt yee-king wrote: > [root@bennyhill alsaplayer-0.99.70]# alsaplayer > alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. > AlsaPlayer interrupted by signal 6 I've installed the latest CVS, but can't reproduce this. It might be a powermac specific driver problem? Since I don't call this function directly from within the alsa output plugin I have no way of knowing when this gets called, and why it fails :( Perhaps Takashi can tell us more about it?! Regards, Andy From yeeking@no-future.com 18 May 2002 12:20:28 +0000 Date: 18 May 2002 12:20:28 +0000 From: matt yee-king yeeking@no-future.com Subject: [Alsaplayer-devel]alsaplayer on ppc hello i'm trying to get alsaplayer working on ppc. it built ok but when i try and play anything i get the output: $ alsaplayer alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. AlsaPlayer interrupted by signal 6 can anyone suggest whats wrong? cheers matthew ::::::::::::::::::::::::::: Matthew Yee-King yeeking@no-future.com http://www.yeeking.net/ ::::::::::::::::::::::::::: From dhess@bothan.net Sat, 18 May 2002 12:29:22 -0700 (PDT) Date: Sat, 18 May 2002 12:29:22 -0700 (PDT) From: Drew Hess dhess@bothan.net Subject: [Alsaplayer-devel]problem with jack output driver On Tue, 7 May 2002, Andy Lo A Foe wrote: > Hi Drew, > > On Tue, May 07, 2002 at 02:51:12AM -0700, Drew Hess wrote: > > > http://bothan.net/~dhess/undone.mp3 > > > > With the OSS or alsa driver, I get the correct stereo mix. The first > > voice at the beginning of the song should come from the right channel, and > > the second voice should come from the left. > > > > With the jack driver, the mix is incorrect. It's not exactly mono, but > > the first voice is audible in both channels, and the second isn't audible > > at all. > > this could very well be because of the channel mapping that jack does. > What does jack -v tell you about registered ports? > AlsaPlayer maps left to alsa_pcm:out_1 and right to alsa_pcm:out_2 > There is a mechanism to select the jack ports yourself but I broke it in > 0.99.60 :( I'm still having this problem with CVS alsaplayer and CVS jack. Here's what I get from jackd -v: % jackd -v -d alsa -d ice1712spdif -rate 44100 jackd 0.32.0 Copyright 2001-2002 Paul Davis and others. jackd comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details 22961 waiting for signals creating alsa driver ... ice1712spdif|1024|2|44100|swmon You appear to be using the ALSA software "plug" layer, probably a result of using the "default" ALSA device. This is less efficient than it could be. Consider using a ~/.asoundrc file to define a hardware audio device rather than using the plug layer You appear to be using the ALSA software "plug" layer, probably a result of using the "default" ALSA device. This is less efficient than it could be. Consider using a ~/.asoundrc file to define a hardware audio device rather than using the plug layer new client: alsa_pcm, id = 1 type 1 @ 0x80645d0 fd = 12 port alsa_pcm:in_1 buf shm key 0x60bca103 at offset 4096 bi = 0x80639a0 registered port alsa_pcm:in_1, offset = 4096 port alsa_pcm:in_2 buf shm key 0x60bca103 at offset 8192 bi = 0x80639b0 registered port alsa_pcm:in_2, offset = 8192 registered port alsa_pcm:out_1, offset = 0 registered port alsa_pcm:out_2, offset = 0 > > > creating alsa driver ... default|1024|2|48000|swmon > > > > And it complains that I'm using a plug layer. > > Yeah, ideally, you should have a custom hardware device for your > soundcard. My .asoundrc looks like this: > > pcm.trident { > type hw > card NX > } > ctl.trident { > type hw > card 0 > } Unfortunately, with my Midiman Audiophile card, it seems like the only way to get SPDIF output is through a plug layer :< -dwh- From dhess@bothan.net Sat, 18 May 2002 12:41:40 -0700 (PDT) Date: Sat, 18 May 2002 12:41:40 -0700 (PDT) From: Drew Hess dhess@bothan.net Subject: [Alsaplayer-devel]problem with jack output driver Sorry, you probably wanted this info, too (when starting up alsaplayer): new client: alsaplayer-23030, id = 2 type 2 @ 0x4001f000 fd = 14 port alsaplayer-23030:out_1 buf shm key 0x295059f8 at offset 12288 bi = 0x8063598 registered port alsaplayer-23030:out_1, offset = 12288 port alsaplayer-23030:out_2 buf shm key 0x295059f8 at offset 16384 bi = 0x80635a8 registered port alsaplayer-23030:out_2, offset = 16384 -- jack_rechain_graph(): client alsa_pcm: inprocess client, execution_order=0. client alsaplayer-23030: start_fd=7, execution_order=0. client alsaplayer-23030: wait_fd=13, execution_order=1 (last client). connect alsaplayer-23030:out_1 and alsa_pcm:out_1 -- jack_rechain_graph(): client alsaplayer-23030: start_fd=7, execution_order=0. client alsaplayer-23030: wait_fd=13, execution_order=1. client alsa_pcm: inprocess client, execution_order=2. connect alsaplayer-23030:out_2 and alsa_pcm:out_2 -- jack_rechain_graph(): client alsaplayer-23030: start_fd=7, execution_order=0. client alsaplayer-23030: wait_fd=13, execution_order=1. client alsa_pcm: inprocess client, execution_order=2. On Sat, 18 May 2002, Drew Hess wrote: > > On Tue, 7 May 2002, Andy Lo A Foe wrote: > > > Hi Drew, > > > > On Tue, May 07, 2002 at 02:51:12AM -0700, Drew Hess wrote: > > > > > http://bothan.net/~dhess/undone.mp3 > > > > > > With the OSS or alsa driver, I get the correct stereo mix. The first > > > voice at the beginning of the song should come from the right channel, and > > > the second voice should come from the left. > > > > > > With the jack driver, the mix is incorrect. It's not exactly mono, but > > > the first voice is audible in both channels, and the second isn't audible > > > at all. > > > > this could very well be because of the channel mapping that jack does. > > What does jack -v tell you about registered ports? > > AlsaPlayer maps left to alsa_pcm:out_1 and right to alsa_pcm:out_2 > > There is a mechanism to select the jack ports yourself but I broke it in > > 0.99.60 :( > > > I'm still having this problem with CVS alsaplayer and CVS jack. > > Here's what I get from jackd -v: > > % jackd -v -d alsa -d ice1712spdif -rate 44100 > jackd 0.32.0 > Copyright 2001-2002 Paul Davis and others. > jackd comes with ABSOLUTELY NO WARRANTY > This is free software, and you are welcome to redistribute it > under certain conditions; see the file COPYING for details > > 22961 waiting for signals > creating alsa driver ... ice1712spdif|1024|2|44100|swmon > You appear to be using the ALSA software "plug" layer, probably > a result of using the "default" ALSA device. This is less > efficient than it could be. Consider using a ~/.asoundrc file > to define a hardware audio device rather than using the plug layer > > You appear to be using the ALSA software "plug" layer, probably > a result of using the "default" ALSA device. This is less > efficient than it could be. Consider using a ~/.asoundrc file > to define a hardware audio device rather than using the plug layer > > new client: alsa_pcm, id = 1 type 1 @ 0x80645d0 fd = 12 > port alsa_pcm:in_1 buf shm key 0x60bca103 at offset 4096 bi = 0x80639a0 > registered port alsa_pcm:in_1, offset = 4096 > port alsa_pcm:in_2 buf shm key 0x60bca103 at offset 8192 bi = 0x80639b0 > registered port alsa_pcm:in_2, offset = 8192 > registered port alsa_pcm:out_1, offset = 0 > registered port alsa_pcm:out_2, offset = 0 > > > > > > > creating alsa driver ... default|1024|2|48000|swmon > > > > > > And it complains that I'm using a plug layer. > > > > Yeah, ideally, you should have a custom hardware device for your > > soundcard. My .asoundrc looks like this: > > > > pcm.trident { > > type hw > > card NX > > } > > ctl.trident { > > type hw > > card 0 > > } > > > Unfortunately, with my Midiman Audiophile card, it seems like the only way > to get SPDIF output is through a plug layer :< > > > -dwh- > > > From mike@mpsharp.com Sun, 19 May 2002 15:44:50 -0700 (PDT) Date: Sun, 19 May 2002 15:44:50 -0700 (PDT) From: Mike Patnode mike@mpsharp.com Subject: [Alsaplayer-devel]ap_set_transition() API? >int ap_set_position_relative(int session, int offset) >does what you want. A negative offset will jump back. offset is in >seconds. Very nice for jumping 10 seconds ahead, etc :) Extremely cool! Of course, this leads me to ask for just one more thing.. (really, and then I'll stop... never again... at least for the next week or two... ;) I plan to take a close look at implementing the gapless transition effect from one song to the next in DJB. In my user interface, I'm going to allow the user to mark and save transition types on albums and individual songs (DJB uses a MySQL database for all the song and album info). Hence when DJB sees two songs in a row with gapless transition type, it can tell alsaplayer to do so. Thinking about this, there are three basic transition types that seem interesting to me, but I'm sure there are plenty more which could be added. Hence, I suggest the following API: // Transition types (use enum if you prefer..) #define AP_TRANS_SILENCE 0 // Default 0.5 seconds> #define AP_TRANS_XFADE 1 #define AP_TRANS_GAPLESS 2 // or AP_TRANS_SILENCE, 0? int ap_set_transition(int *session, int trans_type, int msec); Hence for a full second of silence between tracks, you would use: ap_set_transition(s, AP_TRANS_SILENCE, 1000); For a 5 second cross-fade: ap_set_transition(s, AP_TRANS_XFADE, 5000); Finally, for gapless you could just use ap_set_transition(s, AP_TRANS_SILENCE, 0); which I think I like better than requiring a new transition type. The question is does this take effect for only the next song transition, or does it change the default? My vote would be change the default, but I could live with it either way. BTW: "Test and submit the change yourself" is perfectly legitimate response. mp __________________________________________________ Do You Yahoo!? LAUNCH - Your Yahoo! Music Experience http://launch.yahoo.com From tiwai@suse.de Tue, 21 May 2002 12:40:08 +0200 Date: Tue, 21 May 2002 12:40:08 +0200 From: Takashi Iwai tiwai@suse.de Subject: [Alsa-devel] Re: [Alsaplayer-devel]error trying to run alsaplayer on ppc At Sat, 18 May 2002 11:57:43 +0200, Andy Lo A Foe wrote: > > On Fri, May 17, 2002 at 06:26:22PM +0000, matt yee-king wrote: > > > [root@bennyhill alsaplayer-0.99.70]# alsaplayer > > alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. > > AlsaPlayer interrupted by signal 6 > > I've installed the latest CVS, but can't reproduce this. It might be a > powermac specific driver problem? Since I don't call this function > directly from within the alsa output plugin I have no way of knowing > when this gets called, and why it fails :( Perhaps Takashi can tell us > more about it?! hmm.. i also have no idea from where it's called. anyway i'll trace this problem. Takashi From tiwai@suse.de Wed, 22 May 2002 14:21:37 +0200 Date: Wed, 22 May 2002 14:21:37 +0200 From: Takashi Iwai tiwai@suse.de Subject: [Alsa-devel] Re: [Alsaplayer-devel]error trying to run alsaplayer on ppc --Multipart_Wed_May_22_14:21:37_2002-1 Content-Type: text/plain; charset=ISO-2022-JP At Tue, 21 May 2002 12:40:08 +0200, $B;d(B wrote: > > At Sat, 18 May 2002 11:57:43 +0200, > Andy Lo A Foe wrote: > > > > On Fri, May 17, 2002 at 06:26:22PM +0000, matt yee-king wrote: > > > > > [root@bennyhill alsaplayer-0.99.70]# alsaplayer > > > alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. > > > AlsaPlayer interrupted by signal 6 > > > > I've installed the latest CVS, but can't reproduce this. It might be a > > powermac specific driver problem? Since I don't call this function > > directly from within the alsa output plugin I have no way of knowing > > when this gets called, and why it fails :( Perhaps Takashi can tell us > > more about it?! > > hmm.. i also have no idea from where it's called. > anyway i'll trace this problem. i've installed alsaplayer 0.99.70 with mad, but couldn't reproduce this behavior on mine, pmac with screamer chip. playback of mp3 works fine. what happens if you remove the config file of alsaplayer? strace would be also helpful in such a case. btw, 0.99.70 will fail to compile with gcc 3.1. the attached patch will fix the problem. Takashi --Multipart_Wed_May_22_14:21:37_2002-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="gcc3-fix.dif" Content-Transfer-Encoding: 7bit --- interface/gtk/PlaylistWindow.cpp-dist 2002-05-21 17:35:33.000000000 +0200 +++ interface/gtk/PlaylistWindow.cpp 2002-05-21 17:35:51.000000000 +0200 @@ -27,6 +27,8 @@ #include #include +using std::string; + #include "Playlist.h" #include "PlaylistWindow.h" #include "support.h" --Multipart_Wed_May_22_14:21:37_2002-1-- From tvignaud@mandrakesoft.com Wed, 22 May 2002 14:34:59 -0400 Date: Wed, 22 May 2002 14:34:59 -0400 From: Thierry Vignaud tvignaud@mandrakesoft.com Subject: [Alsa-devel] Re: [Alsaplayer-devel]error trying to run alsaplayer on ppc Takashi Iwai writes: > btw, 0.99.70 will fail to compile with gcc 3.1. > the attached patch will fix the problem. i already send a better patch that got merged in cvs. -- "il a ete brule au 28e degre" (the naheulbeuk witch) "c curieux, gcc fonctionne" (gwenole) From yeeking@no-future.com 22 May 2002 13:50:11 +0000 Date: 22 May 2002 13:50:11 +0000 From: matt yee-king yeeking@no-future.com Subject: [Alsa-devel] Re: [Alsaplayer-devel]error trying to run alsaplayer on ppc Configuration: Install path: /usr/local Use libmad shared library: yes Enable libid3tag support: yes Build GTK interface: yes Build OpenGL based visual plugins: no Build alsa 0.5.x output plugin: no Build alsa 0.9.x output plugin: yes Build jack output plugin: no Build oss output plugin: yes Build esound output plugin: yes Build sparc output plugin: no Build sgi output plugin: no Build nas output plugin: no Build vorbis input plugin: yes Build mikmod input plugin: yes Build audiofile input plugin: no Build flac input plugin: no [matthew@bennyhill Audio]$ gcc --version 2.95.4 [matthew@bennyhill Audio]$ \rm -r ~/.alsaplayer/ [matthew@bennyhill Audio]$ alsaplayer auntyplexer.mp3=20 alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. AlsaPlayer interrupted by signal 6 # lsmod ?? Module Size Used by Not tainted snd-powermac 31360 0=20 snd-pcm 62928 0 [snd-powermac] snd-timer 12944 0 [snd-pcm] snd 32972 0 [snd-powermac snd-pcm snd-timer] soundcore 4488 0 [snd] how do i do an strace? - matthew On Wed, 2002-05-22 at 12:21, Takashi Iwai wrote: > At Tue, 21 May 2002 12:40:08 +0200, > =E7=A7=81 wrote: > >=20 > > At Sat, 18 May 2002 11:57:43 +0200, > > Andy Lo A Foe wrote: > > >=20 > > > On Fri, May 17, 2002 at 06:26:22PM +0000, matt yee-king wrote: > > >=20 > > > > [root@bennyhill alsaplayer-0.99.70]# alsaplayer > > > > alsaplayer: pcm.c:5655: snd_pcm_unlink_ptr: Assertion `0' failed. > > > > AlsaPlayer interrupted by signal 6 > > >=20 > > > I've installed the latest CVS, but can't reproduce this. It might be a > > > powermac specific driver problem? Since I don't call this function > > > directly from within the alsa output plugin I have no way of knowing > > > when this gets called, and why it fails :( Perhaps Takashi can tell us > > > more about it?! > >=20 > > hmm.. i also have no idea from where it's called. > > anyway i'll trace this problem. >=20 > i've installed alsaplayer 0.99.70 with mad, but couldn't reproduce > this behavior on mine, pmac with screamer chip. > playback of mp3 works fine. >=20 > what happens if you remove the config file of alsaplayer? > strace would be also helpful in such a case. >=20 > btw, 0.99.70 will fail to compile with gcc 3.1. > the attached patch will fix the problem. >=20 >=20 > Takashi From andy@alsaplayer.org Wed, 22 May 2002 15:01:22 +0200 Date: Wed, 22 May 2002 15:01:22 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsa-devel] Re: [Alsaplayer-devel]error trying to run alsaplayer on ppc On Wed, May 22, 2002 at 01:50:11PM +0000, matt yee-king wrote: > how do i do an strace? # strace alsaplayer Running as root will probably show up some more details under strace. BTW, strace generates lots of output so pasting the last 100 lines or so are will probably do... Andy From yeeking@no-future.com 22 May 2002 14:05:39 +0000 Date: 22 May 2002 14:05:39 +0000 From: matt yee-king yeeking@no-future.com Subject: [Alsaplayer-devel]strace from alsaplayer on ppc --=-9ytbmNB21fUQgkmyoJNH Content-Type: text/plain Content-Transfer-Encoding: 7bit i've attached the strace output as a text file. i figured it didn't make much difference if i removed the first 150 lines or not.... cheers matthew ________________ On Wed, May 22, 2002 at 01:50:11PM +0000, matt yee-king wrote: > how do i do an strace? # strace alsaplayer Running as root will probably show up some more details under strace. BTW, strace generates lots of output so pasting the last 100 lines or so are will probably do... Andy --=-9ytbmNB21fUQgkmyoJNH Content-Disposition: attachment; filename=alsaplayer.txt Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=alsaplayer.txt; charset=ISO-8859-1 [root@bennyhill /]# strace alsaplayer execve("/usr/local/bin/alsaplayer", ["alsaplayer"], [/* 27 vars */]) =3D 0 uname({sys=3D"Linux", node=3D"bennyhill.belmont", ...}) =3D 0 brk(0) =3D 0x101e1168 open("/etc/ld.so.preload", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("./libpthread.so.0", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("/local2/lib/libpthread.so.0", O_RDONLY) =3D -1 ENOENT (No such file o= r directory) stat64(0x7fffed80, 0x7fffeda8) =3D 0 open("/etc/ld.so.cache", O_RDONLY) =3D 3 fstat64(0x3, 0x7fffef08) =3D 0 mmap(NULL, 32798, PROT_READ, MAP_PRIVATE, 3, 0) =3D 0x30014000 close(3) =3D 0 open("/lib/libpthread.so.0", O_RDONLY) =3D 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0B("..., 1024) = =3D 1024 fstat64(0x3, 0x7fffef10) =3D 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = =3D 0x3001d000 mmap(0xffca000, 154504, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0xffca0= 00 mprotect(0xffd9000, 93064, PROT_NONE) =3D 0 mmap(0xffda000, 90112, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXE= D, 3, 0) =3D 0xffda000 close(3) =3D 0 open("./libdl.so.2", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("/local2/lib/libdl.so.2", O_RDONLY) =3D -1 ENOENT (No such file or dir= ectory) open("/lib/libdl.so.2", O_RDONLY) =3D 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0 \224"..., 102= 4) =3D 1024 fstat64(0x3, 0x7fffeef0) =3D 0 mmap(0xffa7000, 75356, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0xffa700= 0 mprotect(0xffaa000, 63068, PROT_NONE) =3D 0 mmap(0xffb7000, 12288, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXE= D, 3, 0) =3D 0xffb7000 close(3) =3D 0 open("./libstdc++-libc6.2-2.so.3", O_RDONLY) =3D -1 ENOENT (No such file or= directory) open("/local2/lib/libstdc++-libc6.2-2.so.3", O_RDONLY) =3D -1 ENOENT (No su= ch file or directory) open("/usr/lib/libstdc++-libc6.2-2.so.3", O_RDONLY) =3D 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\2M\330"..., 102= 4) =3D 1024 fstat64(0x3, 0x7fffeed0) =3D 0 mmap(0xff30000, 419144, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 3, 0) = =3D 0xff30000 mprotect(0xff78000, 124232, PROT_NONE) =3D 0 mmap(0xff80000, 81920, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXE= D, 3, 0x40000) =3D 0xff80000 mmap(0xff94000, 9544, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED= |MAP_ANONYMOUS, -1, 0) =3D 0xff94000 close(3) =3D 0 open("./libm.so.6", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("/local2/lib/libm.so.6", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("/lib/libm.so.6", O_RDONLY) =3D 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\232"..., 1024= ) =3D 1024 fstat64(0x3, 0x7fffeeb0) =3D 0 mmap(0xfe99000, 551132, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0xfe990= 00 mprotect(0xfed4000, 309468, PROT_NONE) =3D 0 mmap(0xfed9000, 290816, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIX= ED, 3, 0x30000) =3D 0xfed9000 close(3) =3D 0 open("./libc.so.6", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("/local2/lib/libc.so.6", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("/lib/libc.so.6", O_RDONLY) =3D 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\2Q\344"..., 102= 4) =3D 1024 fstat64(0x3, 0x7fffee90) =3D 0 mmap(0xfd43000, 1335292, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0xfd43= 000 mprotect(0xfe57000, 204796, PROT_NONE) =3D 0 mmap(0xfe63000, 135168, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIX= ED, 3, 0x110000) =3D 0xfe63000 mmap(0xfe84000, 20476, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXE= D|MAP_ANONYMOUS, -1, 0) =3D 0xfe84000 close(3) =3D 0 munmap(0x30014000, 32798) =3D 0 SYS_190(0x3, 0x7ffffa48, 0x7ffffc3c, 0x7ffffc3c, 0x10005538, 0x30025b18, 0x= ffd2460, 0x3000c350, 0x7ffffa00, 0x42000004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, = 0, 0x1, 0x1, 0x7ffffc34, 0x3, 0xfe88870, 0x7ffffa48, 0xfe81908, 0, 0xfe2321= 8, 0xf932, 0x3) =3D 0 setrlimit(RLIMIT_STACK, {rlim_cur=3D2044*1024, rlim_max=3DRLIM_INFINITY}) = =3D 0 getpid() =3D 22302 rt_sigaction(SIGRT_0, {0xffd2f40, [], 0}, NULL, 8) =3D 0 rt_sigaction(SIGRT_1, {0xffd2ffc, [], 0}, NULL, 8) =3D 0 rt_sigaction(SIGRT_2, {0xffd3148, [], 0}, NULL, 8) =3D 0 rt_sigprocmask(SIG_BLOCK, [32], NULL, 8) =3D 0 _sysctl(0x7ffff7f8, 0, 0, 0x7ffffa58, 0) =3D 0 rt_sigaction(SIGTERM, {0xffd37a4, [TERM], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGHUP, {0xffd37a4, [HUP], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGINT, {0xffd37a4, [INT], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGQUIT, {0xffd37a4, [QUIT], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGBUS, {0xffd37a4, [BUS], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGSEGV, {0xffd37a4, [SEGV], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGILL, {0xffd37a4, [ILL], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGFPE, {0xffd37a4, [FPE], SA_RESTART}, {SIG_DFL}, 8) =3D 0 rt_sigaction(SIGABRT, {0xffd37a4, [ABRT], SA_RESTART}, {SIG_DFL}, 8) =3D 0 mkdir("/root/.alsaplayer/", 0700) =3D -1 EEXIST (File exists) brk(0) =3D 0x101e1168 brk(0x101e1198) =3D 0x101e1198 brk(0x101e2000) =3D 0x101e2000 open("/root/.alsaplayer/config", O_RDONLY) =3D 3 fstat64(0x3, 0x7fffe3f8) =3D 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = =3D 0x30014000 read(3, "", 4096) =3D 0 close(3) =3D 0 munmap(0x30014000, 4096) =3D 0 getpid() =3D 22302 stat("/usr/local/lib/alsaplayer/output/libalsa_out.so", {st_mode=3DS_IFREG|= 0755, st_size=3D56650, ...}) =3D 0 open("/usr/local/lib/alsaplayer/output/libalsa_out.so", O_RDONLY) =3D 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\17"..., 1024)= =3D 1024 fstat64(0x3, 0x7fffdc10) =3D 0 mmap(0xfd20000, 73872, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0xfd2000= 0 mprotect(0xfd22000, 65680, PROT_NONE) =3D 0 mmap(0xfd30000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED= , 3, 0) =3D 0xfd30000 mmap(0xfd32000, 144, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|= MAP_ANONYMOUS, -1, 0) =3D 0xfd32000 close(3) =3D 0 open("./libasound.so.2", O_RDONLY) =3D -1 ENOENT (No such file or dire= ctory) open("/local2/lib/libasound.so.2", O_RDONLY) =3D -1 ENOENT (No such file or= directory) open("/etc/ld.so.cache", O_RDONLY) =3D 3 fstat64(0x3, 0x7fffd970) =3D 0 mmap(NULL, 32798, PROT_READ, MAP_PRIVATE, 3, 0) =3D 0x30014000 close(3) =3D 0 open("/usr/lib/libasound.so.2", O_RDONLY) =3D 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\2\245"..., 1024= ) =3D 1024 fstat64(0x3, 0x7fffd978) =3D 0 mmap(0xfc5c000, 735784, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0xfc5c0= 00 mprotect(0xfce4000, 178728, PROT_NONE) =3D 0 mmap(0xfcec000, 143360, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIX= ED, 3, 0x80000) =3D 0xfcec000 mmap(0xfd0f000, 2600, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED= |MAP_ANONYMOUS, -1, 0) =3D 0xfd0f000 close(3) =3D 0 brk(0x101e3000) =3D 0x101e3000 munmap(0x30014000, 32798) =3D 0 stat("/usr/share/alsa/alsa.conf", {st_mode=3DS_IFREG|0644, st_size=3D7034, = ...}) =3D 0 open("/usr/share/alsa/alsa.conf", O_RDONLY) =3D 3 fstat64(0x3, 0x7fffe258) =3D 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = =3D 0x30014000 read(3, "#\n# ALSA library configuration "..., 4096) =3D 4096 brk(0x101e4000) =3D 0x101e4000 brk(0x101e5000) =3D 0x101e5000 brk(0x101e6000) =3D 0x101e6000 brk(0x101e7000) =3D 0x101e7000 read(3, "efaults.ctl.card\n\t\t\t}\n\t\t}\n\t}\n\tty"..., 4096) =3D 2938 brk(0x101e8000) =3D 0x101e8000 brk(0x101e9000) =3D 0x101e9000 brk(0x101ea000) =3D 0x101ea000 read(3, "", 4096) =3D 0 read(3, "", 4096) =3D 0 close(3) =3D 0 munmap(0x30014000, 4096) =3D 0 access("/etc/asound.conf", R_OK) =3D -1 ENOENT (No such file or dire= ctory) access("/root/.asoundrc", R_OK) =3D -1 ENOENT (No such file or dire= ctory) brk(0x101eb000) =3D 0x101eb000 open("/dev/snd/controlC0", O_RDONLY) =3D 3 close(3) =3D 0 open("/dev/snd/controlC0", O_RDWR) =3D 3 ioctl(3, 0x40045500, 0x7fffdf68) =3D 0 ioctl(3, 0x80045532, 0x7fffdf68) =3D 0 open("/dev/snd/pcmC0D0p", O_RDWR) =3D 4 ioctl(4, 0x40044100, 0x7fffe0dc) =3D 0 close(3) =3D 0 mmap(NULL, 4096, PROT_READ, MAP_SHARED, 4, 0x80000000) =3D 0x30014000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0x81000000) =3D 0x300= 15000 ioctl(4, 0xc0fc4110, 0x7fffe558) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe418) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe558) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe558) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe558) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe558) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe738) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe418) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe738) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe558) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe558) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe738) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe2f8) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe2f8) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe438) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe1e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe1e8) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe1e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe1e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe3c8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe3c8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe3c8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4d8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4d8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4d8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe618) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe6b8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe6b8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe6e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4f8) =3D 0 ioctl(4, 0xc0fc4111, 0x7fffe4f8) =3D 0 ioctl(4, 0xc0684113, 0x7fffe458) =3D 0 ioctl(4, 0x40104132, 0x7fffe3f8) =3D 0 ioctl(4, 0x40104132, 0x7fffe3f8) =3D 0 mmap(NULL, 32768, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) =3D 0x30026000 ioctl(4, 0x20004140, 0x7fffe808) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe568) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe428) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe568) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe568) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe568) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe568) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe748) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe428) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe748) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe568) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe568) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe748) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe308) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe308) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe448) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe1f8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe1f8) =3D -1 EINVAL (Invalid argument) ioctl(4, 0xc0fc4110, 0x7fffe1f8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe1f8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe3d8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe3d8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe3d8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4e8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe628) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe6c8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe6c8) =3D 0 munmap(0x30026000, 32768) =3D 0 ioctl(4, 0x20004112, 0x101e2560) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe6f8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe4f8) =3D 0 ioctl(4, 0xc0fc4110, 0x7fffe508) =3D 0 ioctl(4, 0xc0fc4111, 0x7fffe508) =3D 0 ioctl(4, 0x40104132, 0x7fffe408) =3D 0 ioctl(4, 0x40104132, 0x7fffe408) =3D 0 mmap(NULL, 32768, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) =3D 0x30026000 write(2, "alsaplayer: pcm.c:5655: snd_pcm_"..., 66alsaplayer: pcm.c:5655: s= nd_pcm_unlink_ptr: Assertion `0' failed. ) =3D 66 rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) =3D 0 kill(22302, SIGABRT) =3D 0 --- SIGABRT (Aborted) --- write(2, "AlsaPlayer interrupted by signal"..., 34AlsaPlayer interrupted by= signal 6) =3D 34 write(2, "\n", 1 ) =3D 1 exit(1) =3D ? [root@bennyhill /]#=20 --=-9ytbmNB21fUQgkmyoJNH-- From ndsub@mail.internetseer.com Wed, 22 May 2002 18:17:03 -0400 (EDT) Date: Wed, 22 May 2002 18:17:03 -0400 (EDT) From: Mike Dever ndsub@mail.internetseer.com Subject: [Alsaplayer-devel]InternetSeer Free Activation Confirmation ------=_Part_28_19569932.1022105823392 Content-Type: text/plain Content-Transfer-Encoding: 7bit Dear InternetSeer, Starting today, your site's connectivity will be tested every hour, seven days a week. You will begin to receive the following benefits from InternetSeer: - A weekly performance report on your monitored Web page. - Featuring valuable services to help you grow your business. - Alerts when your Web page is not available. Click here to automatically login to your account. You can easily add more URL's to monitor or make changes to your account. http://www.internetseer.com/ep/my_internetseer.jsp?74745YM4deWWD7i7gEWR7078YwAWxKUU=e3 For your records, your login name and password are below: Login Name: alsaplayer-devel@lists.tartarus.org Password: 465mxz87 ------------------------------------------------------------------------------- Your FREE Web site monitoring service is now activated.

InternetSeer has arranged to offer you the following FREE Rewards. This is our way of saying thank you for doing business with us. Please take advantage of one or more of these great Registration Rewards.

Get your Complimentary One Year Subscription to Forbes Magazine!
Your complimentary one-year subscription to Forbes magazine is available now!
That's 12 issues! Best of all there's NO PURCHASE NECESSARY and there's NO
CREDIT CARD REQUIRED to accept your complimentary subscription.

30-Day FREE Trial of Web-Based Intranet
Is your business communicating and collaborating effectively? Get an online
calendar, as well as tools for document and project management. Easily read and
send email remotely. Take a 30-Day FREE Trial of the InternetSeer Web-based
intranet service today.

FREE Do-It-Yourself Email Marketing Solution! (60-Day Free Trial)
Constant Contact provides a simple interface to add your unique message and the
"Email Marketing Manager" does the rest! They provide you with dozens of
professional templates, creates the HTML, AOL & text versions, hosts and manages
your list, and even tracks your results.

FREE- 250 premium custom color business cards (an $85 value)
Get 250 premium custom color business cards (an $85 value) Choose from over 30
templates, personal, business, corporate, high impact.

Thank you and welcome to InternetSeer. Please let others know about our Service.

Mike Dever
CEO

------=_Part_28_19569932.1022105823392 Content-Type: text/html Content-Transfer-Encoding: 7bit Congratulations. Your Web Site is Registered
Dear InternetSeer,

Starting today, your site's connectivity will be tested every hour, seven days a week. You will begin to receive the following benefits from InternetSeer:

  • A weekly performance report on your monitored Web page.
    • Featuring valuable services to help you grow your business.
  • Alerts when your Web page is not available.

Click here to automatically login to your account. You can easily add more URL's to monitor or make changes to your account.

For your records, your login name and password are below:
Login Name:alsaplayer-devel@lists.tartarus.org
Password:465mxz87

Your FREE Web site monitoring service is now activated.

InternetSeer has arranged to offer you the following FREE Rewards. This is our way of saying thank you for doing business with us. Please take advantage of one or more of these great Registration Rewards.

Get your Complimentary One Year Subscription to Forbes Magazine!
Your complimentary one-year subscription to Forbes magazine is available now!
That's 12 issues! Best of all there's NO PURCHASE NECESSARY and there's NO
CREDIT CARD REQUIRED to accept your complimentary subscription.

30-Day FREE Trial of Web-Based Intranet
Is your business communicating and collaborating effectively? Get an online
calendar, as well as tools for document and project management. Easily read and
send email remotely. Take a 30-Day FREE Trial of the InternetSeer Web-based
intranet service today.

FREE Do-It-Yourself Email Marketing Solution! (60-Day Free Trial)
Constant Contact provides a simple interface to add your unique message and the
"Email Marketing Manager" does the rest! They provide you with dozens of
professional templates, creates the HTML, AOL & text versions, hosts and manages
your list, and even tracks your results.

FREE- 250 premium custom color business cards (an $85 value)
Get 250 premium custom color business cards (an $85 value) Choose from over 30
templates, personal, business, corporate, high impact.

Thank you and welcome to InternetSeer. Please let others know about our Service.

Mike Dever
CEO


------=_Part_28_19569932.1022105823392-- From dawson3k@myrealbox.com Sun, 26 May 2002 14:45:25 +0300 Date: Sun, 26 May 2002 14:45:25 +0300 From: ismail donmez dawson3k@myrealbox.com Subject: [Alsaplayer-devel]Latest CVS and ID3 Parsing Hey all ! Seems like latest cvs doesnt parse mp3's id3 tags. I got no name on the main window .There is nothing No "Unparsed" warning or no name. Is this known or my problem ? System spesifications: Gcc 2.95.3 automake 1.6.1 autoconf 2.53 From andy@alsaplayer.org Sun, 26 May 2002 13:55:33 +0200 Date: Sun, 26 May 2002 13:55:33 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS and ID3 Parsing On Sun, May 26, 2002 at 02:45:25PM +0300, ismail donmez wrote: > Seems like latest cvs doesnt parse mp3's id3 tags. I got no name on the > main window .There is nothing No "Unparsed" warning > or no name. Is this known or my problem ? Hmm, I think Evgeny applied a patch that removed "Unparsed". If there is no title it means there is no ID3 data. I think I'll put the old filename as title hack back in, unless there is a really good reason not to do this?! Andy From codedj@echo.ru Sun, 26 May 2002 21:41:15 +0700 Date: Sun, 26 May 2002 21:41:15 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Latest CVS and ID3 Parsing On Sun, 26 May 2002 14:45:25 +0300, ismail donmez wrote: ID> Seems like latest cvs doesnt parse mp3's id3 tags. I got no name on the ID> main window .There is nothing No "Unparsed" warning ID> or no name. Is this known or my problem ? ID> ID> System spesifications: ID> ID> Gcc 2.95.3 ID> automake 1.6.1 ID> autoconf 2.53 Install something like this: ii libid3tag0 0.14.2b-2 ID3 tag reading library from the MAD project ii libid3tag0-dev 0.14.2b-2 ID3 tag reading library from the MAD project -- ... Evgeny ... [AlsaPlayer: Nokturnal Mortum - Veles' Scrolls] From codedj@echo.ru Sun, 26 May 2002 21:41:44 +0700 Date: Sun, 26 May 2002 21:41:44 +0700 From: Evgeny Chukreev codedj@echo.ru Subject: [Alsaplayer-devel]Latest CVS and ID3 Parsing On Sun, 26 May 2002 13:55:33 +0200, Andy Lo A Foe wrote: ALAF> > Seems like latest cvs doesnt parse mp3's id3 tags. I got no name on the ALAF> > main window .There is nothing No "Unparsed" warning ALAF> > or no name. Is this known or my problem ? ALAF> Hmm, I think Evgeny applied a patch that removed "Unparsed". If there is ALAF> no title it means there is no ID3 data. I think I'll put the old ALAF> filename as title hack back in, unless there is a really good reason not ALAF> to do this?! Reason: Title is title. Filename is filename. It is better to do this job (put filename as title) in the INTERFACE part. Since this, developer will know (through libalsaplayer) when title is really empty. -- ... Evgeny ... [AlsaPlayer: Nokturnal Mortum - Veles' Scrolls] From dhess@bothan.net Sun, 26 May 2002 19:37:51 -0700 (PDT) Date: Sun, 26 May 2002 19:37:51 -0700 (PDT) From: Drew Hess dhess@bothan.net Subject: [Alsaplayer-devel]problem with jack output driver Turns out this was a "problem" with my ice1712 configuration. The jack output is working properly now with the hw:0 device (correct stereo mix). -dwh- On Sat, 18 May 2002, Drew Hess wrote: > > Sorry, you probably wanted this info, too (when starting up alsaplayer): > > new client: alsaplayer-23030, id = 2 type 2 @ 0x4001f000 fd = 14 > port alsaplayer-23030:out_1 buf shm key 0x295059f8 at offset 12288 bi = > 0x8063598 > registered port alsaplayer-23030:out_1, offset = 12288 > port alsaplayer-23030:out_2 buf shm key 0x295059f8 at offset 16384 bi = > 0x80635a8 > registered port alsaplayer-23030:out_2, offset = 16384 > -- jack_rechain_graph(): > client alsa_pcm: inprocess client, execution_order=0. > client alsaplayer-23030: start_fd=7, execution_order=0. > client alsaplayer-23030: wait_fd=13, execution_order=1 (last client). > connect alsaplayer-23030:out_1 and alsa_pcm:out_1 > -- jack_rechain_graph(): > client alsaplayer-23030: start_fd=7, execution_order=0. > client alsaplayer-23030: wait_fd=13, execution_order=1. > client alsa_pcm: inprocess client, execution_order=2. > connect alsaplayer-23030:out_2 and alsa_pcm:out_2 > -- jack_rechain_graph(): > client alsaplayer-23030: start_fd=7, execution_order=0. > client alsaplayer-23030: wait_fd=13, execution_order=1. > client alsa_pcm: inprocess client, execution_order=2. > > > On Sat, 18 May 2002, Drew Hess wrote: > > > > > On Tue, 7 May 2002, Andy Lo A Foe wrote: > > > > > Hi Drew, > > > > > > On Tue, May 07, 2002 at 02:51:12AM -0700, Drew Hess wrote: > > > > > > > http://bothan.net/~dhess/undone.mp3 > > > > > > > > With the OSS or alsa driver, I get the correct stereo mix. The first > > > > voice at the beginning of the song should come from the right channel, and > > > > the second voice should come from the left. > > > > > > > > With the jack driver, the mix is incorrect. It's not exactly mono, but > > > > the first voice is audible in both channels, and the second isn't audible > > > > at all. > > > > > > this could very well be because of the channel mapping that jack does. > > > What does jack -v tell you about registered ports? > > > AlsaPlayer maps left to alsa_pcm:out_1 and right to alsa_pcm:out_2 > > > There is a mechanism to select the jack ports yourself but I broke it in > > > 0.99.60 :( > > > > > > I'm still having this problem with CVS alsaplayer and CVS jack. > > > > Here's what I get from jackd -v: > > > > % jackd -v -d alsa -d ice1712spdif -rate 44100 > > jackd 0.32.0 > > Copyright 2001-2002 Paul Davis and others. > > jackd comes with ABSOLUTELY NO WARRANTY > > This is free software, and you are welcome to redistribute it > > under certain conditions; see the file COPYING for details > > > > 22961 waiting for signals > > creating alsa driver ... ice1712spdif|1024|2|44100|swmon > > You appear to be using the ALSA software "plug" layer, probably > > a result of using the "default" ALSA device. This is less > > efficient than it could be. Consider using a ~/.asoundrc file > > to define a hardware audio device rather than using the plug layer > > > > You appear to be using the ALSA software "plug" layer, probably > > a result of using the "default" ALSA device. This is less > > efficient than it could be. Consider using a ~/.asoundrc file > > to define a hardware audio device rather than using the plug layer > > > > new client: alsa_pcm, id = 1 type 1 @ 0x80645d0 fd = 12 > > port alsa_pcm:in_1 buf shm key 0x60bca103 at offset 4096 bi = 0x80639a0 > > registered port alsa_pcm:in_1, offset = 4096 > > port alsa_pcm:in_2 buf shm key 0x60bca103 at offset 8192 bi = 0x80639b0 > > registered port alsa_pcm:in_2, offset = 8192 > > registered port alsa_pcm:out_1, offset = 0 > > registered port alsa_pcm:out_2, offset = 0 > > > > > > > > > > > creating alsa driver ... default|1024|2|48000|swmon > > > > > > > > And it complains that I'm using a plug layer. > > > > > > Yeah, ideally, you should have a custom hardware device for your > > > soundcard. My .asoundrc looks like this: > > > > > > pcm.trident { > > > type hw > > > card NX > > > } > > > ctl.trident { > > > type hw > > > card 0 > > > } > > > > > > Unfortunately, with my Midiman Audiophile card, it seems like the only way > > to get SPDIF output is through a plug layer :< > > > > > > -dwh- > > > > > > > > From ndsub.7g7j5YxDpcLv76OyKJzUGTD7671EP.e3@mail.internetseer.com Mon, 27 May 2002 19:12:28 -0400 (EDT) Date: Mon, 27 May 2002 19:12:28 -0400 (EDT) From: InternetSeer ndsub.7g7j5YxDpcLv76OyKJzUGTD7671EP.e3@mail.internetseer.com Subject: [Alsaplayer-devel]InternetSeer Alert InternetSeer - Error Alert

Error Alert
Your Web site is not responding

URL
: http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel
Time: Mon May 27 19:12:28 EDT 2002, EST
Error Type: Time Out

GET BACK ONLINE ASAP with Internetseer's affordable 24/7 live technical support. Learn more by emailing us at webwatch@internetseer.com 

 
Limited Time Offers for InternetSeer Subscribers
Cancel - If you no longer wish to have InternetSeer monitor your Web site, click here to cancel your account, or reply to this email with Cancel in the subject line.

  
Get Back Online ASAP!

InternetSeer now offers 24/7 live technical support to help your hosting company diagnose and fix your Web site connectivity problem immediately.

By the time you are done reading this alert message, you could automatically be on the way to having your Web site back online. Email us at webwatch@internetseer.com to learn how you can arrange for InternetSeer's Tech Support Team to be on call around the clock to help your hosting provider diagnose and fix the problem.

Upon detecting a connectivity error with your site, InternetSeer's technical staff will:
  • Manually recheck your Web site
  • Run diagnostic tests to identify the type of problem encountered
  • Contact your hosting provider to advise them of your site's on-error status
  • Consult with your hosting provider to diagnose and correct the problem
  • Fully document the issue, including the duration of your downtime, and send you a report. 

Special Introductory Offer! You can have an entire year of Web site protection from InternetSeer's Tech Support Team for as little as 67 cents a day for round-the-clock protection!

To learn more about this valuable new 24/7 Tech Support Service, please contact us at:
1-610-361-7757 or click here: webwatch@internetseer.com.
##7g7j5YxDpcLv76OyKJzUGTD7671EP=e3##

From ndsub.7g7j5YxDpeLv76OyKJzUGTD7671ET.e3@mail.internetseer.com Mon, 27 May 2002 19:48:24 -0400 (EDT) Date: Mon, 27 May 2002 19:48:24 -0400 (EDT) From: InternetSeer ndsub.7g7j5YxDpeLv76OyKJzUGTD7671ET.e3@mail.internetseer.com Subject: [Alsaplayer-devel]InternetSeer Alert InternetSeer - Second Error Alert

Second Error Alert
Your Web site is still not responding

URL
: http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel
Time: Mon May 27 19:48:23 EDT 2002, EST
Error Type: Time Out

GET BACK ONLINE ASAP with Internetseer's affordable 24/7 live technical support. Learn more by emailing us at webwatch@internetseer.com 

 
Limited Time Offers for InternetSeer Subscribers
Cancel - If you no longer wish to have InternetSeer monitor your Web site, click here to cancel your account, or reply to this email with Cancel in the subject line.

  
Get Back Online ASAP!

InternetSeer now offers 24/7 live technical support to help your hosting company diagnose and fix your Web site connectivity problem immediately.

By the time you are done reading this alert message, you could automatically be on the way to having your Web site back online. Email us at webwatch@internetseer.com to learn how you can arrange for InternetSeer's Tech Support Team to be on call around the clock to help your hosting provider diagnose and fix the problem.

Upon detecting a connectivity error with your site, InternetSeer's technical staff will:
  • Manually recheck your Web site
  • Run diagnostic tests to identify the type of problem encountered
  • Contact your hosting provider to advise them of your site's on-error status
  • Consult with your hosting provider to diagnose and correct the problem
  • Fully document the issue, including the duration of your downtime, and send you a report. 

Special Introductory Offer! You can have an entire year of Web site protection from InternetSeer's Tech Support Team for as little as 67 cents a day for round-the-clock protection!

To learn more about this valuable new 24/7 Tech Support Service, please contact us at:
1-610-361-7757 or click here: webwatch@internetseer.com.
##7g7j5YxDpeLv76OyKJzUGTD7671ET=e3##

From ndsub.7g7j5YxDpgLv76OyKJzUGTD7671EJ.e3@mail.internetseer.com Mon, 27 May 2002 21:26:39 -0400 (EDT) Date: Mon, 27 May 2002 21:26:39 -0400 (EDT) From: InternetSeer ndsub.7g7j5YxDpgLv76OyKJzUGTD7671EJ.e3@mail.internetseer.com Subject: [Alsaplayer-devel]InternetSeer Recovery InternetSeer - Recovery Alert

Recovery Alert
Your Web site is no longer on error

URL
: http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel
Time: Mon May 27 21:26:39 EDT 2002, EST
Total Time on error: 2 hours, 14 minutes, 11 seconds

WERE YOU DOWN TOO LONG? Internetseer's affordable 24/7 live technical support can help. Learn more by emailing us at webwatch@internetseer.com 
  

 
Limited Time Offers for InternetSeer Subscribers
Cancel - If you no longer wish to have InternetSeer monitor your Web site, click here to cancel your account, or reply to this email with Cancel in the subject line.

  
Get Back Online ASAP!

InternetSeer now offers 24/7 live technical support to help your hosting company diagnose and fix your Web site connectivity problem immediately.

By the time you are done reading this alert message, you could automatically be on the way to having your Web site back online. Email us at webwatch@internetseer.com to learn how you can arrange for InternetSeer's Tech Support Team to be on call around the clock to help your hosting provider diagnose and fix the problem.

Upon detecting a connectivity error with your site, InternetSeer's technical staff will:
  • Manually recheck your Web site
  • Run diagnostic tests to identify the type of problem encountered
  • Contact your hosting provider to advise them of your site's on-error status
  • Consult with your hosting provider to diagnose and correct the problem
  • Fully document the issue, including the duration of your downtime, and send you a report. 

Special Introductory Offer! You can have an entire year of Web site protection from InternetSeer's Tech Support Team for as little as 67 cents a day for round-the-clock protection!

To learn more about this valuable new 24/7 Tech Support Service, please contact us at:
1-610-361-7757 or click here: webwatch@internetseer.com.
##7g7j5YxDpgLv76OyKJzUGTD7671EJ=e3##

From jlewis@lords.com Tue, 28 May 2002 12:16:51 +1000 Date: Tue, 28 May 2002 12:16:51 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]questions about ap_pause() Hi, I have a question about ap_pause and ap_unpause Does ap_unpause just set the speed to 1.0? if so, what happens if the speed was other than 1.0 before tha ap_pause was issued? will ap_unpause set the speed back to the old speed? Thanks, Jason From andy@alsaplayer.org Tue, 28 May 2002 09:00:22 +0200 Date: Tue, 28 May 2002 09:00:22 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]questions about ap_pause() On Tue, May 28, 2002 at 12:16:51PM +1000, Jason Lewis wrote: > Does ap_unpause just set the speed to 1.0? if so, what happens if the > speed was other than 1.0 before tha ap_pause was issued? will ap_unpause > set the speed back to the old speed? Not right now. Should it? Andy From x@meta.lo-res.org Tue, 28 May 2002 12:41:53 +0200 (CEST) Date: Tue, 28 May 2002 12:41:53 +0200 (CEST) From: CK x@meta.lo-res.org Subject: [Alsaplayer-devel]questions about ap_pause() I read: > > speed was other than 1.0 before tha ap_pause was issued? will ap_unpause > > set the speed back to the old speed? > > Not right now. Should it? definitely NOT! regards, x -- chris@lo-res.org Postmodernism is german romanticism with better http://pilot.fm/ special effects. (Jeff Keuss / via ctheory.com) From x@meta.lo-res.org Tue, 28 May 2002 13:25:29 +0200 (CEST) Date: Tue, 28 May 2002 13:25:29 +0200 (CEST) From: CK x@meta.lo-res.org Subject: [Alsaplayer-devel]questions about ap_pause() I wrote: > > I read: > > > speed was other than 1.0 before tha ap_pause was issued? will ap_unpause > > > set the speed back to the old speed? > > > > Not right now. Should it? > > definitely NOT! oops - never reply before coffee - of course pause/unpause should pre- serve whatever speed was set before. sorry, x -- chris@lo-res.org Postmodernism is german romanticism with better http://pilot.fm/ special effects. (Jeff Keuss / via ctheory.com) From andy@alsaplayer.org Tue, 28 May 2002 14:15:07 +0200 Date: Tue, 28 May 2002 14:15:07 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]questions about ap_pause() On Mon, May 28, 2001 at 08:50:40PM +1000, Jason Lewis wrote: > Hi Anday, Yow! People usually just butcher my last name ;-) > I think that alsaplayer should remember the old speed and unpause > resumes to the old speed. > > What do you think? I added some code to CVS that does this. If speed was say 200% and you pause it will return to 200% when unpausing. Please test... Regards, Andy From jlewis@lords.com Tue, 28 May 2002 23:04:43 +1000 Date: Tue, 28 May 2002 23:04:43 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]information tags Hi, We seem to be missing a few functions to get tag information from alsaplayer. could we have functions to get the following information (if available) in the control.h interface year, track number, comment. thanks From thomas.eriksson@mbox367.swipnet.se 29 May 2002 01:04:04 +0200 Date: 29 May 2002 01:04:04 +0200 From: Thomas Eriksson thomas.eriksson@mbox367.swipnet.se Subject: [Alsaplayer-devel]24bit question as i see it mentioned nowhere in the docs or at the feature page, I'm wondering if AlsaPlayer does support 24bit PCM output to a ALSA soundcard (I have the Creative Audigy) at least libMAD supports output of 24bit (and AC3 streams contain 24bit PCM sound, if I'm not misinformed) does alsaplayer support it? /Thomas From andy@alsaplayer.org Tue, 28 May 2002 15:19:43 +0200 Date: Tue, 28 May 2002 15:19:43 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]24bit question On Wed, May 29, 2002 at 01:04:04AM +0200, Thomas Eriksson wrote: > as i see it mentioned nowhere in the docs or at the feature page, I'm > wondering if AlsaPlayer does support 24bit PCM output to a ALSA > soundcard (I have the Creative Audigy) > > at least libMAD supports output of 24bit (and AC3 streams contain 24bit > PCM sound, if I'm not misinformed) > > does alsaplayer support it? It does through the JACK interface (http://jackit.sf.net), however the resolution of the input plugins is currently limited to 16-bit so the benefits will be exactly NIL. I do plan on converting the internal engine to use floating point data, but I think that's a post-1.0 feature addition (unless I get enough donations to buy me a spanking new 24-bit capable audiocard ;-) Regards, Andy From andy@alsaplayer.org Tue, 28 May 2002 23:14:42 +0200 Date: Tue, 28 May 2002 23:14:42 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]information tags On Tue, May 28, 2002 at 11:04:43PM +1000, Jason Lewis wrote: > could we have functions to get the following information (if available) in > the control.h interface > > year, > track number, > comment. These are not parsed yet. As soon as they are we'll add the relevent queries to libalsaplayer. Regards, Andy From jlewis@lords.com Wed, 29 May 2002 07:47:48 +1000 Date: Wed, 29 May 2002 07:47:48 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]information tags Hi Andy (I'll try not to mangle your name this time ;) could you put stubs in for the time being? Also, have you checked out the id3v2 spec? there is many potential bits of information in id3v2. prehaps there needs to be a more generic interface in control.h for getting tag information so the interface doesn't have to change to add new types of tag? Jason On Tue, 28 May 2002, Andy Lo A Foe wrote: ALAF> On Tue, May 28, 2002 at 11:04:43PM +1000, Jason Lewis wrote: ALAF> ALAF> > could we have functions to get the following information (if available) in ALAF> > the control.h interface ALAF> > ALAF> > year, ALAF> > track number, ALAF> > comment. ALAF> ALAF> These are not parsed yet. As soon as they are we'll add the relevent ALAF> queries to libalsaplayer. ALAF> ALAF> Regards, ALAF> Andy ALAF> ALAF> From andy@alsaplayer.org Wed, 29 May 2002 00:50:26 +0200 Date: Wed, 29 May 2002 00:50:26 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]information tags On Wed, May 29, 2002 at 07:47:48AM +1000, Jason Lewis wrote: > could you put stubs in for the time being? I'll see what I can do... > Also, have you checked out the id3v2 spec? there is many potential bits of > information in id3v2. prehaps there needs to be a more generic interface > in control.h for getting tag information so the interface doesn't have to > change to add new types of tag? Yeah, I think I discussed this with Evgeny a while ago. If we are to support the plethora of data types that ID3v2 introduces (it even supports freaking image embedding!) the info querying should be made more flexible. Note that this is very low on my priority list. Andy From andy@alsaplayer.org Wed, 29 May 2002 09:36:48 +0200 Date: Wed, 29 May 2002 09:36:48 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]information tags CC to: alsaplayer-devel On Wed, May 29, 2002 at 07:43:22AM +0200, Werner John wrote: > hmmm, why not just pass the ID3 information to the caller? libid3... should > take care of the rest on the client side. That is a solution. Passing the filename should be enough. The caller can then do her own parsing of ID3 tags. Andy From jlewis@lords.com Wed, 29 May 2002 17:51:12 +1000 Date: Wed, 29 May 2002 17:51:12 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]information tags Andy Lo A Foe wrote: > On Wed, May 29, 2002 at 07:47:48AM +1000, Jason Lewis wrote: > > Yeah, I think I discussed this with Evgeny a while ago. If we are to > support the plethora of data types that ID3v2 introduces (it even > supports freaking image embedding!) the info querying should be made > more flexible. Note that this is very low on my priority list. > I agree, its a low priority thing, I just wanted to point it out so its not overlooked by accident. :) Thanks, Jason From andy@alsaplayer.org Wed, 29 May 2002 10:04:39 +0200 Date: Wed, 29 May 2002 10:04:39 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]information tags On Wed, May 29, 2002 at 05:51:12PM +1000, Jason Lewis wrote: > I agree, its a low priority thing, I just wanted to point it out so its > not overlooked by accident. :) What do you think about a function that just returns the filename. You can then do your own ID3 parsing which should be much more flexible!? Andy From sjah@land.ru Wed, 29 May 2002 15:22:44 +0700 Date: Wed, 29 May 2002 15:22:44 +0700 From: Evgeny Chukreev sjah@land.ru Subject: [Alsaplayer-devel]information tags On Tue, 28 May 2002 23:04:43 +1000, Jason Lewis wrote: JL> year, JL> track number, Added. Check CVS. JL> comment. Later. -- ... Evgeny ... [AlsaPlayer: Antichrisis - Forever I Ride (1998)] From sjah@land.ru Wed, 29 May 2002 16:20:11 +0700 Date: Wed, 29 May 2002 16:20:11 +0700 From: Evgeny Chukreev sjah@land.ru Subject: [Alsaplayer-devel]information tags On Tue, 28 May 2002 23:04:43 +1000, Jason Lewis wrote: JL> comment. Added. But I have strange mp3 file. mp3info /var/need/mp3-download/children of bodom - The Trooper.mp3 shows: File: /var/need/mp3-download/children of bodom - The Trooper.mp3 Title: The Trooper Track: Artist: Children of Bodom Album: follow the reaper Year: 2001 Comment: fantastic!!!!!!!!!!!!!!!!!!! Genre: Black Metal [138] AlsaPlayer's info looks like: Session name: alsaplayer-0 Playing: Yes Status: Stream type: 44KHz 128 kbit stereo audio mpeg Speed: 1.0 Song title: The Trooper Song artist: children of bodom Song album: follow the reaper Song genre: Black Metal Song year: 2001 Song comment: cazzo ma dove sono stato tutto questo tempo senza i Children of Bodom Song track_number: 6 Position in seconds: 26 Position in frames: 1000 Total length in seconds: 197 Total length in frames: 7579 I am confused. Test is please. -- ... Evgeny ... [AlsaPlayer: Children Of Bodom - No Commands] From andy@alsaplayer.org Fri, 31 May 2002 00:33:21 +0200 Date: Fri, 31 May 2002 00:33:21 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]callbacks for CorePlayer Hi, I'm implementing a callback interface for CorePlayer. You will be able to register callback functions to keep track of (external) parameter changes. Currently there are callbacks for speed, volume and pan. I will also add callback for Start and Stop operations. This should make interface plugins simpler to write and removes the need to poll these parameters... Andy From jlewis@lords.com Fri, 31 May 2002 11:58:02 +1000 Date: Fri, 31 May 2002 11:58:02 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]callbacks for CorePlayer Hi Andy, That sounds like a great idea. What about a time update callback too? Jason Andy Lo A Foe wrote: > Hi, > > I'm implementing a callback interface for CorePlayer. You will be able > to register callback functions to keep track of (external) parameter > changes. Currently there are callbacks for speed, volume and pan. I will > also add callback for Start and Stop operations. This should make > interface plugins simpler to write and removes the need to poll these > parameters... > > Andy > > > _______________________________________________ > alsaplayer-devel mailing list > alsaplayer-devel@lists.tartarus.org > http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel > From tbeamish@cs.ubc.ca Thu, 30 May 2002 23:58:29 -0700 (PDT) Date: Thu, 30 May 2002 23:58:29 -0700 (PDT) From: Tim Beamish tbeamish@cs.ubc.ca Subject: [Alsaplayer-devel]callbacks for CorePlayer Hi Guys, On Fri, 31 May 2002, Jason Lewis wrote: > Hi Andy, > > That sounds like a great idea. What about a time update callback too? If that means getting the current position in frames (or seconds), then I'm all for it too. Tim > > Jason > > Andy Lo A Foe wrote: > > Hi, > > > > I'm implementing a callback interface for CorePlayer. You will be able > > to register callback functions to keep track of (external) parameter > > changes. Currently there are callbacks for speed, volume and pan. I will > > also add callback for Start and Stop operations. This should make > > interface plugins simpler to write and removes the need to poll these > > parameters... > > > > Andy > > > > > > _______________________________________________ > > alsaplayer-devel mailing list > > alsaplayer-devel@lists.tartarus.org > > http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel > > > > > > > _______________________________________________ > alsaplayer-devel mailing list > alsaplayer-devel@lists.tartarus.org > http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel > From andy@alsaplayer.org Fri, 31 May 2002 09:07:20 +0200 Date: Fri, 31 May 2002 09:07:20 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]callbacks for CorePlayer On Fri, May 31, 2002 at 11:58:02AM +1000, Jason Lewis wrote: > That sounds like a great idea. What about a time update callback too? This is trickier. The callback would need to be initiated from some thread. The audio thread is out of the question since it must maintain real-time properties at all time. The decode thread is undesirable because time can advance without the decode thread being active. This would mean a third thread would have to be spawned by each CorePlayer instance to periodically poll the position and do the callbacks. I'm still thinking about it. Meanwhile the whole locking mess in both Playlist and now CorePlayer finally collapsed under its own weight. I will need to rethink the whole locking mechanism since there are too many situations that could lead to deadlocking. Checking for deadlock situations is really not the solution (that's how things work now). I have an idea on how to fix this. The only problem is that I'll only know if it works if I change all code over to the new method ;-) Andy From andy@alsaplayer.org Fri, 31 May 2002 10:21:10 +0200 Date: Fri, 31 May 2002 10:21:10 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]callbacks for CorePlayer On Thu, May 30, 2002 at 11:58:29PM -0700, Tim Beamish wrote: > If that means getting the current position in frames (or seconds), then > I'm all for it too. See previous message, I would like to take some feedback on this before continuing. BTW, polling the position is still a valid of course... Meanwhile, I've successfully implemented the locking changes. It removes *a lot* of cruft from the Playlist and CorePlayer classes and puts the locking responsibility inside the interface plugin. This makes perfect sense since the interface is supposed to know exactly when things should be locked or not. The lock is after all a property of the interface plugin. The new code also eliminates tricky situations where deadlocking could occur. The addition of the CorePlayer callback made me realize how truly messy the old solution was. I will commit the code later today. To Evgeny: this will probably break the python interface, but it will also remove all the code that deals with locking i.e. mapsimple_with_locking. Now, who has a solution for doing IPC callbacks simply and cleanly? :-) Andy From jlewis@lords.com Fri, 31 May 2002 19:51:47 +1000 Date: Fri, 31 May 2002 19:51:47 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]segfault in control.h Hi, I am trying to use the ap_set_position_relative command in control.h this is my code offset = 1; printf("before seek command offset %d\n", offset); ap_set_position_relative(myap_id, offset); printf("seek offset %d\n", offset); and this is the result.... before seek command offset 1 seek offset 1 Segmentation fault what could be causing that? Thanks Jason From andy@alsaplayer.org Fri, 31 May 2002 11:34:49 +0200 Date: Fri, 31 May 2002 11:34:49 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]callbacks for CorePlayer On Fri, May 31, 2002 at 10:21:10AM +0200, Andy Lo A Foe wrote: > See previous message, I would like to take some feedback on this before > continuing. BTW, polling the position is still a valid of course... Ok, the position_notify() call is being initiated from the playlist_looper thread. This thread was around already so adding a call to PositionNotify() was easy enough. The gtk+ interface updating is now completely callback driven! The CorePlayer callback API looks like this: CorePlayer *player; // Should be valid pointer static struct coreplayer_notifier notifier; .... memset(¬ifier, 0, sizeof(notifier)); notifier.speed_changed = speed_changed; // void speed_changed(int speed); notifier.pan_changed = pan_changed; // void pan_changed(int pan); notifier.volume_changed = volume_changed; // void volume_changed(int vol); notifier.stop_notify = stop_notify; // void stop_notify(); notifier.position_notify = position_notify; // void position_notify(int frame); // start_notify is not implemented yet player->RegisterNotifier(¬ifier); ---------------------------------------------- Please note that the RegisterNotifier() takes a pointer which has to stay valid at least till after UnRegisterNotifier()! Only then is it safe to delete the pointer data. Care should be taken to do proper locking inside all the callback functions. Most often they will not be called from the thread holding the lock. In the case where the lock holding thread does calls to functions that cause callbacks, it should drop the lock beforehand. The gtk+ interface demonstrates this. I will do some more testing before a commit. Andy From andy@alsaplayer.org Fri, 31 May 2002 11:38:54 +0200 Date: Fri, 31 May 2002 11:38:54 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]segfault in control.h On Fri, May 31, 2002 at 07:51:47PM +1000, Jason Lewis wrote: > offset = 1; > printf("before seek command offset %d\n", offset); > ap_set_position_relative(myap_id, offset); > printf("seek offset %d\n", offset); > > and this is the result.... > > before seek command offset 1 > seek offset 1 > Segmentation fault Can you do a clean build of your code and retry? If that doesn't help please run your program trough gdb and then send a backtrace (bt) right after the Segmentation fault. > what could be causing that? Hard to tell just by looking at the printf alone... BTW, does the relative.c example in the examples directory also crash? Andy From jlewis@lords.com Fri, 31 May 2002 20:05:22 +1000 Date: Fri, 31 May 2002 20:05:22 +1000 From: Jason Lewis jlewis@lords.com Subject: [Alsaplayer-devel]ap_add_and_play Hi Andy, could we please have an ap_add_and_play command? I am currently having to do an stop,clear, add, play everytime i want to play a new song. Thanks, Jason From andy@alsaplayer.org Fri, 31 May 2002 11:46:14 +0200 Date: Fri, 31 May 2002 11:46:14 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]ap_add_and_play On Fri, May 31, 2002 at 08:05:22PM +1000, Jason Lewis wrote: > could we please have an ap_add_and_play command? Yes. Will be in the next commit... Andy From andy@alsaplayer.org Fri, 31 May 2002 13:35:24 +0200 Date: Fri, 31 May 2002 13:35:24 +0200 From: Andy Lo A Foe andy@alsaplayer.org Subject: [Alsaplayer-devel]Latest CVS commit Hi, I just committed the new locking code to CVS. The Playlist class is a lot cleaner now. Lots (all?!) of potential deadlock situations were removed. The new Coreplayer callback code is also in. Polling the status is no longer required, your notify functions will be called whenever something exciting happens. This also means that tracking external changes (coming in from the control socket) can also be tracked more easily. This was the main motivation for the callback interface. It should also make writing interface plugins easier. Please test this code. I might have missed some places were locking behaviour should be changed. If the gtk+ interface hangs, please try to reproduce the situation. I'm pretty sure the code is solid, but nonetheless... Enjoy! Andy