2008-04-24 21:33  thor

	* tags/1.6.2: tagging 1.6.2

2008-04-24 21:26  thor

	* trunk/CHANGES, trunk/input_base.cxx, trunk/out_mme.cxx,
	  trunk/version.cxx: Found a lost sleep(1) left from debugging.
	  That one breaks continuity. Now that's a dumb regression. Also
	  commented out two sleeps in out_mme ...

2008-04-22 20:43  thor

	* trunk/CHANGES, trunk/communicator.cxx, trunk/communicator.hxx,
	  trunk/in_mpg123.cxx, trunk/input_base.cxx, trunk/version.cxx:
	  Update version to 1.6.1, notes... some dates.

2008-04-22 20:35  thor

	* trunk/TODO, trunk/audio_functions.cxx: Fix 1to2 upsampling
	  volume ... parentheses had to be corrected in the math. Thanks
	  to chuginator for noting.

2008-04-22 20:34  thor

	* trunk/in_mpg123.cxx, trunk/input_base.cxx: A bummer: mpg123
	  input forgot to clean up on device destruction! That left a
	  dangling thread if you switched away from mpg123 input... bad.
	  Really bad. The better that I fixed that now and also added code
	  to input_base.cxx to detect such mistakes in the future.

2008-04-22 20:32  thor

	* trunk/communicator.cxx: fix a debugging line to compile

2008-04-07 22:52  thor

	* trunk/mixer_data.cxx: Properly support endless nscript via
	  negative loop count; correct count 0 silently to 1.

2008-04-07 22:15  thor

	* trunk/CHANGES: the forgotten changes

2008-04-07 07:44  thor

	* trunk/frontend/README: Add note about ongoing frontend work.

2008-04-07 07:36  thor

	* trunk/README, trunk/version.cxx: prepare version 1.6.0

2008-03-22 00:14  thor

	* trunk/Makefile, trunk/communicator.cxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/peers.cxx, trunk/peers.hxx: Adding peer2peer message
	  passing. This is my idea of plumbing advanced playlist control
	  into dermixd: A client who has access to the music database
	  registers as peer and other clients can talk to it via their
	  dermixd connection. The whole stuff doesn't bother the mixer as
	  it's all happening in the communicator threads only.

2008-03-21 21:36  thor

	* trunk/frontend/simple_player: Simple player can now be
	  configured to use specific channels.

2008-02-24 00:25  thor

	* trunk/main.cxx, trunk/main_parm.hxx, trunk/mixer.cxx,
	  trunk/netcomm.cxx, trunk/param.cxx, trunk/param.hxx: Enable UNIX
	  domain socket for control.

2008-02-23 20:15  thor

	* trunk/communicator.cxx, trunk/communicator.hxx, trunk/mixer.cxx,
	  trunk/netcomm.cxx, trunk/netcomm.hxx: Prepare support for
	  communication on UNIX domain socket. - Base work in netcomm. -
	  Moved watcher thread handling into communicator.cxx (the (not
	  yet pretty) watchers_data class). - Basic test confirms work
	  like before, valgrind is also almost happy (one reachable block
	  left by pthread_cancel()...)

2008-02-23 18:15  thor

	* trunk/action.hxx: action_def strings are constants

2008-02-13 08:22  thor

	* trunk/TODO: TODO: named pipe, grab audio

2008-02-05 01:34  thor

	* trunk/socket_writer_data.cxx: remove an unused variable

2008-02-05 01:33  thor

	* trunk/Makefile: updating Makefile dependencies

2008-02-05 00:58  thor

	* trunk/CHANGES, trunk/version.cxx: Calling it a bugfix release:
	  1.5.1 .

2008-02-05 00:48  thor

	* trunk/input_base.cxx, trunk/scanner.cxx, trunk/scanner.hxx: Make
	  the scanners optionally update some imput channel data for
	  internal use, too (not just report to client). Namely, the
	  length scanner now updates the track length as the standalone
	  length command does.

2008-02-05 00:38  thor

	* trunk/in_mpg123.cxx: Realize that I can set the prebuffer format
	  not immediately after loading. Have to wait for the subsequent
	  restart of playback... then I get stream info.

2008-02-05 00:36  thor

	* trunk/audio_fifo.cxx: Remove that one debug line.

2008-02-05 00:26  thor

	* trunk/audio_fifo.cxx, trunk/audio_fifo.hxx, trunk/in_mpg123.cxx:
	  Identify the latest crash: gimme() got called with inconsistent
	  formats of fifo buffer and target buffer.

2008-01-31 21:56  thor

	* trunk/CHANGES, trunk/README, trunk/version.cxx: Version 1.5
	  "Continuum".

2008-01-29 00:47  thor

	* trunk/browse.cxx, trunk/browse.hxx, trunk/communicator.cxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx:
	  Added preread command as a hack to get a file into the file
	  system cache by reading with the low priority of the
	  communicator thread. That made it possible to play with (an
	  adjusted) Partyman smoothly as normal user without special
	  priority... with a mixer buffer of mere 100 samples. That's
	  double buffers of 2.3ms at the output stage... theoretical
	  latency <10ms -- not that bad, eh? ;-)

2008-01-29 00:05  thor

	* trunk/input_base.cxx, trunk/mixer.cxx, trunk/mixer.hxx: A new
	  hack for uninterrupted playback: Prevent the scanners from
	  hogging resources while mixer gathers and mixes input via
	  playlock.

2008-01-27 20:42  thor

	* trunk/in_mpg123.cxx, trunk/mixer.cxx, trunk/mixer_data.cxx,
	  trunk/scripts/undebug.pl: Fix the strict build (without variadic
	  macros).

2008-01-27 20:41  thor

	* trunk/CHANGES: mention the socket optimization
	* trunk/README: update of README for 1.4

2008-01-27 19:30  thor

	* trunk/frontend/README: note about frontends not keeping up

2008-01-27 19:28  thor

	* trunk/frontend/DerMixD, trunk/frontend/DerMixD/Base.pm,
	  trunk/frontend/DerMixD/Control.pm,
	  trunk/frontend/DerMixD/Fader.pm, trunk/frontend/Param.pm,
	  trunk/frontend/dermixd-control: Adding copies of the frontend
	  code out of ThOrMA to prevent forgetting that stuff again. But
	  now remember upgrading it before releases!

2008-01-27 19:15  thor

	* trunk/action.cxx, trunk/action.hxx, trunk/action_errors.hxx,
	  trunk/action_queue.cxx, trunk/action_queue.hxx,
	  trunk/browse.cxx, trunk/browse.hxx, trunk/input_actions.cxx,
	  trunk/input_actions.hxx, trunk/spies.cxx,
	  trunk/thread_container.cxx, trunk/thread_container.hxx,
	  trunk/tstring.cxx, trunk/tstring.hxx: Completing boilerplates.

2008-01-27 19:00  thor

	* trunk/spies.hxx: Adding that missing file.

2008-01-27 18:59  thor

	* trunk/Makefile: adding -fno-exceptions to g++ build lines

2008-01-27 18:49  thor

	* trunk/CHANGES, trunk/version.cxx: preparing for 1.4

2008-01-19 15:53  thor

	* trunk/audio_buffer.hxx: define AUDIO_MAX again... as SHRT_MAX
	  (32767).

2008-01-19 14:51  thor

	* trunk/scan_power.cxx: fix dBFS typo

2008-01-19 14:25  thor

	* trunk/Makefile, trunk/audio_buffer.hxx, trunk/scan_power.cxx,
	  trunk/scan_power.hxx, trunk/scanner.cxx, trunk/scanner.hxx:
	  Complete the first scanner implementation with the power
	  scanner, which uses the normalize algorithm by Chris Vaill.

2008-01-19 14:24  thor

	* trunk/mixer_actions.cxx, trunk/thread_container.hxx: Fixes for
	  compile without -DLINUX.

2008-01-19 01:00  thor

	* trunk/Makefile, trunk/audio_buffer.hxx, trunk/audio_fifo.cxx,
	  trunk/comm_data.cxx, trunk/communicator.cxx, trunk/comparse.cxx,
	  trunk/comparse.hxx, trunk/input_base.cxx, trunk/scanner.cxx,
	  trunk/scanner.hxx, trunk/tstring.cxx: Yay! Adding the first
	  scanners (peak, length, format... the first really making sense).

2008-01-18 00:34  thor

	* trunk/BUGS: note about that one mystery segfault

2008-01-18 00:32  thor

	* trunk/NOTES.performance, trunk/audio_fifo.cxx,
	  trunk/audio_fifo.hxx, trunk/common.hxx, trunk/communicator.cxx,
	  trunk/communicator.hxx, trunk/in_mpg123.cxx,
	  trunk/in_mpg123.hxx, trunk/input.hxx, trunk/input_base.cxx,
	  trunk/main.cxx, trunk/mixer.cxx, trunk/mixer_actions.cxx,
	  trunk/out_alsa.cxx, trunk/out_mme.cxx, trunk/out_oss.cxx,
	  trunk/out_raw_s16.cxx, trunk/out_text.cxx, trunk/output.hxx,
	  trunk/output_base.cxx, trunk/socket_writer_data.hxx,
	  trunk/thread_container.cxx, trunk/thread_container.hxx: Hack in
	  some funny thread priorities on Linux systems (where the gettid
	  system call and per-thread nice makes sense). Of cource the
	  "real" pthreads api offers something there, and I will support
	  it easily in one central place eventally. That means, if this
	  priority stuff works out. I seem to have inevitable alsa
	  underruns on my Thinkpad lately and I hope it will be better now.

2008-01-17 01:17  thor

	* trunk/communicator.cxx, trunk/communicator_actions.cxx,
	  trunk/input.hxx, trunk/input_base.cxx, trunk/mixer_actions.cxx:
	  The communication infrastructure for the scan command is in
	  place (optimized threadstat code by the way). Next steps only in
	  the input_base worker thread: - split scan actions and construct
	  a scanner chain - scan and seek back; adding lines to
	  comdat->retlines So only the real work left;-) I may still think
	  about using an extra process for the computation intensive
	  background action like scanning... so that I can give it lower
	  priority on linux.

2008-01-17 01:13  thor

	* trunk/in_mpg123.cxx: Fix typo.

2008-01-17 00:43  thor

	* trunk/Makefile, trunk/comm_data.hxx, trunk/communicator.cxx,
	  trunk/communicator.hxx, trunk/communicator_actions.cxx,
	  trunk/communicator_actions.hxx, trunk/input_actions.cxx,
	  trunk/input_actions.hxx, trunk/input_base.cxx,
	  trunk/mixer_actions.cxx, trunk/thread_container.cxx,
	  trunk/thread_container.hxx, trunk/tstring.cxx,
	  trunk/tstring.hxx: Preparation for the scan command; killed off
	  some by-standers: - Threadstat works now through the string list
	  in comm_data, ensuring that socketeer sends the stuff in one go,
	  without interference. This also is a good idea for not locking
	  on the socket_writer_data in the mixer - My tstring doesn't leak
	  memory anymore with the per-instance buffer. STL string doesn't
	  have a virtual destructor, thus destructing a tstring through a
	  string pointer doesn't call tstring's destructor. Now the
	  working data is inside the sprintf method only; as a plus
	  cheaply starting on the stack.

2008-01-15 00:10  thor

	* trunk/in_mpg123.cxx, trunk/in_mpg123.hxx, trunk/in_sndfile.hxx,
	  trunk/in_vorbisfile.hxx, trunk/input.hxx, trunk/input_base.cxx:
	  Rename do_scan to do_length ... scanning is something different,
	  coming soon.

2008-01-14 23:13  thor

	* trunk/action.cxx, trunk/action.hxx, trunk/communicator.cxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx:
	  Small change... add showid switch to make channel commands
	  indicate their channel: [load 0] success instead of [load]
	  success It's opt-in, to keep existing frontends happy.

2008-01-14 02:40  thor

	* trunk/mixer_actions.cxx: Update some client communication stuff:
	  - remove use of ostringstream in favor of tstring - use %g for
	  floats, generally

2008-01-14 02:05  thor

	* trunk/Makefile, trunk/mixer_actions.cxx: Fixing the double watch
	  bug (dermixd dind't expect multiple "watch 0"), also enhancing
	  the watch functionality by giving information about more events
	  on the input channels.

2008-01-14 02:04  thor

	* trunk/tstring.cxx, trunk/tstring.hxx: Adding a subclass of
	  std::string that adds a sprintf method... a lot less cumbersome
	  than ostringstream.

2008-01-14 00:29  thor

	* trunk/browse.cxx: Oh, dear... the cwd bug from mpg123 crept in;
	  now properly reallocating!

2008-01-13 11:11  thor

	* trunk/README: added spy/unspy to README

2008-01-13 11:10  thor

	* trunk/Makefile, trunk/communicator.cxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/netcomm.cxx, trunk/netcomm.hxx,
	  trunk/socket_writer_data.cxx, trunk/socket_writer_data.hxx,
	  trunk/spies.cxx: New commands: spy and unspy to tap on the
	  communication of other clients. Should be a nice (frontend)
	  debugging tool. Also, it's an exercise in thread sync issues;
	  being the reason for my first read/write barrier for the spies
	  list.

2008-01-13 09:20  thor

	* trunk/param.cxx: define() uses the lock, so it should better be
	  called _after_ the lock's init! I wonder why this didn't ever
	  blow on dermixd.

2007-12-30 12:34  thor

	* trunk/action_queue.cxx, trunk/in_mpg123.cxx,
	  trunk/input_base.cxx: Lessen some debugging verbosity.

2007-12-28 16:44  thor

	* trunk/input_base.cxx: Common rule for inputs: When a seek is
	  done, I set at_end=false before, assuming that the seek may very
	  well move the track to a place that is not beyond the end. This
	  allows repeated play of vorbisfiles.

2007-12-28 03:19  thor

	* trunk/Makefile, trunk/action_queue.cxx, trunk/in_mpg123.cxx,
	  trunk/in_mpg123.hxx, trunk/input.hxx, trunk/input_actions.cxx,
	  trunk/input_actions.hxx, trunk/input_base.cxx,
	  trunk/waiter_group.cxx, trunk/waiter_group.hxx: A bigger one...
	  finally mangling the mpg123 input to fit into the common
	  framework. Not so much code removed, but unified the mixer
	  interaction with one common worker thread replacing readily.
	  This should ease further maintenance of mpgq123 input and also
	  the development of a generic pipe-decoder input. ...perhaps this
	  lets more code live on after the port to use libmpg123...

2007-12-28 03:16  thor

	* trunk/audio_fifo.hxx: Make header more self-contained, include
	  audio_buffer.

2007-12-28 03:07  thor

	* trunk/in_mpg123.cxx, trunk/in_mpg123.hxx, trunk/mixer_data.cxx:
	  mpg123 input with work queue (still outside common input
	  infrastructure). Action integers got more long int usage, too.

2007-12-23 11:23  thor

	* trunk/Makefile, trunk/action.cxx, trunk/action.hxx,
	  trunk/action_errors.hxx, trunk/action_queue.cxx,
	  trunk/action_queue.hxx, trunk/common.hxx,
	  trunk/communicator_actions.hxx, trunk/input.hxx,
	  trunk/input_actions.cxx, trunk/input_actions.hxx,
	  trunk/input_base.cxx, trunk/mixer_actions.cxx,
	  trunk/mixer_data.hxx: Adding proper action queue to the default
	  input workings. The former way of giving orders to the worker
	  thread wasn't really thread safe (you see that only on _really_
	  multithreaded systems). The communication now involves action
	  objects like those used for socket-mixer communication. Similar
	  change is underway for in_mpg123, combinded with heavy thought
	  of unifying that one with the general infrastructure.

2007-12-21 08:59  thor

	* trunk/in_mpg123.cxx, trunk/in_mpg123.hxx: Hack with some minimal
	  mutexes to prevent bede's current crash. Will do this properly
	  for the weekend.

2007-12-19 09:30  thor

	* trunk/in_mpg123.hxx: The readily communication variables need to
	  be volatile, especially the rd->cd pointer. To be really safe,
	  the pointed-to structure should also be volatile, but that seems
	  to need more code changes to work; lots of nice g++ errors about
	  discarded qualifiers in operations...

2007-12-05 22:46  thor

	* trunk/CHANGES, trunk/Makefile: doc... I shall finally release
	  1.3.0

2007-10-21 22:56  thor

	* trunk/Makefile, trunk/README, trunk/action.hxx,
	  trunk/browse.cxx, trunk/browse.hxx, trunk/communicator.cxx,
	  trunk/communicator.hxx, trunk/communicator_actions.cxx,
	  trunk/communicator_actions.hxx, trunk/input.cxx,
	  trunk/version.cxx: Added browsing commands for clients: ls pwd
	  cd The current working directory is managed for each client
	  connection and relative paths are adjusted before being passed
	  to the main server, which works with absolute paths only. This
	  means we are approaching version 1.3 of DerMixD! Along that
	  route go updates in README and some completeness in the Makefile
	  and input.cxx.

2007-10-21 19:52  thor

	* trunk/in_dummy.hxx, trunk/in_raw_s16.hxx, trunk/in_sine.hxx,
	  trunk/in_sndfile.cxx, trunk/in_sndfile.hxx,
	  trunk/in_vorbisfile.hxx, trunk/input.hxx, trunk/input_base.cxx:
	  Fix the length command for the other inputs. Sndfile, raw_s16,
	  vorbisfile support it trivially without much work (I can
	  optimize this to prevent the whole notify stuff), sine and dummy
	  don't at all.

