SDI Technologies iH30 Especificações Página 56

  • Descarregar
  • Adicionar aos meus manuais
  • Imprimir
  • Página
    / 147
  • Índice
  • MARCADORES
  • Avaliado. / 5. Com base em avaliações de clientes
Vista de página 55
Device Feedback
Quadro SDI Output PG-03776-001_v06 | 51
9.2 DETECTING DUPLICATE FRAMES
A duplicate frame will occur on the SDI output when a new frame is not ready in the
queue at the time of the vertical retrace. This will happen when an application’s draw
time exceeds the time period between subsequent vertical retrace events on the outgoing
SDI video signal. When a new frame is not sent prior to the next vertical retrace, one of
two possible scenarios takes place. If, there is a frame already queued, then that frame is
sent and the number of queued buffers is reduced by one. In this case, there will be no
repeated frame on the SDI video output. In the case that the internal buffer queue is
empty, the last sent frame will be scanned out again by the SDI video device. This will
display as a duplicate frame.
Note: Internally, the Quadro SDI device only displays complete interlaced or
progressively scanned frames. As such, only complete frames are displayed. In the
case of interlace video this behavior prevents the intermixing of fields from
different video frames.
9.2.1 Using the GLX/WGL_video_out Extension
When an application uses the WGL_NV_video_out or GLX_NV_video out extensions,
dropped frames or fields or missed vsync events are detected by catching unexpected
results in the value of the vsync counter
pulCounterOutputVideo returned
wglGetVideoInfoNV() or glXGetVideoInfoNV(). When these functions are called
each time in the draw loop, the value of
pulCounterOutputVideo should increment by
1 in the case of a progressive video format or when rendering fields in an interlaced
video format and by 2 when rendering frames in an interlaced video format. An
example of checking for dropped frames within the draw loop is outlined in Code
Listing 39.
Code Listing 39: Detecting a Dropped/Duplicate Frame
unsigned long l_ulNumVertBlanks;
unsigned long l_ulNumBufs;
static unsigned long l_ulLastNumBufs = 0;
static unsigned long l_ulLastSent = 0;
static unsigned long l_ulLastNumVertBlanks = 0;
wglGetVideoInfoNV(ghpDevList[0], &l_ulNumBufs,
&l_ulNumVertBlanks);
if (gbInterlaced) {
if (!options.field) {
l_iBufType = WGL_VIDEO_OUT_FRAME;
l_iVsyncDiff = 2;
l_bBlock = options.block;
} else {
l_iBufType = l_bField1 ? WGL_VIDEO_OUT_FIELD_1 :
WGL_VIDEO_OUT_FIELD_2;
Vista de página 55
1 2 ... 51 52 53 54 55 56 57 58 59 60 61 ... 146 147

Comentários a estes Manuais

Sem comentários