mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-19 14:19:58 +01:00
scheduling,xruns
git-svn-id: svn://code.dyne.org/veejay/trunk@770 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
@@ -164,8 +164,11 @@ static int first_free_device = 0;
|
|||||||
static jack_driver_t outDev[MAX_OUTDEVICES];
|
static jack_driver_t outDev[MAX_OUTDEVICES];
|
||||||
|
|
||||||
/* default audio buffer size */
|
/* default audio buffer size */
|
||||||
#define SECONDS .25
|
//#define SECONDS .25
|
||||||
static long MAX_BUFFERED_BYTES = (16 * 2 * (44100/(1/SECONDS))) / 8; /* 16 bits, 2 channels .25 seconds */
|
#define SECONDS .5
|
||||||
|
//static long MAX_BUFFERED_BYTES = (16 * 2 * (44100/(1/SECONDS))) / 8; /* 16 bits, 2 channels .25 seconds */
|
||||||
|
static long MAX_BUFFERED_BYTES = (16 * 2 * (44100/(1/SECONDS))) / 4; /* 16 bits, 2 channels .25 seconds */
|
||||||
|
|
||||||
|
|
||||||
#if JACK_CLOSE_HACK
|
#if JACK_CLOSE_HACK
|
||||||
static void JACK_CloseDevice(jack_driver_t* this, bool close_client);
|
static void JACK_CloseDevice(jack_driver_t* this, bool close_client);
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
dnl AC_INIT
|
dnl AC_INIT
|
||||||
AC_INIT([veejay],[0.9.20],[veejay-users@lists.sourceforge.net])
|
AC_INIT([veejay],[0.9.21],[veejay-users@lists.sourceforge.net])
|
||||||
AC_PREREQ(2.57)
|
AC_PREREQ(2.57)
|
||||||
AC_CONFIG_SRCDIR([veejay/veejay.c])
|
AC_CONFIG_SRCDIR([veejay/veejay.c])
|
||||||
|
|
||||||
VEEJAY_MAJOR_VERSION=0
|
VEEJAY_MAJOR_VERSION=0
|
||||||
VEEJAY_MINOR_VERSION=9
|
VEEJAY_MINOR_VERSION=9
|
||||||
VEEJAY_MICRO_VERSION=20
|
VEEJAY_MICRO_VERSION=21
|
||||||
VEEJAY_VERSION=$VEEJAY_MAJOR_VERSION.$VEEJAY_MINOR_VERSION.$VEEJAY_MICRO_VERSION
|
VEEJAY_VERSION=$VEEJAY_MAJOR_VERSION.$VEEJAY_MINOR_VERSION.$VEEJAY_MICRO_VERSION
|
||||||
VEEJAY_CODENAME="Veejay Classic - build $VEEJAY_MINOR_VERSION $VEEJAY_MICRO_VERSION"
|
VEEJAY_CODENAME="Veejay Classic - build $VEEJAY_MINOR_VERSION $VEEJAY_MICRO_VERSION"
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
#include <libvjmem/vjmem.h>
|
#include <libvjmem/vjmem.h>
|
||||||
#include <libvjmsg/vj-common.h>
|
#include <libvjmsg/vj-common.h>
|
||||||
#include <gveejay-reloaded/vj-api.h>
|
#include <gveejay-reloaded/vj-api.h>
|
||||||
|
#include <sched.h>
|
||||||
|
|
||||||
|
|
||||||
static int port_num = 3490;
|
static int port_num = 3490;
|
||||||
static char hostname[255];
|
static char hostname[255];
|
||||||
@@ -136,6 +138,13 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
if( err ) usage(argv[0]);
|
if( err ) usage(argv[0]);
|
||||||
|
|
||||||
|
/* struct sched_param schp;
|
||||||
|
memset( &schp, 0, sizeof( schp ));
|
||||||
|
schp.sched_priority = sched_get_priority_min(SCHED_RR );
|
||||||
|
if( sched_setscheduler( 0, SCHED_FIFO, &schp ) != 0 )
|
||||||
|
veejay_msg(0, "Error setting RR");
|
||||||
|
*/
|
||||||
|
|
||||||
if( !g_thread_supported() )
|
if( !g_thread_supported() )
|
||||||
{
|
{
|
||||||
g_thread_init(NULL);
|
g_thread_init(NULL);
|
||||||
|
|||||||
@@ -100,7 +100,10 @@
|
|||||||
#include <veejay/gl.h>
|
#include <veejay/gl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sched.h>
|
||||||
|
|
||||||
static int veejay_pin_cpu( veejay_t *info, int cpu_num );
|
static int veejay_pin_cpu( veejay_t *info, int cpu_num );
|
||||||
|
static void veejay_schedule_fifo( veejay_t *info, int pid );
|
||||||
|
|
||||||
// following struct copied from ../utils/videodev.h
|
// following struct copied from ../utils/videodev.h
|
||||||
|
|
||||||
@@ -1324,6 +1327,11 @@ static void *veejay_mjpeg_playback_thread(void *arg)
|
|||||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
|
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
|
||||||
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
|
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
|
||||||
|
|
||||||
|
|
||||||
|
/* schedule FIFO */
|
||||||
|
|
||||||
|
veejay_schedule_fifo( info, getpid());
|
||||||
|
|
||||||
vj_get_relative_time();
|
vj_get_relative_time();
|
||||||
|
|
||||||
vj_osc_set_veejay_t(info);
|
vj_osc_set_veejay_t(info);
|
||||||
@@ -2162,6 +2170,26 @@ static int sched_ncpus() {
|
|||||||
return sysconf( _SC_NPROCESSORS_ONLN );
|
return sysconf( _SC_NPROCESSORS_ONLN );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void veejay_schedule_fifo(veejay_t *info, int pid )
|
||||||
|
{
|
||||||
|
struct sched_param schp;
|
||||||
|
veejay_memset( &schp, 0, sizeof(schp));
|
||||||
|
schp.sched_priority = sched_get_priority_max( SCHED_FIFO );
|
||||||
|
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG, "Min prio = %d, Max prio = %d",
|
||||||
|
sched_get_priority_min( SCHED_FIFO ),
|
||||||
|
sched_get_priority_max( SCHED_FIFO ));
|
||||||
|
|
||||||
|
if( sched_setscheduler( pid, SCHED_FIFO, &schp ) != 0 )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_WARNING, "Cannot set First-In-First-Out scheduling for process %d",pid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "Using First-In-First-Out II scheduling for process %d", pid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int veejay_pin_cpu( veejay_t *info, int cpu_num )
|
static int veejay_pin_cpu( veejay_t *info, int cpu_num )
|
||||||
{
|
{
|
||||||
static unsigned long* mask = NULL;
|
static unsigned long* mask = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user