Streaming live video.
Brought to you by:
aeb,
bencollins
From: Daniel K. <dan...@st...> - 2000-06-02 22:49:53
|
Hi! As stated in my previous message, I can display live video streams on-screen using linux1394 and libdv. I'm not too happy about the implementation though. What's bothering me most is the internal buffering of iso data in the subsystem. I'd like to drop intermittent frames if my processing is too slow. However with a naive approach I get the whole backlog of frames in the buffer (and a klogd screaming badly about dropping packets). My current workaround is to start/stop iso rcv for every frame (which makes me yearn for the patch below to be applied soon...). An alternative approach would be to spawn a seperate thread that calls raw1394_loop_iterate in a tight loop, and telling the iso handler just to drop packets when processing is too slow. Both suck. mmapping /dev/ohci1394 is the proper way to go for OHCI, I think but that's not really a generic solution. Has anyone thought about this already? Maybe a 'drop' option to start_iso_rcv() (which questionable semantics)? Daniel. Index: ohci1394.c =================================================================== RCS file: /cvsroot/linux1394/ieee1394/ohci1394.c,v retrieving revision 1.31 diff -u -r1.31 ohci1394.c --- ohci1394.c 2000/05/19 16:13:54 1.31 +++ ohci1394.c 2000/06/02 22:42:16 @@ -1420,7 +1420,7 @@ #endif if (!test_and_set_bit(arg, &ohci->IR_channel_usage)) { - PRINT(KERN_INFO, ohci->id, + DBGMSG(KERN_INFO, ohci->id, "listening enabled on channel %d", arg); if (arg > 31) { @@ -1446,7 +1446,7 @@ spin_lock_irqsave(&ohci->IR_channel_lock, flags); if (test_and_clear_bit(arg, &ohci->IR_channel_usage)) { - PRINT(KERN_INFO, ohci->id, + DBGMSG(KERN_INFO, ohci->id, "listening disabled on iso channel %d", arg); if (arg > 31) { -- GNU/Linux Audio Mechanics - http://www.glame.de GPG Key ID 89BF7E2B - http://www.keyserver.net |