ultrasound image viewer - qt + sgx

Post on 19-May-2015

1.207 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

This application showcases the capability of v3dfx-base, with ARGB input, with multiple (128 layers of) blending, all with

TRANSCRIPT

v3dfx-base – Qt Ultrasound Image Viewer

prabu@ti.com , Feb 2012

Qt Dynamic Image Viewer based on v3dfx-base

• This implementation tests video/image streaming functionality via SGX GPU, using V3dfxGLScene, for an Ultrasound image viewer. – This application draws data into a GraphicsView with

V3dfxGLScene, and updates data in drawBackground()• This application showcases the capability of v3dfx-base,

with ARGB input, with multiple (128 layers of) blending, all with <10% CPU loading– With a regular glTexImage2D mode of texturing, this would

take 100% CPU, and lower fps rates• Every frame shows a different angle of view

Qt UltraSound Image Viewer

V3dfx-base Introduction• Allows applications to integrate video streaming with SGX

without writing platform specific code in a re-usable way– Support for imgstream AND eglimage through same API

5

v3dfx-base

device n

channel 1 channel n

device n+1

channel 1 channel n

device n+2

channel n channel n

deviceClass = new TISGXStreamIMGSTREAMDevice(); texClass = new TISGXStreamTexIMGSTREAM();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);

deviceClass = new TISGXStreamEGLIMAGEDevice(); texClass = new TISGXStreamTexEGLIMAGE();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);

Is / Is Not

•Handles rapidly changing textures (RGB, YUV)

•Supports imgstream•Supports eglimage•Supports both imgstream

and eglimage with single API

•Reusable class, delivered as “v3dfx-base.a” (ARM library)

•Needs Graphics SDK with eglimage/imgstream support

•Targeted to support multi-threaded operation (WIP)

•Targeted to support cropping (WIP)

WHAT IT IS

•Does not initialise GL state, EGL state for application

•Does not do drawing (glDrawArray, glDrawElement)

•Does not do eglSwapBuffer

•Does not provide fancy GLSL shaders

WHAT IT IS NOT

6

Underneath the hood – Target Execution

7

v3dfx-base (v3dfx-base.a) library archive

Customer application

GL_IMG_texture_stream2 GL_OES_EGL_image_external

User Mode SGX binary

bufferclass_ti Kernel driver

User Mode SGX binary

SGX HW

v3dfx-base.a linked in app, Qt wrapper ..

-Contiguous buffer (preferred), allocated by customer application as texture input-Customer application does drawing in its native way-Dynamically update texture buffers using qTexImage2DBuf(), signal_draw() and dqTexImage2DBuf() calls

IMGSTREAM EGLIMAGE

Underneath the hood – raw API

8

v3dfx-base

device n

channel 1 channel n

device n+1

channel 1 channel n

device n+2

channel n channel n

deviceClass = new TISGXStreamIMGSTREAMDevice(); texClass = new TISGXStreamTexIMGSTREAM();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);

deviceClass = new TISGXStreamEGLIMAGEDevice(); texClass = new TISGXStreamTexEGLIMAGE();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);

GL_IMG_texture_stream2 GL_OES_EGL_image_external

User Mode SGX binary

bufferclass_ti Kernel driver

User Mode SGX binary

SGX HW

Class Description – IMGSTREAM class

9

Class Description - EGLIMAGE class

10

Target use-cases

11

v3dfx-base library

v3dfx templates(Barn-door, Mosaic

Qt

gstreamer

QGLWidget wrapper (completed)

QGraphicsItemwrapper

QGLWidget Wrapper Class for v3dfx-base

12

Source Code organisation– Base API implementation

• v3dfx-base/api– Provides both imgstream and eglimage implementation as raw C++ classes

– Reusable Qt classes• v3dfx-base/platforms/Qt

– (GraphicsItem based) – in progress

• v3dfx-base/platforms/qtQGL – (QGLWidget based) – completed

– Test applications• v3dfx-base/test/imgstream

– Raw (full screen, no window manager) test for imgstream based streaming

• v3dfx-base/test/eglimage– Raw (full screen, no window manager) test for eglimage based streaming

• v3dfx-base/test/platforms/qtQGL– Qt – QGLWidget based class, test for both imgstream and eglimage

• v3dfx-base/test/platforms/qt– Qt – QGraphicsItem based class, test for both imgstream and eglimage (WIP)

13

References

• https://github.com/prabindh/v3dfx-base

14

top related