4*1024x768 fullscreen outputs


    Jan 20 2006 | 10:17 am
    Hello, I'm wondering what the best approach would be for the playback of 25 fps video on 4 fullscreen 1024x768 resolution vga screens, using one of the new g5s with pci-express bus architecture. The video (s) displayed will be different on each screen, but should run in sync. One approach would be to render a strip of 4x1024 wide and strech a jit.window horizontally over the four screens. Another approach would be to render a block of 2x1024 and 2x768 and strech one jit.window horizontally and vertically over the four screens. Third approach would be 4 seperate clips to four seperate jit.windows. Or a combination of the options above ;) I will try this all out over the weekend, and report back. My main concern is the disk speed / data rates required to make it work. I'm never quite sure how to calculate datarate <> bus speed <> drive speed stuff. I'll be using the standard 7200 sata hd that comes with the g5. I will start by preparing 3 different formats of photo-jpeg quicktimes : - 4 seperate 1024x768 quicktimes - 1 4096x768 quicktime clip - 1 2048x1536 quicktime clip Will the drivespeed be sufficient for 25fps playback of these clips ?
    Thanks !
    Gideon

    • Jan 20 2006 | 1:52 pm
      doesn't do photo-jpeg but useful for working out data rates. might be of some use.
      I'd say that the internal drive won't be fast enough. My advice would be that you shouldn't run this kind of video off your internal drive anyway. Becuase when the data rate suddenly kills a drive, it's usually better if it's the one without all the important stuff on it.
      sata raid kit from macgurus.com might be the way to go....
      can do an internal mounting thing, but I've heard the drives don't like the temperatures in the g5..
      good luck....
    • Jan 20 2006 | 3:13 pm
      Hi Gid
      I've had a number of experiences with mutlichannel hi-res, here is some advice:
      > One approach would be to render a strip of 4x1024 wide and strech a > jit.window horizontally over the four screens. > Another approach would be to render a block of 2x1024 and 2x768 and > strech one jit.window horizontally and vertically over the four > screens.
      negative. one cardinal rule, you cannot span a single window across different cards. i've always experienced a big loss of framerate on agp/pci-x setups. there is a small possibility it might work with pci-e, but i tend to doubt it, i believe it is an OpenGL/driver issue not a bus-bandwidth.
      > Third approach would be 4 seperate clips to four seperate > jit.windows. Or a combination of the options above ;)
      this is much more likely to work. spanning across the two ~heads~ of a single card has worked well for me - i just did an opera at 2048x768 on a single card with two projectors. so you might try, 2 cards, with 2 2048x768 movs. (well and a third card for your interface maybe)
      > I will try this all out over the weekend, and report back. My main > concern is the disk speed / data rates required to make it work.
      as suggested, it will be nice to have a sata raid. a single drive for each movie will probably work with compression (photojpeg 75% quality is what i used, a balance between datarate and fast decompression on the CPU)
      one strategy to save on on datarate is to use half res movs... its nice to be 1 to 1, but in higher resolutions, the quality difference is much less (especially depending on your projection situation). so for example, in the hi-res show i did recently, I used source material at 1024x384 -- scaled exactly double and you get 2048x768 - and it was very hard to see any difference (at all) between this and a native 2048x768 movie.
      so if you choose this method, you would only need two playback drives. (one for each 1024x384 movie) btw, the machine i used for the dual xga show was G5 dual 2g, ATI X800 agp, (and a radeon 9200 pci for monitor/interface)
      Oh I have to mention -- i was displaying via jit.gl.slab and videoplane (so i could mix 2 streams and run gpu fx) rather than using the 'direct to window' method. It would be interesting for you to try both and see if one is better than the other. since it sounds like you only need playback.
      cheers Gid!
      deKam
    • Jan 21 2006 | 9:25 am
      Hi
      I had a similar performance problem with a video installation i've made two months ago, in Milan: i digitized 20 hours of video that Alberto Grifi shot in the 70s, and i had to manage 7 video outputs (640x480) of the footage simultaneously and in real time. And i also needed a video input for tracking the movement of the people.
      After a lot of testing and patching, i realized i could do it with a single G5, dual 2.7 Ghz and two standard 7200 sata, BUT i had to render all the 6 video sequences with a resolution of 320x240, PhotoJPEG. Then i used two video cards (4 video outputs) and the Datapath's VQS01 videowall controller to split the 4th output into four different images. In this way, i had a main projector in front of the room, that showed one of the 6 different sequences, and i could use 6 more LCD monitors to show, as a reference for the user, all the sequences simultaneously: every monitor displayed one of the 6 sequences, and the user could move and choose which video sequence had to be shown on the main projector.
      In brief: Input 1 - (video tracking) - jit.qt.grab, 640x480 Output 1 - (the main projector) - jit.window, 640x480 Output 2 - (sequence/monitor 1) - jit.window, 640x480 Output 3 - (sequence/monitor 2) - jit.window, 640x480 Output 4 - (sequence/monitor 3, 4, 5, 6) - screen resolution of 640x480, with 4 jit.pwindow, 320x240 each. The 4 outputs of the VQS01 showed 1/4 of the DVI image, in a 2 x 2 format
      Why did i use, ONLY for the 4th output, the jit.pwindow rather than the jit.window objects? Well, i thought the problem was somehow related to the hardware acceleration of the video card, but i wouldn't bet a dinner on it. Actually, the video played smoothly when i used 4 jit.windows, but after about 15/20 minutes the frame rate scaled down, from 25 fps to 1 or 5 fps. At first i thought it was a RAM or a disk speed/data rate problem, but as soon as i replaced the 4 jit.window objects with the 4 jit.pwindows, the problem disappeared. And the video installation has run smoothly for two weeks.
      I didn�t try your first suggestion (render all the videos to a single matrix, and strech a jit.window horizontally over the different screens), and all my video was 320x240, but i hope my long account can give you some hint!
      Marco
    • Jan 22 2006 | 6:10 pm
      Hi there,
      Thanks for the replies ! very very helpfull indeed.. Another thing which i forgot to mention is that apart from the 4 1024x768 clips playing in sync, they also have to play in sync with a 4 mono audiotracks, playing from the same machine to four seperate audio outputs.. This complicates things a bit in the synching department.
      I did some basic testing this weekend on a new dual 2.3 g5 machine (pci-e), 1.5 gb ram, standard harddrive, 2 nvidia 6600 cards. (Forgot to test the 2x 2048 768 option btw.) : Spanning a single window across different cards definetely doesnt work (yet). I split a quicktime with audio track into two seperate tracks, one audio and one video. Made the resolution of the video 1024 768 and used the photo jpeg codec 25fps no fields. Made 4 jit.qt.movie 1024 768 objects, connected to 4 jit.window objects which do one screen each by opening in the right size with border 0. Resolution on all 4 monitors is 1024 768. Also installed shadowkiller app btw. Straightforward playback on this system without drawing to window directly is about 10 fps. When drawing to window is on, speed and quality (?) improve dramatically. It's hard to measure the fps, because the standard fps object doesnt work when drawing to window is on, but it doesnt look like its playing at 25fps. To be able to do a proper test we'll need to install a RAID, which will hopefully happen somewhere the coming week. I'm thinking a 4 disk SATA system (one disk for each output). Problem is a SATA host card for PCI-E, mac gurus don't ship their PCI-E host card until february it seems. The other problem is synching to the 4 audio streams. I've done a quick test, loading the soundfile in a sfplay object, taking the [current position] and passing it through to the quicktime players with the [time $1] command. This works ok, but makes the playback less fluent, it's stuttering a bit. Haven't done a lot of tweeking on snapshot and trigger bangs, might turn out to work fine. Other options/ideas much appreciated.
      To conclude, it's not working yet ;) Next step will be expanding storage options by adding the SATA external drives and possibly upgrading to a quad g5. Wondering how much the upgrade to quad will help though ? Decompressing the movie through CPU ?
      That's it for now, more later. Any thoughts much appreciated.
      Thanks again !
      Gideon
      On 20-jan-2006, at 16:13, deKam wrote:
      > cheers Gid!
    • Jan 22 2006 | 7:28 pm
      For syncing sound and image, you could see if my tl.metro might be of help:
      This is a metro driven by phasor~ whenever audio is on.
      For jit.wt.movie there's an @unique attribute to avoid repeating the same frame. Might improve performance in case you didn't test/use it already.
      Below is a patch that might give you some additional ideas towards syncing video and sound as well as monitor framerate when using direct to window.
      Best, Trond
    • Jan 22 2006 | 8:08 pm
      Since decompression vs datarate is your bottleneck, i would spend extra money on extra raid before quad processor. If your raid is strong enough, you could do uncompressed yuv. then your cpu is dedicated to traffic control instead of decompression. with sata still a missing piece, you could use apple's fiber channel solution,
      or for the same or less GVS has released their dual core custom macs, with up to 16 drive internal raid http://store.yahoo.com/gvstore/ g5dualcorespec.html great machines!
      the 'ideal' raid would be 4 channels of raid 0 striped pairs (total 8 drives) next best would be say one big 6-8 drive raid 0.
      and try the mov resolution 512x384 per channel
      --deKam
    • Jan 23 2006 | 5:43 am
      Interesting, interesting. I just spent an allnighter in the world of RAID systems. Learned a lot, will spare you most of the details as the topic is becoming more and more OT, still i think it might be an interesting contribution for the archives. Also, I went through the archives a bit and dug up some not so very old stories about YUV and the playback of large quicktimes. It seems the case we're dealing with here nicely pushes the envelope a bit further again, an upgrade to the old thread completely in line with the upgrade of the latest g5 powermac series ;)
      Allthough only the first PCI-E Raid systems are being developed as we speak and solutions are a bit crummy, this seems to be a setup that could work ?
      1 x Highpoint Tech RocketRAID 2320 (http://www.highpoint-tech.com/PDF/ rr2320/RR2320_DS_EN_1.0_111505.pdf) 1 x Granite Digital PCI Cable bracket Assembly (http:// www.granitedigital.com/_downloadfiles/acrobat/SATA_8% 20Channel_Installation.pdf) 1 x MacGurus 8 Bay Burley (http://www.macgurus.com/productpages/sata/ satakits.php) 8 x Hitachi T7K-250 SATA II (http://www.macgurus.com/cgi-bin/ccp51/cp- app.cgi?pg=prod&ref=0A31636)
      This setup in a RAID 0 configuration should provide a datarate of about 500 MB/sec. Correct me if I'm wrong please. When drawing to window directly a quad core g5 probably would make that much of a difference, when using Apples Component Video codec. I ran a small test just now, quicktime info reports a datarate of about 230 Mbits/sec. BTW: The new quicktime size is 1024 x 576, wide(r)screen, instead of the 1024x768 mentioned in the topic. The screen resolution will remain 1024x768 of course. Question is, will this RAID setup be sufficient for playing back four simultaneous 1024x576 Component Video quicktime streams at 25 fps ?
      Thanks again !
      Gideon
    • Jan 23 2006 | 2:40 pm
      On 23 Jan 2006, at 06:43, Gideon Kiers wrote:
      > This setup in a RAID 0 configuration should provide a datarate of > about 500 MB/sec. Correct me if I'm wrong please. > > On 22-jan-2006, at 21:08, deKam wrote: > >> the 'ideal' raid would be 4 channels of raid 0 striped pairs >> (total 8 drives) >> next best would be say one big 6-8 drive raid 0.
      If you have one huge RAID 0 array, seek times will spoil the throughput. I understand that you want to play 4 movies simultaneously. each movie will be on a different part of the disk. so the disk heads have to move to the location of the next frames of movie 1, then movie 2, etc.
      My guess is that you are better off with 4 independent disks, each playing one movie at a time. the price to pay is that you have to put all your movies on all 4 disks, but given disk prices, that seems acceptable. Of course, you may speed up the disks by building them as 4 pairs of 2 disks of RAID 0. I think that is what deKam meant by 4 channels of raid 0 striped pairs.
      An advanced RAID controller should be able deliver a 4x2 configuration. HtH -jennek
    • Jan 23 2006 | 11:55 pm
      Instead of running separate movies, how about making one qt with all four laid out 2x2.
      Output through DVI port. Then use an external videowall-style processor to split the image externally.
      Something like this...(although I don't know if this one's any good)
      That gets rid of the disk seek time problem and gives you perfect sync.
      If you went 1920 x 1080 resolution for the movie, you'd be able to use all the HD settings in editing software like FCP. Might help a bit.
      Seek times on disks can be a problem. But I can run two PAL size uncompressed movies off a Firewire 800 drive, so running 4 movies a little bigger shouldn't be impossible from a raid.
    • Jan 24 2006 | 12:08 am
      yes, and even cheaper than a video wall processor, you can take a single vga, to 1x4 DA, then a scaler on each channel to zoom on each quadrant - this works very well for making 4 channels of ntsc/pal from 1280x1024 channel, but to upscale the resolution to Gid's you would need to send QXGA 2048x1536, which limits your choices (as most scalers are limited to SXGA+ or 1080i)
      assuming you find the right scalers, this helps the sync problem, but 2048x1526 datarate adds up to the same anyway you slice it. or (again) downres your source by 1/2 then you are back down to 1024x768 in four quadrants, which all off the shelf scalers can handle.
      but then again, why pay for external scalers or video wall processors when your opengl GPU has a perfectly good scalers built in? (except to simplify the sync)
      -deKam
    • Jan 24 2006 | 5:08 am
      I am amazed when I see to have a Quad-screen video playback in full size full speed be possible in a computer.
      I have also been working on a project need multiscreen playback while the platform is on PC. It is very hard to have all the video in-sync when they are playing in different players. So, I try to use the "stretched" way and compose a large video.
      And I've found that not every codec works, some of them could not display on the non-primary screen and leave blank. I guess it is because video playback make use of different hardware acceleration rather then the openGL (or directX in Windows).
      So, except a fast disk we have been talking so far, how can we make use of the GPU throughly on video playback ? Especially when we are working with multiple display card ? (And what is the advantage of the dedicated video payback mechines?)
      (^_^) William
    • Jan 24 2006 | 8:49 am
      Gideon,
      going back to you original post, I understand that you do not switch movies. You start the playback on the four screens and let it run - in sync that is. effectively this is one movie with 4 video and 4 audio tracks.
      There are various ways to let the quicktime format help you. you could combine all four video and four audio tracks into one movie, and the quicktime playback code would do the syncing for you. moreover, I think that quicktime also tries to lay out the tracks onto the disk intelligently, to reduce seek times (interleaving the tracks). disclaimer: I have not tried it myself, this is what I remember from reading 'inside macintosh - quicktime chapters' but that was quite some time ago.
      If multiple tracks won't work, you may do the interleaving yourself. use a codec that does not use temporal compression. create a movie frames from movie 1,2,3,4,1,2,3,4. Alternatively, glue the four frames together as 1024*(4*768) and split them as they come out of jit.qt.movie (depending on the implementation of the splitting, (4*1024)*768 may be faster). This is what you already mentioned, but that was in view of using one or more jit.windows. I think that the quicktime and opengl design choices are indepenent here.
      This does not reduce datarates, it just helps in the syncing and disk layout department.
      regarding disks, I replaced my 7200 rmp drive with a WD raptor disk at 10.000 rpm. this makes a significant difference. sustained data transfer is proportional to the rotational speed, as more bits pass under the read heads per second.
      HtH -jennek
    • Jan 24 2006 | 9:42 am
      Hello there, I'll restate my question for clarity.
      I think I first need a disk solution that will allow me to play 4 quicktime streams in sync, each a resolution of 1024 x 576, in Component Video codec, at 25fps, on four VGA/DVI outputs with a resolution of 1024 x 768 each, using two nvidida 6600 cards on a new dualcore G5 2.3 mhz. The 4 quicktime streams need to be played in sync with each other, but also in sync with a 4 channel 44.1 khz AIFF file. There will be more than one block of 4xQuicktime and 4xAiff to be played. I believe I need a disk system that is capable of at least 200MB/sec.
      The Highpoint Rocketraid 2320 is the only Mac compatible PCI Express SATA host at the moment, according to barefeats. (http:// www.highpoint-tech.com/USA/rr2320.htm) It features 8 (internal) ports, up to 300 mb/s for each port. This i can then hookup to an external SATAII raid system comprised of either 4 or 8 disks. This should probably do it ?
      Then, there's also the possibility of using Firewire 800. There are not a lot of firewire 800 PCI-E cards on the market yet. Aaxeon has a 2 port fw800 card, the FWB3414. (http://aaxeon.com/products/ Productdetail.aspx?cate=8&modelno=FWB3414). I could stick two of these things in and hook up 4 7200 rpm FW800 disks. But am unsure if that will get me the speed I need ?
      Next thing is to fix the synching of it all, but i feel much more comfortable with finding a solution in software if I know the hardware department is taken care of sufficiently. There are various ways of synching the streams, i'm allready quite close i think, the biggest problem is that i can not see if they sync because my harddrives are not up to speed ..
      Scanconverters are not an option indeed, because of the need for hiresolution outputs, with as much quality as possible. btw. 4 x dmx controlled blu-ray dvd players might be an option as well, if only they would exist ;)
      thanks again !
      Gideon
    • Jan 24 2006 | 2:34 pm
      > Scanconverters are not an option indeed, because of the need for > hiresolution outputs, with as much quality as possible.
      not a scanconverter, but a scalar, such as: http://www.tvone.com/ c2-4100.shtml this is the only one i know that is rated to 2048x2048
      > There are various ways to let the quicktime format help you. > you could combine all four video and four audio tracks into one movie, > and the quicktime playback code would do the syncing for you.
      The one problem with 4 track audio in Quicktime is that there is no solution to have QT extract 4 tracks to 4 discrete audio outputs. On the PC there are some over-complicated hacks to make this work, but none that i know of on Mac. (Perhaps the only one is using a 5.1 encoded stream, but then dolby is not symmetrically compressed and lossy, so you may end up with problems in the mix)
      > 4 x dmx controlled blu-ray dvd players might be an option as well, > if only they would exist ;)
      hmmm well, there are sync capable HD players. again pricey, but rock solid:
      --deK
    • Jan 24 2006 | 8:29 pm
      On 24-jan-2006, at 15:34, deKam wrote:
      > not a scanconverter, but a scalar, such as: http://www.tvone.com/ > c2-4100.shtml > this is the only one i know that is rated to 2048x2048
      interesting
      > The one problem with 4 track audio in Quicktime is that there is no > solution to have QT extract 4 tracks to 4 discrete audio outputs. > On the PC there are some over-complicated hacks to make this work, > but none that i know of on Mac. (Perhaps the only one is using a > 5.1 encoded stream, but then dolby is not symmetrically compressed > and lossy, so you may end up with problems in the mix)
      Exact.
      > hmmm well, there are sync capable HD players. again pricey, but > rock solid:
      True indeed.
      Thank you and the others very much for all the help and information, much appreciated !
      Gideon
    • Jan 24 2006 | 9:49 pm
      Ah one more question while we're at it. Have you seen a recording deck with a vga or dvi input, capable of recording straight from a dvi computer output at, say, 1024x768 ? thanks, gid.
      On 24-jan-2006, at 15:34, deKam wrote:
      > hmmm well, there are sync capable HD players.
    • Jan 24 2006 | 9:56 pm
      google led me here, though I think a pvs thread some time ago mentioned it as well...
      -0-0-0-0-0-0-0+0-0-0-0-0-0-0- The Thanksgiving Cocktail 2 oz rye 1/2 oz cranberry juice (pure, unsweetened) 1/2 oz lemon juice 1/2 oz maraschino 1/2 oz simple syrup Shake with ice and serve in a chilled cocktail glass -0-0-0-0-0-0-0+0-0-0-0-0-0-0-
    • Jan 24 2006 | 10:49 pm
      Yes sorry, i should have been a bit more specific. I'm (still) searching for a solution to capture VGA (or DVI) at a high resolution (pref. 2048 x 1536) at 25 fps. Recently Vade posted his thoughts on this subject, though i'm not sure yet how to get the VGA/DVI signal either into the Kona, Decklink or into the Sony... ? :
    • Jan 24 2006 | 10:57 pm
      there was a long thread recently where i spewed alot of info about high-res recording.
      to answer your question, there are very few, and those which exist are built for security/military with limited (slow) frame rate. the thread is mostly about how to record using HD resolution from one machine to another, and various other recording hi-res recording strategies
      --deK
    • Jan 25 2006 | 12:39 am
      I am also looking for a way to record 2048x1536 dual-link DVI from one computer into another. I do not know of any DVI input capture cards, but if I find one I'll post info on it and I would certainly appreciate hearing of any you find. In the meantime I am looking at converters.
      Miranda makes a product called the DVI-Ramp which will convert DVI to HD-SDI, which you can then record through a DVS or AJA or Blackmagic or whatever HD capture card. However the Miranda product is not a scaler, so it does a 1920x1080 crop.
      Vista Systems (http://www.vistasystems.net) makes a product called the Spyder which can do a whole bunch of stuff including, I think, scaling 2048x1536 DVI to 1920x1080 HDSDI. Haven't tried one yet.
      not to nitpick but good luck finding a Sony D5, let alone an uncompressed one. Sony makes HDCAM; Panasonic makes HD-D5. they are both compressed hd formats.
      -Alex
    • Jan 25 2006 | 1:15 am
      It seems we're stuck at 1920 x 1200 or 1920 x 1080 at the moment. There are two more converters i've found so far :
      http://www.gefen.com/kvm/product.jsp?prod_id=2566 and http:// www.doremilabs.com/products/XDVI-20.htm
      in a bit lower resolution i've found also this 'solution' :
      http://www.ems-imaging.com/catalog/modules.php? name=catalog&file=product_info&cPath=39&products_id=52&osCsi d=12ee9785af b165d4123e5eee4f11f54c
      "The Phynx RGB has 6MBytes of video capture memory per channel and can capture data at 640 x 480, 800 x 600, 1024 x 768 and 1600 x 1200 resolutions. Custom resolutions are possible if they are within the bandwidth limits of the Phynx RGB. The Phynx RGB captures data at a maximum rate of 280 Mpixels per second. Once captured, the data is converted to either 555, 565 or 888 pixel display formats and then transferred over the PCI bus to host memory, for display on the desktop."
      No luck finding DVI capture cards, yet ..
      On 25-jan-2006, at 1:39, Alex Stahl wrote:
      > In the meantime I am looking at converters.
    • Jan 25 2006 | 6:11 pm
      Hi all
      well Gid's project inspired me to write this example patch showing how you could synchronize one (or more) movies to a master sfplay~ -- i haven't fully tested it for accuracy, but visually it seems the video is following the audio very well.
      you'll need a movie that has its audio extracted from the movie into an .aif file to test
      enjoy!
      deKam
    • Jan 25 2006 | 7:00 pm
    • Feb 01 2006 | 10:06 am
      > > negative. one cardinal rule, you cannot span a single window across > different cards. i've always experienced a big loss of framerate on > agp/pci-x setups. there is a small possibility it might work with > pci-e, but i tend to doubt it, i believe it is an OpenGL/driver issue > not a bus-bandwidth.
      We've just put together a system with these specs:
      OSX PPC 10.4.4 2 x 2.0Ghz G5, 8GB RAM, 240GB RAID-1 disk 4 x Nvidia GE Force 6600, 256MB RAM 8 x Dell 2405FPW 1920x1200 LCD
      Quicktime playback across two screens attached to a single card works great, even at high resolutions. Dragging a QT window across two screens attached to separate cards is a disaster - 1 fps if we're lucky. If we reduce the resolution to 640x480 or so things work fine, but that defeats the purpose of this hardware.
      I'm new to this list and have never used Jitter (I just downloaded the app and docs five minutes ago), so please excuse the rudimentary nature of my questions. Can I use Jitter scissors to split an existing high res QT movie into four vertical stripes, then use jitter to play these stripes back in sync? Will Jitter handle the alignment of the tiling of the stripes to ensure each stripe is confined to a single video card and its pair of screens?
      If so, I think that'll solve our problem - a godsend to find such a simple solution to salvage a relatively expensive hardware purchase.
      Thanks!