mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-15 04:10:00 +01:00
bump version
beta support for vloopback / v4l2 (thanks to Xendarboh) untested fixed commandline setting '-N or --norm' knoch home server for geo-location statistics
This commit is contained in:
@@ -6,15 +6,21 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
echo "Edit me"
|
echo "Edit me"
|
||||||
|
|
||||||
|
|
||||||
|
## remove the '#' in front of the line for 'autoreconf'
|
||||||
|
|
||||||
|
########################################
|
||||||
## newer distributions, ubuntu 11. etc
|
## newer distributions, ubuntu 11. etc
|
||||||
|
########################################
|
||||||
|
|
||||||
#if [ ! -d m4 ]; then
|
#if [ ! -d m4 ]; then
|
||||||
# mkdir m4
|
# mkdir m4
|
||||||
#fi
|
#fi
|
||||||
#autoreconf -v -fi -I m4
|
#autoreconf -v -fi -I m4
|
||||||
|
|
||||||
|
#########################################
|
||||||
## slackware 13.1 and older
|
## slackware 13.1 and older
|
||||||
|
#########################################
|
||||||
|
|
||||||
# autoreconf -v -fi
|
# autoreconf -v -fi
|
||||||
|
|||||||
@@ -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],[1.5.10],[veejay-users@lists.sourceforge.net])
|
AC_INIT([veejay],[1.5.11],[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=1
|
VEEJAY_MAJOR_VERSION=1
|
||||||
VEEJAY_MINOR_VERSION=5
|
VEEJAY_MINOR_VERSION=5
|
||||||
VEEJAY_MICRO_VERSION=9
|
VEEJAY_MICRO_VERSION=11
|
||||||
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])
|
||||||
|
|||||||
@@ -1831,7 +1831,6 @@ editlist *vj_el_init_with_args(char **filename, int num_files, int flags, int de
|
|||||||
el->has_video = 1; //assume we get it
|
el->has_video = 1; //assume we get it
|
||||||
el->MJPG_chroma = CHROMA420;
|
el->MJPG_chroma = CHROMA420;
|
||||||
el->is_empty = 0;
|
el->is_empty = 0;
|
||||||
/* Check if a norm parameter is present */
|
|
||||||
if(!filename[0] || filename == NULL)
|
if(!filename[0] || filename == NULL)
|
||||||
{
|
{
|
||||||
veejay_msg(VEEJAY_MSG_ERROR,"\tInvalid filename given");
|
veejay_msg(VEEJAY_MSG_ERROR,"\tInvalid filename given");
|
||||||
@@ -1839,9 +1838,9 @@ editlist *vj_el_init_with_args(char **filename, int num_files, int flags, int de
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(filename[0], "+p") == 0 || strcmp(filename[0], "+n") == 0)
|
if( norm == 'p' || norm == 'n' )
|
||||||
{
|
{
|
||||||
el->video_norm = filename[0][1];
|
el->video_norm = n;
|
||||||
nf = 1;
|
nf = 1;
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG,"Norm set to %s", el->video_norm == 'n' ? "NTSC" : "PAL");
|
veejay_msg(VEEJAY_MSG_DEBUG,"Norm set to %s", el->video_norm == 'n' ? "NTSC" : "PAL");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -351,10 +351,13 @@ static void v4l2_enum_frame_sizes( v4l2info *v )
|
|||||||
const char *flags[] = { "uncompressed", "compressed" };
|
const char *flags[] = { "uncompressed", "compressed" };
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG, "v4l2: discovering supported video formats");
|
veejay_msg(VEEJAY_MSG_DEBUG, "v4l2: discovering supported video formats");
|
||||||
|
|
||||||
|
//@clear mem
|
||||||
|
memset( &fmtdesc, 0, sizeof( fmtdesc ));
|
||||||
|
|
||||||
for( fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
for( fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
fmtdesc.type < V4L2_BUF_TYPE_VIDEO_OVERLAY;
|
fmtdesc.type < V4L2_BUF_TYPE_VIDEO_OVERLAY;
|
||||||
fmtdesc.type ++ ) {
|
fmtdesc.type ++ ) {
|
||||||
fmtdesc.index = 0;
|
// fmtdesc.index = 0;
|
||||||
while( vioctl( v->fd, VIDIOC_ENUM_FMT, &fmtdesc ) >= 0 ) {
|
while( vioctl( v->fd, VIDIOC_ENUM_FMT, &fmtdesc ) >= 0 ) {
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG,"v4l2: Enumerate (%d,%s)", fmtdesc.index, buf_types[ fmtdesc.type ] );
|
veejay_msg(VEEJAY_MSG_DEBUG,"v4l2: Enumerate (%d,%s)", fmtdesc.index, buf_types[ fmtdesc.type ] );
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG,"\tindex:%d", fmtdesc.index );
|
veejay_msg(VEEJAY_MSG_DEBUG,"\tindex:%d", fmtdesc.index );
|
||||||
@@ -365,16 +368,14 @@ static void v4l2_enum_frame_sizes( v4l2info *v )
|
|||||||
(fmtdesc.pixelformat >> 8 ) & 0xff,
|
(fmtdesc.pixelformat >> 8 ) & 0xff,
|
||||||
(fmtdesc.pixelformat >> 16) & 0xff,
|
(fmtdesc.pixelformat >> 16) & 0xff,
|
||||||
(fmtdesc.pixelformat >> 24) & 0xff );
|
(fmtdesc.pixelformat >> 24) & 0xff );
|
||||||
|
|
||||||
fmtsize.index = 0;
|
//@ some other day
|
||||||
|
/* memset( &fmtsize, 0, sizeof(fmtsize));
|
||||||
fmtsize.pixel_format = fmtdesc.pixelformat;
|
fmtsize.pixel_format = fmtdesc.pixelformat;
|
||||||
|
|
||||||
while( vioctl( v->fd, VIDIOC_ENUM_FRAMESIZES, &fmtsize ) >= 0 ) {
|
while( vioctl( v->fd, VIDIOC_ENUM_FRAMESIZES, &fmtsize ) >= 0 ) {
|
||||||
if( fmtsize.type == V4L2_FRMSIZE_TYPE_DISCRETE ) {
|
if( fmtsize.type == V4L2_FRMSIZE_TYPE_DISCRETE ) {
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG, "\t\t%d x %d", fmtsize.discrete.width, fmtsize.discrete.height );
|
veejay_msg(VEEJAY_MSG_DEBUG, "\t\t%d x %d", fmtsize.discrete.width, fmtsize.discrete.height );
|
||||||
//while( vioctl( v->fd, VIDIOC_ENUM_FRAMEINTERVAL, &frmival ) >= 0 ) {
|
|
||||||
// frmival.index ++;
|
|
||||||
// veejay_msg(0, "\t\t\t<discrete>");
|
|
||||||
//}
|
|
||||||
} else if( fmtsize.type == V4L2_FRMSIZE_TYPE_STEPWISE ) {
|
} else if( fmtsize.type == V4L2_FRMSIZE_TYPE_STEPWISE ) {
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG,"\t\t%d x %d - %d x %d with step %d / %d",
|
veejay_msg(VEEJAY_MSG_DEBUG,"\t\t%d x %d - %d x %d with step %d / %d",
|
||||||
fmtsize.stepwise.min_width,
|
fmtsize.stepwise.min_width,
|
||||||
@@ -383,15 +384,10 @@ static void v4l2_enum_frame_sizes( v4l2info *v )
|
|||||||
fmtsize.stepwise.min_height,
|
fmtsize.stepwise.min_height,
|
||||||
fmtsize.stepwise.step_width,
|
fmtsize.stepwise.step_width,
|
||||||
fmtsize.stepwise.step_height );
|
fmtsize.stepwise.step_height );
|
||||||
//while( vioctl( v->fd, VIDIOC_ENUM_FRAMEINTERVAL, &frmival ) >= 0 ) {
|
|
||||||
// veejay_msg(0, "\t\t\t<stepwise interval>");
|
|
||||||
// frmival.index ++;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
fmtsize.index++;
|
fmtsize.index++;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
fmtdesc.index ++;
|
fmtdesc.index ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -443,9 +439,9 @@ static int v4l2_try_pix_format( v4l2info *v, int pixelformat, int wid, int hei,
|
|||||||
format.fmt.pix.pixelformat = v4l2_pixel_format;
|
format.fmt.pix.pixelformat = v4l2_pixel_format;
|
||||||
|
|
||||||
if( vioctl( v->fd, VIDIOC_TRY_FMT, &format ) == 0 ) {
|
if( vioctl( v->fd, VIDIOC_TRY_FMT, &format ) == 0 ) {
|
||||||
|
//@ v4l2_pixel_format may be garbage
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "v4l2: Format %s supported by capture card (?)", //@ some drivers dont and still get here
|
// veejay_msg(VEEJAY_MSG_INFO, "v4l2: Format %s supported by capture card (?)", //@ some drivers dont and still get here
|
||||||
(char*) &v4l2_pixel_format);
|
// (char*) &v4l2_pixel_format);
|
||||||
|
|
||||||
if( format.fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG )
|
if( format.fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,8 +30,15 @@
|
|||||||
and use mutexes for asynchronosouly handling IO. I am too lazy.
|
and use mutexes for asynchronosouly handling IO. I am too lazy.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Changes:
|
||||||
|
* Import patch by Xendarboh xendarboh@gmail.com to write to v4l2vloopback device
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#ifdef HAVE_V4L
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -45,7 +52,12 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#ifdef HAVE_V4L
|
||||||
#include <linux/videodev.h>
|
#include <linux/videodev.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_V4L2
|
||||||
|
#include <linux/videodev2.h>
|
||||||
|
#endif
|
||||||
#include <libvjmem/vjmem.h>
|
#include <libvjmem/vjmem.h>
|
||||||
#include <libvjmsg/vj-msg.h>
|
#include <libvjmsg/vj-msg.h>
|
||||||
#include <veejay/vims.h>
|
#include <veejay/vims.h>
|
||||||
@@ -65,6 +77,10 @@ typedef struct
|
|||||||
int size; /* size of image out_buf */
|
int size; /* size of image out_buf */
|
||||||
uint8_t *out_buf;
|
uint8_t *out_buf;
|
||||||
uint8_t *out_map; /* mmap segment */
|
uint8_t *out_map; /* mmap segment */
|
||||||
|
int jfif;
|
||||||
|
int vshift;
|
||||||
|
int hshift;
|
||||||
|
int iov;
|
||||||
} vj_vloopback_t;
|
} vj_vloopback_t;
|
||||||
|
|
||||||
|
|
||||||
@@ -93,14 +109,40 @@ void *vj_vloopback_open(const char *device_name, int norm, int mode,
|
|||||||
switch(pixel_format) {
|
switch(pixel_format) {
|
||||||
case FMT_420:
|
case FMT_420:
|
||||||
case FMT_420F:
|
case FMT_420F:
|
||||||
v->palette = VIDEO_PALETTE_YUV420P; break;
|
#ifdef HAVE_V4L
|
||||||
|
v->palette = VIDEO_PALETTE_YUV420P;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_V4L2
|
||||||
|
v->palette = V4L2_PIX_FMT_YUV420;
|
||||||
|
#endif
|
||||||
|
v->hshift = 1;
|
||||||
|
v->vshift = 1;
|
||||||
|
break;
|
||||||
case FMT_422:
|
case FMT_422:
|
||||||
case FMT_422F:
|
case FMT_422F:
|
||||||
v->palette = VIDEO_PALETTE_YUV422P; break;
|
#ifdef HAVE_V4L
|
||||||
|
v->palette = VIDEO_PALETTE_YUV422P;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_V4L2
|
||||||
|
v->palette = V4L2_PIX_FMT_YUV422P;
|
||||||
|
#endif
|
||||||
|
v->vshift = 1;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
v->palette = VIDEO_PALETTE_PLANAR; break;
|
#ifdef HAVE_V4L
|
||||||
|
v->palette = VIDEO_PALETTE_PLANAR;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_V4L2
|
||||||
|
v->palette = V4L2_PIX_FMT_BGR24;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG,"Using fallback format %x", v->palette );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(pixel_format == FMT_420F || pixel_format == FMT_422F )
|
||||||
|
v->jfif = 1;
|
||||||
|
|
||||||
v->dev_name = strdup( device_name );
|
v->dev_name = strdup( device_name );
|
||||||
|
|
||||||
ret = (void*) v;
|
ret = (void*) v;
|
||||||
@@ -124,19 +166,34 @@ int vj_vloopback_get_mode( void *vloop )
|
|||||||
/* write mode*/
|
/* write mode*/
|
||||||
int vj_vloopback_start_pipe( void *vloop )
|
int vj_vloopback_start_pipe( void *vloop )
|
||||||
{
|
{
|
||||||
|
vj_vloopback_t *v = (vj_vloopback_t*) vloop;
|
||||||
|
|
||||||
|
if(!v) return 0;
|
||||||
|
|
||||||
|
int len = v->width * v->height ;
|
||||||
|
int uv_len = (v->width >> 1 ) * (v->height >> v->vshift);
|
||||||
|
|
||||||
|
v->size = len + (2 * uv_len);
|
||||||
|
|
||||||
|
if(v->mode != VLOOPBACK_PIPE)
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"Program error");
|
||||||
|
|
||||||
|
|
||||||
|
char *dbg = getenv( "VEEJAY_VLOOPBACK_DEBUG" );
|
||||||
|
if( dbg ) {
|
||||||
|
v->iov = atoi(dbg);
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO,"vloop: debug level set to %d", v->iov );
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_V4L
|
||||||
struct video_capability caps;
|
struct video_capability caps;
|
||||||
struct video_window win;
|
struct video_window win;
|
||||||
struct video_picture pic;
|
struct video_picture pic;
|
||||||
|
|
||||||
vj_vloopback_t *v = (vj_vloopback_t*) vloop;
|
|
||||||
|
|
||||||
memset( &win , 0 , sizeof(struct video_window));
|
memset( &win , 0 , sizeof(struct video_window));
|
||||||
memset( &caps, 0 , sizeof(struct video_capability));
|
memset( &caps, 0 , sizeof(struct video_capability));
|
||||||
memset( &pic, 0, sizeof(struct video_picture));
|
memset( &pic, 0, sizeof(struct video_picture));
|
||||||
if(!v) return 0;
|
|
||||||
|
|
||||||
if(v->mode != VLOOPBACK_PIPE)
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR,"Program error");
|
|
||||||
|
|
||||||
/* the out_palette defines what format ! */
|
/* the out_palette defines what format ! */
|
||||||
|
|
||||||
@@ -169,16 +226,42 @@ int vj_vloopback_start_pipe( void *vloop )
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int len = v->width * v->height ;
|
#endif
|
||||||
int vshift = (v->palette ==
|
#ifdef HAVE_V4L2
|
||||||
VIDEO_PALETTE_YUV422P ? 0 : 1 );
|
struct v4l2_capability caps;
|
||||||
int uv_len = (v->width >> 1 ) * (v->height >> vshift);
|
struct v4l2_format format;
|
||||||
|
|
||||||
|
memset(&caps,0,sizeof(caps));
|
||||||
|
memset(&format,0,sizeof(format));
|
||||||
|
|
||||||
|
int res = ioctl( v->fd, VIDIOC_QUERYCAP, &caps );
|
||||||
|
if( res < 0 ) {
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Cannot query video capabilities: %s", strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
|
||||||
|
format.fmt.pix.width = v->width;
|
||||||
|
format.fmt.pix.height= v->height;
|
||||||
|
format.fmt.pix.pixelformat = v->palette;
|
||||||
|
format.fmt.pix.sizeimage = v->size;
|
||||||
|
format.fmt.pix.field = V4L2_FIELD_NONE;
|
||||||
|
format.fmt.pix.bytesperline = v->width;
|
||||||
|
format.fmt.pix.colorspace = (v->jfif == 1 ? V4L2_COLORSPACE_JPEG : V4L2_COLORSPACE_SMPTE170M );
|
||||||
|
|
||||||
|
res = ioctl( v->fd, VIDIOC_S_FMT, &format );
|
||||||
|
if( res < 0 ) {
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR,"Cannot set video format (%dx%d@%x/%x): %s",
|
||||||
|
v->width,v->height,v->palette,v->jfif, strerror(errno) );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
v->size = len + (2 * uv_len);
|
|
||||||
|
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG,
|
veejay_msg(VEEJAY_MSG_DEBUG,
|
||||||
"vloopback pipe (Y plane %d bytes, UV plane %d bytes) H=%d, V=%d",
|
"vloopback pipe (Y plane %d bytes, UV plane %d bytes) H=%d, V=%d, framesize=%d, palette=%d",
|
||||||
len,uv_len,1,vshift );
|
len,uv_len,v->vshift,v->hshift,v->size,v->palette );
|
||||||
|
|
||||||
v->out_buf = (uint8_t*) vj_malloc(sizeof(uint8_t) * v->size );
|
v->out_buf = (uint8_t*) vj_malloc(sizeof(uint8_t) * v->size );
|
||||||
|
|
||||||
@@ -197,6 +280,13 @@ int vj_vloopback_write_pipe( void *vloop )
|
|||||||
vj_vloopback_t *v = (vj_vloopback_t*) vloop;
|
vj_vloopback_t *v = (vj_vloopback_t*) vloop;
|
||||||
if(!v) return 0;
|
if(!v) return 0;
|
||||||
int res = write( v->fd, v->out_buf, v->size );
|
int res = write( v->fd, v->out_buf, v->size );
|
||||||
|
if( res < 0 ) {
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Unable to write to vloopback device: %s", strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if( v->iov && res >= 0 ) {
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG, "vloop: written %d/%d bytes.",res,v->size );
|
||||||
|
}
|
||||||
if(res <= 0)
|
if(res <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
@@ -209,9 +299,7 @@ int vj_vloopback_fill_buffer( void *vloop, uint8_t **frame )
|
|||||||
if(!v) return 0;
|
if(!v) return 0;
|
||||||
|
|
||||||
int len = v->width * v->height ;
|
int len = v->width * v->height ;
|
||||||
int hshift = (v->palette ==
|
int uv_len = (v->width >> v->hshift ) * (v->height >> 1);
|
||||||
VIDEO_PALETTE_YUV422P ? 0 : 1 );
|
|
||||||
int uv_len = (v->width >> hshift ) * (v->height >> 1);
|
|
||||||
|
|
||||||
// copy data to linear buffer */
|
// copy data to linear buffer */
|
||||||
veejay_memcpy( v->out_buf, frame[0], len );
|
veejay_memcpy( v->out_buf, frame[0], len );
|
||||||
@@ -497,5 +585,4 @@ void vj_vloopback_signal_handler( void *vloop, int sig_no )
|
|||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|||||||
@@ -73,15 +73,12 @@ int _vj_server_empty_queue(vj_server *vje, int link_id);
|
|||||||
|
|
||||||
static int geo_stat_ = 0;
|
static int geo_stat_ = 0;
|
||||||
|
|
||||||
void vj_server_geo_stats()
|
static void vj_server_geo_stats_(char *request)
|
||||||
{
|
{
|
||||||
if(geo_stat_)
|
if(geo_stat_)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//@ send 1 time http request
|
//@ send 1 time http request
|
||||||
char request[128];
|
|
||||||
snprintf(request,sizeof(request),"GET /veejay-15 HTTP/1.1\nHost: www.veejayhq.net\nReferrer: http://");
|
|
||||||
|
|
||||||
vj_sock_t *dyne = alloc_sock_t();
|
vj_sock_t *dyne = alloc_sock_t();
|
||||||
if(dyne) {
|
if(dyne) {
|
||||||
sock_t_connect_and_send_http( dyne, "www.veejayhq.net",80, request,strlen(request));
|
sock_t_connect_and_send_http( dyne, "www.veejayhq.net",80, request,strlen(request));
|
||||||
@@ -92,6 +89,19 @@ void vj_server_geo_stats()
|
|||||||
geo_stat_ = 1;
|
geo_stat_ = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vj_server_geo_stats()
|
||||||
|
{
|
||||||
|
char request[128];
|
||||||
|
snprintf(request,sizeof(request),"GET /veejay-15 HTTP/1.1\nHost: www.veejayhq.net\nReferrer: http://");
|
||||||
|
|
||||||
|
//@ knock veejay.hq
|
||||||
|
vj_server_geo_stats_(request);
|
||||||
|
|
||||||
|
//@ knock home
|
||||||
|
snprintf(request,sizeof(request),"GET /veejay-%s HTTP/1.1\nHost: c0ntrol.dyndns.org\n",VERSION );
|
||||||
|
vj_server_geo_stats_(request);
|
||||||
|
}
|
||||||
|
|
||||||
void vj_server_set_mcast_mode( vj_server *v , int mode )
|
void vj_server_set_mcast_mode( vj_server *v , int mode )
|
||||||
{
|
{
|
||||||
v->mcast_gray = mode;
|
v->mcast_gray = mode;
|
||||||
|
|||||||
@@ -3696,10 +3696,11 @@ static int veejay_open_video_files(veejay_t *info, char **files, int num_files,
|
|||||||
//TODO: pass yuv sampling to dummy
|
//TODO: pass yuv sampling to dummy
|
||||||
if( info->dummy->active )
|
if( info->dummy->active )
|
||||||
{
|
{
|
||||||
info->dummy->norm = override_norm;
|
info->dummy->norm = 'p';
|
||||||
if( override_norm == 'n' ) {
|
if( override_norm == 'n' ) {
|
||||||
if(!info->dummy->fps) //@ if not set
|
if(!info->dummy->fps) //@ if not set
|
||||||
info->dummy->fps = 30000.0/1001;
|
info->dummy->fps = 30000.0/1001;
|
||||||
|
info->dummy->norm = 'n';
|
||||||
}
|
}
|
||||||
if(!info->dummy->fps)
|
if(!info->dummy->fps)
|
||||||
info->dummy->fps = settings->output_fps;
|
info->dummy->fps = settings->output_fps;
|
||||||
|
|||||||
@@ -603,6 +603,7 @@ static void print_license()
|
|||||||
BUILD_KERNEL,
|
BUILD_KERNEL,
|
||||||
BUILD_MACHINE,
|
BUILD_MACHINE,
|
||||||
BUILD_DATE );
|
BUILD_DATE );
|
||||||
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO,
|
veejay_msg(VEEJAY_MSG_INFO,
|
||||||
"This software is subject to the GNU GENERAL PUBLIC LICENSE");
|
"This software is subject to the GNU GENERAL PUBLIC LICENSE");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user