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:
w1z7ard
2008-05-23 03:58:40 +00:00
parent c94a2baba4
commit f7ea41a4ff
4 changed files with 228 additions and 0 deletions

View File

@ -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)

View 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)

View 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;
}

View File

@ -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;