Displaying 8 results from an estimated 8 matches for "valid_bits".
2005 Sep 18
2
How does the jitter buffer "catch up"?
...)
I've never tested this, but I designed the jitter buffer to work from
two threads even without using a mutex. This would work as long as there
is one thread doing the "put" and one thread doing the "get".
> As for detecting outages, a hack I use is to check jitter->valid_bits. If
> it's set, we decoded "something", if it's not, we're interpolating
> something which may not sound that good so feed the soundcard 20ms of
> silence instead.
Why would you do that. The idea of interpolating a frame is exactly to
get better quality than just...
2005 Sep 18
0
How does the jitter buffer "catch up"?
...ll decode and remove from the buffer.
Granted, it's not terribly likely to happen, and the jitter-buffer as a
whole has no crashbugs regarding two-thread access, but it will sound a
bit odd if this should ever happen :)
>> As for detecting outages, a hack I use is to check jitter->valid_bits. If
>> it's set, we decoded "something", if it's not, we're interpolating
>> something which may not sound that good so feed the soundcard 20ms of
>> silence instead.
>
> Why would you do that. The idea of interpolating a frame is exactly to
> get be...
2005 Sep 18
3
How does the jitter buffer "catch up"?
...Other than that, I don't think there
should be any other possible race (assuming CPU cache coherence).
> > Why would you do that. The idea of interpolating a frame is exactly to
> > get better quality than just putting zeros.
>
> Actually, I oversimplified a bit. I check if valid_bits has been zero for
> the last 4 frames or more, because once you interpolate more than 100ms
> from the last known state, you end up with some weird
> blipp-blopp-blooiiing sound. Actually it reminds me of the ambient sound
> of weird aliens in bad 50s scifi movies. At that point, si...
2005 Sep 18
2
How does the jitter buffer "catch up"?
Thank you for a very good explanation which shed light on some of the
questions that I had after reading the source code.
Reading your text however, I wonder if I'm perhaps missing an important
point on the proper use of the jitter buffer:
...
> Now, clearly, if early_ratio is high and late_ratio is very
> low, the buffer is buffering more than it needs to; it will
> skip a frame
2005 Sep 18
0
How does the jitter buffer "catch up"?
...values.
The chance of this happening is much less than the other one, but it COULD
happen ;)
>>> Why would you do that. The idea of interpolating a frame is exactly to
>>> get better quality than just putting zeros.
>>
>> Actually, I oversimplified a bit. I check if valid_bits has been zero for
>> the last 4 frames or more, because once you interpolate more than 100ms
>> from the last known state, you end up with some weird
>> blipp-blopp-blooiiing sound. Actually it reminds me of the ambient sound
>> of weird aliens in bad 50s scifi movies. At th...
2005 Sep 18
0
How does the jitter buffer "catch up"?
...Speak) -- calling put
and get at the exact same time from different threads leads to "features")
This allows the jitter buffer to actually buffer, and try to keep the
delay between frame arrivel and frame play to a minimum.
As for detecting outages, a hack I use is to check jitter->valid_bits. If
it's set, we decoded "something", if it's not, we're interpolating
something which may not sound that good so feed the soundcard 20ms of
silence instead.
Incidentally, on Win32 you probably want to use DirectSound with a looping
buffer of around 200ms and play notifie...
2005 Sep 22
0
How does the jitter buffer "catch up"?
...32Speak) -- calling put
and get at the exact same time from different threads leads to "features")
This allows the jitter buffer to actually buffer, and try to keep the
delay between frame arrivel and frame play to a minimum.
As for detecting outages, a hack I use is to check jitter->valid_bits. If
it's set, we decoded "something", if it's not, we're interpolating
something which may not sound that good so feed the soundcard 20ms of
silence instead.
Incidentally, on Win32 you probably want to use DirectSound with a looping
buffer of around 200ms and play notifiers;...
2007 Oct 04
3
Audio Speed Variability
...a speed of processing issue? I
am seeing a fair number of problem records coming out of the speex
jitter buffer, but they might just mean that data isn't being fed in
fast enough into the buffer. I'm checking:
speex_jitter_get(&speexJitter, (short *)newData, NULL);
if (speexJitter.valid_bits == 0) //bad record
{
fprintf(stderr, "Interpolating since nothing happened!!!!\n");
fflush(stderr);
}
Does this say I'm processing too slowly into the buffer, or that the
data put in is somehow corrupt?
The application is Windows based, and I'm using DirectSound for capture
and...