2007-10-21 18:06  thor

	* trunk/AUTHORS, trunk/CHANGES, trunk/INSTALL, trunk/README: Doc
	  update for imminent 1.3.0 with vorbisfile.

2007-10-21 17:57  thor

	* trunk/in_vorbisfile.cxx, trunk/in_vorbisfile.hxx: Cosmetics in
	  vorbisfile.

2007-10-21 17:49  thor

	* trunk/Makefile, trunk/in_vorbisfile.cxx,
	  trunk/in_vorbisfile.hxx: Changing the vorbisfile input to use
	  the existing input framework.

2007-10-21 09:25  thor

	* trunk/in_vorbisfile.cxx, trunk/in_vorbisfile.hxx,
	  trunk/input.cxx: Adding the vorbisfile hack by Sven Oliver
	  Moll... going to hack it myself now...

2007-09-26 22:49  thor

	* trunk/README, trunk/version.cxx: It is version 1.2.1 .

2007-09-26 22:37  thor

	* trunk/CHANGES, trunk/audio_fifo.cxx: Fix the backzeroscan: a
	  correct offset is channels * (my_pos + my_fill) as opposed to
	  channels * my_pos + my_fill !

2007-09-26 22:15  thor

	* trunk/CHANGES, trunk/README, trunk/audio_fifo.cxx,
	  trunk/in_mpg123_parm.hxx, trunk/param.cxx: Zeroscan is not
	  perfect yet... and it was always activated due to an
	  embarrassing bug in param.cxx! A 1.2.1 bugfix release is due...

2007-06-05 19:06  thor

	* trunk/CHANGES, trunk/INSTALL, trunk/README, trunk/version.cxx:
	  Prepare for version 1.2.0, update docs.

2007-05-30 11:52  thor

	* trunk/Makefile, trunk/communicator_actions.hxx,
	  trunk/in_dummy.cxx, trunk/in_dummy.hxx, trunk/in_mpg123.cxx,
	  trunk/in_mpg123.hxx, trunk/in_raw_s16.cxx, trunk/in_raw_s16.hxx,
	  trunk/in_sine.cxx, trunk/in_sine.hxx, trunk/in_sndfile.cxx,
	  trunk/in_sndfile.hxx, trunk/input.hxx, trunk/input_base.cxx,
	  trunk/mixer_actions.cxx, trunk/mixer_data.cxx: Starting a
	  framework in input_base.cxx for input devices with a common
	  thread function that works with an input_file object. For simple
	  inputs, this input_file class is what's getting the important
	  code. sndfile_input is using the framework; others will follow.
	  The interesting question is if I manage to integrate
	  mpg123_input there.

2007-05-30 00:41  thor

	* trunk/Makefile, trunk/input.cxx: Make sndfile input optional,
	  make SNDFILE=yes will enable it.

2007-05-30 00:29  thor

	* trunk/in_sndfile.cxx: Fix the seeking and general action safety
	  in sndfile worker.

2007-05-30 00:11  thor

	* trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_data.hxx: Enable the nodev load for inchannels;
	  change the resulting state from nodev to nicer idle (for in and
	  out).

2007-05-29 23:47  thor

	* trunk/Makefile, trunk/in_sndfile.cxx, trunk/in_sndfile.hxx,
	  trunk/input.cxx: Initial audio file support via libsndfile. Most
	  code is for making the real work threaded...

2007-05-29 13:19  thor

	* trunk/communicator.cxx, trunk/communicator_actions.cxx,
	  trunk/communicator_actions.hxx, trunk/in_raw_s16.cxx,
	  trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_data.hxx, trunk/mixer_tools.cxx,
	  trunk/mixer_tools.hxx: Enable a bit more flexible raw file
	  playback via the new inload/inplay commands that mirror the
	  outload/outplay commands by requiring a device specification.
	  Simplest usage is inload 0 raw file.raw or inload 0 mpeg
	  file.mp3 but also you can specify raw parameters: inload 0
	  raw:1ch:48000Hz file.raw

2007-05-29 13:14  thor

	* trunk/mixer.cxx: Activate the output device before marking it
	  PLAYING. My recent changes to the load logic require this.

2007-05-20 13:24  thor

	* trunk/mixer_actions.cxx, trunk/output_base.cxx: Now I see what
	  the problem was: I activated an output device on load()! Fixed
	  that... now the logic for output devices is outload = just set
	  up parameters and whatnot to be able to subsequently outstart =
	  access/open the device and get it going or outplay = to do this
	  together and outstop = release the device, but keep metadata so
	  that simple outstart brings it up again, instead of having to
	  specify a full outload/play again.

2007-05-20 13:08  thor

	* trunk/out_alsa.cxx: Bullshit. No, it wasn't with the hwparams...
	  It's related to using hw or dmix ...?

2007-05-20 13:06  thor

	* trunk/out_alsa.cxx:
	  thomas@neuling:/data/dermp3mixd/dermixd-work$ cat svn-commit.tmp
	  Funny... for another dermixd, it was enough to do outstop on one
	  that currently holds an alsa "hw" device so that the new one is
	  able to open it. For mpg123's alsa this was not enough. This now
	  works after freeing the hwparams in deactivate() instead of
	  exit(). I wonder why this blocking depends on the client app..

2007-05-20 13:01  thor

	* trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_data.hxx: Make outstart properly fail when device
	  busy, had a stupid segfault because of construction the error
	  text _after_ nodev()! Also, a failing outstart now doesn't
	  invalidate the device -- you can try again later.

2007-05-20 12:24  thor

	* trunk/mixer.cxx, trunk/out_alsa.cxx, trunk/out_alsa.hxx,
	  trunk/output.hxx, trunk/output_base.cxx: Get alsa debugging
	  output modernized, mixer doing sxdebug on "sleeping a bit2"...

2007-05-20 11:36  thor

	* trunk/param.cxx, trunk/param.hxx: - prepare param_space for
	  multithreaded access (want to manipulate parameters in runtime)
	  - fix param_space::c_str to return the "real" c_str() and not
	  from a temporary copy (the disturbing thing is that the other
	  way seemed to work, too... for now...)

2007-05-20 11:26  thor

	* trunk/common.hxx: pthread.h first, to enable any threading
	  related switches...

2007-05-17 16:54  thor

	* trunk/main.cxx, trunk/param.cxx, trunk/param.hxx: Include some
	  improvements of param lib back from pep-tracer.

2007-05-16 23:02  thor

	* trunk/communicator.cxx, trunk/mixer_actions.cxx,
	  trunk/thread_container.cxx: Fix thread_container to propagate
	  the thread count from sub container. Now I can explain the
	  thread count that pstree shows with the listing and count
	  dermixd gives me.

2007-05-16 22:48  thor

	* trunk/Makefile, trunk/communicator.cxx, trunk/communicator.hxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/in_mpg123.cxx, trunk/in_mpg123.hxx, trunk/input.hxx,
	  trunk/mixer.cxx, trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_data.hxx, trunk/output.hxx, trunk/output_base.cxx,
	  trunk/thread_container.cxx, trunk/thread_container.hxx: Added
	  thread_container to enable the threadstat command, listing all
	  threads of itself dermixd is aware of.

2007-05-16 04:27  thor

	* trunk/main_parm.hxx: ALSA default output is "default".

2007-05-15 23:45  thor

	* trunk/mixer_actions.cxx: Don't give bogus return value on
	  bass/mid/treble (just return the input instead).

2007-05-12 15:58  thor

	* trunk/mixer.cxx, trunk/mixer_actions.cxx: Use a dynamically
	  created mixact for follow that can actually be deleted in
	  process_actions()!

2007-05-05 17:40  thor

	* trunk/README, trunk/mixer.cxx, trunk/mixer_actions.cxx,
	  trunk/mixer_actions.hxx, trunk/mixer_data.cxx,
	  trunk/mixer_data.hxx: Simplify process_actions (dropping one
	  parameter) while adding the new meaning of negative script
	  times: Execute at track end. Also updated README for that one;
	  there also updated the api listing.

2007-05-05 17:38  thor

	* trunk/action.hxx: Initialize more pointers with NULL in
	  constructor.

2007-04-30 23:49  thor

	* trunk/audio_fifo.cxx: Fixed audio_fifo::resize to actually work
	  as intented - not checking active flag, just doing clear() to
	  ensure stopped reader and zeroed fill so that changing the audio
	  buffer doesn't violate anything. Result of the damaged behaviour
	  before (after reworking audio_fifo...) was that playing of files
	  that have different channel count than mixer borked the memory.
	  Stoopit.

2007-04-29 17:53  thor

	* trunk/common.hxx, trunk/communicator.cxx: Be very anal about
	  cancancellation... the testcancels in the sem_wait wrappers
	  really should not be necessary but still, gdb provides the
	  occasional failure to cancel a thread that waits for a
	  semaphore. The testcancel's also don't seem to do the trick...
	  there's the extra flag for socketeer and socket_writer to
	  really, really die. This dying seem to work even on gigi's box
	  now. But also does the SIGABRT in gdb or just segfault after
	  certain time of test.close.sh, while creating new threads, just
	  after comm_data init message. Core dump just shows a trace to
	  libgcc_s ... many question marks beyond that - looks fishy.
	  Don't know what to think of that. Well, at least I managed to
	  handle the SIG32 stuff, apparently. One really has to check for
	  signal abort on sem_wait()!

2007-04-29 16:40  thor

	* trunk/communicator.cxx: more useful reaper info

2007-04-29 15:59  thor

	* trunk/audio_fifo.cxx, trunk/common.hxx, trunk/communicator.cxx,
	  trunk/in_mpg123.cxx, trunk/mixer.cxx, trunk/out_alsa.cxx,
	  trunk/out_dummy.cxx, trunk/out_mme.cxx, trunk/out_oss.cxx,
	  trunk/out_raw_s16.cxx, trunk/out_text.cxx,
	  trunk/output_base.cxx, trunk/socket_writer_data.cxx: sem_wait()
	  can be interrupted by signals. It returns immediately with -1
	  and errno set... That's really bad when you do not care for
	  that. Easy method to crash dermixd-1.1.1: start in terminal with
	  -c and do Ctrl+z and the command "fg" some times. A socketeer
	  waiting on the semaphore gets reactivated before the mixer
	  handled the action. Or the mixer handles an action even twice
	  ... well, weird stuff.

2007-04-23 12:00  thor

	* trunk/communicator.cxx: debug/error message on socket joins

2007-04-23 11:34  thor

	* trunk/communicator.cxx, trunk/communicator.hxx, trunk/mixer.cxx,
	  trunk/mixer_actions.cxx: Suspecting the nesting of thread
	  creation / cancellation being a bad thing(TM), I now made the
	  thread hierarchy more clear organized. There is no cancellation
	  in cleanup handlers anymore. Socketeers get cancelled together
	  with their writers from a dedicated reaper thread, which also
	  deletes the socketeer_data. On program exit, there is cleanup
	  done my mixer. Mixer also creates port_watcher and reaper
	  directly, along with also directly cancelling them later. I hope
	  that this helps working with gdb... and perhaps even stops the
	  weird crashes on massive thread action on bede/gigi's box.

2007-04-23 06:03  thor

	* trunk/communicator.cxx: fix that unused variable at last

2007-04-23 05:59  thor

	* trunk/audio_fifo.cxx, trunk/common.hxx, trunk/communicator.cxx,
	  trunk/in_mpg123.cxx, trunk/mixer.cxx, trunk/mixer_actions.cxx,
	  trunk/mixer_tools.cxx, trunk/out_alsa.cxx, trunk/out_dummy.cxx,
	  trunk/out_mme.cxx, trunk/out_oss.cxx, trunk/out_raw_s16.cxx,
	  trunk/out_text.cxx, trunk/output_base.cxx: Hack around that
	  strange cancellation while in sem_wait() thing: just sometimes,
	  under heavy connect/disconnect test, a thread (socket_writer)
	  survived the cancel for some strange reason; leaving the client
	  hung on the not closed socket. At one time, I will have to
	  separate socketeer_data to have the thread id and semaphore
	  extra, for being deleted by higher force. What about an extra
	  reaper thread? Hm... that'd be good.

2007-04-22 16:22  thor

	* trunk/mixer.cxx, trunk/mixer_actions.cxx: Fix a stupid memory
	  leak: Delete script actions in process_actions before clearing
	  the list!

2007-04-22 15:19  thor

	* trunk/scripts/leaklog.pl: improve to support inheritance (...)

2007-04-22 15:14  thor

	* trunk/action.hxx, trunk/audio_buffer.hxx: added missing
	  construct/destruct markers

2007-04-22 14:38  thor

	* trunk/scripts/leaklog.pl: little helper for -DMEMDEBUG,
	  filtering out the not destructed objects

2007-04-22 12:18  thor

	* trunk/audio_fifo.cxx, trunk/in_raw_s16.cxx,
	  trunk/mixer_data.cxx, trunk/netcomm.cxx, trunk/out_alsa.cxx,
	  trunk/out_dummy.cxx, trunk/out_mme.cxx, trunk/out_oss.cxx,
	  trunk/out_raw_s16.cxx, trunk/out_text.cxx, trunk/param.cxx:
	  construct/desttruct markers

2007-04-22 11:17  thor

	* trunk/mixer.cxx: fix a one-time constant memory leak

2007-04-22 11:16  thor

	* trunk/debug.hxx: little fix for memdebug

2007-04-16 09:48  thor

	* trunk/action.cxx, trunk/audio_fifo.cxx, trunk/communicator.cxx,
	  trunk/debug.hxx, trunk/in_mpg123.cxx, trunk/input_base.cxx,
	  trunk/mixer.cxx, trunk/mixer_actions.cxx, trunk/netcomm.cxx,
	  trunk/out_mme.cxx, trunk/piperead.cxx,
	  trunk/socket_writer_data.cxx: Converting the debug macros to
	  again require the closing ; (keep syntax clean), dealing with
	  the nodebug case with "do {} while(0)", which is recommended by
	  C FAQ.

2007-04-11 21:43  thor

	* trunk/communicator.cxx, trunk/mixer.cxx,
	  trunk/mixer_actions.cxx, trunk/socket_writer_data.cxx: - debug:
	  print thread ids as int like gdb does - debug: more verbosity
	  around locks - debug: a cleanup handler in socket_writer just
	  for that - debug: more GDB_HACK ... perhaps I'm totally wrong
	  here. I hope I am. Perhaps just a corruption side effect. - Do
	  NOT hold a lock while being cancelled in socker_writer (revert
	  from not so long ago)! - delete socketeer data while holding the
	  socketeer lock (!) I still see strange and un-gdb-able behaviour
	  on gigi/bede's box when doing the simultaneous connect/close
	  test.

2007-04-11 10:23  thor

	* trunk/communicator.cxx: Quit that business with dynamically
	  managing the data->ans as pointer. While not actually causing
	  the crashes (I think, of course), it's dangerous to have the new
	  and delete all around a thread function. Besides having to
	  disable that terminal signal on my Thinkpad before starting gdb
	  (to prevent backgrounding), it looks like the socketeer is _not_
	  cancelled while doing sem_wait inside gdb! I added a GDB_HACK
	  define that instead waits in a loop when the action is to close
	  the conneciton (just quitting the thread is no good idea since
	  the mixer thread wants to access the action data first). I don't
	  intend to leave this forever there ... there must be some real
	  reason behind this nonsense. sem_wait() is a cancellation point,
	  dammit!

2007-04-11 08:34  thor

	* trunk/communicator.cxx, trunk/debug.hxx,
	  trunk/mixer_actions.cxx, trunk/socket_writer_data.cxx: More
	  paranoia in the string department ... as some of the strange
	  segfaults occur when accessing strings in socket_writer. But
	  that cannot be it... the other main part of segfaults shows when
	  joining threads. Hrsch.

2007-04-10 07:32  thor

	* trunk/communicator.cxx: Make the socket_writer undisturbed by
	  extending the lock; but as expected, that doesn't change the
	  crash (with bogus backtrace) that somehow still is present.
	  Gotta test on the opteron for a second opinion again.

2007-04-10 04:41  thor

	* trunk/tests/threaddata.cxx: a simple example to remind me of
	  when I need cleanup handlers

2007-04-10 03:24  thor

	* trunk/communicator.cxx: Oh, man. I _think_ I got the source of
	  the strange crashes. I got data corruption when multiple clients
	  knocked about the same time on a fast multi-core machine. The
	  port_watcher was missing some crucial locking on creation of
	  socketeers! Simple adding of the locks around socketeer creation
	  should prevent it from coinciding with socketeer destruction
	  happening at the same time.

