Michael Jones (mtj++at++isdn-celeste.sgi.com)
Mon, 14 Oct 1996 09:36:36 -0700
|We've heard about using dynamic video resolution (DVR) for Performer 2.1 and
|the Infinite Reality Engine. It is a method of generating less pixels for a
|frame when processing the frame is more difficult and more pixels when
|processing is easy so that you can maintain a high frame rate. What we are
|looking for is some sample code that illustrates how to use the functions that
|do DVR. If someone could give us some sample code it would be very much
|appreciated.
Here's some email that I sent out this weekend to a newsgroup answering
the same question. Funny, that I suggested the newsgroup poster ask his
question here on the mailing list ;-)
Michael Jones wrote:
>
> Ed asks how to enable and direct the InfiniteReality graphics
> system's ability to render images at a chosen size and perform
> a smooth zoom back up to video resolution. This is quite handy
> for managing pixel-fill overload situations.
>
> In article <53plii$vd++at++newsbf02.news.aol.com>, edlantz++at++aol.com writes:
> > We are projecting three edge-blended video images onto a very wide
> > field-of-view display from a single pipe RE3 with 4 R10000's and 4 RM's
> > running Performer 2.1. Even with extensive optimizations we occasionally
> > get dropped frames which cause discontinuities in the "optic flow." We
> > would rather loose resolution than make everyone sick. I have seen demo's
> > of "Dynamic Video Resolution," but can't seem to locate any detailed
> > explanation. Anyone know how to implement DVR?
>
> It's easy, so you'll have plenty of time to do it before your exhibit
> opens. Here is my advice:
>
> 1. Subscribe to info-performer, the IRIS Performer mailing list. There
> are about 800 people who exchange 5-10 ideas/tips/suggestions there
> each day. The development team answers these questions (unless they
> get answered by users before we get a chance ;-) Send email to the
> address "info-performer-request" saying that you want to be added.
> If you'd asked the question there, you'd have gotten answers even
> sooner.
>
> 2. Type "man performer" and look for "Dynamic Video Resolution". It is
> true that this 92-page "man-page" is a bit long, but it does have a
> sense of completeness that can be very helpful.
>
> From page 20:
> pfPipeVideoChannel C++ API
> The pfPipeVideoChannel capability is used to direct the output of
> pfChannels to different video outputs. A pfPipeVideoChannel is
> created from a pfPipe and can only be used to manage video
> channels on the graphics pipeline managed by the parent pfPipe.
> They are similar to pfVideoChannels but are tracked and
> maintained by libpf and are needed by libpf to draw pfChannels.
>
> From page 58:
> pfVideoChannel C++ API
> Each pfVideoChannel provides the capability to query and control
> the state and output area of a hardware video channel. This
> support is provided via the XSGIvc video control X extension for
> Silicon Graphics platforms. This is the mechanism through which
> dynamic video resolution and other video hardware features are
> managed.
>
> 3. Type "man pfPipeVideoChannel" and "man pfVideoChannel" to learn all
> the details of DVR control.
>
> 4. Type "insight" (if you installed the online books) and search for
> pfPipeVideoChannel, pfVideoChannel, or "Dynamic Video Resolution"
> in the index.
>
> 5. Take a look at the "perfly" source code (C or C++) for an example
> of how to manage DVR. When the IRIS Performer 2.1 perfly is run
> on an InfiniteReality or Reality system, it enable the use of the
> keyboard arrow keys to control DVR scaling in 4-pixel increments
> from full screen (1:1) down to 320x320 or so. Enable the stats
> ("s" key) to have the "rendered .vs displayed" dimensions shown
> on the status line, and press "I" (upper case I) to have a red
> box showing the rendered size superimposed on the screen. This is
> what we showed at the Friends of Performer talk at SIGGRAPH.
>
> 6. Alternate approach (outside of IRIS Performer) is to investigate
> the lower-level system calls that Performer uses to control the
> DVR capability. Type "man xsgivc" for this information.
>
> > This exhibit is supposed
> > to open at the Carnegie Science Center in Pittsburgh this month, so
> > specifics or code examples would be greatly appreciated. As always,
> > thanks a million.
> >
> > Ed Lantz
> > Spitz, Inc.
> > edlantz++at++aol.com
>
> An additional point: Once you know *how* to control DVR, you need to
> know *when* to do so. One choice is to simply fix the rendered size
> to be small enough that overload never happens. The other route is
> to use DVR as a "resolution bellows" that swings the scale factor
> between 1:1 in normal cases and zooms up as much as is required to
> avoid short-term dynamnic overload problems. If you go for this
> more elaborate route, be sure to read about IRIS Performer's high
> precision "Pipeline Instrumentation" notions in the statistics
> section of the programming guide. You need to be able to separate
> the pixel fill time from the geometry processing time to control
> this properly, and the advanced stats are the key to making it
> work well.
>
> Be seeing you, Phone:415.390.1455 Fax:415.965.2658 M/S:8U-590
> Michael T. Jones Silicon Graphics, Advanced Graphics Division
> mtj++at++sgi.com 2011 N. Shoreline Blvd., Mtn. View, CA 94039-7311
>
> "Competition is a by-product of productive work, not its goal. A
> creative man is motivated by the desire to achieve, not by the desire
> to beat others." -Ayn Rand
--Be seeing you, Phone:415.933.1455 Fax:415.965.2658 M/S:8U-590 Michael T. Jones Silicon Graphics, Advanced Systems Division mtj++at++sgi.com 2011 N. Shoreline Blvd., Mtn. View, CA 94039-7311 "Du musst Amboss oder Hammer sein" -- Goethe ======================================================================= List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/ Submissions: info-performer++at++sgi.com Admin. requests: info-performer-request++at++sgi.com
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:53:45 PDT