Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 08 Oct 1996 02:02:34 -0700
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        Denis DeLaRoca 825-4580 (310) <CSP1DWD@MVS.OAC.UCLA.EDU>
Cc:        multimedia@FREEBSD.ORG
Subject:   Re: GUS and VAT (Re: RealAudio on FreeBSD ) 
Message-ID:  <199610080902.CAA04941@rah.star-gate.com>
In-Reply-To: Your message of "Mon, 07 Oct 1996 18:39:00 PDT." <199610080140.SAA18271@freefall.freebsd.org> 

next in thread | previous in thread | raw e-mail | index | archive | help

If you were wondering about the 160ms gap here is more info:

After a minute or so of playing....

write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
 read  msec 20 
write  msec 320 delta  0 block 
write  msec 0 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 


The 320 millisecond gap could be attributed to packets out of order or
missing packets. During that time NO packets where delivered to the
sound driver .

Here is the output of a fairly steady state :

write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 
 read  msec 20 
write  msec 20 delta  0 block 


Now a little bit about the printfs . Basically, 
"write msec ..." states the delta time it took vat to write a sound packet
to the sound driver.

 "read msec .." states the delta time that the sound driver takes to read
  160 bytes @ 8khz and notifies vat.

At the very least the sound driver is not way off and it is doing its job.


In audio.cc:


void Audio::dispatch(int)
{
  int delta,msec;
  struct timeval now;



  gettimeofday(&now, NULL);
  delta = ((1000 * now.tv_sec) + now.tv_usec / 1000)  -
    ((1000 * read_delta.tv_sec) + read_delta.tv_usec / 1000);

  printf(" read  msec %d \n", delta);
  read_delta = now;

        while (FrameReady())
                handler_->audio_handle();
}
----

At the tail of VoxWare::write (thats the routine which vat calls
to write a sound packet )


gettimeofday(&now, NULL);
  delta = ((1000 * now.tv_sec) + now.tv_usec / 1000)  -
    ((1000 * write_delta.tv_sec) + write_delta.tv_usec / 1000);

  msec = ((1000 * now.tv_sec) + now.tv_usec / 1000)  -
    ((1000 * write_last.tv_sec) + write_last.tv_usec / 1000);

  printf("write  msec %d delta  %d block \n", msec, delta, block_sound); 
  write_last = now;

-------


Next step is to test vat with my other local machine which I have
to re-install FreeBSD .


	Enjoy,
	Amancio


>From The Desk Of Denis DeLaRoca 825-4580 :
> On Mon, 07 Oct 1996 12:26:52 -0700,
>    Amancio Hasty <hasty@RAH.STAR-GATE.COM> said:
> > > What does it mean when you say "vat gets behind and sound gets distor-
> > > ted"? If Vat gets behind because of a processing/scheduling delay that
> >
> > I mean this:
> > write  msec 20 delta  0 block
> > write  msec 20 delta  0 block
> > write  msec 40 delta  0 block
> > write  msec 20 delta  0 block
> > write  msec 20 delta  0 block
> > write  msec 160 delta  0 block
> >             ^^^^
> > write  msec 1 delta  0 block
> > write  msec 19 delta  0 block
> > write  msec 20 delta  0 block
> > write  msec 20 delta  0 block
> >
> > sound driver. If you noticed the highlighted 160 delta time means
> > that either the sound driver failed to deliver an asynch notification
> > of the read or vat failed to write a sound packet at its scheduled
> > 20ms interval. It should not be too hard to determine if its the
> 
> Humm? Do we know if those deltas of 40 and 160 are when Vat has been
> pre-empted? If it is pre-emption and no output queue has been built
> yet -- because this is the first time Vat is being pre-empted -- a
> silence gap will appear on the audio stream, but if the output queue
> has been built that is enough to keep audio output continuous. This is
> the self-clocking algorithm that Thomas just described.
> 
> Are deltas above being computed by watching audio writes? Should be
> easy enough as you say to monitor asynch notifications and see if
> any are missing. If you haven't tinkered much with vat's code outside
> of the audio.cc a problem with delivery of read notifications by the
> sound driver sounds plausible.
> 
> -- Denis
> 





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610080902.CAA04941>