Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (2)
  • Alexandre Janniaux's avatar
    glspectrum: use symbols from vlc_gl_t instance · bd7eefb7
    Alexandre Janniaux authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    Use the symbols from the vlc_gl_t instance for OpenGL instead of linking
    the platform OpenGL library.
    
    This effectively decouples the glspectrum visualization from the
    underlying OpenGL implementation, allowing alternative OpenGL
    implementation or function wrapper to be used with it, and simplifying
    the linkage of the plugin on every platforms.
    
    Thanks to this decoupling, it's now possible to use the visualization
    through OpenGL video callbacks in VLC.
    
    Fixes #22520
    bd7eefb7
  • Alexandre Janniaux's avatar
    glspectrum: keep the OpenGL context current · bb7246ef
    Alexandre Janniaux authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    There is no need to disable and enable the context between each
    rendering. Since we own both the context and the thread, we can just
    keep it as current until the thread is closed, simplifying the already
    missing error handling.
    bb7246ef
......@@ -35,17 +35,13 @@
#include <vlc_queue.h>
#include <vlc_rand.h>
#ifdef __APPLE__
# include <OpenGL/gl.h>
#else
# include <GL/gl.h>
#endif
#include <math.h>
#include "visual/fft.h"
#include "visual/window.h"
#include "../video_output/opengl/gl_common.h"
/*****************************************************************************
* Module descriptor
......@@ -72,6 +68,57 @@ vlc_module_begin()
set_callback(Open)
vlc_module_end()
/* Legacy glBegin()/glEnd() API */
typedef void (APIENTRY *PFNGLMATRIXMODEPROC)(GLenum);
typedef void (APIENTRY *PFNGLPUSHMATRIXPROC)(void);
typedef void (APIENTRY *PFNGLPOPMATRIXPROC)(void);
typedef void (APIENTRY *PFNGLFRUSTUMPROC)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
typedef void (APIENTRY *PFNGLTRANSLATEFPROC)(float, float, float);
typedef void (APIENTRY *PFNGLSCALEFPROC)(float, float, float);
typedef void (APIENTRY *PFNGLROTATEFPROC)(float, float, float, float);
typedef void (APIENTRY *PFNGLCOLORMATERIALPROC)(GLenum, GLenum);
typedef void (APIENTRY *PFNGLCOLOR4FPROC)(float, float, float, float);
typedef void (APIENTRY *PFNGLLIGHTFVPROC)(GLenum, GLenum, const float*);
typedef void (APIENTRY *PFNGLSHADEMODELPROC)(GLenum);
typedef void (APIENTRY *PFNGLVERTEXPOINTERPROC)(GLint, GLenum, GLsizei, const void *);
typedef void (APIENTRY *PFNGLNORMALPOINTERPROC)(GLenum, GLsizei, const void *);
typedef void (APIENTRY *PFNGLENABLECLIENTSTATEPROC)(GLenum);
typedef void (APIENTRY *PFNGLDISABLECLIENTSTATEPROC)(GLenum);
#define OPENGL_VTABLE_F(F) \
/* Usual functions */ \
F(PFNGLENABLEPROC , Enable) \
F(PFNGLCLEARPROC , Clear) \
F(PFNGLDRAWARRAYSPROC , DrawArrays) \
F(PFNGLDEPTHMASKPROC , DepthMask) \
F(PFNGLBLENDFUNCPROC , BlendFunc) \
F(PFNGLVIEWPORTPROC , Viewport) \
/* Legacy fixed pipeline functions */ \
F(PFNGLMATRIXMODEPROC , MatrixMode ) \
F(PFNGLPUSHMATRIXPROC , PushMatrix) \
F(PFNGLPOPMATRIXPROC , PopMatrix) \
F(PFNGLFRUSTUMPROC , Frustum) \
F(PFNGLTRANSLATEFPROC , Translatef) \
F(PFNGLSCALEFPROC , Scalef) \
F(PFNGLROTATEFPROC , Rotatef) \
F(PFNGLCOLORMATERIALPROC , ColorMaterial) \
F(PFNGLCOLOR4FPROC , Color4f) \
F(PFNGLLIGHTFVPROC , Lightfv) \
F(PFNGLSHADEMODELPROC , ShadeModel) \
F(PFNGLVERTEXPOINTERPROC , VertexPointer) \
F(PFNGLNORMALPOINTERPROC , NormalPointer) \
F(PFNGLENABLECLIENTSTATEPROC , EnableClientState) \
F(PFNGLDISABLECLIENTSTATEPROC , DisableClientState)
struct glspectrum_opengl_vtable
{
#define DECLARE_VTABLE(type, symbol) \
type symbol;
OPENGL_VTABLE_F(DECLARE_VTABLE)
};
/*****************************************************************************
* Local prototypes
......@@ -89,6 +136,7 @@ typedef struct
/* Opengl */
vlc_gl_t *gl;
struct glspectrum_opengl_vtable vt;
float f_rotationAngle;
float f_rotationIncrement;
......@@ -155,6 +203,24 @@ static int Open(vlc_object_t * p_this)
if (p_sys->gl == NULL)
return VLC_EGENERIC;
if (vlc_gl_MakeCurrent(p_sys->gl) != VLC_SUCCESS)
{
msg_Err(p_filter, "Can't attach gl context");
goto error;
}
#define LOAD_SYMBOL(type, name) do { \
p_sys->vt.name = vlc_gl_GetProcAddress(p_sys->gl, "gl" #name); \
if (p_sys->vt.name == NULL) { \
vlc_gl_ReleaseCurrent(p_sys->gl); \
goto error; \
} \
} while(0);
OPENGL_VTABLE_F(LOAD_SYMBOL);
vlc_gl_ReleaseCurrent(p_sys->gl);
/* Create the thread */
if (vlc_clone(&p_sys->thread, Thread, p_filter,
VLC_THREAD_PRIORITY_VIDEO)) {
......@@ -167,6 +233,10 @@ static int Open(vlc_object_t * p_this)
p_filter->ops = &filter_ops;
return VLC_SUCCESS;
error:
vlc_gl_surface_Destroy(p_sys->gl);
return VLC_EGENERIC;
}
......@@ -205,40 +275,46 @@ static block_t *DoWork(filter_t *p_filter, block_t *p_in_buf)
/**
* Init the OpenGL scene.
**/
static void initOpenGLScene(void)
static void initOpenGLScene(filter_t *p_filter)
{
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
filter_sys_t *p_sys = p_filter->p_sys;
struct glspectrum_opengl_vtable *vt = &p_sys->vt;
vt->Enable(GL_CULL_FACE);
vt->Enable(GL_DEPTH_TEST);
vt->DepthMask(GL_TRUE);
glMatrixMode(GL_PROJECTION);
glFrustum(-1.0f, 1.0f, -1.0f, 1.0f, 0.5f, 10.0f);
vt->MatrixMode(GL_PROJECTION);
vt->Frustum(-1.0f, 1.0f, -1.0f, 1.0f, 0.5f, 10.0f);
glMatrixMode(GL_MODELVIEW);
glTranslatef(0.0, -2.0, -2.0);
vt->MatrixMode(GL_MODELVIEW);
vt->Translatef(0.0, -2.0, -2.0);
// Init the light.
glEnable(GL_LIGHTING);
vt->Enable(GL_LIGHTING);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
vt->ColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
vt->Enable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor);
glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition);
vt->Enable(GL_LIGHT0);
vt->Lightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor);
vt->Lightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition);
glShadeModel(GL_SMOOTH);
vt->ShadeModel(GL_SMOOTH);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
vt->Enable(GL_BLEND);
vt->BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
/**
* Draw one bar of the Spectrum.
*/
static void drawBar(void)
static void drawBar(filter_t *p_filter)
{
filter_sys_t *p_sys = p_filter->p_sys;
struct glspectrum_opengl_vtable *vt = &p_sys->vt;
const float w = SPECTRUM_WIDTH / NB_BANDS - 0.05f;
const GLfloat vertexCoords[] = {
......@@ -275,9 +351,9 @@ static void drawBar(void)
0.f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.f,
};
glVertexPointer(3, GL_FLOAT, 0, vertexCoords);
glNormalPointer(GL_FLOAT, 0, normals);
glDrawArrays(GL_TRIANGLES, 0, 6 * 5);
vt->VertexPointer(3, GL_FLOAT, 0, vertexCoords);
vt->NormalPointer(GL_FLOAT, 0, normals);
vt->DrawArrays(GL_TRIANGLES, 0, 6 * 5);
}
......@@ -285,8 +361,11 @@ static void drawBar(void)
* Set the color of one bar of the spectrum.
* @param f_height the height of the bar.
*/
static void setBarColor(float f_height)
static void setBarColor(filter_t *p_filter, float f_height)
{
filter_sys_t *p_sys = p_filter->p_sys;
struct glspectrum_opengl_vtable *vt = &p_sys->vt;
float r, b;
#define BAR_MAX_HEIGHT 4.2f
......@@ -302,7 +381,7 @@ static void setBarColor(float f_height)
b = b < 0.f ? 0.f : b;
/* Set the bar color. */
glColor4f(r, 0.f, b, 1.f);
vt->Color4f(r, 0.f, b, 1.f);
}
......@@ -310,30 +389,33 @@ static void setBarColor(float f_height)
* Draw all the bars of the spectrum.
* @param heights the heights of all the bars.
*/
static void drawBars(float heights[])
static void drawBars(filter_t *p_filter, float heights[])
{
glPushMatrix();
glTranslatef(-2.f, 0.f, 0.f);
filter_sys_t *p_sys = p_filter->p_sys;
struct glspectrum_opengl_vtable *vt = &p_sys->vt;
vt->PushMatrix();
vt->Translatef(-2.f, 0.f, 0.f);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
vt->EnableClientState(GL_VERTEX_ARRAY);
vt->EnableClientState(GL_NORMAL_ARRAY);
float w = SPECTRUM_WIDTH / NB_BANDS;
for (unsigned i = 0; i < NB_BANDS; ++i)
{
glPushMatrix();
glScalef(1.f, heights[i], 1.f);
setBarColor(heights[i]);
drawBar();
glPopMatrix();
vt->PushMatrix();
vt->Scalef(1.f, heights[i], 1.f);
setBarColor(p_filter, heights[i]);
drawBar(p_filter);
vt->PopMatrix();
glTranslatef(w, 0.f, 0.f);
vt->Translatef(w, 0.f, 0.f);
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
vt->DisableClientState(GL_VERTEX_ARRAY);
vt->DisableClientState(GL_NORMAL_ARRAY);
glPopMatrix();
vt->PopMatrix();
}
......@@ -353,18 +435,18 @@ static void *Thread( void *p_data )
msg_Err(p_filter, "Can't attach gl context");
return NULL;
}
initOpenGLScene();
vlc_gl_ReleaseCurrent(gl);
struct glspectrum_opengl_vtable *vt = &p_sys->vt;
initOpenGLScene(p_filter);
float height[NB_BANDS] = {0};
while ((block = vlc_queue_DequeueKillable(&p_sys->queue, &p_sys->dead)))
{
unsigned win_width, win_height;
vlc_gl_MakeCurrent(gl);
if (vlc_gl_surface_CheckSize(gl, &win_width, &win_height))
glViewport(0, 0, win_width, win_height);
vt->Viewport(0, 0, win_width, win_height);
/* Horizontal scale for 20-band equalizer */
const unsigned xscale[] = {0,1,2,3,4,5,6,7,8,11,15,20,27,
......@@ -474,12 +556,12 @@ static void *Thread( void *p_data )
p_sys->f_rotationIncrement = -ROTATION_INCREMENT;
/* Render the frame. */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
vt->Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(p_sys->f_rotationAngle, 0, 1, 0);
drawBars(height);
glPopMatrix();
vt->PushMatrix();
vt->Rotatef(p_sys->f_rotationAngle, 0, 1, 0);
drawBars(p_filter, height);
vt->PopMatrix();
/* Wait to swapp the frame on time. */
vlc_tick_wait(block->i_pts + (block->i_length / 2));
......@@ -488,9 +570,9 @@ static void *Thread( void *p_data )
release:
window_close(&wind_ctx);
fft_close(p_state);
vlc_gl_ReleaseCurrent(gl);
block_Release(block);
}
vlc_gl_ReleaseCurrent(gl);
return NULL;
}