move from id3lib to taglib

fix compilation warning in iconvme module (from James)

virtual directory layer (artists, "on disk", etc)
physical directory "incremental" reload (not full reload)

moderated: 2hz max event for certain variables. check spec. make sure they're not sent more often!
look into code of other free software media servers or players
remember: free may clobber errno!!
use UTF-8 charset by default! (suggested by Rmi)
add patches subdirectory to dist
decide if mp101 should use iso8859 or utf8 (see bundled player?)
support ASX playlists
support mms streams
support other playlists found in http://gonze.com/playlists/playlist-format-survey.html ?
escape certain character (space => %20 etc) when doing http requests? or reverse?

attempt to GET immediately if HEAD fails? or skip HEAD support altogether?
check Content-Type in HTTP/ICY GET/HEAD headers against --file-types list?

improve error messages:
  Attempting to read 1048602 bytes at 1235  =>>> BUT READ HOW MANY!?
  Found URL  =>> DISCARDING OR ADDING!?

implement ICY data every 4096 bytes? (must send ICY-MetaData:1)
if a playlist has a single file, merge that one into the playlist!
audioBroadcast cannot be paused by mp101!! but other types can
http://forums.radiotoolbox.com/viewtopic.php?t=74
add HTTP buffering somehow (not at first - mp101 does it automaticly)
add rtsp types.
fix name identification for HTTP urls (don't use base_name)
rename --file-types to --data-types or just --types (for http)?

give up after N invalid entries in simple playlists?
support for urls in playlists (playlists only?)
can playlist support be implemented by not processing playlists? check how other apps do it.
sorting support - both in input dirs and inside upnp.

support signal SIGUSR1 to reload and rescan all data, and eventually update UpdateId

---

try intel tools again, in regard to <res> @protocolInfo, @size etc.
assumption: specifying res specifies all res attributes. (or at least the required ones?!)
should @protocolInfo be specified or protocolInfo?
MP101 does: res, class, duration, upnp:artist, upnp:album, upnp:genre

test search parsing:
unterminated strings: should cause error every time
test other and any strings!

---

use quotearg etc for "die", "warn" and logging.

from Daniel Bachfeld:
FYI: the twonkyvision ini-File for the musicserver contains a specific
setting for the m1000:
  # param -nosearch [n] = set to 1 to supress search support
  # mainly needed for ROKU which brings own UI when search is enabled
  nosearch=0
The vendor suggest to set it to 1. However, it works still with 0
---

mp101: test uncompressed wave playing
read UPNP device architecture.
add section to README about relevant standards and documentation
clean up upnp support. as much as necessary and CORRECT is the keyword.
  upnp: What do we do with A_ARG_* variables? Handle in get_variable_request?
  upnp: Subscriptions: What is subscribable?!

---

convert into supported audio format in realtime (mp3 encoder or just decode to wave?)
  add support for libsndfile: http://www.mega-nerd.com/libsndfile/

when do we need to report 'res' URL? check contentdir docs. why doesn't twonky do it?
improved debugging for webserver.c, metadata.c, contentdir.c
implement variables such as UpdateID (always returns 0!)
log connected control points
implement stuff in connectmgr.c, contentdir.c
set up web server to serve all SPCD documents
communication over subnets: does it work in Windows? if yes, then something must be incorrectly set up in linux (multicast?)

threading: do we need mutexes to synch data?
improve parsing of --expire-time in main.c: allow for 1h2s or 1m2s (see 'info coreutils sleep').

DISTANT FUTURE:

gnulib: use closeout?
external or (why not) native rtsp support
become a full GNU project - hand over copyright to FSF, if they want it
caching of metadata, even across restarts (storing to cache file), keeping partial tree in memory
virtual representation vs physical representation
log as soon as a control point connects to us. requires libupnp modifications/feature additions!

directory file discovery
  plain filename (no extension)
  id3
  db4 database lookup
    key=full path|relative path|filename only
    value=cvs of key=value
  file table lookup
    FILESPEC\nKEY=VALUE,..
  postgresql database lookup
    QUERY+FILESPEC TYPE+COLUMN MAP (colname,..)
    DATABASE URL
  mysql database lookup

external program
  generates XML?
    in: directory
    out: xml

xml database
  complete file

custom database
  n-level
  level 1: query, column map
  level 2: query, column map

feature: search caching

-I include file match
-X exclude file match

-m method of getting song information
   name
   id3
   filelookup
   external program: PATH
   db file
   database lookup: DATABASE SPEC, QUERY
-d/-l/-i INTERFACE interface to listen on
-b background
-o FILE output to file, append if necessary
-V N verbosity
-c FILE read config
-C cache discovered info into FILE (for this dir/all dirs)
   keeps modified-time for all dirs?

====

basic client for gmediaserver, console based
