anged internals so that now each encoding/server connection is
a separate thread
This commit is contained in:
parent
0855e833a1
commit
8fd167a179
|
@ -2,6 +2,8 @@ DarkIce next release
|
|||
|
||||
o ported to FreeBSD (removed reference to MSG_NOSIGNAL in TcpSocket.cpp)
|
||||
o bug fix: maximum bitrate setting fixed for Ogg Vorbis streams
|
||||
o changed internals so that now each encoding/server connection is
|
||||
a separate thread
|
||||
|
||||
20-08-2002: DarkIce 0.11 released
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ o make a master config file, and a small one ?
|
|||
o reconnect to server if connection is dropped
|
||||
o add support for multiple servers for one stream ?
|
||||
o libtoolize ?
|
||||
o revisit real-time scheduling and one-thread-per-connection
|
||||
o revisit real-time scheduling
|
||||
o look into performance
|
||||
o create proper error-reporting module
|
||||
o set comment fields for Ogg Vorbis streams as in
|
||||
|
|
|
@ -11,7 +11,7 @@ dnl AC_STDC_HEADERS
|
|||
AC_HAVE_HEADERS(errno.h fcntl.h stdio.h stdlib.h string.h unistd.h limits.h)
|
||||
AC_HAVE_HEADERS(signal.h time.h sys/time.h sys/types.h sys/wait.h math.h)
|
||||
AC_HAVE_HEADERS(netdb.h netinet/in.h sys/ioctl.h sys/socket.h sys/stat.h)
|
||||
AC_HAVE_HEADERS(sched.h)
|
||||
AC_HAVE_HEADERS(sched.h pthread.h)
|
||||
AC_HAVE_HEADERS(sys/soundcard.h sys/audio.h)
|
||||
AC_HEADER_SYS_WAIT()
|
||||
|
||||
|
@ -21,6 +21,7 @@ AC_TYPE_SIZE_T()
|
|||
AC_CHECK_LIB( socket, socket)
|
||||
AC_CHECK_LIB( nsl, gethostbyname)
|
||||
AC_CHECK_LIB( rt, sched_getscheduler)
|
||||
AC_CHECK_LIB( pthread, pthread_create)
|
||||
|
||||
SYSTEM_INCLUDE=/usr/include
|
||||
|
||||
|
|
|
@ -161,6 +161,10 @@ Connector :: detach ( Sink * sink ) throw ( Exception )
|
|||
|
||||
} else if ( numSinks == 1 ) {
|
||||
|
||||
if ( sinks[0].get() != sink ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
sinks[0] = 0;
|
||||
delete[] sinks;
|
||||
sinks = 0;
|
||||
|
@ -286,6 +290,7 @@ Connector :: transfer ( unsigned long bytes,
|
|||
|
||||
if ( sinks[u]->canWrite( sec, usec) ) {
|
||||
try {
|
||||
/* we expect the sink to accept all data written */
|
||||
e = sinks[u]->write( buf, d);
|
||||
} catch ( Exception & e ) {
|
||||
sinks[u]->close();
|
||||
|
@ -341,6 +346,10 @@ Connector :: close ( void ) throw ( Exception )
|
|||
$Source$
|
||||
|
||||
$Log$
|
||||
Revision 1.10 2002/10/19 12:24:55 darkeye
|
||||
anged internals so that now each encoding/server connection is
|
||||
a separate thread
|
||||
|
||||
Revision 1.9 2002/08/02 17:59:17 darkeye
|
||||
bug fix: when the last server dropped connection, darkice crashed
|
||||
|
||||
|
|
|
@ -61,21 +61,6 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
{
|
||||
private:
|
||||
|
||||
/**
|
||||
* The source to read from.
|
||||
*/
|
||||
Ref<Source> source;
|
||||
|
||||
/**
|
||||
* The sinks to connect the source to.
|
||||
*/
|
||||
Ref<Sink> * sinks;
|
||||
|
||||
/**
|
||||
* Total number of sinks.
|
||||
*/
|
||||
unsigned int numSinks;
|
||||
|
||||
/**
|
||||
* Initialize the object.
|
||||
*
|
||||
|
@ -96,6 +81,21 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* The source to read from.
|
||||
*/
|
||||
Ref<Source> source;
|
||||
|
||||
/**
|
||||
* The sinks to connect the source to.
|
||||
*/
|
||||
Ref<Sink> * sinks;
|
||||
|
||||
/**
|
||||
* Total number of sinks.
|
||||
*/
|
||||
unsigned int numSinks;
|
||||
|
||||
/**
|
||||
* Default constructor. Always throws an Exception.
|
||||
*
|
||||
|
@ -107,6 +107,16 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
throw Exception( __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
/**
|
||||
* Detach an already attached Sink from the Source of this Connector.
|
||||
*
|
||||
* @param sink the Sink to detach.
|
||||
* @return true if the detachment was successful, false otherwise.
|
||||
* @exception Exception
|
||||
*/
|
||||
virtual bool
|
||||
detach ( Sink * sink ) throw ( Exception );
|
||||
|
||||
|
||||
public:
|
||||
|
||||
|
@ -172,7 +182,7 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
* @return the number of Sinks in the Connector.
|
||||
* @exception Exception
|
||||
*/
|
||||
inline unsigned int
|
||||
inline virtual unsigned int
|
||||
getNumSinks ( void ) const throw ()
|
||||
{
|
||||
return numSinks;
|
||||
|
@ -184,26 +194,16 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
* @param sink the Sink to attach.
|
||||
* @exception Exception
|
||||
*/
|
||||
void
|
||||
virtual void
|
||||
attach ( Sink * sink ) throw ( Exception );
|
||||
|
||||
/**
|
||||
* Detach an already attached Sink from the Source of this Connector.
|
||||
*
|
||||
* @param sink the Sink to detach.
|
||||
* @return true if the detachment was successful, false otherwise.
|
||||
* @exception Exception
|
||||
*/
|
||||
bool
|
||||
detach ( Sink * sink ) throw ( Exception );
|
||||
|
||||
/**
|
||||
* Open the connector. Opens the Source and the Sinks if necessary.
|
||||
*
|
||||
* @return true if opening was successful, false otherwise.
|
||||
* @exception Exception
|
||||
*/
|
||||
bool
|
||||
virtual bool
|
||||
open ( void ) throw ( Exception );
|
||||
|
||||
/**
|
||||
|
@ -222,13 +222,13 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
* @param sec the number of seconds to wait for the Source to have
|
||||
* data available in each turn, and the number of seconds
|
||||
* to wait for the Sinks to accept data.
|
||||
* @param usec the number of micros seconds to wait for the Source to
|
||||
* @param usec the number of micro seconds to wait for the Source to
|
||||
* have data available in each turn, and the number of
|
||||
* micro seconds to wait for the Sinks to accept data.
|
||||
* @return the number of bytes read from the Source.
|
||||
* @exception Exception
|
||||
*/
|
||||
unsigned int
|
||||
virtual unsigned int
|
||||
transfer ( unsigned long bytes,
|
||||
unsigned int bufSize,
|
||||
unsigned int sec,
|
||||
|
@ -239,7 +239,7 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
*
|
||||
* @exception Exception
|
||||
*/
|
||||
void
|
||||
virtual void
|
||||
close ( void ) throw ( Exception );
|
||||
};
|
||||
|
||||
|
@ -259,6 +259,10 @@ class Connector : public virtual Referable, public virtual Reporter
|
|||
$Source$
|
||||
|
||||
$Log$
|
||||
Revision 1.6 2002/10/19 12:24:55 darkeye
|
||||
anged internals so that now each encoding/server connection is
|
||||
a separate thread
|
||||
|
||||
Revision 1.5 2001/08/26 20:44:30 darkeye
|
||||
removed external command-line encoder support
|
||||
replaced it with a shared-object support for lame with the possibility
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
#include "IceCast2.h"
|
||||
#include "ShoutCast.h"
|
||||
#include "FileCast.h"
|
||||
#include "MultiThreadedConnector.h"
|
||||
#include "DarkIce.h"
|
||||
|
||||
#ifdef HAVE_LAME_LIB
|
||||
|
@ -157,7 +158,7 @@ DarkIce :: init ( const Config & config ) throw ( Exception )
|
|||
sampleRate,
|
||||
bitsPerSample,
|
||||
channel );
|
||||
encConnector = new Connector( dsp.get());
|
||||
encConnector = new MultiThreadedConnector( dsp.get());
|
||||
|
||||
noAudioOuts = 0;
|
||||
configIceCast( config, bufferSecs);
|
||||
|
@ -964,6 +965,10 @@ DarkIce :: run ( void ) throw ( Exception )
|
|||
$Source$
|
||||
|
||||
$Log$
|
||||
Revision 1.32 2002/10/19 12:24:55 darkeye
|
||||
anged internals so that now each encoding/server connection is
|
||||
a separate thread
|
||||
|
||||
Revision 1.31 2002/08/20 19:35:37 darkeye
|
||||
added possibility to specify maximum bitrate for Ogg Vorbis streams
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@ darkice_SOURCES = AudioEncoder.h\
|
|||
FileSink.cpp\
|
||||
Connector.cpp\
|
||||
Connector.h\
|
||||
MultiThreadedConnector.cpp\
|
||||
MultiThreadedConnector.h\
|
||||
DarkIce.cpp\
|
||||
DarkIce.h\
|
||||
Exception.cpp\
|
||||
|
|
Loading…
Reference in New Issue