#14 Improvement of jitter buffer put operation for PLC


Right now, if the jitter buffer is full and a new packet arrives we simply through the new packet away and do nothing else. This has the effect that the next network packet is put right behind the last packet in the jitter buffer but in the real stream there was some packet in between which is lost now. The OPUS coded does not know anything about this situation. This may lead to unwanted lowed noises.

It has to be investigated if the following strategy improves the situation: We have to tell the OPUS codec somehow that a packet was lost. One way to do this is to void the last packet in the jitter buffer in case a new packet is thrown away because of a full buffer.


  • Volker Fischer

    Volker Fischer - 2014-03-13

    With the following code inserted in the client.cpp:

    bool bReceiveDataOk =
    ( Channel.GetData ( vecbyNetwData, iCeltNumCodedBytes ) == GS_BUFFER_OK );

    const int iStart = 0;
    const int iEnd = 2;
    const int GenRandomIntInRange = static_cast<int> ( iStart +
    ( ( static_cast<double> ( iEnd - iStart + 1 ) * rand() ) / RAND_MAX ) );

    if ( GenRandomIntInRange == 0 )
    bReceiveDataOk = false;

    One can test how the OPUS performs on lost packets which are in the correct order.

    I did a comparison with the situation that I set the local Jitter Buffer to 1 block; that way a lot of lost packets happen and we have the situation described above (with the incorrect order of packets in OPUS).

    Result: The very loud noises are reduced if the packets are in correct order. But still we have some considerably loud noises, even in that case. So the proposed change in Jamulus will lead to better performance but it is not a very big improvement.

    Maybe we should instead wait for a new version of OPUS when they improve the PLC so that we may not need to change anything in Jamulus but the performance is improved by only exchanging the OPUS version.

  • Volker Fischer

    Volker Fischer - 2015-03-13

    I improved the PLC of my OPUS library. It seems that cured the problem. But I am not 100% sure so I will not close this bug report but set it to a low priority.

  • Volker Fischer

    Volker Fischer - 2015-03-13
    • Priority: 5 --> 2
  • Volker Fischer

    Volker Fischer - 2017-10-08
    • status: open --> closed

Log in to post a comment.