2.5.25 IDeckLinkGLScreenPreviewHelper Interface

The IDeckLinkGLScreenPreviewHelper interface may be used with a simple IDeckLinkScreenPreviewCallback implementation to provide OpenGL based preview rendering which is decoupled from the incoming or outgoing video stream being previewed.

A reference to an IDeckLinkGLScreenPreviewHelper interface may be obtained from CoCreateInstance() on platforms with native COM support or from CreateOpenGLScreenPreviewHelper() (OpenGL 2.0) or CreateOpenGL3ScreenPreviewHelper() (OpenGL 3.2) on other platforms.

Typical usage of IDeckLinkGLScreenPreviewHelper is as follows:

  • Configure an OpenGL context as an orthographic projection using code similar to the following:

glViewport(0, 0, (GLsizei)newSize.width, (GLsizei)newSize.height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
Related Interfaces

Interface

Interface ID

Description

IDeckLinkVideoFrame

IID_IDeckLinkVideoFrame

An IDeckLinkVideoFrame object interface is set for OpenGL preview with IDeckLinkGLScreenPreviewHelper::SetFrame()

2.5.25.1 IDeckLinkGLScreenPreviewHelper::InitializeGL method

HRESULT IDeckLinkGLScreenPreviewHelper::InitializeGL();

The InitializeGL method should be called from the preview OpenGL context during initialization of that context.

Return values:
  • E_FAIL – Failure

  • S_OK – Success

2.5.25.2 IDeckLinkGLScreenPreviewHelper::PaintGL method

HRESULT IDeckLinkGLScreenPreviewHelper::PaintGL();

The PaintGL method should be called from the preview OpenGL context whenever the preview frame needs to be repainted. Frames to be displayed should be provided to IDeckLinkGLScreenPreviewHelper::SetFrame().

PaintGL and SetFrame allow OpenGL updates to be decoupled from new frame availability.

Return values:
  • E_FAIL – Failure

  • S_OK – Success

2.5.25.3 IDeckLinkGLScreenPreviewHelper::SetFrame method

HRESULT IDeckLinkGLScreenPreviewHelper::SetFrame(IDeckLinkVideoFrame *theFrame);

The SetFrame method is used to set the preview frame to display on the next call to IDeckLinkGLScreenPreviewHelper::PaintGL().

Depending on the rate and timing of calls to SetFrame and PaintGL, some frames may not be displayed or may be displayed multiple times.

Parameters:

theFrame – Video frame to preview

Return values:
  • E_FAIL – Failure

  • S_OK – Success

2.5.25.4 IDeckLinkGLScreenPreviewHelper::Set3DPreviewFormat method

HRESULT IDeckLinkGLScreenPreviewHelper::Set3DPreviewFormat(BMD3DPreviewFormat previewFormat);

The Set3DPreviewFormat method is used to set the 3D preview format.

Parameters:

previewFormat – The 3D preview format. See the Linked frame preview format (BMD3DPreviewFormat) section for more details.

Return values:

S_OK – Success