Beste Tweakers,
ik ben recentelijk weer met openGL begonnen om een berekening te kunnen visualiseren, immers heb ik hier een stukje deinterlacing gedaan en ik wil het resultaat rechtstreeks naar mijn monitor sturen middels openGL.
Ik heb het basis principe al en het werkt ook, maar ik krijg maar 1 fps.
Ik zal even kort laten zien wat ik doe;
De pixelwaardes worden in een apparte methode ingelezen en de ruwe Y-component waardes worden in de unsigned char* yData[1280 * 720 * sizeof(char)] geplaatst; Dit gebeurt nu nog maar 1malig, ten tijde van het starten van de applicatie.
Het plaatje komt keurig op mijn scherm terecht (wel horizontaal gespiegeld, maar das (nog) geen probleem).
Het probleem is dat ik maar 1 fps heb; Ik heb dit gecontroleerd middels een timertje en hij komt maar 1 keer per seconde in mijn Display callback functie.
Daarbij draait de CPU ook nog eens op 100%.
Weet er iemand een snellere/efficientere mannier om een hogere fps te krijgen, want dat moet toch gewoon kunnen ?
Daarbij wil ik nog ff vermelden dat ik op Ubuntu 8.10 draai en dus niet de beschikking heb over DirectX oid.
Edit:
Ik heb natuurlijk onderzoek gedaan:
http://lurkertech.com/lg/ogl.video.html
http://www.opengl.org/wik...GL_in_Linux:_GLX_and_Xlib
http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html
http://www.dranger.com/ffmpeg/tutorial01.html
De laatste gaan voornamelijk over de Codecks e.d., daar heb ik tot nu toe weinig aan; Immers heb ik ruwe video.
ik ben recentelijk weer met openGL begonnen om een berekening te kunnen visualiseren, immers heb ik hier een stukje deinterlacing gedaan en ik wil het resultaat rechtstreeks naar mijn monitor sturen middels openGL.
Ik heb het basis principe al en het werkt ook, maar ik krijg maar 1 fps.
Ik zal even kort laten zien wat ik doe;
C++: simpleOpenGL.cpp
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
| void runTest(int argc, char** argv) { // Create GL context glutInit(&argc, argv); glutInitDisplayMode(GLUT_LUMINANCE); glutInitWindowSize(window_width, window_height); glutCreateWindow("YUV-Viewer"); // register callbacks glutDisplayFunc(display); // start rendering mainloop glutMainLoop(); } //////////////////////////////////////////////////////////////////////////////// //! Initialize GL //////////////////////////////////////////////////////////////////////////////// void initGL() { // initialize necessary OpenGL extensions glewInit(); // default initialization glClearColor(0.0, 0.0, 0.0, 1.0); glDisable(GL_DEPTH_TEST); // viewport glViewport(0, 0, window_width, window_height); // projection glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, (GLfloat) window_width / (GLfloat) window_height, 0.1, 10.0); } //////////////////////////////////////////////////////////////////////////////// //! Display callback //////////////////////////////////////////////////////////////////////////////// void display() { glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); // set view matrix glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //glRasterPos2i(1280, 720); //glPixelZoom(1.0, -1.0); glDrawPixels(window_width, window_height, GL_LUMINANCE, GL_BYTE, yData); glutSwapBuffers(); glutPostRedisplay(); } |
De pixelwaardes worden in een apparte methode ingelezen en de ruwe Y-component waardes worden in de unsigned char* yData[1280 * 720 * sizeof(char)] geplaatst; Dit gebeurt nu nog maar 1malig, ten tijde van het starten van de applicatie.
Het plaatje komt keurig op mijn scherm terecht (wel horizontaal gespiegeld, maar das (nog) geen probleem).
Het probleem is dat ik maar 1 fps heb; Ik heb dit gecontroleerd middels een timertje en hij komt maar 1 keer per seconde in mijn Display callback functie.
Daarbij draait de CPU ook nog eens op 100%.
Weet er iemand een snellere/efficientere mannier om een hogere fps te krijgen, want dat moet toch gewoon kunnen ?
Daarbij wil ik nog ff vermelden dat ik op Ubuntu 8.10 draai en dus niet de beschikking heb over DirectX oid.
Edit:
Ik heb natuurlijk onderzoek gedaan:
http://lurkertech.com/lg/ogl.video.html
http://www.opengl.org/wik...GL_in_Linux:_GLX_and_Xlib
http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html
http://www.dranger.com/ffmpeg/tutorial01.html
De laatste gaan voornamelijk over de Codecks e.d., daar heb ik tot nu toe weinig aan; Immers heb ik ruwe video.
[ Voor 5% gewijzigd door Matis op 05-03-2009 13:24 . Reden: Extra tekst, Typo's ]
If money talks then I'm a mime
If time is money then I'm out of time