mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-03-02 13:35:33 +00:00
added rudimentary cmake file for the new alsa input / libvis port
git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1021 6778bc44-b910-0410-a7a0-be141de4315d
This commit is contained in:
@ -3,6 +3,7 @@ project (PROJECTM_ROOT)
|
||||
OPTION(INCLUDE-PROJECTM-QT "Build the projectM Qt4 user interface extension library (recommended)" ON)
|
||||
OPTION(INCLUDE-PROJECTM-PULSEAUDIO "Build the projectM pulse audio client (recommended for fedora users)" ON)
|
||||
OPTION(INCLUDE-PROJECTM-LIBVISUAL "Build the projectM libvisual client" ON)
|
||||
OPTION(INCLUDE-PROJECTM-LIBVISUAL-ALSA "Build experimental libvisual / alsa input standalone client (NEW!)" OFF)
|
||||
OPTION(INCLUDE-PROJECTM-JACK "Build the projectM JACK client" OFF)
|
||||
OPTION(INCLUDE-PROJECTM-TEST "Build the projectM test suite" ON)
|
||||
OPTION(INCLUDE-PROJECTM-XMMS "Build the projectM xmms module (deprecated, use audacious instead)" OFF)
|
||||
@ -32,3 +33,7 @@ endif (INCLUDE-PROJECTM-XMMS)
|
||||
if (INCLUDE-PROJECTM-LIBVISUAL)
|
||||
add_subdirectory (projectM-libvisual)
|
||||
endif (INCLUDE-PROJECTM-LIBVISUAL)
|
||||
|
||||
if (INCLUDE-PROJECTM-LIBVISUAL-ALSA)
|
||||
add_subdirectory (projectM-libvisual-alsa)
|
||||
endif (INCLUDE-PROJECTM-LIBVISUAL-ALSA)
|
||||
|
||||
41
src/projectM-libvisual-alsa/CMakeLists.txt
Normal file
41
src/projectM-libvisual-alsa/CMakeLists.txt
Normal file
@ -0,0 +1,41 @@
|
||||
PROJECT(projectM-libvisual-alsa)
|
||||
|
||||
ADD_EXECUTABLE(projectM-libvisual-alsa projectM-libvisual-alsa.c display.c glxdriver.c x11driver.c sdldriver.c lv_x11_key.c)
|
||||
|
||||
INCLUDE(FindPkgConfig.cmake)
|
||||
|
||||
FIND_PACKAGE(OpenGL)
|
||||
FIND_PACKAGE(SDL)
|
||||
FIND_PACKAGE(X11)
|
||||
|
||||
if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
|
||||
pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
|
||||
else (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
|
||||
set(LIBPROJECTM_FOUND true)
|
||||
endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
|
||||
|
||||
if (LIBPROJECTM_FOUND)
|
||||
MESSAGE (STATUS "[projectM-libvisual-alsa] projectM detected.")
|
||||
else(LIBPROJECTM_FOUND)
|
||||
MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
|
||||
endif(LIBPROJECTM_FOUND)
|
||||
|
||||
pkg_search_module(LIBVISUAL REQUIRED libvisual-0.4)
|
||||
|
||||
if(LIBVISUAL_FOUND)
|
||||
MESSAGE(STATUS "[projectM-libvisual] libvisual detected.")
|
||||
else(LIBVISUAL_FOUND)
|
||||
MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.")
|
||||
endif(LIBVISUAL_FOUND)
|
||||
|
||||
ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"')
|
||||
|
||||
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR} ${LIBVISUAL_INCLUDEDIR} ${X11_INCLUDE_DIR})
|
||||
|
||||
LINK_DIRECTORIES(${LIBVISUAL_LDFLAGS})
|
||||
|
||||
TARGET_LINK_LIBRARIES(projectM-libvisual-alsa -lXxf86vm -L/usr/X11R6/lib ${OPENGL_LIBRARIES} ${LIBVISUAL_LIBRARIES} ${X11_LIBRARIES} ${SDL_LIBRARY} ${GTK_LIBRARIES})
|
||||
|
||||
INSTALL(TARGETS projectM-libvisual-alsa DESTINATION ${CMAKE_INSTALL_PREFIX}/bin )
|
||||
install(FILES "projectM-libvisual-alsa.desktop" DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
|
||||
|
||||
174
src/projectM-libvisual-alsa/projectM-libvisual-alsa.c
Normal file
174
src/projectM-libvisual-alsa/projectM-libvisual-alsa.c
Normal file
@ -0,0 +1,174 @@
|
||||
/* When using the sdl driver and Xgl, sdl will show a nice empty window. Be sure to set the:
|
||||
* XLIB_SKIP_ARGB_VISUALS environment variable to 1
|
||||
*/
|
||||
|
||||
#include <libvisual/libvisual.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
#include "display.h"
|
||||
#include "sdldriver.h"
|
||||
#include "x11driver.h"
|
||||
#include "glxdriver.h"
|
||||
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
SADisplay *display;
|
||||
VisVideo *video;
|
||||
|
||||
VisInput *input;
|
||||
VisActor *actor;
|
||||
VisEventQueue *localqueue;
|
||||
VisVideoAttributeOptions *vidoptions;
|
||||
|
||||
int running = TRUE;
|
||||
int fullscreen = FALSE;
|
||||
int visible = TRUE;
|
||||
|
||||
VisVideoDepth depth;
|
||||
|
||||
//visual_mem_alloc_install_vtable (visual_mem_alloc_vtable_profile ());
|
||||
|
||||
visual_init (&argc, &argv);
|
||||
|
||||
display = display_new (sdl_driver_new ());
|
||||
|
||||
/* Libvisual stuff */
|
||||
if (argc > 1)
|
||||
actor = visual_actor_new (argv[1]);
|
||||
else
|
||||
actor = visual_actor_new ("projectM");
|
||||
|
||||
|
||||
if (argc > 3) {
|
||||
depth = visual_video_depth_enum_from_value (atoi (argv[3]));
|
||||
} else
|
||||
depth = visual_video_depth_get_highest (visual_actor_get_supported_depth (actor));
|
||||
|
||||
vidoptions = visual_actor_get_video_attribute_options (actor);
|
||||
|
||||
display_create (display, depth, vidoptions, 480, 360, TRUE);
|
||||
|
||||
visual_actor_realize (actor);
|
||||
|
||||
video = display_get_video (display);
|
||||
|
||||
visual_actor_set_video (actor, video);
|
||||
visual_actor_video_negotiate (actor, 0, FALSE, FALSE);
|
||||
|
||||
if (argc > 2)
|
||||
input = visual_input_new (argv[2]);
|
||||
else
|
||||
input = visual_input_new ("alsa");
|
||||
|
||||
visual_input_realize (input);
|
||||
|
||||
localqueue = visual_event_queue_new ();
|
||||
|
||||
while (running) {
|
||||
VisEventQueue *pluginqueue;
|
||||
VisEvent *ev;
|
||||
|
||||
/* Handle all events */
|
||||
display_drain_events (display, localqueue);
|
||||
|
||||
pluginqueue = visual_plugin_get_eventqueue (visual_actor_get_plugin (actor));
|
||||
while (visual_event_queue_poll_by_reference (localqueue, &ev)) {
|
||||
|
||||
if (ev->type != VISUAL_EVENT_RESIZE)
|
||||
visual_event_queue_add (pluginqueue, ev);
|
||||
|
||||
switch (ev->type) {
|
||||
case VISUAL_EVENT_RESIZE:
|
||||
video = display_get_video (display);
|
||||
visual_actor_set_video (actor, video);
|
||||
|
||||
visual_actor_video_negotiate (actor, depth, FALSE, FALSE);
|
||||
break;
|
||||
|
||||
case VISUAL_EVENT_MOUSEMOTION:
|
||||
break;
|
||||
|
||||
case VISUAL_EVENT_MOUSEBUTTONDOWN:
|
||||
|
||||
break;
|
||||
|
||||
case VISUAL_EVENT_MOUSEBUTTONUP:
|
||||
break;
|
||||
|
||||
case VISUAL_EVENT_KEYDOWN:
|
||||
switch (ev->event.keyboard.keysym.sym) {
|
||||
case VKEY_ESCAPE:
|
||||
running = FALSE;
|
||||
break;
|
||||
|
||||
case VKEY_TAB:
|
||||
fullscreen = !fullscreen;
|
||||
|
||||
display_set_fullscreen (display, fullscreen, TRUE);
|
||||
|
||||
/* Resync video */
|
||||
video = display_get_video (display);
|
||||
visual_actor_set_video (actor, video);
|
||||
|
||||
visual_actor_video_negotiate (actor, depth, FALSE, FALSE);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("key: %c\n", ev->event.keyboard.keysym.sym);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case VISUAL_EVENT_KEYUP:
|
||||
break;
|
||||
|
||||
case VISUAL_EVENT_QUIT:
|
||||
running = FALSE;
|
||||
break;
|
||||
|
||||
case VISUAL_EVENT_VISIBILITY:
|
||||
visible = ev->event.visibility.is_visible;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (visible == FALSE) {
|
||||
visual_input_run (input);
|
||||
|
||||
visual_time_usleep (10000);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Do a run cycle */
|
||||
visual_input_run (input);
|
||||
|
||||
display_lock (display);
|
||||
visual_actor_run (actor, input->audio);
|
||||
display_unlock (display);
|
||||
|
||||
display_update_all (display);
|
||||
|
||||
display_fps_limit (display, 30);
|
||||
}
|
||||
|
||||
/* Termination procedure */
|
||||
display_set_fullscreen (display, FALSE, TRUE);
|
||||
display_close (display);
|
||||
|
||||
visual_quit ();
|
||||
|
||||
//visual_mem_alloc_profile ();
|
||||
|
||||
printf ("Total frames: %d, average fps: %f\n", display_fps_total (display), display_fps_average (display));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Name=projectM-jack
|
||||
Comment=A milkdrop based music visualizer using alsa input and libvisual
|
||||
Exec=/usr/bin/projectM-libvisual-alsa
|
||||
Icon=prjm16-transparent.svg
|
||||
Type=Application
|
||||
Categories=Application;AudioVideo;Audio;
|
||||
|
||||
Reference in New Issue
Block a user