Re: More questions

Martin Bayer <[email protected]>
Newsgroups gmane.comp.video.gephex.devel
Message-ID <[email protected]>
> There is one
> important aspect of the software we are developping that I'd like to 
> exchange with you about : frame rates. By that I mean update frequencies 
> of the units (what we call gears).   ...

> - what determines the frame rate shown as output ? If your using an mpeg 
> movie as input, then the output should probably be synched with the 
> source. But if your source is generated live, i.e let's say opengl, than 
> what sets the frame rate of the output ?

In the 0.4.x branch there is just one global update frequency for all
data sinks in the data flow graph. This frequency is a fixed parameter
and doesn't change while processing. There is no difference in the
handling of video, audio, numeric and custom data links.

A video file with a different frame rate is just (sub/super)sampled at
the needed positions. This is only possible for random access video
sources. Video sources with a stream behavior (webcam, mpeg stream)
this is not possible. The current implementation doesn't solve these
cases in a clean way. For a webcam like video source a solution is to 
duplicate the last image if there are no pending new images in the input 
buffer. But this leads to a lot of unneeded recalculation.

> -One goal for drone was to process video and audio as well. But while 
> video usually has a frame rate of  ~25fps, using the same update 
> frequency for audio processing would induce a ~40ms latency : the 
> latency between the moment the sound is captured and the time it is 
> outputed after processing. That can be too much to cope with,  for 
> example when doing live performances. So i'm wondering how Gephex 
> handles this issue. Does it handle audio differently from video ?

The main reason for the introduction of audio streams was
signal analysis like detection of beat and frequency distribution for
influencing the video generation process with the extracted data. A
latency at or below the video frame rate is not problem for that usage
scenario.

The audiooutput and audiosynth code was more a proof of concept and is
in my opinion not really useful at the moment. The Linux audio
processing tools are very advanced and well integrated. One way to bring
a usable audio latency to the video world could be a to communicate
better with that world. E.g. a common timebase for jackd and the video
applications could be a solution.

> For example, audio units could be run in a separate thread at a higher 
> rate, while video units would be run in another one at a slower rate. 
> The problem with that approach is that units having both types for input 
> have to be treated in a special way : i.e. having 2 different functions.

What about a chain like

audio -> number -> video -> number -> audio

You need to update the video link at the audio rate to reduce the
latency to audio level.

Processing signals with different sample rates is not trivial. Even in a 
video only environment there are still these problems left.

- mixing two videosources with 24 and 25 fps
- video sources with variable framerates (webcams)
- outputs with different framerates
...

One plan to eliminate some of these problems is to attach a "valid"
timeinterval to each dataobject. If the current time is in the
interval the data objects doesn't need to be recalculated.

E.g. a video source with 25fps writes frames with valid intervals 
[t,t+1/25s[ and an audio source can use a valid interval of 
[t,t+buffsize/samplerate] for a audiobuffer of variable size.

The update algorithm now doesn't need any special knowledge about the 
data types. It just uses the valid intervals that are set by 
(intermediate) data sources. A module/unit/gear must calculate the valid 
interval of its outputs from the valid intervals of its inputs.


This timestamping thing is still a very raw draft and there are many 
issues to think about left:

- feedback/recursion
- possible deadlocks
- variable samplerates at sources and how to predict the time interval
- multiple updates if the timeintervall is still not valid after an update


Martin

_______________________________________________
gephex-devel mailing list
[email protected]
http://lists.gephex.org/mailman/listinfo/gephex-devel
signature.asc (application/pgp-signature, 256 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBwGQXCm3i57PRsbsRAkdYAJ0XcBXEp3gUsbTCbZntq5EnZ8cmcQCgh2yG
lK/+WIUS5KQ//o0oSiXh/BE=
=zDGC
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.