Added pipe list structure for C, and started work on better encoding.

Since C does not have a nice STL, I have implemented a small list
structure to make ym life easier. This also is a part of the multi
streaming test code.

I have also started working on using a better encoding for the RTP
stream. As of now I have not figured out why it doesn't work but I
think it has something to do with setting the caps correctly in the
client. It could also be possible to use mplayer as the client if I
can figure out how to do rtsp.

Signed-off-by: Alex Waterman <imnotListening@gmail.com>
Merge branch 'master' of github.com:imnotlistening/sdes_music

Conflicts:
Fix previous commit being stupid.

Made sure that all of the changes actually made their way into the
upstream respository.

Signed-off-by: Alex Waterman <imnotListening@gmail.com>
Finalized voice control paramters and vocabulary

Lowered the nuber of maximum values to retain from history when
determining the "background" value. Adjusted the jconf file to handle
longer phrases by extending the tailmargin for silence. Modified
dictionary to remove words similar to the desired key phrases and
determined final set of key phrases.

Signed-off-by: Zach Gauci <zgauci@gmail.com>
Moved the RTP streaming to plain UDP streaming

What was once done with RTP streamsing with a uLaw basec codec has now
been moved to using just plain UDP with a FLAC codec. It solves many an
issue with RTP, because RTP is a nightmare.

The only change as far as the API is concerned is the function

    int music_make_rtp_pipeline()

has been renamed to

    int music_make_pipeline()

And no longer accepts the second integer argument (rtcp_port) since it is
no longer relevant. The first argument, the rtp port is now just treated
as the UDP port and should not need any modifcation.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Added a shell script wrapper to run programs

The shell script wrapper runs programs in the music project that link
against the music shared library. Its usage is simple:

    music_run.sh <command> [args]

This will set up the library load path, and pass any arguments specified
to the command <command>.

Also added a simple seek command to the stream_server test code. That
will soon be implemented as part of the music API to hide the details
from any calling code.

Also, also, added a simple hack in the top level make file to wipe the
extraneous files in bin/ when make clean is run. I may remove this
later, not sure yet.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Added TCP support for network streaming

TCP is settable by using the -D_MUSIC_USE_TCP option in the config.mk
file. This requires that the sever connect to the client, and if the
server dies, the client has to be restarted. In theory it should be
more reliable.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Set hostname to listen on in stream_client.

This will have to be figured out, the client needs to know what
interface to listen on.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Fixed the hiccup issues with TCP streaming.

It seems that turning of the clock synchronization solved the hiccups.
No idea why, but hey, what ever. This also fixed some issues with the
stream spasming when the volume is changed or what not.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Going back to using UDP and added some settings for UDP sink

Set the UDP sink block size to a sane value. GOnna need some testing
on a sketchy network to see what happens but on my local ethernet
it sounds really good so far.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Shrink block size in UDP packets

By shrinking the block size when, on occasion a packet does get
dropped, the effect is not noticable. Also possibly reduces the chance
of droppage due to smaller size and therefor smaller chance of
collision.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
OK, have a good sounding TCP flow, but bad response time.

I will continue to work on this, but I am not holding my breath
as to it becoming radically better.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Wow, what a redisgn. Shifted the music lib to the client.

Instead of having all of the logic in the server, the logis has been
moved to the clients. The clients pull a stream from a web server
and play the stream. The client has access to typical music playing
functionality, e.g, play/pause, stop, new song, seek, etc. Only now
music quality is perfect, and the response times to seeking and
volume change is instantaneous. Pretty nifty.

Signed-off-by: Alex Waterman <imNotListening@gmail.com>
Merge branches 'master' and 'client-stream'
Added client and stream library, both use qmake/qt in order to easy crossplateform compilation