some fixes/updates

This commit is contained in:
Volker Fischer 2009-07-25 20:54:57 +00:00
parent 16baee490a
commit 572dcd8728
11 changed files with 44 additions and 43 deletions

View file

@ -1,3 +1,12 @@
3.0.0
- introduced new audio codec "CELT", not compatible to old versions
- IMA-ADPCM, MS-ADPCM removed
- since CELT works on 48 kHz sample rate, resampling was removed
2.3.0
- new system sample rate of 33 kHz to improve audio quality, not compatible
@ -7,6 +16,7 @@
- added command line argument for connecting a server at software start-up
2.2.2
- "Mute" and "Solo" check boxes for each connected client fader

28
README
View file

@ -40,28 +40,11 @@ computer to the server should not exceed 30 ms average and the network jitter
should be as low as 2-5 ms (To get a low ping time on DSL connections, an
extra option "DSL fast path" should be enabled by your internet provider).
Technical details
To get sufficient results, a sample rate of 24 kHz (mono channel) was chosen.
The audio compression algorithm IMA-ADPCM with very low delay is used which
results in a raw compressed audio data rate of 96 kbps. First tests showed
that an upstream of 128 kbps is too slow for using the llcon software. At
least 256 kbps upstream bandwidth is required.
The llcon software package includes both, the server and the client
functionality which can be selected by using command line arguments.
MANUAL:
For starting server type ./llcon -s
Start the llcon server on a remote computer with fast internet access. Start the
llcon client on your local computer and connect your sound card with your
instrument/microphone and headphone and type in the IP address of the server.
There are levelers for adjusting the sound card (in/out) and network buffer sizes.
It seems that 2 blocks for network buffer is an optimal choice. For the sound card
buffer, try to make them as short as possible by watching the LEDs below the
levelers (they should stay green).
For test purpose it is possible to run server and client on the same computer. For
this setup first start the server and then the client. Type in 127.0.0.1 for the
IP address in the client software.
@ -74,11 +57,14 @@ source:
- Qt cross-platform application framework: http://trolltech.com
- audio reverberation code: by Perry R. Cook and Gary P. Scavone, 1995 - 2004
- The CELT ultra-low delay audio codec: http://www.celt-codec.org
- Audio reverberation code: by Perry R. Cook and Gary P. Scavone, 1995 - 2004
(taken from "The Synthesis ToolKit in C++ (STK)")
- IMA-ADPCM: by Erik de Castro Lopo
- some parts are taken from the project "Dream: a PC-based Digital Radio Mondiale
- Some parts are taken from the project "Dream: a PC-based Digital Radio Mondiale
(DRM) receiver" written by one of the llcon authors, Volker Fischer:
http://drm.sf.net
- Some pixmaps are from Clker.com - vector clip art online,
royalty free & public domain

View file

@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.50)
AC_INIT(src/main.cpp)
AM_INIT_AUTOMAKE(llcon,2.3.1cvs)
AM_INIT_AUTOMAKE(llcon,3.0.0cvs)
AM_CONFIG_HEADER(config.h)
@ -15,7 +15,6 @@ AC_PROG_CPP
AC_PROG_INSTALL
AC_SUBST(LIBTOOL_DEPS)
AC_PROG_MAKE_SET
AC_CHECK_PROGS(RPMBUILD, rpmbuild, rpm)
dnl Configuration Arguments

View file

@ -1,3 +1,5 @@
#SUBDIRS = ../libs/celt/libcelt
bin_PROGRAMS = llcon
llcon_SOURCES = ../src/buffer.cpp \

View file

@ -829,6 +829,17 @@ void CChannel::OnNetTranspPropsReceived ( CNetworkTransportProps NetworkTranspor
CycleTimeVariance.Reset();
}
// in case of a server channel, use the same network buffer
// size factor as the connected client
if ( bIsServer )
{
// TODO
// if size is not equal
// change size
}
}
void CChannel::OnReqNetTranspProps()

View file

@ -302,6 +302,10 @@ void CClient::Init ( const int iPrefMonoBlockSizeSamIndexAtSndCrdSamRate )
vecbyNetwData.Init ( iCeltNumCodedBytes );
// the channel works on the audio coded block size
// TEST right now we only support 128 samples, later 256 and 512, too
Channel.SetNetwBufSizeFactOut ( 1 );
// Channel.SetNetwBufSizeOut ( iCeltNumCodedBytes );
}

View file

@ -116,12 +116,8 @@ void CLlconServerDlg::OnTimer()
vecpListViewItems[i]->setText ( 6, "None" );
break;
case CT_IMAADPCM:
vecpListViewItems[i]->setText ( 6, "IMA-ADPCM" );
break;
case CT_MSADPCM:
vecpListViewItems[i]->setText ( 6, "MS-ADPCM" );
case CT_CELT:
vecpListViewItems[i]->setText ( 6, "CELT" );
break;
default:

View file

@ -133,9 +133,7 @@ MESSAGES
- "sam rate": sample rate of the audio stream
- "audiocod type": audio coding type, the following types are supported:
- 0: none, no audio coding applied
- 1: IMA-ADPCM
- 2: MS-ADPCM
- 3: CELT
- 1: CELT
- "version": version of the audio coder, if not used this value shall be set to 0
- "audiocod arg": argument for the audio coder, if not used this value shall be set to 0
@ -902,8 +900,6 @@ bool CProtocol::EvaluateNetwTranspPropsMes ( const CVector<uint8_t>& vecData )
static_cast<int> ( GetValFromStream ( vecData, iPos, 2 ) );
if ( ( iRecCodingType != CT_NONE ) &&
( iRecCodingType != CT_IMAADPCM ) &&
( iRecCodingType != CT_MSADPCM ) &&
( iRecCodingType != CT_CELT ) )
{
return true;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View file

@ -330,11 +330,10 @@ CAboutDlg::CAboutDlg ( QWidget* parent ) : QDialog ( parent )
tr("llcon uses the following libraries, resources or code snippets:") +
"</b></p>"
"<ul>"
"<li>Qt cross-platform application framework: <i>http://trolltech.com</li>"
"<li>The CELT ultra-low delay audio codec: <i>http://www.celt-codec.org</li>"
"<li>Qt cross-platform application framework: <i>http://trolltech.com</i></li>"
"<li>The CELT ultra-low delay audio codec: <i>http://www.celt-codec.org</i></li>"
"<li>Audio reverberation code: by Perry R. Cook and Gary P. Scavone, "
"1995 - 2004 (taken from <i>The Synthesis ToolKit in C++ (STK)</i>)</li>"
"<li>ADPCM coders by Erik de Castro Lopo</li>"
"<li>Parts from Dream DRM Receiver by Volker Fischer and Alexander "
"Kurpiers: <i>http://drm.sf.net</i></li>"
"<li>Some pixmaps are from <i>Clker.com - vector clip art online, "

View file

@ -416,9 +416,7 @@ public:
enum EAudComprType
{
CT_NONE = 0,
CT_IMAADPCM = 1,
CT_MSADPCM = 2,
CT_CELT = 3
CT_CELT = 1
};
class CNetworkTransportProps