2007-04-08 15:35  thor

	* trunk/communicator.cxx, trunk/netcomm.cxx, trunk/netcomm.hxx:
	  More debugging in hunting some subtle (speak: nasty) memory
	  corruption. When connecting/disconnecting 5 clients in parallel
	  (as fast as possible), dermixd segfaults at places around
	  destroying a socketeer and associated data. Not because of
	  invalid operations there, but because of the data being
	  illegally modified before. See: [communicator.cxx:241] debug:
	  [socketeer 5] joined _C 0x80855fc socket_writer_data _C
	  0x80854e8 socketeer_data _C 0x8085640 socket_buffer
	  [communicator.cxx:264] debug: [socketeer 7] startup _D 0x8083f20
	  socketeer_data [communicator.cxx:82] debug: [socketeer_data
	  -1210281040] deleting sb at 0x80845e0 _D 0x80845e0 socket_buffer
	  _F 0x80845e0 socket_buffer *** glibc detected *** ./dermixd:
	  double free or corruption (out): 0x080845e0 *** Segmentation
	  fault (core dumped) A negative number as socket descriptor is
	  not something usual and it's understandable that things go bad
	  after having such data. I was unable yet to reproduce this on an
	  other box than bede's Core2Duo. A dual Opteron (lower clock)
	  doesn't show this (yet). No chance on any single processor
	  system, I guess. ...there is a chance that this is some problem
	  with bede's installation... until one reproduces it elsewhere.

2007-04-08 14:30  thor

	* trunk/communicator.cxx, trunk/socket_writer_data.cxx,
	  trunk/socket_writer_data.hxx: More thread safety with more
	  careful locking in socket_writer. Do NOT put a debugging message
	  between delete string* and string* = NULL in a thread that may
	  be cancelled in between. Flush message queue in socketeer
	  cleaner. Also properly destroy the semaphore of the
	  socket_writer_data.

2007-04-08 13:11  thor

	* trunk/mixer_actions.cxx: for really real now

2007-04-08 13:10  thor

	* trunk/mixer_actions.cxx: for real now

2007-04-08 13:09  thor

	* trunk/mixer_actions.cxx: fixing serious thing: store the thread
	  id in advance because cancelling destroys the data structure!

2007-04-07 13:08  thor

	* trunk/in_mpg123.cxx: again...
	* trunk/in_mpg123.cxx: remove obsolete int i from debug messages

2007-04-07 12:33  thor

	* trunk/in_mpg123.cxx: remove unused variables

2007-04-07 11:27  thor

	* trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/mixer_actions.cxx: Leftover from last night: a "buffer"
	  command... not sure if this one will stay. It was intended as a
	  means to trigger zeroscan in the background before playing, but
	  that is happening in the background in audio_fifo now anyway.
	  One achievement of this is that I started to think about smarter
	  handling of mixer channel buffer, some way to retain contents
	  instead of always invalidating on any parameter change. Seeking
	  back in the input device when invalidating buffer for not
	  loosing that time... or just recalculate from existing device
	  buffer... Luckily, I don't have time for this now;-)

2007-04-07 10:06  thor

	* trunk/version.cxx: Next version will be 1.2.0 ...

2007-04-06 23:59  thor

	* trunk/input_base.cxx: The basic input implementation was missing.

2007-04-06 23:58  thor

	* trunk/Makefile, trunk/audio_fifo.cxx, trunk/audio_fifo.hxx,
	  trunk/comm_data.hxx, trunk/communicator.cxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/in_mpg123.cxx, trunk/in_mpg123.hxx, trunk/input.hxx,
	  trunk/mixer_actions.cxx, trunk/socket_writer_data.cxx: The
	  frenzy... added a the "length" command and noting of length when
	  stumbling over the end. Also integrated the front and back
	  zeroscan into audio_fifo, so that mpg123_input doesn't need to
	  artifically control these. ...and made the seek aware of the
	  zero offset, together with reworking readily_seek and general
	  cleanup of mpg123_input. Loads are now made using loadpaused
	  command of mpg123, which is one prerequesite to make the seeking
	  simpler. Downside is: These changes are not exactly small. But
	  they make sense.

2007-04-06 09:34  thor

	* trunk/in_mpg123.cxx: correct an error message (buffer instead of
	  prebuffer)

2007-04-06 08:54  thor

	* trunk/in_mpg123.cxx: more complete parsing of mpeg stream info
	  into samples per frame (detecting all of mpeg 1,2,2.5 layers
	  1,2,3)

2007-04-04 22:47  thor

	* trunk/socket_writer_data.cxx: and it should compile...

2007-04-04 22:45  thor

	* trunk/communicator.cxx, trunk/socket_writer_data.cxx: more bede
	  work, in cycle 2995 of the seek/play/close loop, I get
	  [communicator.cxx:343] debug: [socketeer 5] pushing action
	  [communicator.cxx:118] debug: [socket_writer] writing message at
	  (nil) Segmentation fault (core dumped) Got to see where this
	  null pointer came from. Added checks in socked_writer_data and
	  widened the mutex protection in the writer thread to cover both
	  the copy and the erase of the message queue. Why was it only
	  partial before?

2007-04-04 08:23  thor

	* trunk/communicator.cxx, trunk/socket_writer_data.cxx: After 1500
	  test cycles of connectin/playing/closing, Bede found dermixd
	  refusing connection - I don't know if it crashed or just was
	  stuck. The last messages in dermixd log: [communicator.cxx:275]
	  debug: [socketeer 8] got msg: close definition for close
	  [communicator.cxx:341] debug: [socketeer 8] pushing action
	  normally, the next would have been something like
	  [communicator.cxx:120] debug: [socket_writer] deleted old
	  message at 0x809f4c0 [communicator.cxx:120] debug:
	  [socket_writer] deleted old message at 0x80a7f50 Thus, I added
	  more debugging lines around these, to see if we really got some
	  invalid pointer there.

2007-04-04 08:19  thor

	* trunk/Makefile: honor CPPFLAGS

2007-04-03 00:10  thor

	* trunk/NOTES.fifo, trunk/audio_fifo.cxx, trunk/audio_fifo.hxx,
	  trunk/in_mpg123.cxx: The threading of audio_fifo wasn't really
	  proper, using two-way semaphoring now to ensure the reader does
	  not read after stop() returns. mpg123_input now not starting
	  prebuffer (the fifo) on every load action - for seeking, for
	  example - but only on the requested "main" load where one indeed
	  wants to resume normal decoding. Also, another noteworthy
	  situation in seek process is noted in debugging mode.

2007-04-02 06:06  thor

	* trunk/in_mpg123.cxx: stupid mistake with letting the loader
	  accept the surpise of ended track while wanting to pause...
	  instead of an else { /* do the real load */ }, it should be
	  if(!errcode){ ... }

2007-04-01 13:11  thor

	* trunk/audio_fifo.cxx, trunk/common.hxx, trunk/debug.hxx,
	  trunk/in_mpg123.cxx, trunk/piperead.cxx: More work on Bede's
	  thread fight: - now catching EAGAIN on pipe reads as non-fatal -
	  being more verbose about error codes in mpg123_input - end
	  reached is not fatal for load's pause command in mpg123_input

2007-04-01 03:30  thor

	* trunk/piperead.cxx: dito (one this time)

2007-04-01 03:29  thor

	* trunk/in_raw_s16.cxx, trunk/mixer_actions.cxx: fix some
	  debugging calls

2007-04-01 03:23  thor

	* trunk/audio_fifo.cxx: add a safety net to make sure the fifo
	  reader is active when waiting for it ...not totally sure,
	  though, more of a guess...

2007-04-01 02:59  thor

	* trunk/audio_fifo.cxx: spare the summoning of fifo reader when we
	  got end already

2007-04-01 02:32  thor

	* trunk/BUGS, trunk/action.cxx, trunk/action.hxx,
	  trunk/audio_fifo.cxx, trunk/audio_functions.cxx,
	  trunk/comm_data.cxx, trunk/common.hxx, trunk/communicator.cxx,
	  trunk/debug.hxx, trunk/in_dummy.cxx, trunk/in_mpg123.cxx,
	  trunk/in_raw_s16.cxx, trunk/in_sine.cxx, trunk/mixer.cxx,
	  trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_tools.cxx, trunk/piperead.cxx,
	  trunk/socket_writer_data.cxx, trunk/version.cxx: Bede has
	  persisting issues with repeated reloading. Includied my grown
	  debug macro set from pep-tracer and shaping up a good deal of
	  concerned code with it. Now global DEBUG and XDEBUG flags
	  trigger debugging info across components without remembering 10
	  flags.

2007-03-31 01:17  thor

	* trunk/audio_fifo.cxx, trunk/in_mpg123.cxx: Fixing some
	  scheduling/logic issues found by Daniel "Bede": - no seek before
	  play when (re)loading track - actually fix seek before play
	  (after reaching end / stop) with clearing the prebuffer flags
	  and also reactivating the prebuffer fifo thread for a case where
	  dermixd happily spent 100% cpu with waiting for it

2007-03-31 01:12  thor

	* trunk/in_dummy.cxx: fixing a debugging line

2006-12-16 17:06  thor

	* trunk/CHANGES, trunk/README, trunk/TODO: some docs cleanup for
	  1.1.1

2006-12-16 16:21  thor

	* trunk/BUGS, trunk/mixer.cxx: fixing that bug, prebuffer logic
	  was not complete... this really should trigger a 1.1.1 release,
	  pronto.

2006-12-16 15:16  thor

	* trunk/BUGS: investigating a nice timing bug with follow

2006-11-27 08:27  thor

	* trunk/mixer.cxx: ah, found it, increasing active_inputs whiel
	  not actually triggering some event to wait for is not good

2006-11-27 07:33  thor

	* trunk/mixer.cxx, trunk/scripts/undebug.pl, trunk/version.cxx:
	  strange stuff happening... Mixplayer wanting to nixfade (follow)
	  from nothing causes a FPE because of buffering 2048 samples and
	  then triggering playback of 0 samples (catching that now).
	  Furthermore, dermixd gets stuck somewhere without starting to
	  play something, no response, no new connections. Dunno where yet.

2006-11-26 11:23  thor

	* trunk/mixer_actions.cxx: failing audiodata on a channel with
	  active device did not trigger a failure message to the client,
	  does so now

2006-11-10 02:30  thor

	* trunk/out_alsa.cxx: little change for alsa: do not specify the
	  endianess inf ormat,. just use host default one - that may it
	  works without prob on ppc

2006-10-12 14:28  thor

	* trunk/frontend/simple_player: making simple_player ready for
	  standalone dermixd install

2006-10-12 14:24  thor

	* trunk/CHANGES: reflecting the important stuff for 1.1.0

2006-10-12 14:12  thor

	* trunk/CHANGES, trunk/mixer_actions.cxx: block negative seeks,
	  they go to the beginning now (used to end the track due to funny
	  computation)

2006-10-12 13:52  thor

	* trunk/README: did a test on Tru64

2006-10-12 13:05  thor

	* trunk/Makefile: another attempt to make it plain Tru64 compatible

2006-10-12 13:04  thor

	* trunk/Makefile, trunk/out_alsa.cxx: generic strict target support

2006-10-12 12:58  thor

	* trunk/Makefile: replaced the $< for Tru64 make

2006-10-12 12:27  thor

	* trunk/README: updated README ... getting ready for 1.1.0

2006-10-12 12:12  thor

	* trunk/version.cxx: going to be the fricking release in near
	  future

2006-10-12 12:11  thor

	* trunk/out_alsa.cxx, trunk/out_alsa_parm.hxx: reactivated buffer
	  parameter, simplified the name to alsa.buffer test if the manual
	  buffer setting really is ok!

2006-10-12 12:09  thor

	* trunk/in_mpg123.cxx, trunk/in_mpg123.hxx,
	  trunk/in_mpg123_parm.hxx: - destructor cleanups (safe on
	  premature death because of wrong parameters) - changed parameter
	  group name to mpg123 instead of mpg123_input

2006-10-12 12:06  thor

	* trunk/Makefile: Makefile with new dependencies for fifo.wait
	* trunk/audio_fifo.cxx, trunk/audio_fifo.hxx,
	  trunk/audio_fifo_parm.hxx, trunk/param_init.cxx: select() wait
	  timeout now as parameter (fifo.wait)

2006-10-12 12:03  thor

	* trunk/audio_buffer.hxx: debugging messages to stderr

2006-10-12 10:03  thor

	* trunk/mixer.cxx: some cleanup in follow code; buffer shift with
	  memmove, spotted some senseless a = ++a (though why does this
	  trigger gcc-4 to warn me about possibly undefined operaiton on
	  a?)

2006-10-12 00:21  thor

	* trunk/audio_fifo.cxx, trunk/audio_fifo.hxx: a bit of polish,
	  re-added the reader_pause thing... feels stable on the portege;
	  let's see what the alpha does

2006-10-11 23:41  thor

	* trunk/audio_fifo.cxx: The reading code inside the thread, not
	  sched_yield there anymore - the select() on the pipe should do
	  the trick. The omission of a sched_yield in the reader causes a
	  great increase in cpu utilization when some low priority process
	  would take it otherwise.

2006-10-11 22:41  thor

	* trunk/audio_fifo.cxx, trunk/piperead.cxx: hm, works quite good
	  on laptop now after increasing read block size and removing two
	  unnecessary sched_yields from just_read ...there is something to
	  gain in avoiding just_read at all and release the buffer lock
	  before select()...

2006-10-11 22:03  thor

	* trunk/audio_fifo.cxx: still working on it... the portege (alsa
	  output) seems to work nicely

2006-10-11 20:00  thor

	* trunk/audio_fifo.cxx, trunk/audio_fifo.hxx: Under heavy CPU
	  load, I can a) have top-priority buffer reader that blocks the
	  playback b) have a weak reader thread that doesn't claim the cpu
	  it needs (from other processes with lower priority) and thus
	  cannot fill the buffer I am fighting to find a way between these
	  extremes...

2006-10-09 19:01  thor

	* trunk/audio_fifo.cxx: let gimme() be nice to the reader...

2006-10-09 13:09  thor

	* trunk/audio_fifo.cxx, trunk/in_mpg123.cxx, trunk/piperead.cxx: I
	  had some logic flaws with pipe state flags... also in_mpg123
	  missed a proper check for end. I wonder how this could barely
	  work on the laptop like it did...

2006-10-09 10:59  thor

	* trunk/in_sine.cxx: little format fix in debugging line

2006-10-09 01:38  thor

	* trunk/audio_fifo.cxx, trunk/audio_fifo.hxx, trunk/in_mpg123.cxx,
	  trunk/in_mpg123_parm.hxx, trunk/piperead.cxx,
	  trunk/piperead.hxx: Hacked the background reader frame of
	  audio_fifo... now it can work as a real buffer. Thus the
	  prebuffer parameter is now in seconds better reflecting that
	  use. Some new parameters; also added experimental nice level for
	  decoder in the quest for smooth playback while filling huge
	  prebuffer. Mixed success with that (and chunked read) on the
	  laptop, need more testing.

2006-10-08 20:17  thor

	* trunk/mixer_actions.cxx: fixed a long-standing weirdness in
	  getstat format caused by a sprintf overflow (!); enlarged the
	  string buffer and using snprintf there now...

2006-10-08 16:58  thor

	* trunk/TODO: cleanup TODO a bit

2006-10-08 16:53  thor

	* trunk/BUGS, trunk/in_raw_s16.cxx: Fixed the raw intput not
	  recovering from eof. Stupid C++ stream seekg doesn't work after
	  eof - C89 fseek would! But anyway, I also forgot to clear the
	  input's at_end flag.

2006-10-08 10:10  thor

	* trunk/BUGS, trunk/Makefile, trunk/out_alsa.cxx,
	  trunk/out_alsa_parm.hxx, trunk/out_oss.cxx,
	  trunk/output_base.cxx: Found the cause for the long-standing
	  trouble with oss_threaded and alsa(_threaded) in the common
	  threaded code and fixed it. Now for both OSS and Alsa the
	  threaded variants are the default (aliased by oss and alsa) and
	  work!

2006-10-07 17:26  thor

	* trunk/BUGS, trunk/out_alsa.cxx: Ok, made alsa_serial the
	  default, noted the bug in threaded code. Have to test on the
	  media box that showed the most extreme effect.

2006-10-07 16:55  thor

	* trunk/out_alsa.cxx, trunk/out_alsa.hxx, trunk/output.cxx:
	  Harrharr! I think I'm getting down to the fact that the strange
	  stuttering is not due to alsa but to my threaded output ocde
	  messing up! Strange as it sounds - I consider this good news
	  because it means I can actually do something about it! I made a
	  alsa_serial following the example of oss_serial and this seems
	  to fix the stutter. I guess it is the same issue about
	  oss_threaded and alsa_threaded but only exhibiting differently
	  because of different buffers. Temporary workaround may be just
	  the increased alsa buffer (for smoothness on slow boxen) and
	  serialized playback...

2006-10-06 17:56  thor

	* trunk/out_alsa.cxx, trunk/out_alsa_parm.hxx, trunk/param.cxx,
	  trunk/param.hxx, trunk/param_init.cxx: feverishly hacking around
	  in alsa... witout success

2006-09-20 08:11  thor

	* trunk/piperead.cxx: little typo

2006-07-29 22:53  thor

	* trunk/BUGS, trunk/mixer_actions.cxx: noted the weird getstat bug

2006-07-29 22:48  thor

	* trunk/Makefile, trunk/in_raw_s16.cxx: some leftovers...
	  non-pedantic make targets, debugging in raw input

2006-07-18 13:28  thor

	* trunk/version.cxx: 1.1.0-beta1 tag is already there, spare some
	  trouble and name it 1.1.0-beta2

