DVR still not correct?

New Message Reply Date view Thread view Subject view Author view

Tinker, Peter (Tinker#m#_Peter++at++MSMAIL4.HAC.COM)
14 Nov 1996 09:27:01 -0800


I'm running Performer 2.2 on a 3-pipe iR, IRIX 6.x, OpenGL. Two pipes have
two video channels each; one pipe has eight video channels. The two-channel
pipes have both channels at 1280x1024x60; the eight-channel pipe has 8
640x480_60. When I use Dynamic Video Resolution, only the 0'th channel on
each pipe appears to work correctly; the others show lots of jitter when the
resolution changes, as if they were being resized from an incorrect origin. I
believe this was a problem that was supposed to be fixed in Performer 2.2
(that's why I upgraded) but it seems very much the same as in 2.1. Any word
on a fix?

Pete Tinker
Hughes Research Labs

Here's the code I use:

 if (getenv("CA_USEDVR")) {
    esChannel* chan;
    float frac;
    int x1,y1;
    int nPixels = 0;
    int nPipes;
    esPipe** pipes;
    esPipe* pipe;
    int* pipePixels;
    pfPipeVideoChannel** pvChans;
    int i;

    /* Determine the number of pixels per pipe. */
    nPipes = 0;
    for (pipe = global->pipes; pipe; pipe = pipe->next) {
      nPipes++;
    }
    pipes = NEWN(esPipe*,nPipes);
    pipePixels = NEWN(int,nPipes);
    pvChans = NEWN(pfPipeVideoChannel*,nPipes);
    for (i = 0,pipe = global->pipes; i < nPipes; i++,pipe = pipe->next) {
      pipes [i] = pipe;
      pipePixels [i] = 0;
    }

    for (chan = global->channels; chan; chan = chan->next) {
      pfPipeVideoChannel* pvChan = pfGetChanPVChan(chan->pfchan);
      pfGetChanSize(chan->pfchan,&x1,&y1);
     for (i = 0; i < nPipes; i++) {
        if (chan->pipe == pipes [i]) {
          pipePixels [i] += x1 * y1;
          pvChans [i] = pvChan;
        }
      }
    }

    for (chan = global->channels; chan; chan = chan->next) {
      for (i = 0; i < nPipes; i++) {
        if (chan->pipe == pipes [i]) {
          pfGetChanSize(chan->pfchan,&x1,&y1);
           
          pfPVChanDVRMode(pvChans [i],PFPVC_DVR_AUTO);

          /* Allocate bandwidth based on number of pixels. */
          frac = (float) (x1 * y1) / (float) pipePixels [i];

          pfPVChanStressFilter(pvChans [i],frac,0.80f,0.95f,1.5f,2.0f,10.0f);
        }
      }
    }

    free(pipes);
    free(pipePixels);
  }

=======================================================================
List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/
            Submissions: info-performer++at++sgi.com
        Admin. requests: info-performer-request++at++sgi.com


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:53:57 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.