diff --git a/ChangeLog b/ChangeLog index 81bfffe5..2fb12807 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,20 +1,26 @@ -3.4.8git +3.5.0git + + * added support for 64 samples OPUS packets in the client (if a sound card buffer size + larger or equal than 128 samples is chosen, the legacy 128 samples OPUS packets are used) * refresh server list if the Central Server address type is changed * bug fix: the server welcome message may appear twice if the server list was double clicked -TODO client: larger sound card buffers are managed by conversion buffer, not in processintern for loop (note iSndCrdFrameSizeFactor!) - maybe let the use select all possible sound card buffer sizes, this should solve Ticket #53 +TODO check for audio fade in time at the server with newest version -> is it still correct? TODO mixer faders linear -> log gain is better: CalcFaderGain() -> x = -50:1:0; plot(x, (10 .^ (x / 10))) TODO offer the Jamulus ASIO settingspanel in case of an ASIO ERROR to fix, e.g., incorrect sample rate (https://sourceforge.net/p/llcon/discussion/533517/thread/777663cf94/#035f) +TODO issue with Mac audio interface: https://sourceforge.net/p/llcon/discussion/software/thread/7c443f2ed9/#eeab + +TODO let the user select all possible sound card buffer sizes, this should solve Ticket #53 + TODO auto jitter buffer performance not good at 64 samples frame size -> to be checked again TODO for different frame sizes (64/128) the start value of 6 for the jitter buffer might be too low diff --git a/Jamulus.pro b/Jamulus.pro index f730ec1b..44c0485e 100755 --- a/Jamulus.pro +++ b/Jamulus.pro @@ -1,4 +1,4 @@ -VERSION = 3.4.8git +VERSION = 3.5.0git # use target name which does not use a captital letter at the beginning contains(CONFIG, "noupcasename") { diff --git a/src/client.cpp b/src/client.cpp index 53642b62..8e452374 100755 --- a/src/client.cpp +++ b/src/client.cpp @@ -1146,12 +1146,15 @@ fflush(pFileDelay); int CClient::EstimatedOverallDelay ( const int iPingTimeMs ) { + const double dSystemBlockDurationMs = static_cast ( iOPUSFrameSizeSamples ) / + SYSTEM_SAMPLE_RATE_HZ * 1000; + // If the jitter buffers are set effectively, i.e. they are exactly the // size of the network jitter, then the delay of the buffer is the buffer // length. Since that is usually not the case but the buffers are usually // a bit larger than necessary, we introduce some factor for compensation. // Consider the jitter buffer on the client and on the server side, too. - const double dTotalJitterBufferDelayMs = SYSTEM_BLOCK_DURATION_MS_FLOAT * + const double dTotalJitterBufferDelayMs = dSystemBlockDurationMs * static_cast ( GetSockBufNumFrames() + GetServerSockBufNumFrames() ) * 0.7; @@ -1187,9 +1190,8 @@ int CClient::EstimatedOverallDelay ( const int iPingTimeMs ) const double dDelayToFillNetworkPacketsMs = GetSystemMonoBlSize() * 1000 / SYSTEM_SAMPLE_RATE_HZ; - // CELT additional delay at small frame sizes is half a frame size - const double dAdditionalAudioCodecDelayMs = - SYSTEM_BLOCK_DURATION_MS_FLOAT / 2; + // OPUS additional delay at small frame sizes is half a frame size + const double dAdditionalAudioCodecDelayMs = dSystemBlockDurationMs / 2; const double dTotalBufferDelayMs = dDelayToFillNetworkPacketsMs + diff --git a/src/serverdlg.cpp b/src/serverdlg.cpp index 83de9f1a..04564e3d 100755 --- a/src/serverdlg.cpp +++ b/src/serverdlg.cpp @@ -163,7 +163,7 @@ CServerDlg::CServerDlg ( CServer* pNServP, // set up list view for connected clients lvwClients->setColumnWidth ( 0, 170 ); - lvwClients->setColumnWidth ( 1, 130 ); + lvwClients->setColumnWidth ( 1, 200 ); lvwClients->clear(); @@ -175,6 +175,7 @@ lvwClients->setMinimumHeight ( 140 ); // insert items in reverse order because in Windows all of them are // always visible -> put first item on the top vecpListViewItems.Init ( MAX_NUM_CHANNELS ); + for ( int i = MAX_NUM_CHANNELS - 1; i >= 0; i-- ) { vecpListViewItems[i] = new QTreeWidgetItem ( lvwClients ); @@ -488,12 +489,6 @@ void CServerDlg::OnTimer() vecpListViewItems[i]->setText ( 2, QString().setNum ( veciJitBufNumFrames[i] ) ); - // out network block size - vecpListViewItems[i]->setText ( 3, - QString().setNum ( static_cast ( - veciNetwFrameSizeFact[i] * SYSTEM_BLOCK_DURATION_MS_FLOAT - ), 'f', 2 ) ); - vecpListViewItems[i]->setHidden ( false ); } else diff --git a/src/serverdlgbase.ui b/src/serverdlgbase.ui index aecd954e..aebc5b3a 100755 --- a/src/serverdlgbase.ui +++ b/src/serverdlgbase.ui @@ -26,6 +26,9 @@ false + + 3 + Client IP:Port @@ -41,11 +44,6 @@ Jitter Buffer Size - - - Block Size Out/ms - -