2006-07-18 13:11  thor

	* trunk/CHANGES: updated changes a bit, now this will be the
	  official 1.1.0-beta1

2006-07-18 13:04  thor

	* trunk/README: mention sine input, clarify some parts

2006-06-18 14:01  thor

	* trunk/audio_fifo.cxx, trunk/in_mpg123.cxx,
	  trunk/in_mpg123_parm.hxx, trunk/mixer.cxx,
	  trunk/mixer_actions.cxx: prepared for new mpg123, gapless option
	  - removed the ignoring in in_mpg123 that was not good after all
	  for non-mp3 files and oold mpg123 and is totally bad with new
	  mpg123

2006-05-29 10:52  thor

	* trunk/Makefile, trunk/audio_buffer.hxx, trunk/debug.hxx,
	  trunk/in_dummy.cxx, trunk/in_sine.cxx, trunk/in_sine.hxx,
	  trunk/in_sinus.cxx, trunk/in_sinus.hxx, trunk/input.cxx,
	  trunk/mixer_data.cxx, trunk/scripts, trunk/scripts/undebug.pl:
	  So, this commit includes: - new debugging "framework" utilizing
	  variadic macros as printf/void wrappers - drop of
	  -pedantic-errors on standard gnu target since variadic marcos
	  aren't strictly allowed - added strict-gnu target along with
	  filter script to remove the debugging macro calls to still be
	  compatible to ANSI C++ - completed the sine_input sine wave
	  generator with table precalculation (instead of calculating
	  sine() over and over again) Playing with some sines is fun! I
	  really think about making this a bit more sophisticated with a
	  synth device featuring many waves with different
	  frequencies/amplitudes and even some other fun like builtin
	  volume ramps (or just multiplicative compination of a longer
	  wave...). Such a device would also have no prob implementing the
	  set_eq() method;-) Back to the real world: I have to think again
	  about integer data types esp. in audio_buffer... some size_t
	  could be appropriate at places.

2006-05-28 23:39  thor

	* trunk/in_dummy.cxx, trunk/in_dummy.hxx, trunk/in_sinus.cxx,
	  trunk/in_sinus.hxx, trunk/mixer_tools.cxx: grmbl... commiting
	  the re-dumbed dummy and the spawn-off sinus before renaming it
	  to sine as it should be in english... Subversion is too dumb
	  sometimes! I cannot reconsider the naming locally without
	  needless hassle...

2006-05-28 18:56  thor

	* trunk/in_dummy.cxx, trunk/in_dummy.hxx, trunk/mixer_tools.cxx:
	  dummy makes noise (sinus)

2006-05-25 14:08  thor

	* trunk/Makefile: Makefile cleanup, addition of oneshot target
	  (have to think of some benchmark...)

2006-05-11 18:51  thor

	* trunk/frontend/shuffle: It is nice to have some shuffler for a
	  start...

2006-05-02 22:05  thor

	* trunk/BUGS, trunk/README, trunk/action.cxx, trunk/action.hxx,
	  trunk/communicator.cxx, trunk/communicator_actions.cxx,
	  trunk/communicator_actions.hxx, trunk/main.cxx,
	  trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_tools.cxx, trunk/out_alsa.cxx, trunk/out_oss.cxx,
	  trunk/out_oss.hxx, trunk/output.cxx, trunk/output.hxx,
	  trunk/output_base.cxx: It should have been just the addition of
	  the serial oss hack, well... - made OSS output dual mode: can be
	  oss_serial and oss_threaded (outload ch oss /dev/dsp will create
	  serial oss by default) Explanation: The double-buffered and
	  multithreaded oss output has too fast / skippy playback (on
	  Linux only?). I have no idea why the writes apparently aren't as
	  blocking as they should be. Maybe adjusting some buffering
	  parameters would help? I don't intend to read OSS manuals
	  forever... maybe at some time someone comes up with a real
	  fix... - discovered and fixed _serious_ bug with scripted
	  commands and their return/error values in process_actions()
	  (this code should be optimized) - extended helpfulness with full
	  api listing on command line and through socket - prepared REAMDE
	  for beta release

2006-05-02 13:20  thor

	* trunk/tests/debug.cxx, trunk/tests/stress.pl: som (obsolete - I
	  have sth. better in some otehr project) debugging thoughts and
	  some stress

2006-04-14 20:27  thor

	* trunk/NOTES.output, trunk/out_oss.cxx, trunk/output_base.cxx:
	  playing with OSS that supposedly has been broken in a way since
	  the beginning but wasn't able to show until I implemented the
	  multithreaded double-buffering. Now the cpu can deliver data too
	  fast and the I/O is not full blocking. Cannot heal this with
	  alsa oss emu (even block mode shows this), let's see what native
	  oss says.

2006-04-14 16:28  thor

	* trunk/in_mpg123.cxx: better error message: decoder can also
	  faile because not there

2006-04-09 17:41  thor

	* trunk/Makefile, trunk/version.cxx: version, info

2006-04-02 07:21  thor

	* trunk/mixer_tools.cxx: more debugging for finding this strange
	  get_audiodata problem on my P100 testbed

2006-03-27 14:15  thor

	* trunk/mixer_actions.cxx, trunk/socket_writer_data.cxx,
	  trunk/socket_writer_data.hxx: Bug! I dropped the [saying] prefix
	  in action handling restructuring. It's there again... But I'd
	  like to have all this syntactical stuff at one singel place...
	  maybe have some internal saying and fullstat actions and then do
	  saying.msg(string); swr->write(string) ?

2006-03-26 20:42  thor

	* trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/mixer_actions.cxx: Man, I have to come to an end!
	  Different stuff to do! But, here it comes: - One API change
	  because it makes _so_ much sense: pitch (reintroduced) is for
	  _relative_ speed changes (additive to speed factor). - more
	  commands return a meaningful value (bass, mid, treble, speed,
	  pitch (returning new absolute speed factor), volume

2006-03-26 19:51  thor

	* trunk/mixer.cxx, trunk/netcomm.cxx: Hah! I found this nasty bug
	  because of that dermixd sometimes dies when killing a client -
	  again result of using very slow machines! Regardless of ignoring
	  or SIGPIPE or doing send(..., MSG_NOSIGNAL), the sending of \r\n
	  that was added at some time in a second call to send() raised
	  SIGPIPE when client was already gone! Is this good? Checking
	  first if the first send) succeeded seems to cure this...

2006-03-26 18:53  thor

	* trunk/mixer_data.cxx: debugging line

2006-03-26 18:21  thor

	* trunk/communicator.cxx, trunk/in_mpg123.cxx,
	  trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_tools.cxx: Fixed a (last?) logic bug with
	  notifications in socketeer; in the course of finding that
	  improved the error messages and propagation of which. I smell
	  1.1-beta1...

2006-03-26 17:35  thor

	* trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/mixer_data.cxx: Proper showscript for nscript actions
	  (when count > 1 show as nscript, otherwise as simeple script)

2006-03-26 17:22  thor

	* trunk/mixer.cxx, trunk/mixer_actions.cxx: A nice realtime
	  feature for practically no cost: script/nscript commands with
	  negative time mean script this action _now_. That can be used to
	  make some funky looping on button push... or whatever;-)

2006-03-26 17:09  thor

	* trunk/in_mpg123.cxx, trunk/mixer_actions.cxx: Got the rseek bug:
	  the rseek action handling wasn't updated for scripted action...
	  now seek and rseek really do the same apart from the actual
	  seeking position.

2006-03-26 15:59  thor

	* trunk/NOTES.memleak, trunk/action.cxx, trunk/communicator.cxx,
	  trunk/communicator_actions.cxx, trunk/in_mpg123.cxx,
	  trunk/in_mpg123.hxx, trunk/mixer_actions.cxx,
	  trunk/mixer_data.cxx, trunk/mixer_data.hxx,
	  trunk/output_base.cxx, trunk/socket_writer_data.cxx: Some small
	  things (p.ex. nscript command) ... and some important memory
	  leak fixes. See NOTES.memleak . ATM I am investigating a bug
	  (neverending seeked-playing state and crash, eventually) with
	  "nscript 0 10 100 ... rseek -0.1" where the functionally
	  identical variant with "nscript 0 10 100 seek 99.9" works.

2006-03-26 13:34  thor

	* trunk/action.cxx: +end shall be -end!

2006-03-26 00:12  thor

	* trunk/action.cxx, trunk/communicator.cxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/mixer_actions.cxx, trunk/mixer_data.cxx: Finally got it
	  working again! There's quite some debugging code to remove, but
	  I've heard some music again:-) On the outside, there is now
	  working: - printscript - delscript Um, ah ... that's all? A lot
	  of work in the background, though...

2006-03-24 08:20  thor

	* trunk/INSTALL, trunk/Makefile, trunk/action.cxx,
	  trunk/action.hxx, trunk/comm_data.cxx, trunk/comm_data.hxx,
	  trunk/communicator.cxx, trunk/communicator_actions.cxx,
	  trunk/communicator_actions.hxx, trunk/mixer.cxx,
	  trunk/mixer_actions.cxx, trunk/mixer_data.cxx,
	  trunk/mixer_data.hxx, trunk/tests/action.cxx: Ok... the help
	  function is there. After a lot of work the basic functionality
	  of the new sction system seems to established. Help function is
	  there and working - the help messages themselves may need some
	  more readability. The copying of actions is not so simple - I'll
	  have to write the operator= thingy to copy the strings, pointers
	  'n stuff correctly.

2006-02-28 22:42  thor

	* trunk/action.cxx, trunk/action.hxx,
	  trunk/communicator_actions.hxx: small action type cleanup

2006-02-26 22:38  thor

	* trunk/Makefile, trunk/action.cxx, trunk/action.hxx,
	  trunk/communicator.cxx, trunk/communicator.hxx,
	  trunk/communicator_actions.cxx, trunk/communicator_actions.hxx,
	  trunk/comparse.cxx, trunk/comparse.hxx, trunk/tests,
	  trunk/tests/action.cxx, trunk/tests/action.sh: Reworking the
	  socketeer action interpretation stuff to be more manageable...
	  it started with wanting to add the printscript action. Then I
	  realized that this isn't going to be fun with the current code -
	  So, we'll see when the next commit with actually compiling code
	  will come. At least I made a test for the action parsing that is
	  now inside the action class.

2006-02-24 10:04  root

	* dermixd/trunk, trunk: restructure 2

2006-02-23 08:54  thomas

	* dermixd/trunk/action.cxx, dermixd/trunk/common.hxx,
	  dermixd/trunk/frontend/simple_player, dermixd/trunk/mixer.cxx,
	  dermixd/trunk/mixer_actions.cxx, dermixd/trunk/mixer_data.cxx,
	  dermixd/trunk/mixer_tools.cxx, dermixd/trunk/version.cxx:
	  Stepped to alpha8 but that one won't see the light, I guess.
	  Digging the hole with better action parsing (adding the support
	  for printing an action out again). I'll have to make this beta1
	  soon to stop me trying to put new stuff in (and instead find
	  that memory leak).

2006-02-23 08:41  thomas

	* dermixd/trunk/action.hxx, dermixd/trunk/audio_buffer.hxx,
	  dermixd/trunk/audio_fifo.hxx, dermixd/trunk/audio_functions.hxx,
	  dermixd/trunk/comm_data.hxx, dermixd/trunk/common.hxx,
	  dermixd/trunk/communicator.hxx, dermixd/trunk/comparse.hxx,
	  dermixd/trunk/in_dummy.hxx, dermixd/trunk/in_mpg123.hxx,
	  dermixd/trunk/in_mpg123_parm.hxx, dermixd/trunk/in_raw_s16.hxx,
	  dermixd/trunk/input.hxx, dermixd/trunk/main_parm.hxx,
	  dermixd/trunk/mixer.hxx, dermixd/trunk/mixer_actions.hxx,
	  dermixd/trunk/mixer_data.hxx, dermixd/trunk/mixer_stuff.hxx,
	  dermixd/trunk/mixer_tools.hxx, dermixd/trunk/netcomm.hxx,
	  dermixd/trunk/out_alsa.hxx, dermixd/trunk/out_dummy.hxx,
	  dermixd/trunk/out_mme.hxx, dermixd/trunk/out_oss.hxx,
	  dermixd/trunk/out_raw_s16.hxx, dermixd/trunk/out_text.hxx,
	  dermixd/trunk/output.hxx, dermixd/trunk/param.hxx,
	  dermixd/trunk/param_init.hxx, dermixd/trunk/piperead.hxx,
	  dermixd/trunk/secsleep.hxx,
	  dermixd/trunk/socket_writer_data.hxx, dermixd/trunk/version.hxx:
	  All headers get these ifndef wraps ... I'm fed up with caring
	  myself for correct dependent header inclusion. One step further
	  to slow compiles... Furthermore, there's something going on with
	  action.hxx and upcoming action.cxx: actions will (de)parse
	  themselves.

2006-01-24 19:41  thomas

	* dermixd/trunk/frontend/README: just a bit more text for alpha7

2006-01-24 19:34  thomas

	* dermixd/trunk/CHANGES, dermixd/trunk/README,
	  dermixd/trunk/audio_fifo.cxx, dermixd/trunk/audio_fifo.hxx,
	  dermixd/trunk/in_mpg123.cxx, dermixd/trunk/in_mpg123.hxx,
	  dermixd/trunk/in_mpg123_parm.hxx, dermixd/trunk/main.cxx,
	  dermixd/trunk/tests/playtwice.dermixd,
	  dermixd/trunk/version.cxx: more configuration (zero scanning
	  stuff), going alpha7

2006-01-24 18:58  thomas

	* dermixd/trunk/param.cxx, dermixd/trunk/param.hxx: parameters
	  also as signed int

2006-01-24 18:32  thomas

	* dermixd/trunk/in_mpg123.cxx: little tweaking for only resizing
	  prebuffer with resopect to changed channel count... and I think
	  forgot to tell something earlier: dermixd now can play http mp3
	  streams (some barriers removed)

2006-01-24 18:00  thomas

	* dermixd/trunk/audio_fifo.cxx, dermixd/trunk/frontend,
	  dermixd/trunk/frontend/simple_player,
	  dermixd/trunk/in_mpg123.cxx, dermixd/trunk/in_mpg123.hxx,
	  dermixd/trunk/in_mpg123_parm.hxx, dermixd/trunk/tests,
	  dermixd/trunk/tests/gapless.dermixd,
	  dermixd/trunk/tests/playtwice.dermixd: simple player in repo
	  (Perl modules still need to be pulled from ThOrMA) important:
	  mpg123 prebuffer variable now specifying a factor compared to
	  mixer buffer instead of sample number

2006-01-24 15:04  thomas

	* dermixd/trunk/audio_fifo.cxx, dermixd/trunk/mixer.cxx: Yeah,
	  backzeroscan still had an unsigned "underflow" that was
	  strangely triggered by loading a file twice (and waiting for
	  end)...

2006-01-24 13:37  thomas

	* dermixd/trunk/frontend, dermixd/trunk/frontend/LICENSE,
	  dermixd/trunk/frontend/README: going to add frontend to svn tree

2006-01-23 23:00  thomas

	* dermixd/trunk/communicator.cxx, dermixd/trunk/in_mpg123.cxx,
	  dermixd/trunk/mixer_tools.cxx: Nice. There are the verbose error
	  messages _and_ support for mpeg internet streams (via http://
	  url). The support mainly comes from removing artificial barriers
	  and weakening file tests... Don't forget the bugs... I still
	  have some crashes on unusual client kills / action procesing.

2006-01-23 12:02  thomas

	* dermixd/trunk/comm_data.cxx, dermixd/trunk/comm_data.hxx,
	  dermixd/trunk/communicator.cxx, dermixd/trunk/in_mpg123.cxx,
	  dermixd/trunk/input.hxx, dermixd/trunk/mixer_data.cxx,
	  dermixd/trunk/mixer_tools.cxx: added better error responses,
	  mainly for input now... needs testing

2006-01-14 04:08  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_fifo.cxx,
	  dermixd/trunk/mixer.cxx, dermixd/trunk/mixer_data.cxx,
	  dermixd/trunk/out_mme.cxx, dermixd/trunk/tests,
	  dermixd/trunk/tests/signtheint.cxx, dermixd/trunk/version.cxx: A
	  day at the XP1000... essentially found another 32/64bit bug with
	  implicit casts between signed/unsigned long/int...

2006-01-04 21:27  thomas

	* dermixd/trunk/LICENSE, dermixd/trunk/Makefile,
	  dermixd/trunk/README, dermixd/trunk/common.hxx,
	  dermixd/trunk/communicator.cxx, dermixd/trunk/main.cxx,
	  dermixd/trunk/main_parm.hxx, dermixd/trunk/out_oss.cxx,
	  dermixd/trunk/output_base.cxx, dermixd/trunk/version.cxx,
	  dermixd/trunk/version.hxx: Some cosmetics, increase of standard
	  buffer size (still not really satisfied with performance on my
	  laptop, though). With the slight code changes and the doc update
	  it'll be called alpha5.

2006-01-04 15:48  thomas

	* dermixd/trunk/CHANGES, dermixd/trunk/INSTALL,
	  dermixd/trunk/Makefile, dermixd/trunk/README: Doc cleanups. This
	  will go public as 1.1.0-alpha4.

2005-12-29 14:06  thomas

	* dermixd/trunk/defaults.hxx, dermixd/trunk/param.cxx: deleted
	  obsoleted defaults.hxx and changed param_space::as_bool() a bit
	  to prevent a compiler warning.

2005-12-27 05:46  thomas

	* dermixd/trunk/CHANGES, dermixd/trunk/INSTALL,
	  dermixd/trunk/README, dermixd/trunk/TODO,
	  dermixd/trunk/main.cxx: This is the alpha4, then. Updated some
	  text stuff - notably reduced the TODO list for 1.1 to the point
	  of getting the outputs a bit more tidy and the tru64/mme just
	  working. When that is done and I found the current memory leak,
	  it should be beta1 release.

2005-12-27 05:14  thomas

	* dermixd/trunk/param.cxx: made the param stuff parse name=value
	  as main.name=value (in addition to .name=value)

2005-12-27 05:06  thomas

	* dermixd/trunk/in_mpg123.cxx: now being smart enough to start
	  mpg123 with -m to get mono from the beginning when mixer is in
	  mono mode

2005-12-27 04:59  thomas

	* dermixd/trunk/audio_functions.cxx, dermixd/trunk/mixer.cxx: A
	  speed of 0 doesn't mean that the title is stopped... It used to
	  be that way, but now one can slow a title down to the ground and
	  get it spinning again with the speed command only.

2005-12-27 04:48  thomas

	* dermixd/trunk/mixer_actions.cxx: a comma before dev in fullstat

2005-12-27 04:22  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_functions.cxx,
	  dermixd/trunk/audio_functions.hxx, dermixd/trunk/in_mpg123.cxx,
	  dermixd/trunk/in_mpg123_parm.hxx, dermixd/trunk/main.cxx,
	  dermixd/trunk/main_parm.hxx, dermixd/trunk/mixer.cxx,
	  dermixd/trunk/out_oss.cxx, dermixd/trunk/out_oss.hxx: Wow! I
	  flexibilized the mixing to care for mono/stereo combinations!
	  Still fixed is the choice for _one_ mixer and output channel
	  count and rate; but the inputs are now flexible in both aspects.
	  Keep in mind that I'm talking about music here: 5.1 surround
	  sound with 6 channels is not the topic. Mono/stereo is. It's not
	  difficult to add generic mixing from N channels to N channels
	  (though it would be quite a bit more cpu intensive), but generic
	  mixing from N to M channels is difficult! The mpg123 input and
	  oss/alsa output (mme should be ok, too, raw and text are
	  indifferent anyway) have been adapted to this situation so
	  far... and so good. new parameters: main.channels,
	  mpg123_input.prebuffer

2005-12-27 01:16  thomas

	* dermixd/trunk/audio_buffer.hxx: Reallocate with channel count
	  change wouldn't have worked. Should now!

2005-12-26 20:06  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/action.h,
	  dermixd/trunk/action.hxx, dermixd/trunk/audio_buffer.h,
	  dermixd/trunk/audio_buffer.hxx, dermixd/trunk/audio_fifo.cpp,
	  dermixd/trunk/audio_fifo.cxx, dermixd/trunk/audio_fifo.h,
	  dermixd/trunk/audio_fifo.hxx, dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.cxx,
	  dermixd/trunk/audio_functions.h,
	  dermixd/trunk/audio_functions.hxx, dermixd/trunk/comm_data.cpp,
	  dermixd/trunk/comm_data.cxx, dermixd/trunk/common.h,
	  dermixd/trunk/common.hxx, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/communicator.cxx, dermixd/trunk/communicator.h,
	  dermixd/trunk/communicator.hxx, dermixd/trunk/comparse.cpp,
	  dermixd/trunk/comparse.cxx, dermixd/trunk/comparse.h,
	  dermixd/trunk/comparse.hxx, dermixd/trunk/defaults.h,
	  dermixd/trunk/defaults.hxx, dermixd/trunk/in_dummy.cpp,
	  dermixd/trunk/in_dummy.cxx, dermixd/trunk/in_dummy.h,
	  dermixd/trunk/in_dummy.hxx, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.cxx, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/in_mpg123.hxx, dermixd/trunk/in_raw_s16.cpp,
	  dermixd/trunk/in_raw_s16.cxx, dermixd/trunk/in_raw_s16.h,
	  dermixd/trunk/in_raw_s16.hxx, dermixd/trunk/input.cpp,
	  dermixd/trunk/input.cxx, dermixd/trunk/input.h,
	  dermixd/trunk/input.hxx, dermixd/trunk/main.cpp,
	  dermixd/trunk/main.cxx, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer.cxx, dermixd/trunk/mixer.h,
	  dermixd/trunk/mixer.hxx, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_actions.cxx, dermixd/trunk/mixer_actions.h,
	  dermixd/trunk/mixer_actions.hxx, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.cxx, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_data.hxx, dermixd/trunk/mixer_stuff.h,
	  dermixd/trunk/mixer_stuff.hxx, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/mixer_tools.cxx, dermixd/trunk/mixer_tools.h,
	  dermixd/trunk/mixer_tools.hxx, dermixd/trunk/netcomm.cpp,
	  dermixd/trunk/netcomm.cxx, dermixd/trunk/netcomm.h,
	  dermixd/trunk/netcomm.hxx, dermixd/trunk/out_alsa.cpp,
	  dermixd/trunk/out_alsa.cxx, dermixd/trunk/out_alsa.h,
	  dermixd/trunk/out_alsa.hxx, dermixd/trunk/out_dummy.cpp,
	  dermixd/trunk/out_dummy.cxx, dermixd/trunk/out_dummy.h,
	  dermixd/trunk/out_dummy.hxx, dermixd/trunk/out_mme.cpp,
	  dermixd/trunk/out_mme.cxx, dermixd/trunk/out_mme.h,
	  dermixd/trunk/out_mme.hxx, dermixd/trunk/out_oss.cpp,
	  dermixd/trunk/out_oss.cxx, dermixd/trunk/out_oss.h,
	  dermixd/trunk/out_oss.hxx, dermixd/trunk/out_raw_s16.cpp,
	  dermixd/trunk/out_raw_s16.cxx, dermixd/trunk/out_raw_s16.h,
	  dermixd/trunk/out_raw_s16.hxx, dermixd/trunk/out_text.cpp,
	  dermixd/trunk/out_text.cxx, dermixd/trunk/out_text.h,
	  dermixd/trunk/out_text.hxx, dermixd/trunk/output.cpp,
	  dermixd/trunk/output.cxx, dermixd/trunk/output.h,
	  dermixd/trunk/output.hxx, dermixd/trunk/output_base.cpp,
	  dermixd/trunk/output_base.cxx, dermixd/trunk/param_init.cxx,
	  dermixd/trunk/piperead.cpp, dermixd/trunk/piperead.cxx,
	  dermixd/trunk/piperead.h, dermixd/trunk/piperead.hxx,
	  dermixd/trunk/secsleep.cpp, dermixd/trunk/secsleep.cxx,
	  dermixd/trunk/secsleep.h, dermixd/trunk/secsleep.hxx,
	  dermixd/trunk/socket_writer_data.cpp,
	  dermixd/trunk/socket_writer_data.cxx,
	  dermixd/trunk/socket_writer_data.h,
	  dermixd/trunk/socket_writer_data.hxx, dermixd/trunk/version.h,
	  dermixd/trunk/version.hxx: 1. big renaming of stuff to cxx/hxx
	  2. default daemon mode _on_

2005-12-26 18:25  thomas

	* dermixd/trunk/param.cxx: some debugging wiped from param

2005-12-26 18:22  thomas

	* dermixd/trunk/param.hxx: more PR for param, sorry

2005-12-26 18:18  thomas

	* dermixd/trunk/param.hxx: A bit of class/struct/typedef
	  confusion. Nicer to have it straight.

2005-12-26 18:10  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/action.h,
	  dermixd/trunk/audio_buffer.h, dermixd/trunk/audio_fifo.cpp,
	  dermixd/trunk/audio_fifo.h, dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.h, dermixd/trunk/comm_data.cpp,
	  dermixd/trunk/comm_data.hxx, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/comparse.cpp, dermixd/trunk/comparse.h,
	  dermixd/trunk/defaults.h, dermixd/trunk/in_dummy.cpp,
	  dermixd/trunk/in_dummy.h, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/in_mpg123_parm.hxx,
	  dermixd/trunk/in_raw_s16.cpp, dermixd/trunk/in_raw_s16.h,
	  dermixd/trunk/input.cpp, dermixd/trunk/input.h,
	  dermixd/trunk/main.cpp, dermixd/trunk/main_parm.hxx,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer.h,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_actions.h,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_stuff.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/mixer_tools.h, dermixd/trunk/netcomm.cpp,
	  dermixd/trunk/netcomm.h, dermixd/trunk/out_alsa.cpp,
	  dermixd/trunk/out_alsa.h, dermixd/trunk/out_dummy.cpp,
	  dermixd/trunk/out_dummy.h, dermixd/trunk/out_mme.cpp,
	  dermixd/trunk/out_mme.h, dermixd/trunk/out_raw_s16.cpp,
	  dermixd/trunk/out_raw_s16.h, dermixd/trunk/out_text.cpp,
	  dermixd/trunk/out_text.h, dermixd/trunk/output.cpp,
	  dermixd/trunk/output.h, dermixd/trunk/output_base.cpp,
	  dermixd/trunk/param.cxx, dermixd/trunk/param.hxx,
	  dermixd/trunk/param_init.cxx, dermixd/trunk/param_init.hxx,
	  dermixd/trunk/piperead.h, dermixd/trunk/secsleep.cpp,
	  dermixd/trunk/secsleep.h, dermixd/trunk/socket_writer_data.cpp,
	  dermixd/trunk/socket_writer_data.h,
	  dermixd/trunk/tests/stringer.cxx, dermixd/trunk/version.h: Huge
	  thing. That is the result when you are visiting Grandma over
	  Christmas... 1. Introduced a parameter space to be used by main
	  and components (such as mpg123_input for decoder binary/path) -
	  set via group.name=value on command line - will be connected
	  with a configuration file in future 2. Made code more pretty -
	  added some lines about the whereabouts and license to the top of
	  every file - added some comments here and there - unified the
	  tab indendation style 3. Started transition to coherent .cxx and
	  .hxx (to distict that it is C++ code and not just C, for the
	  headers, too) - this means some new files - old files will
	  follow with transition of repository to svn since you can do
	  that there properly

2005-12-26 18:03  thomas

	* dermixd/trunk/piperead.cpp: The bugger from debugging: I got
	  non-smooth playback because of a secsleep(0.1) in just_read()
	  that was added for debugging!! Of course this is gone now...

2005-12-24 02:07  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/main.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/out_mme.cpp,
	  dermixd/trunk/output_base.cpp, dermixd/trunk/piperead.cpp:
	  Results from some days with the XP 1000... most important change
	  in the mme output with change in timing (making the double
	  buffer really work). I really was able to hear proper sound with
	  raw input! Problem is still that I cannot remove an mme output
	  properly and that sadly, with input from mpg123 the old
	  performance problem is there again. With (insanely) increased
	  buffer size, it is better but I still have to make an actual
	  sound check for that. That is not the final word, though: There
	  must be a basic problem with the piping... mpg123 alone needs
	  some secs to decode the test track (anbout 3 min long)! The cpu
	  performance of an alpha ev67 should really be sufficient!

2005-12-10 22:32  thomas

	* dermixd/trunk/CHANGES, dermixd/trunk/README, dermixd/trunk/TODO,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h: Fixed
	  homeless [saying]s not to poke with invalid pointers... a bit
	  docu update (including reduction in TODO;-)

2005-12-10 20:10  thomas

	* dermixd/trunk/mixer_actions.cpp: only one correct line end for
	  watch messages

2005-12-10 04:00  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/action.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/main.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_actions.h,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_stuff.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/netcomm.cpp, dermixd/trunk/netcomm.h,
	  dermixd/trunk/socket_writer_data.cpp,
	  dermixd/trunk/socket_writer_data.h: OK... alpha2. Really added
	  another thread per socket in dividing reading and writing task.
	  Did somehow complicated stuff. The global (or passed through)
	  stat_strings are gone. mixer doesn't have to wait on writes it
	  issues. There may be the performance benefit. On the other hand
	  it's quite an overhead compared to just writing but that just
	  wasn't right. In the course of revising socket writing I also
	  made the lowlevel stuff make the line breaks - I decided to use
	  \r\n as "internet line end". On the reading side there is still
	  \r\n or \n supported... \r alone not really. Let's see how bad I
	  am now again in the leaking trap. I do some dangerous separation
	  of new and deletes over different threads...

2005-11-21 04:37  thomas

	* dermixd/trunk/CHANGES: A surface changes file.
	* dermixd/trunk/INSTALL, dermixd/trunk/README,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/main.cpp: Will I
	  call it alpha1? Maybe after testing the new output structure on
	  the XP1000 at least once.

2005-11-21 03:52  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/out_mme.cpp, dermixd/trunk/out_mme.h,
	  dermixd/trunk/out_oss.cpp, dermixd/trunk/output.h,
	  dermixd/trunk/output_base.cpp: Supporting mp2, mp3 and mpg audio
	  as supposedly played by mpg123 (type of mpg123_input now
	  "mpeg"); extended the acceptance to layer 2 in mpg123_input.
	  Also, you can choose a mixer/output sample rate as commandline
	  parameter (to optimally use your 48KHz files and your
	  48KHz-capable audio hardware -- like my laptop's Maestro 2E
	  chip;-); inputs with different sample rate are resampled
	  on-the-fly to match this, of course. Next step would be to
	  support mono operation and mixed mono/stereo (general
	  multichannel surround coming???). Mono upmix or Stereo downmix
	  would be nice (downmix for my laptop's mono speaker and for
	  saving battery time...). I'll try to get Mono upmix into 1.1;
	  the downmixing... not sure.

2005-11-21 03:21  thomas

	* dermixd/trunk/out_oss.cpp: Pulled the OSS output out of
	  debugging world into real world.

2005-11-21 02:25  thomas

	* dermixd/trunk/NOTES.memleak: Memory leaks are a constant focus
	  and deserve such a file.

2005-11-21 02:24  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/NOTES.buffering,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/out_mme.cpp,
	  dermixd/trunk/out_oss.cpp, dermixd/trunk/output_base.cpp: Got
	  some gotchas; mainly the missing active check in
	  output::activate that caused the 100% cpu trouble along with
	  exhausted fds. Still, I'm not sure if this will reappear when
	  there is _really_ a shortage in fds. Next is the fully new-style
	  mme_output (and tomorrow the realization that double buffering
	  is not enough... But I'm willing to face that with the new
	  framework).

2005-11-20 23:18  thomas

	* dermixd/trunk/audio_buffer.h, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/netcomm.cpp, dermixd/trunk/output_base.cpp: Fixes
	  for compilation with gcc 3.4 and NPTL (where there is apparently
	  no ESRCH?).

2005-11-20 18:27  thomas

	* dermixd/trunk/NOTES.output, dermixd/trunk/output_base.cpp: The
	  new place for the output logic and threading along with some
	  notes.

2005-11-20 18:26  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/NOTES.buffering,
	  dermixd/trunk/audio_buffer.h, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_actions.h, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/out_alsa.cpp,
	  dermixd/trunk/out_alsa.h, dermixd/trunk/out_dummy.cpp,
	  dermixd/trunk/out_dummy.h, dermixd/trunk/out_mme.cpp,
	  dermixd/trunk/out_mme.h, dermixd/trunk/out_oss.cpp,
	  dermixd/trunk/out_oss.h, dermixd/trunk/out_raw_s16.cpp,
	  dermixd/trunk/out_raw_s16.h, dermixd/trunk/out_text.cpp,
	  dermixd/trunk/out_text.h, dermixd/trunk/output.h: Huge stuff.
	  Reworking of the output to have generic multithreading in
	  output_base (coming soon) and the special output really just
	  providing the special stuff. Not easily broken up into smaller
	  pieces. Lots of code changed and reorganized in my special way
	  of "extreme" programming. It's working in principle, but I'm not
	  sure about the performance and there is some bad memory leaking
	  on loading a different output on an output channel. Test was
	  switching between alsa and oss; about 2MB per change were added
	  to vmsize. Also dermixd goes finally to raging 100% cpu and
	  silent but running output on some final change to oss (didn't
	  see on changig to alsa). Although static output setup should
	  work nicely, some extensive debugging is ahead.

2005-11-20 14:43  thomas

	* dermixd/trunk/communicator.cpp: Fixed error responses of
	  scripting attempts to have [script/offending_command] error...
	  instead of [offending_command] error... and allowed nearly all
	  script commands since I thought the user should know what he
	  does and DerMixD should robust enough to handle that.

2005-11-19 19:24  thomas

	* dermixd/trunk/audio_buffer.h: ...and it should take the argument
	  per reference, not copy!

2005-11-19 19:23  thomas

	* dermixd/trunk/audio_buffer.h: added swap method for
	  double-buffering; it belongs here...

2005-11-19 18:07  thomas

	* dermixd/trunk/audio_buffer.h: zero() also sets the fill to zero
	  now.

2005-11-19 15:19  thomas

	* dermixd/trunk/NOTES.buffering: I have a plan about output

2005-11-19 15:01  thomas

	* dermixd/trunk/TODO, dermixd/trunk/out_alsa.cpp,
	  dermixd/trunk/out_mme.cpp, dermixd/trunk/out_mme.h: In the way
	  to multithreaded MME and with the growing desire to handle this
	  stuff more properly...

2005-11-08 23:14  thomas

	* dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h: Oh, the scripting was quickly
	  spitten in code form. Fixed (need confirming tests): a) wrong
	  sorting of script actions in channel (now ascending in time) b)
	  now existing possibility to really execute more than one action
	  in one mixer chunk c) bad memory leaking (script actions weren't
	  deleted!)

2005-11-07 21:34  thomas

	* dermixd/trunk/TODO, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/main.cpp, dermixd/trunk/mixer_actions.cpp: Both
	  say and watch with safe behaviour; cmdline-switchable to
	  depreciated old style via -O/--oldstyle. Updated and reorganized
	  TODO for upcoming 1.1 . New is the realized (mentally) need for
	  distinct socket writer and reader threads.

2005-11-07 20:45  thomas

	* dermixd/trunk/communicator.cpp: The say output is preceeded by
	  [saying] now. I regard this as bugfix and not feature change
	  since bad use of [say] strings is bound to happen some time. It
	  is enough for a client library to distinguish "[command]
	  response" and "chX: Ys, playstatus" (the latter will probably
	  stay but there may come a more bulletproof replacement a la
	  "[chX] Ys, playstatus"); truly free-form messages will get
	  misinterpreted eventually. When I think about it: I will do the
	  [say] and [chX] change in 1.1 with the option to use the old
	  behaviour via cmdline switch; being deprecheated and completely
	  dropped in 2.0 .

2005-10-30 22:34  thomas

	* dermixd/trunk/mixer.cpp: Yay! How did I manage to stumble over
	  this? The smoother wasn't exactly smoothing when the leader had
	  actually zero fill (calculate the chances to get that case - I
	  got it!). Now it's not reading one step into the void in that
	  case (buffer.ptr[-1]!) anymore but simply using the startval
	  from fullsample that is there for about the same purpose at
	  different location.

2005-10-30 22:05  thomas

	* dermixd/trunk/out_text.cpp: Hm. Version 1.1 needs file.clear()
	  for anything to work with text output. Version 1.0 not? Strange.

2005-10-30 18:26  thomas

	* dermixd/trunk/audio_buffer.h: a performance experiment...
	  resulting in a comment

2005-10-30 17:47  thomas

	* dermixd/trunk/NOTES.buffering: Just some thoughts concerning
	  buffers 'n' threads.. partially in action nowadays.
	* dermixd/trunk/defaults.h, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/out_alsa.cpp: Beware of
	  daemons and threads! Alsa output being multithreaded broke
	  daemon mode ... Become daemon first and then make spawns.
	  Established practice. One change in behaviour compared to
	  earlier versions is consequently that the only information left
	  on the console by the daemon is the sole line about becoming
	  daemon... To compensate that, there is now a command line option
	  for redirecting stdout/err to something else than /dev/null.

2005-10-30 15:06  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/Makefile,
	  dermixd/trunk/audio_buffer.h, dermixd/trunk/audio_fifo.cpp,
	  dermixd/trunk/main.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/out_raw_s16.cpp,
	  dermixd/trunk/out_raw_s16.h, dermixd/trunk/out_text.cpp,
	  dermixd/trunk/out_text.h, dermixd/trunk/output.cpp: Fixed
	  gapless following in multiple ways: Follower starting too early
	  (its first sole buffer mixed with the shared one that should
	  preceede it), wrong positioning on follow-buffer-fill and
	  resample... In the course of events, raw_s16 and text outputs
	  got added.

2005-10-24 10:37  thomas

	* dermixd/trunk/out_alsa.cpp, dermixd/trunk/out_alsa.h,
	  dermixd/trunk/out_mme.h: Introduced multithreaded
	  double-buffering for Alsa (still experimental but working quite
	  well). Next is MME. Do I want it to do for OSS, too? Then it
	  would somehow call for a genrela solution with the output
	  modules only providing the thread worker functions and mixer
	  handling the semaphores...

2005-10-09 11:27  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/TODO,
	  dermixd/trunk/netcomm.cpp: One bug and some thoughts...

2005-10-04 00:52  thomas

	* dermixd/trunk/audio_buffer.h, dermixd/trunk/audio_fifo.cpp,
	  dermixd/trunk/audio_functions.cpp, dermixd/trunk/mixer.cpp: The
	  questionable attempt to include some smoothing on gapless
	  playback (follow mode) lead to the discovery of the real cause
	  for me not really liking the sound: the following audio was put
	  at the wrong position in the buffer! There I have my serious
	  stupid bug in the 1.0.0 release! Never trust an 1.0! 1.1 is
	  coming;-)

2005-10-03 22:56  thomas

	* dermixd/trunk/input.h, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/output.h: input_data and output_data are now
	  classes with some housekeeping... random position/length numbers
	  for a virgin input channel look weird.

2005-10-03 16:10  thomas

	* dermixd/trunk/out_alsa.cpp: Set the alsa buffer to 4 times the
	  output device buffer... looks like a good compromise on my
	  laptop to deliver smooth playback and low latency. I see the
	  need for additional outload parameters here.

2005-10-03 15:50  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/defaults.h, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/out_alsa.cpp,
	  dermixd/trunk/out_alsa.h, dermixd/trunk/out_oss.cpp,
	  dermixd/trunk/output.cpp: Whoa! I woke up this morning at though
	  the dermixd could react faster. Identified the slow-downer to be
	  the oss output - it seems to have a rather huge buffer that one
	  _maybe_ can tune somehow... at least the alsa oss emulation has
	  this. I wanted to see if this is better with native alsa support
	  - and yes: It reacts pleasingly fast to commands concerning
	  output now. Downside is that with the current settings there
	  seems to be the need for a bit more buffering; be it buffer on
	  the alsa side of (better) more effective double-buffering by
	  dermixd. I have slight clicks that most likely mark the edge of
	  an empty audio device buffer. There occured some glitches during
	  the latency/alsa investigation hat I took care of... outputs not
	  reactivating without need and state of a channel is restored
	  when a load/seek fails, too (used to be only on success;
	  rendering the channel unusable when there was no success). So,
	  I'm starting to call this 1.1-beta1 since there are many code
	  fixes (including bugs and anhancements/code conformity cleanups)
	  and two experimental new outputs.

2005-10-03 09:02  thomas

	* dermixd/trunk/Makefile: removed main build dependeccy on
	  main.cpp since they already depend on main.o...

2005-10-03 02:21  thomas

	* dermixd/trunk/audio_buffer.h, dermixd/trunk/communicator.h,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/input.h,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/output.h: Good C++
	  needs complete typedefs.

2005-10-03 02:14  thomas

	* dermixd/trunk/out_oss.cpp, dermixd/trunk/out_oss.h: removed
	  misleading comment from header - only the code in the .cpp has
	  roots in mixplayd.

2005-10-03 01:52  thomas

	* dermixd/trunk/common.h: Some setups need separate #include
	  <unistd.h>, some don't. It's best to have it there.

2005-10-03 01:14  thomas

	* dermixd/trunk/Makefile: main.o is just an object...

2005-10-03 01:08  thomas

	* dermixd/trunk/netcomm.cpp, dermixd/trunk/piperead.cpp: Example
	  of apparent code cleanup and too much listening to compiler
	  warnings without thinking can break the code: The "=" in state =
	  1 is really meant to be single.

2005-10-01 09:37  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/communicator.h,
	  dermixd/trunk/out_mme.cpp, dermixd/trunk/out_mme.h: Compiles
	  under Tru64. Test has to wait (need physical access to the
	  XP1000 for MME output testing).

2005-09-27 13:49  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/out_mme.cpp, dermixd/trunk/out_mme.h,
	  dermixd/trunk/output.cpp: - removed unneccessary inclusion of
	  special output device headers (now only output.cpp needs these
	  as it was intended) - initial attempt to have Tru64/MME support;
	  quite sure that it won't even compile yet

2005-09-27 04:12  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.h, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer.h,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/netcomm.cpp,
	  dermixd/trunk/netcomm.h, dermixd/trunk/output.cpp,
	  dermixd/trunk/piperead.cpp: Another huge step (for one
	  programmer...); Have tweaked the source again to please compaq
	  cxx better (not fully pleased there, though). Some stuff that
	  works on g++ produces a bug on cxx (bzero() on sockaddr_in!)...
	  got now a single source base that compiles on both setups. Tests
	  of the server/communication part went well on Tru64. An usable
	  audio output is still missing (although there exists OSS for
	  Tru64, which _should_ work well with oss_input - I'll introduce
	  a make target for that.) Still have to adapt the initial setup
	  to the different systems as well as fix a simple bug where the
	  load semaphore is not triggered on failed (output) device
	  creation but the daemon is waiting for it.

2005-09-27 00:14  thomas

	* dermixd/trunk/piperead.cpp: ...and another hit for the Compaq's
	  cxx: I didn't check for the value of state, I made it 1!

2005-09-27 00:05  thomas

	* dermixd/trunk/mixer_data.cpp: It needed the Compaq C++ to tell
	  me that I was checking an unsigned value of being negative!

2005-09-27 00:01  thomas

	* dermixd/trunk/netcomm.cpp: really removed MSG_NOSIGNAL; have
	  still to check how dermixd breaks without it

2005-09-26 17:46  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.h, dermixd/trunk/common.h,
	  dermixd/trunk/in_dummy.cpp, dermixd/trunk/in_dummy.h,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/in_raw_s16.cpp, dermixd/trunk/in_raw_s16.h,
	  dermixd/trunk/input.h, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_tools.h, dermixd/trunk/netcomm.cpp,
	  dermixd/trunk/out_dummy.cpp, dermixd/trunk/output.h,
	  dermixd/trunk/secsleep.cpp, dermixd/trunk/secsleep.h: While
	  trying to create an output device for Tru64/MME I am attempting
	  to make the code more portable / standard compilant as I
	  apparently need the Compaq C++ to accept it. Main changes for
	  now are usage of nanosleep instead of usleep and the drop of
	  long long for sample positions (reducing the maximum
	  unproblematic track length for 44.1kHz rate to one day on my
	  pentium2...).

2005-09-22 23:01  thomas

	* dermixd/trunk/TODO: Scripting could be more comfortable...(?)

2005-09-18 20:07  thomas

	* dermixd/trunk/uebung/~out_dummy.cpp: wech damit

2005-09-18 19:28  thomas

	* dermixd/trunk/INSTALL, dermixd/trunk/README,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/main.cpp, dermixd/trunk/version.h: Call it version
	  1.0.0. Final. Only modifications concern version strings and
	  docs.

2005-08-05 18:48  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/tests,
	  dermixd/trunk/tests/sizeof.cpp,
	  dermixd/trunk/tests/virtual_audio_buffer.h: Just some thinking
	  about class/struct sizes with memory alignment.

2005-07-10 21:13  thomas

	* dermixd/trunk/TODO: At last updated the todo list... it shrunk;-)

2005-07-10 20:39  thomas

	* dermixd/trunk/in_mpg123.cpp: okay... now beta1: at last the
	  compiler on the k5 machine complained about fprintf %ld getting
	  a long long argument

2005-07-10 19:11  thomas

	* dermixd/trunk/Makefile: Just updated the Makefile to be on the
	  safe side.

2005-07-10 19:09  thomas

	* dermixd/trunk/README, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/communicator.h, dermixd/trunk/mixer_actions.cpp: I
	  call it officially beta1. Feature freeze with the say command
	  and working scripting (say just triggered a Schroeding-Bug).

2005-07-10 18:17  thomas

	* dermixd/trunk/NOTES.script, dermixd/trunk/README,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_data.cpp: updated docs and some fixes to
	  scripting

2005-07-10 17:09  thomas

	* dermixd/trunk/BUGS: I just wondered how problematic it is to
	  have different (main and socketer) threads write to a socket at
	  once... noted this.

2005-07-10 16:56  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_actions.h,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_stuff.h: So, a first apparently working
	  implementation of scripting. I had to do it. After updating some
	  docs and adding maybe one notify action I'll make official beta1
	  of it.

2005-07-10 16:55  thomas

	* dermixd/trunk/main.cpp: changed version to beta1 because it will
	  be that soon, made daemon mode the default and added possibility
	  to change mixer buffer on the command line (and changed the
	  default to 1024, giving at best 0.023s main loop time... one
	  needs some granularity for fading). Tried to set the buffer size
	  to 1 and this didn't work out; no crash, but immediate stopping
	  of track. 2 is OK, but my laptop isn't quite able to work on
	  that in real-time;-). One has to weight cpu load, reaction time
	  and quality of resampling to find an optimal value.

2005-07-10 13:17  thomas

	* dermixd/trunk/action.h: be safe and initialize these pointers
	  with NULL

2005-07-10 10:16  thomas

	* dermixd/trunk/audio_functions.h, dermixd/trunk/in_dummy.cpp,
	  dermixd/trunk/in_dummy.h, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/in_raw_s16.cpp,
	  dermixd/trunk/in_raw_s16.h, dermixd/trunk/input.h,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_tools.h: further hacking on channels to get
	  scripting to work; upgraded integer positions/lengths (samples)
	  to long long to support big files (?) and allow an output
	  channel to count the time correctly for about some million
	  years;-)

2005-07-10 09:45  thomas

	* dermixd/trunk/out_dummy.cpp, dermixd/trunk/out_oss.cpp,
	  dermixd/trunk/output.h: also output knows a position

2005-07-10 08:07  thomas

	* dermixd/trunk/mixer.cpp: made the "finished normally" message
	  appear again... it is nice to see sth. positive sometimes.

2005-07-10 08:04  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/communicator.h, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp: put
	  the action class definition into a separate header (and updated
	  Makefile) since there is now this timeaction thingie in
	  mixer_data

2005-07-10 07:45  thomas

	* dermixd/trunk/mixer_data.h: goto script: created a base channel
	  class

2005-07-10 07:44  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/netcomm.cpp: less
	  debugging...

2005-07-10 07:40  thomas

	* dermixd/trunk/communicator.cpp: removed unused variable and
	  added a clarification

2005-07-10 07:29  thomas

	* dermixd/trunk/NOTES.script, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_actions.h,
	  dermixd/trunk/mixer_stuff.h, dermixd/trunk/tests: So,
	  preparations for scripting: processing of actions in a
	  subroutine in mixer_actions Oh, and some more calls to an
	  enhanced telltime() (now also monitoring changing status).

2005-07-10 07:27  thomas

	* dermixd/trunk/tests/memleak: ...

2005-07-10 07:26  thomas

	* dermixd/trunk/tests/emptyvector.cpp: In preparation for the
	  scripting, this test investigates one question: Does it save
	  time to check for an empty vector before trying to make a for()
	  over it? Answer: No. It adds time!

2005-07-10 07:22  thomas

	* dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h: added
	  hadstatus (for telltime to also consider changed status)

2005-07-10 07:21  thomas

	* dermixd/trunk/communicator.h: added the script action IDs

2005-07-10 07:18  thomas

	* dermixd/trunk/communicator.cpp: removed some debugging (from the
	  memory leak campaign)

2005-07-10 07:02  thomas

	* dermixd/trunk/in_dummy.cpp, dermixd/trunk/in_dummy.h: moved
	  set_eq to the cpp file for clarity... inlining is not so
	  important for the dummy.

2005-07-10 06:49  thomas

	* dermixd/trunk/in_raw_s16.cpp: allow NULL comdat in raw input
	  actions, too

2005-07-09 19:06  thomas

	* dermixd/trunk/in_mpg123.cpp: again allow empty comdat in set_eq

2005-07-06 19:24  thomas

	* dermixd/trunk/NOTES.script, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_data.h: Stop me if you can: Really thinking
	  about addition of scripting in version 1.0...

2005-07-06 10:13  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/INSTALL,
	  dermixd/trunk/Makefile, dermixd/trunk/README,
	  dermixd/trunk/mixer_tools.cpp: marked the leaking problem as
	  fixed, updated some text. I want to make beta1 after addition of
	  notification feature (with subsecond granularity to let clients
	  just wait till 245.567 seconds of loaded track to then issue
	  some fading or whatever) ... this could lead to the scripting,
	  but that's post-1.0

2005-07-06 09:31  thomas

	* dermixd/trunk/common.h, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/piperead.cpp: no
	  memleak4: the gradual increase at the beginning of decoder
	  lifetime seems to be saturating; so I guess this is one-time
	  mpg123 stuff. Checked by repeatedly loading on channel with
	  removing/adding channel. Reaches the same peak mem usage
	  (eventually). Fixed decoder type detection by recognizing that
	  strcasecmp(...) == 0 is actually the _good_ case. Now we have
	  more long-lived decoders... (I think I had that before)

2005-07-06 08:41  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/input.cpp,
	  dermixd/trunk/mixer_actions.cpp: memleak3: made mpg123 handle
	  the prebuffer in main thread - so it gets destructed properly. A
	  miplayer test run with some titles showed nice matching of
	  contructions and destructions of objects. Safe there. Still
	  outstanding: 8K (well, something between 4 and 8) mem increase
	  on loading of new track; which btw. is still accompanied by
	  creation of a new decoder even if both are mp3. So, watch out
	  for memleak4 to be fixed soon!

2005-07-06 08:00  thomas

	* dermixd/trunk/mixer_data.cpp: memleak2: someone had to delete
	  this audiodata...

2005-07-05 23:56  thomas

	* dermixd/trunk/audio_buffer.h, dermixd/trunk/audio_fifo.cpp,
	  dermixd/trunk/comm_data.cpp, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/in_dummy.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_raw_s16.cpp, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.h,
	  dermixd/trunk/netcomm.cpp, dermixd/trunk/out_dummy.cpp,
	  dermixd/trunk/out_oss.cpp: Big step taken: Got one silly memory
	  leak; Socketeer used to create actions while storing pointers to
	  them in the actions list. These were NOT destructed by
	  actions.clear()! Would have to manage that locally. But with
	  this situation one can just put a pointer to the existing static
	  action and peace. Still outstanding is a chunk of mem lost on
	  every track load in mpg123 and/or in the fading process from
	  mixplayer. I'll get that.

2005-06-06 08:29  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/mixer.cpp: vainly searching the memory leak...

2005-05-05 16:36  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_buffer.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/netcomm.cpp,
	  dermixd/trunk/tests/memleak/thread.cpp: Bad. Bad. Really: Bad.
	  There is this leaking... quickly checked out some memory
	  checkers, but they can't tell me something meaningful (valgrind
	  doesn't like delete on pointers that I clearly created via new
	  before, sees errors on every thread creation and finds leaks in
	  the summary giving no clue where they originated)... Even worse,
	  I tested on a modern gentoo machine (NPTL) and besides the
	  program needing the doubled amount of memory from the start (or
	  vmsize lying?) it looks like a leak of 57 byte on my laptop
	  becomes over 2000 byte there. I thought I had it running, but I
	  didn't realize that in fact I had it running _wild_!
	  Furthermore: Crashing on shutdown when started w/o normal setup.
	  During destruction of port_watcher (which has undergone changes
	  concerning possible leaking). I'm somehow lost. Probably a year
	  is not enough to get this beast stable. Heading on to other
	  work...

2005-04-30 23:15  thomas

	* dermixd/trunk/mixer_data.cpp: made check for correct type of
	  device case-insensitive...

2005-04-30 23:03  thomas

	* dermixd/trunk/comm_data.cpp, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/communicator.h, dermixd/trunk/mixer_data.cpp: Yes,
	  there is a steady leakig when there is a client communicating.
	  Manifests in a linear increase of 4K steps (hm... how big is a
	  page on my system? ;-) and in bigger jumps on loading of a new
	  track. There is some space to be freed.

2005-04-30 20:04  thomas

	* dermixd/trunk/comparse.cpp: formatting and clearing of tokens to
	  be sure...

2005-04-30 19:36  thomas

	* dermixd/trunk/comm_data.cpp, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/netcomm.cpp, dermixd/trunk/netcomm.h,
	  dermixd/trunk/tests/memleak,
	  dermixd/trunk/tests/memleak/thread.cpp: further cleanup of
	  communicator.cpp and repairing a stupid case of search/replace
	  there (had disabled all pause commands) failed to reprocude that
	  crashes now; so maybe these correlated with my thread safety
	  experiments (the file under tests/memleak gave me some
	  substantial clearness on object destruction (or lack of) in
	  threads. Reminder: Blocks are left without care on cancellation
	  (at cancellation points)!

2005-04-30 17:55  thomas

	* dermixd/trunk/comm_data.cpp: Forgot to add this one: packed
	  comm_data class in an own file to ease debugging...

2005-04-30 15:47  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/mixer_data.cpp: Some
	  cleanups, as always... and: Oh, yeah... 1.0.0-beta just went a
	  step more far away. 1. again seen a segfault on mp3 load
	  attempts without mpg123 available 2. instead of straight
	  checking that, I once looked a the static variables that are
	  supposed to be destructed in socketeer. Seen: On cancel no
	  automatic destruction because of leaving the block. Better do it
	  ALL in the cleanup handler (implemented... somehow) 3. That
	  impression drew my attention on missing destruction/deallocation
	  in general. A test with while [ 1 ]; do echo "close" | telnet
	  localhost 8888; done revealed the sad fact that there seems to
	  be some memory leaking. I'm not sure if this is something done
	  by the threading system (and cleaned when it reaches some size)
	  or if it is my fault in not deallocating _all_ stuff. Another
	  thing was a [main] error cancelling thread! I'm scared. 3 3
	  during this loop. No thread. How come? I'll have to take a very
	  close look at all this thread stuff again!

2005-04-30 11:17  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/TODO, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/comparse.cpp,
	  dermixd/trunk/comparse.h, dermixd/trunk/in_dummy.cpp,
	  dermixd/trunk/in_dummy.h, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/out_oss.cpp: Got the
	  false success: mixer overwrote the error code without reason and
	  sense. Further Cleanups.

2005-04-28 21:24  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/out_oss.cpp: detected and resolved:
	  outchannel::load() destroyed the resusable devices... changed
	  "==" to "!=". Better.

2005-04-28 20:26  thomas

	* dermixd/trunk/README, dermixd/trunk/communicator.cpp: cleaned up
	  socketeer, added outplay... still not perfect, though: an
	  outplay oss /Dev/dsp shouldn't succeed, but on a physics pool pc
	  it said "success"

2005-04-27 23:47  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_buffer.h,
	  dermixd/trunk/audio_fifo.cpp, dermixd/trunk/audio_fifo.h,
	  dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.h, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/in_dummy.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_raw_s16.cpp, dermixd/trunk/input.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/out_dummy.cpp, dermixd/trunk/out_oss.cpp,
	  dermixd/trunk/output.cpp: Part of code revision and commenting
	  done... And stumbled over one serious bug: mixer's load() tried
	  to delete a pointer that is already NULL (happened when mpg123
	  not in PATH and I made more than one attempt to load a file)

2005-03-10 10:35  thomas

	* dermixd/trunk/BUGS: Bad thing.

2005-03-09 00:50  thomas

	* dermixd/trunk/README: Update reflecting the multiline fullstat
	  return.

2005-03-09 00:49  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/mixer_actions.cpp: Noted the
	  weird distortion (again?) on my Portege; most probably not the
	  fault of dermixd, but one never knows... Also updated the
	  fullstat message to match "[command] + ... \n[command] -" for
	  multiline responses.

2005-03-06 03:10  thomas

	* dermixd/trunk/README, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/communicator.h, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_tools.cpp, dermixd/trunk/mixer_tools.h,
	  dermixd/trunk/out_dummy.cpp, dermixd/trunk/output.h: With a bit
	  of luck this will be 1.0.0-alpha2. Implemented the outchannel
	  commands (load, start, pause, stop). Polished communication with
	  verbose errors and more fullstat. ...not to forget some cleanups
	  here and there.

2005-03-05 03:15  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/NOTES.performance,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/version.h: stop
	  command and track end now trigger a potential seek to 0 (that is
	  executed when the track is actually played again) Calling the
	  current version alpha1.6 to indicate progress to alpha2 (just
	  addeing the outchannel commands for the already coded
	  infrastructure)

2005-03-05 01:16  thomas

	* dermixd/trunk/mixer.cpp: Follow action now does not make the
	  follower inherit the leader's settings... I think that would
	  confuse more that it would help. Stop action now implies a seek
	  to 0 that is carried out on next play/buffering; this was easy
	  due to the work on correct buffer re-read;-) One has to bear
	  this in mind now: when the status is "stopped" due to an order,
	  the old position is displayed but a start order results in
	  playback from the beginning. When one wants playback from the
	  place of interruption, there is the pause command.

2005-03-05 00:55  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/in_dummy.cpp,
	  dermixd/trunk/in_dummy.h, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/in_raw_s16.cpp,
	  dermixd/trunk/in_raw_s16.h, dermixd/trunk/input.cpp,
	  dermixd/trunk/input.h, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/mixer_tools.h: Hopefully made the follower stuff
	  straight together with reset_buffer (special care inside
	  mpg123_input). Also made input device type simply a string as in
	  the outputs... kept strcasecmp, though.

2005-03-04 13:13  thomas

	* dermixd/trunk/communicator.h, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/mixer.cpp: more caution on following; still having
	  the distorted output on volume change of follower (maybe other
	  changes, too)

2005-03-04 12:31  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h: Got
	  the seek hang, still the sampleseek(NULL, ...) is troublesome.
	  Have to either use it in a special way or provide some waiter...

2005-03-04 11:46  thomas

	* dermixd/trunk/in_mpg123.cpp: using finalize_single_waiter now on
	  senseless seek

2005-03-04 11:43  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_data.cpp: - OSS
	  init error return value in mixer init changed - bad bug in
	  mpg123_input::sampleseek fixed: when already at desired
	  position, noone cared about the waitress ... but wait: it still
	  needs a change for NULL comm_data

2005-03-04 00:32  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_tools.cpp, dermixd/trunk/mixer_tools.h:
	  reset_input_buffer makes sense inside inchannel.

2005-03-03 02:30  thomas

	* dermixd/trunk/mixer.cpp: Cosmetics.

2005-03-03 02:25  thomas

	* dermixd/trunk/output.cpp: This was missing...

2005-03-03 01:59  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_buffer.cpp,
	  dermixd/trunk/audio_buffer.h, dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/common.h, dermixd/trunk/in_dummy.cpp,
	  dermixd/trunk/in_raw_s16.cpp, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_actions.h, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/mixer_tools.h, dermixd/trunk/out_dummy.cpp,
	  dermixd/trunk/out_dummy.h, dermixd/trunk/out_oss.cpp,
	  dermixd/trunk/out_oss.h, dermixd/trunk/output.h: Hmpf. Got the
	  revenge for the quick hacking of the output part. Various places
	  needed and do still need changes to provide dynamic output
	  channels. Got the basic infrastructure now, including quite some
	  related and not so related fixes. Steps towards dynamic
	  (internal) audio format support are taken: BUFFER_SAMPLES & Co
	  are tunable global variables and now all device and mixer
	  (inchannel) buffers are dynamic -- featuring my first template
	  class, generic_audio_buffer! What's missing is mainly the
	  interface: Commands for socketeers and mixer actions. Note for
	  later: Change the input device type code to work like in the
	  outputs - these numerical constants make no real sense.

2005-02-28 19:09  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/Makefile,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer.h: made in_mpg123
	  more forgiving on vain play attempts when already at end of
	  track - used to die there, now just giving no audio since it is
	  no audio there. One may consider if mixer should block such
	  attempts but clients could be smart enough to avoid this anyway
	  (or do not come across the idea at all;-). added -n option for
	  not creating the "normal" initial setup todo: full output
	  channel command set; not necessarily new outputs but the
	  structure should be there for a version 1.0

2005-02-25 15:27  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/README,
	  dermixd/trunk/in_mpg123.cpp: Yeah! Found new bug (or revived
	  old?)

2005-02-25 01:30  thomas

	* dermixd/trunk/Makefile: depending on version.h!

2005-02-25 01:27  thomas

	* dermixd/trunk/INSTALL: be nice, give INSTALL

2005-02-25 01:16  thomas

	* dermixd/trunk/README: typo

2005-02-25 01:14  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/DECODERS,
	  dermixd/trunk/LICENSE, dermixd/trunk/NOTES.buffers,
	  dermixd/trunk/README, dermixd/trunk/TODO,
	  dermixd/trunk/version.h: Going alpha.

2005-02-24 20:32  thomas

	* dermixd/trunk/in_mpg123.cpp: now looking for "@R MPG123 (ThOr)"

2005-01-08 02:59  thomas

	* dermixd/trunk/input.h, dermixd/trunk/main.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/version.h: Code cleanup.

2004-11-22 19:31  thomas

	* dermixd/trunk/in_mpg123.cpp: As promised.

2004-11-22 19:30  thomas

	* dermixd/trunk/in_mpg123.cpp: I had added a bug with interpreting
	  the format string from mpg123... now initializing
	  data.specials[0] when needed in backwatch. On the next commit I
	  will have remove the debugging flags...

2004-11-18 14:39  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h:
	  added at least some reaction to fadeout command

2004-11-18 14:07  thomas

	* dermixd/trunk/communicator.cpp: Too dumb: Now the other commands
	  than id should be working again.

2004-11-18 13:51  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h:
	  Added id command, so that the mixplayd front end can check with
	  whom it is talking.

2004-11-18 13:23  thomas

	* dermixd/trunk/in_raw_s16.cpp: Correct answer for seeks.

2004-11-18 13:01  thomas

	* dermixd/trunk/in_raw_s16.cpp: How smart! To hide the file.read()
	  call in the debug message...

2004-11-18 12:55  thomas

	* dermixd/trunk/in_raw_s16.cpp, dermixd/trunk/in_raw_s16.h: Took a
	  look again at the raw input; removed obsolete method and
	  (tadaa!) disabled some debugging.

2004-11-18 12:31  thomas

	* dermixd/trunk/mixer_tools.cpp, dermixd/trunk/piperead.cpp:
	  Further debugging disable and - more important - gave
	  just_read()'s select a non-zero timeout so that it doesn't take
	  full cpu with busy waiting when for some reason the pipe data
	  needs its time (network problems, bad cdrom...).

2004-11-18 12:05  thomas

	* dermixd/trunk/mixer_tools.cpp: Again debugging disabled.

2004-11-18 12:02  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer_data.cpp: More
	  debugging disabled.

2004-11-18 11:58  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/piperead.cpp: A
	  variable only needed for debugging...

2004-11-18 11:51  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/piperead.cpp: Just
	  removed eloquently the debug flags... did I mention earlier that
	  the pipe/netcomm code has been modified to recognize dead end?
	  Not to forget the one issue that is there with that (when I do
	  remember correctly): Thinking too early that the end has come...
	  Check that!

2004-11-17 21:49  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/mixer.cpp: I hopefully got the eq issue now:
	  Initial eq is attended, others are issued by readily when there
	  are new settings and mpg123 has completed any former seq
	  commands. set_eq() now only sets the flag for new settings that
	  readily is looking for on every awakening (yes, this means
	  unneccessary variable lookup and bool interpretation 99.9% of
	  the time, but considering the calculation amount of the "real"
	  work, this shouldn't affect performance in any measurable way).
	  When this really works, then it should be time to tidy up the
	  code, make error codes/messages clear and improve control
	  interface compatibility with mixplayd... and call it a version!

2004-11-17 00:10  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/mixer.cpp: In the middle of the mess: watched
	  set_eq or not. Block or mess around. Dammed!

2004-11-16 05:56  thomas

	* dermixd/trunk/audio_fifo.cpp, dermixd/trunk/audio_fifo.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/netcomm.cpp,
	  dermixd/trunk/piperead.cpp: - made idle mixer really idle
	  (introduced semaphore for pending actions) - code cleanup -
	  started giving constant names for action errors; communicator
	  should have some functions that turn the values into messages
	  for the socket... - mixer can sleep on command now TODO: no
	  blocking on decoder death! ... is done, but now it triggers too
	  early now, it seems. check just_read. and: killing of client now
	  kills dermixd, too, because it cannot cancel the thread!? - It
	  tries to cancel it twice! [socketeer 10] waiting for command
	  [socketeer 10] Got message with 5 characters... namely: close
	  [socketeer 10] adding to action list... [socketeer 10]
	  waiting... [socketeer 10] waiting done [socketeer 10] waiting
	  for command [socketeer 10] Error on reading:-1, faking close
	  command [socketeer 10] Got message with 5 characters... namely:
	  close [socketeer 10] adding to action list... [socketeer 10]
	  waiting... executing actions [main] executing action type 207
	  1100583423[main] giving compat stats: 88:88:88 ch 0 playing
	  00:10..04:57 (68) [1.00] ch 1 stopped 00:00..03:24 (84) [1.00]
	  [main] notifying socketeer [main] executing action type 209
	  [main] wanna cancel thread 32771 [main] cancelled thread
	  [socketeer 10] cleaning... [socketeer 10] cleaned... [main]
	  joined thread [main] executing action type 209 [main] wanna
	  cancel thread 32771 [main] error cancelling thread! I'm scared.
	  Why are there two closes one one socketeer???

2004-11-12 15:16  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/communicator.h,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h:
	  Alrighty, then! A seek should now circumvent a single sudden
	  track end; also made actions on channels exclusive in mixer
	  (excluding eq actions... they should follow in principle...)

2004-11-11 21:14  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/in_mpg123.cpp: Added
	  workaround for failed load on last track's end and notes about
	  doing it right some time...

2004-11-11 07:16  thomas

	* dermixd/trunk/BUGS: Got it and found new issue. Hurray!

2004-11-10 18:58  thomas

	* dermixd/trunk/mixer.cpp: Arrg! I had such a nice text on the
	  topic and the the cvs commit screwed! So, the short version,
	  then: The unattended seek from the stop action apparently gets
	  in clinch with the loading of new track. Baaaaaaaaaaaaaad.
	  Disables the implicit seek on stop, it was questionable anyway.
	  Hopefully this does the job.

2004-11-10 07:34  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/mixer.cpp: The wrong setting
	  wasn't all... all I won are surviving decoders. Still premature
	  loading of new tracks.

2004-11-10 01:10  thomas

	* dermixd/trunk/mixer.cpp: Deactivated futile setting of at_end...
	  this may be the cause for the trouble. I'll give it a run this
	  night... if it works, I'll still have to fuigure out why this
	  setting is bad only in certain cases. If it is bad.

2004-11-08 23:17  thomas

	* dermixd/trunk/in_mpg123.cpp: More debugging, what else?

2004-11-08 18:02  thomas

	* dermixd/trunk/in_mpg123.cpp: Not 1, 0!

2004-11-08 07:08  thomas

	* dermixd/trunk/in_mpg123.cpp: More debug messages focussing on
	  at_end.

2004-11-08 06:54  thomas

	* dermixd/trunk/BUGS: Added the dead decoder incident.

2004-11-07 22:18  thomas

	* dermixd/trunk/BUGS, dermixd/trunk/in_mpg123.cpp: More
	  debugging... see BUGS.

2004-11-07 11:58  thomas

	* dermixd/trunk/in_mpg123.cpp: Narrowing it down... looks like it
	  is one of the play condition's constituents that is wrongly
	  triggered. More debug on that to first find wich one it is.
	  Later thw why and how.

2004-11-07 04:43  thomas

	* dermixd/trunk/in_mpg123.cpp: Hopefully more useful debug info...
	  still narrowing down this nasty thing that seems to occur on
	  slow machines only. Seen that for some reason the mpg123 input
	  kills itself after the second ignore after load... Have to know
	  if it is the reading routine not being bullet proof or just a
	  malformed condition.

2004-10-24 17:52  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer_data.cpp:
	  Trivial and pretty dumb segmentation fault provoking use of
	  uninitialized value in debug info of mpg123_input. Got that.

2004-10-24 17:34  thomas

	* dermixd/trunk/daemon.c, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/input.h, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/output.h, dermixd/trunk/piperead.cpp: Removed now
	  unneeded example code. Put the id variable to input_data and
	  output_data so that the devices can identify themselves. More
	  clear debugging with mpg123_input / piperead since there lays
	  some nasty but that I'm hunting. Sudden death of input devices
	  during junk ignore (?). See to that.

2004-10-24 13:06  thomas

	* dermixd/trunk/in_mpg123.cpp: all textual output to stderr for
	  easier debugging

2004-10-21 23:11  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_buffer.cpp,
	  dermixd/trunk/audio_buffer.h, dermixd/trunk/audio_fifo.cpp,
	  dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.h, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/communicator.h,
	  dermixd/trunk/in_dummy.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_raw_s16.cpp, dermixd/trunk/input.cpp,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_actions.h, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/mixer_tools.h: Now including audio_buffer and
	  audio_functions in common.h. Added server pushed playback info
	  (watch and unwatch commands). There may still be the problem
	  with a) stalling device creation or b) strange behaviour in
	  ordered playback (that what I first encountered with pink
	  floyd's wall in that dreadful evening). General input device /
	  mpg123_input debugging enabled until I have catched this phantom.

2004-10-08 16:20  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer_data.cpp: made
	  mpg123_input fail instead of hang when there is not my patched
	  mpg123 on the other end

2004-09-27 13:48  thomas

	* dermixd/trunk/in_mpg123.cpp: neutralized path in mpg123_input -
	  DECODER, dermixd needs to find mpg123 in the PATH!!!

2004-09-27 13:03  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/README,
	  dermixd/trunk/audio_buffer.cpp, dermixd/trunk/audio_buffer.h,
	  dermixd/trunk/audio_fifo.cpp, dermixd/trunk/audio_fifo.h,
	  dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.h, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/in_dummy.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/in_mpg123.h, dermixd/trunk/in_raw_s16.cpp,
	  dermixd/trunk/input.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_actions.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/piperead.cpp, dermixd/trunk/tests,
	  dermixd/trunk/tests/Makefile, dermixd/trunk/tests/buffy.cpp,
	  dermixd/trunk/tests/fullsample_hq.cpp,
	  dermixd/trunk/tests/fullsample_hq2.cpp,
	  dermixd/trunk/tests/get_audiodata.cpp: Yee-hah! Happy long-term
	  debugging on the way. I added a FIFO for mpg123_input to support
	  silence skip on end and beginning (did I already mention that I
	  cornered mpg123?)... the mpg123 input quite heavily changed now
	  and along with it quite some other stuff... Development should
	  slow a bit down now and be better documented. No so big changes
	  hopefully in the near future.

2004-09-24 14:02  thomas

	* dermixd/trunk/audio_buffer.cpp, dermixd/trunk/audio_buffer.h,
	  dermixd/trunk/audio_fifo.cpp, dermixd/trunk/audio_fifo.h,
	  dermixd/trunk/common.h, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/piperead.cpp, dermixd/trunk/piperead.h:
	  bufferbufferbuffer

2004-09-21 04:01  thomas

	* dermixd/trunk/NOTES.buffers, dermixd/trunk/NOTES.mpg123_input,
	  dermixd/trunk/NOTES.skipclick, dermixd/trunk/common.h,
	  dermixd/trunk/communicator.cpp, dermixd/trunk/in_dummy.h,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/input.cpp, dermixd/trunk/input.h,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp: in
	  the middle of reworking mpg123_input... the current code will
	  not even compile!

2004-09-18 13:27  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer.cpp: work on
	  in_mpg123 (and mpg123 itself)... should have the old sound issue
	  now; part of this is ognorig of every first frame. Attention:
	  The first test showed a busy hand bug, most likely in the read
	  loop. I'll have to fix that before shouting success.

2004-09-16 16:56  thomas

	* dermixd/trunk/NOTES.buffers, dermixd/trunk/NOTES.gapless,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/output.h: more thooughts about gapless/seeking,
	  now focusing on pipe nuffers...

2004-09-14 11:20  thomas

	* dermixd/trunk/NOTES.gapless: thoughts about gapless mp3 playback
	  and mpg123 seeking

2004-09-14 11:18  thomas

	* dermixd/trunk/output.h: just a comment

2004-09-13 22:33  thomas

	* dermixd/trunk/communicator.cpp, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/mixer_data.cpp: Added check for failed decoder
	  start. One sched_yield() hopefully ensures that the child does
	  exit() first.

2004-09-13 10:53  thomas

	* dermixd/trunk/TODO, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/communicator.h, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/main.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer.h: hopefully fixed the stupid freeze on
	  daemon - i forgot to reopen stderr/out

2004-09-13 00:02  thomas

	* dermixd/trunk/TODO: Hah! What fun: DerMixD(aemon) is not working
	  in daemon mode!!

2004-09-12 23:45  thomas

	* dermixd/trunk/TODO: added note about responsiveness; some other
	  issues that should be there because they are

2004-09-12 23:09  thomas

	* dermixd/trunk/NOTES, dermixd/trunk/NOTES.skipclick,
	  dermixd/trunk/TODO, dermixd/trunk/in_mpg123.cpp: Tricked the
	  old-sound-at-new-place by ignoring 2304 samples after a seek.
	  One has to settle for limited seeking accuracy with mpg123
	  anyway. Another improvement: I have a proper TODO file now.

2004-09-12 16:52  thomas

	* dermixd/trunk/NOTES.skipclick, dermixd/trunk/in_raw_s16.cpp,
	  dermixd/trunk/in_raw_s16.h: the raw input and the notes
	  concering the sound-from-the-past-hunt.

2004-09-12 16:48  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.h, dermixd/trunk/in_dummy.h,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/input.cpp, dermixd/trunk/input.h,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_data.cpp, dermixd/trunk/mixer_data.h,
	  dermixd/trunk/mixer_tools.cpp, dermixd/trunk/mixer_tools.h,
	  dermixd/trunk/out_oss.cpp, dermixd/trunk/out_oss.h,
	  dermixd/trunk/output.h: I'm hunting the sound that should not be
	  (after pause and seek, still some samples from old times). It's
	  a problem in in_mpg123.cpp or mpg123 itself (or the world in
	  general). In the course of investigations I made some code
	  cleaning (now the interface between generic input modules and
	  the special ones is completely in input.cpp) and added a
	  raw-16bit-stereo input module, which will be in in the next
	  commit.

2004-09-08 21:12  thomas

	* dermixd/trunk/mixer_tools.cpp: more verbose get_audiodata

2004-09-05 17:41  thomas

	* dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/mixer_tools.h: small changes to audiodata support

2004-08-20 09:47  thomas

	* dermixd/trunk/NOTES, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/main.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer.h, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_tools.cpp, dermixd/trunk/output.h: A bit
	  more polishing... in_mpg123 reloads tracks now when needed.
	  Added command line daemon switch. Disabled debugging in this
	  "release".

2004-08-19 21:52  thomas

	* dermixd/trunk/Makefile, dermixd/trunk/NOTES,
	  dermixd/trunk/audio_functions.cpp, dermixd/trunk/common.h,
	  dermixd/trunk/in_dummy.cpp, dermixd/trunk/in_dummy.h,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/input.cpp, dermixd/trunk/input.h,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/mixer_actions.cpp,
	  dermixd/trunk/mixer_actions.h, dermixd/trunk/mixer_data.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/mixer_tools.cpp,
	  dermixd/trunk/mixer_tools.h, dermixd/trunk/tests/Makefile,
	  dermixd/trunk/tests/get_audiodata,
	  dermixd/trunk/tests/get_audiodata.cpp: Huh! A big step
	  (hopefully) in stabilizing the code. More structuring
	  (mixer_actions). Now some sensible load function (actually
	  method); should survive the most obvious errors. On the step to
	  make some features optional (just add command line parsing).
	  What still needs to be done is correct handling of decoder death
	  (or is it well yet?) and track reload on end... plus _really_
	  making the input data structures more pretty! Apart from the
	  outstanding work: I really hope that it is basically OK now.
	  Hehehe.

2004-08-15 04:30  thomas

	* dermixd/trunk/tests, dermixd/trunk/tests/fullsample_hq.cpp: This
	  test should be in there, too.

2004-08-15 04:28  thomas

	* dermixd/trunk/audio_functions.cpp,
	  dermixd/trunk/audio_functions.h, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer.cpp,
	  dermixd/trunk/mixer_data.h, dermixd/trunk/tests/Makefile: Ok...
	  It's 0621, sunday morning, again. Added some (hopefully) more
	  pleasing resampling (though a bit more cpu consuming). It
	  doesn't rattle that bat. Activated the daemon code; which seems
	  to work. So, feature wise, the work schould be done concerning
	  mp3 playback. Still missing is the decision for a decoder
	  depending on file type (what only makes sense when I actually
	  have a choice) and the reading of track length from mpg123
	  (approximately) or .audiodata file . But on the whole it should
	  be it. For the future not to forget other outputs: namely file,
	  alsa, pipe... But for now there is one clear task: Make it safe.
	  Clarify the code. Check for errors all over the place. It works
	  as it is (apparently), but there are quite some assumptions in
	  there. Oh, I forgot one feature that may quite easy - at least
	  rudimentary - check for silence padding on track end for truly
	  gapless playback. It makes sense to set the chunk size to 1152
	  samples to match normal mp3 frames, then (or better only _near_
	  this number?). But be strong: No more new features besides that
	  before the code is bullet proof (95% ;-).

2004-08-14 16:41  thomas

	* dermixd/trunk/NOTES, dermixd/trunk/in_mpg123.cpp,
	  dermixd/trunk/mixer.cpp: Hah! Not too sure that it was the cause
	  of all evil, but definetely responsible for the sudden freeze of
	  mixplayer.pl, not getting responses anymore: Backwatch had a
	  life limit for reading characters!

2004-08-14 08:18  thomas

	* dermixd/trunk/NOTES, dermixd/trunk/in_mpg123.cpp: slightly
	  changed the read loop

2004-08-14 08:04  thomas

	* dermixd/trunk/NOTES, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/mixer.cpp:
	  debugging...

2004-08-13 23:34  thomas

	* dermixd/trunk, dermixd/trunk/communicator.cpp,
	  dermixd/trunk/in_mpg123.cpp, dermixd/trunk/in_mpg123.h,
	  dermixd/trunk/mixer.cpp, dermixd/trunk/out_oss.cpp: It looks
	  like that I got a working read algo now; both safe in getting
	  something when something is there and in stopping read when
	  there will be nothing.

2004-08-13 12:39  thomas

	* dermixd/trunk, dermixd/trunk/tests, dermixd/trunk/uebung: Commit
	  generated by refinecvs to copy imported files to trunk
	* dermixd, dermixd/vendor, dermixd/vendor/ThOr,
	  dermixd/vendor/ThOr/trunk, dermixd/vendor/ThOr/trunk/DECODERS,
	  dermixd/vendor/ThOr/trunk/Makefile,
	  dermixd/vendor/ThOr/trunk/NOTES,
	  dermixd/vendor/ThOr/trunk/NOTES.commands,
	  dermixd/vendor/ThOr/trunk/NOTES.mpg123_input,
	  dermixd/vendor/ThOr/trunk/README.oldmixplayd,
	  dermixd/vendor/ThOr/trunk/audio_functions.cpp,
	  dermixd/vendor/ThOr/trunk/audio_functions.h,
	  dermixd/vendor/ThOr/trunk/common.h,
	  dermixd/vendor/ThOr/trunk/communicator.cpp,
	  dermixd/vendor/ThOr/trunk/communicator.h,
	  dermixd/vendor/ThOr/trunk/comparse.cpp,
	  dermixd/vendor/ThOr/trunk/comparse.h,
	  dermixd/vendor/ThOr/trunk/daemon.c,
	  dermixd/vendor/ThOr/trunk/in_dummy.cpp,
	  dermixd/vendor/ThOr/trunk/in_dummy.h,
	  dermixd/vendor/ThOr/trunk/in_mpg123.cpp,
	  dermixd/vendor/ThOr/trunk/in_mpg123.h,
	  dermixd/vendor/ThOr/trunk/input.h,
	  dermixd/vendor/ThOr/trunk/main.cpp,
	  dermixd/vendor/ThOr/trunk/mixer.cpp,
	  dermixd/vendor/ThOr/trunk/mixer.h,
	  dermixd/vendor/ThOr/trunk/mixer_data.h,
	  dermixd/vendor/ThOr/trunk/mixer_tools.cpp,
	  dermixd/vendor/ThOr/trunk/mixer_tools.h,
	  dermixd/vendor/ThOr/trunk/netcomm.cpp,
	  dermixd/vendor/ThOr/trunk/netcomm.h,
	  dermixd/vendor/ThOr/trunk/out_dummy.cpp,
	  dermixd/vendor/ThOr/trunk/out_dummy.h,
	  dermixd/vendor/ThOr/trunk/out_oss.cpp,
	  dermixd/vendor/ThOr/trunk/out_oss.h,
	  dermixd/vendor/ThOr/trunk/output.h,
	  dermixd/vendor/ThOr/trunk/tests,
	  dermixd/vendor/ThOr/trunk/tests/Makefile,
	  dermixd/vendor/ThOr/trunk/tests/get_audiodata,
	  dermixd/vendor/ThOr/trunk/tests/get_audiodata.cpp,
	  dermixd/vendor/ThOr/trunk/tests/sampler,
	  dermixd/vendor/ThOr/trunk/tests/sampler.cpp,
	  dermixd/vendor/ThOr/trunk/uebung,
	  dermixd/vendor/ThOr/trunk/uebung/.mk,
	  dermixd/vendor/ThOr/trunk/uebung/Makefile,
	  dermixd/vendor/ThOr/trunk/uebung/audio_functions.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/audio_functor.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/audio_functor2.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/beispiel.c,
	  dermixd/vendor/ThOr/trunk/uebung/caster.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/common.h,
	  dermixd/vendor/ThOr/trunk/uebung/comparse.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/comparse.h,
	  dermixd/vendor/ThOr/trunk/uebung/comparser.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/in_dummy.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/in_dummy.h,
	  dermixd/vendor/ThOr/trunk/uebung/in_mpg123.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/in_mpg123.h,
	  dermixd/vendor/ThOr/trunk/uebung/input.h,
	  dermixd/vendor/ThOr/trunk/uebung/netcomm.c,
	  dermixd/vendor/ThOr/trunk/uebung/netcomm.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/netcomm.h,
	  dermixd/vendor/ThOr/trunk/uebung/netcommander.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/out_dummy.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/out_dummy.h,
	  dermixd/vendor/ThOr/trunk/uebung/output.h,
	  dermixd/vendor/ThOr/trunk/uebung/pointe.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/proto.c,
	  dermixd/vendor/ThOr/trunk/uebung/proto.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/proto2.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/seekanddestroy.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/t.c,
	  dermixd/vendor/ThOr/trunk/uebung/threadanddestroy.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/vector.cpp,
	  dermixd/vendor/ThOr/trunk/uebung/~out_dummy.cpp: Meine
	  Interpretation des mixplayd von Siegfried Wagner. Ich nahm die
	  Idee und habe eine brutale bung in Multithreading (und C++
	  berhaupt) daraus gemacht, da ich a) in dem mixplayd-Code nicht
	  mehr die Perspektive fe meine Ideen sah und b) das Projekt
	  nicht sehr lebhaft erschien, bis vor kurzem doch die Version
	  0.60 kam...

