mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-14 20:00:01 +01:00
refactor perspective tool, add as built-in FX, remove obsolete code
This commit is contained in:
@@ -49,8 +49,6 @@
|
||||
#include <assert.h>
|
||||
#include <libel/elcache.h>
|
||||
#include <veejay/vj-misc.h>
|
||||
#include <veejay/vj-viewport-xml.h>
|
||||
#include <veejay/vj-viewport.h>
|
||||
#include <veejay/vj-misc.h>
|
||||
#include <libstream/vj-tag.h>
|
||||
//#define KAZLIB_OPAQUE_DEBUG 1
|
||||
@@ -959,11 +957,6 @@ int sample_del(int sample_id)
|
||||
if( si->dict )
|
||||
vj_font_dictionary_destroy( sample_font_,si->dict );
|
||||
#endif
|
||||
if(si->viewport) {
|
||||
viewport_destroy(si->viewport);
|
||||
si->viewport = NULL;
|
||||
}
|
||||
|
||||
if(si->edit_list) {
|
||||
/* check if another sample has same EDL */
|
||||
sample_close_edl( sample_id, si->edit_list );
|
||||
@@ -1567,57 +1560,6 @@ int sample_set_chain_source(int s1, int position, int input)
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int sample_load_composite_config( void *compiz, int s1 )
|
||||
{
|
||||
sample_info *sample = sample_get(s1);
|
||||
if(!sample) return -1;
|
||||
|
||||
int val = 0;
|
||||
void *temp = composite_load_config( compiz, sample->viewport_config , &val );
|
||||
if( temp == NULL || val == -1 ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
sample->composite = val;
|
||||
sample->viewport = temp;
|
||||
return sample->composite;
|
||||
}
|
||||
|
||||
void *sample_get_composite_view(int s1)
|
||||
{
|
||||
sample_info *sample = sample_get(s1);
|
||||
if(!sample) return NULL;
|
||||
return sample->viewport;
|
||||
}
|
||||
int sample_set_composite_view(int s1, void *vp)
|
||||
{
|
||||
sample_info *sample = sample_get(s1);
|
||||
if(!sample) return -1;
|
||||
sample->viewport = vp;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sample_set_composite(void *compiz, int s1, int composite)
|
||||
{
|
||||
sample_info *sample = sample_get(s1);
|
||||
if(!sample) return -1;
|
||||
sample->composite = composite;
|
||||
if(sample->viewport_config == NULL) {
|
||||
sample->composite = 1;
|
||||
return 1;
|
||||
}
|
||||
composite_add_to_config( compiz, sample->viewport_config, composite );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sample_get_composite(int s1)
|
||||
{
|
||||
sample_info *sample = sample_get(s1);
|
||||
if(!sample) return 0;
|
||||
return sample->composite;
|
||||
}
|
||||
/****************************************************************************************************
|
||||
*
|
||||
* sample_set_speed
|
||||
@@ -2888,9 +2830,6 @@ void ParseEffects(xmlDocPtr doc, xmlNodePtr cur, sample_info * skel, int start_a
|
||||
}
|
||||
void ParseCalibration( xmlDocPtr doc, xmlNodePtr cur, sample_info *skel , void *vp)
|
||||
{
|
||||
void *tmp = viewport_load_xml( doc, cur, vp );
|
||||
if( tmp )
|
||||
skel->viewport_config = tmp;
|
||||
}
|
||||
|
||||
void LoadCurrentPlaying( xmlDocPtr doc, xmlNodePtr cur , int *id, int *mode )
|
||||
@@ -3716,22 +3655,6 @@ void WriteSubtitles( sample_info *next_sample, void *font, char *file )
|
||||
vj_font_set_dict( font, d );
|
||||
}
|
||||
|
||||
void sample_reload_config(void *compiz, int s1, int mode )
|
||||
{
|
||||
sample_info *sample = sample_get(s1);
|
||||
if(sample) {
|
||||
if(sample->viewport_config) {
|
||||
free(sample->viewport_config);
|
||||
sample->viewport_config = NULL;
|
||||
}
|
||||
if(!sample->viewport_config) {
|
||||
veejay_msg(VEEJAY_MSG_DEBUG, "Calibrated sample %d",s1);
|
||||
sample->viewport_config = composite_get_config(compiz,mode);
|
||||
}
|
||||
sample->composite = mode;
|
||||
}
|
||||
}
|
||||
|
||||
int sample_writeToFile(char *sampleFile, void *vp,void *seq, void *font, int id, int mode)
|
||||
{
|
||||
int i;
|
||||
@@ -3770,7 +3693,6 @@ int sample_writeToFile(char *sampleFile, void *vp,void *seq, void *font, int id,
|
||||
|
||||
CreateSample(childnode, next_sample, font);
|
||||
|
||||
viewport_save_xml( childnode, next_sample->viewport_config );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -167,9 +167,6 @@ typedef struct sample_info_t {
|
||||
int soft_edl;
|
||||
void *dict;
|
||||
void *kf;
|
||||
int composite;
|
||||
void *viewport_config;
|
||||
void *viewport;
|
||||
long resume_pos;
|
||||
int subrender;
|
||||
} sample_info;
|
||||
@@ -221,8 +218,6 @@ extern int sample_set_speed(int s1, int speed);
|
||||
extern void sample_loopcount(int s1);
|
||||
extern void sample_reset_loopcount(int s1);
|
||||
extern int sample_get_loopcount(int s1);
|
||||
extern int sample_set_composite(void *compiz,int s1, int composite);
|
||||
extern int sample_get_composite(int s1);
|
||||
extern int sample_set_framedup(int s1, int n);
|
||||
extern int sample_get_framedup(int s1);
|
||||
extern int sample_set_framedups(int s1, int n);
|
||||
@@ -340,7 +335,6 @@ extern int sample_usable_edl( int s1 );
|
||||
|
||||
extern int sample_cache_used( int s1 );
|
||||
extern void sample_free(void *edl);
|
||||
extern int sample_load_composite_config( void *compiz, int s1 );
|
||||
extern int sample_stop_playing(int s1, int new_s1);
|
||||
extern int sample_start_playing(int s1, int no_cache);
|
||||
extern int sample_get_kf_tokens( int s1, int entry, int id, int *start,int *end, int *type);
|
||||
@@ -349,9 +343,6 @@ extern int sample_read_edl( sample_info *sample );
|
||||
|
||||
extern int sample_max_video_length(int s1);
|
||||
|
||||
extern int sample_set_composite_view(int s1, void *vp );
|
||||
extern void *sample_get_composite_view(int s1);
|
||||
|
||||
extern long sample_get_resume(int s1);
|
||||
extern int sample_set_resume(int s1, long pos );
|
||||
|
||||
|
||||
@@ -113,7 +113,6 @@ typedef struct
|
||||
int planes[4];
|
||||
int out_planes[4];
|
||||
int rw;
|
||||
int composite;
|
||||
int is_jpeg;
|
||||
int sizeimage;
|
||||
VJFrame *frames[N_FRAMES];
|
||||
@@ -1380,17 +1379,6 @@ void v4l2_set_input_channel( void *d, int num )
|
||||
ioctl( v->fd, VIDIOC_S_INPUT, &num );
|
||||
}
|
||||
|
||||
void v4l2_set_composite_status( void *d, int status)
|
||||
{
|
||||
v4l2info *v = (v4l2info*) d;
|
||||
v->composite = status;
|
||||
}
|
||||
|
||||
int v4l2_get_composite_status( void *d )
|
||||
{
|
||||
v4l2info *v = (v4l2info*) d;
|
||||
return v->composite;
|
||||
}
|
||||
// brightness
|
||||
void v4l2_set_brightness( void *d, int32_t value ) {
|
||||
v4l2_set_control( d, V4L2_CID_BRIGHTNESS, value );
|
||||
|
||||
@@ -98,7 +98,6 @@ typedef struct {
|
||||
int max_height;
|
||||
int min_width;
|
||||
int min_height;
|
||||
int composite;
|
||||
sws_template sws_templ;
|
||||
void *scaler;
|
||||
v4lprocessing *info;
|
||||
@@ -119,7 +118,6 @@ typedef struct {
|
||||
int norm;
|
||||
int channel;
|
||||
int frequency;
|
||||
int composite;
|
||||
void *v4l;
|
||||
pthread_mutex_t mutex;
|
||||
pthread_t thread;
|
||||
@@ -1138,15 +1136,4 @@ int v4lvideo_change_channel( void *vvv, int channel )
|
||||
return ret;
|
||||
}
|
||||
|
||||
void v4lvideo_set_composite_status( void *vv, int status )
|
||||
{
|
||||
v4lvideo_template_t *v = (v4lvideo_template_t*) vv;
|
||||
v->composite = status;
|
||||
}
|
||||
|
||||
int v4lvideo_get_composite_status( void *vv)
|
||||
{
|
||||
v4lvideo_template_t *v = (v4lvideo_template_t*) vv;
|
||||
return v->composite;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -59,10 +59,5 @@ void v4lvideo_set_white(void *vv, int x );
|
||||
|
||||
int v4lvideo_change_channel( void *vv, int channel );
|
||||
|
||||
// veejay specific
|
||||
void v4lvideo_set_composite_status( void *vv, int status );
|
||||
int v4lvideo_get_composite_status( void *vv );
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <libstream/vj-tag.h>
|
||||
#include <libhash/hash.h>
|
||||
#include <libvje/vje.h>
|
||||
#include <veejay/vj-viewport.h>
|
||||
#include <veejay/vjkf.h>
|
||||
#include <veejay/vj-shm.h>
|
||||
#define VIDEO_PALETTE_YUV420P 15
|
||||
@@ -58,7 +57,6 @@
|
||||
#ifdef HAVE_FREETYPE
|
||||
#include <veejay/vj-font.h>
|
||||
#endif
|
||||
#include <veejay/vj-viewport-xml.h>
|
||||
|
||||
#include <libplugger/plugload.h>
|
||||
static veejay_t *_tag_info = NULL;
|
||||
@@ -423,7 +421,6 @@ int _vj_tag_new_unicap( vj_tag * tag, int stream_nr, int width, int height, int
|
||||
v4lvideo_templ_get_norm( selected_video_norm ),
|
||||
freq,
|
||||
width, height, palette );
|
||||
v4lvideo_set_composite_status( vj_tag_input->unicap[stream_nr] ,has_composite );
|
||||
if( vj_tag_input->unicap[stream_nr] == NULL ) {
|
||||
veejay_msg(0, "Unable to open device %s", refname );
|
||||
return 0;
|
||||
@@ -784,13 +781,6 @@ int vj_tag_set_stream_color(int t1, int r, int g, int b)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int vj_tag_get_composite(int t1)
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
if(!tag) return 0;
|
||||
return tag->composite;
|
||||
}
|
||||
|
||||
int vj_tag_get_stream_color(int t1, int *r, int *g, int *b )
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
@@ -806,22 +796,6 @@ int vj_tag_get_stream_color(int t1, int *r, int *g, int *b )
|
||||
return 1;
|
||||
}
|
||||
|
||||
int vj_tag_composite(int t1)
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
if(!tag) return 0;
|
||||
if(tag->source_type != VJ_TAG_TYPE_V4L )
|
||||
return 0;
|
||||
if(tag->capture_type==1) {
|
||||
#ifdef HAVE_V4L
|
||||
return v4lvideo_get_composite_status( vj_tag_input->unicap[tag->index]);
|
||||
#elif HAVE_V4L2
|
||||
return v4l2_get_composite_status( vj_tag_input->unicap[tag->index] );
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// for network, filename /channel is passed as host/port num
|
||||
int vj_tag_new(int type, char *filename, int stream_nr, editlist * el,
|
||||
int pix_fmt, int channel , int extra , int has_composite)
|
||||
@@ -1317,8 +1291,6 @@ int vj_tag_del(int id)
|
||||
tag->socket_frame = NULL;
|
||||
}
|
||||
|
||||
if(tag->viewport)
|
||||
viewport_destroy(tag->viewport);
|
||||
#ifdef ARCH_X86_64
|
||||
uint64_t tid = (uint64_t) tag->id;
|
||||
#else
|
||||
@@ -1375,64 +1347,6 @@ int vj_tag_set_n_frames( int t1, int n )
|
||||
return 1;
|
||||
}
|
||||
|
||||
int vj_tag_load_composite_config( void *compiz, int t1 )
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
if(!tag)
|
||||
return -1;
|
||||
|
||||
int val = 0;
|
||||
void *temp = composite_load_config( compiz, tag->viewport_config, &val );
|
||||
if(temp == NULL || val == -1 )
|
||||
return 0;
|
||||
|
||||
tag->composite = val;
|
||||
tag->viewport = temp;
|
||||
return tag->composite;
|
||||
}
|
||||
|
||||
void vj_tag_reload_config( void *compiz, int t1, int mode )
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
if(tag) {
|
||||
if(tag->viewport_config) {
|
||||
free(tag->viewport_config);
|
||||
tag->viewport_config = NULL;
|
||||
}
|
||||
if(!tag->viewport_config) {
|
||||
tag->viewport_config = composite_get_config( compiz, mode );
|
||||
}
|
||||
tag->composite = mode;
|
||||
}
|
||||
}
|
||||
void *vj_tag_get_composite_view( int t1 )
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
if(!tag) return NULL;
|
||||
return tag->viewport;
|
||||
}
|
||||
int vj_tag_set_composite_view( int t1, void *vp )
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
if(!tag) return -1;
|
||||
tag->viewport = vp;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int vj_tag_set_composite( void *compiz,int t1, int n )
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
if(!tag) return -1;
|
||||
tag->composite = n;
|
||||
if( tag->viewport_config == NULL ) {
|
||||
tag->composite = 1;
|
||||
return 1;
|
||||
}
|
||||
composite_add_to_config( compiz, tag->viewport_config, n );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int vj_tag_get_effect(int t1, int position)
|
||||
{
|
||||
vj_tag *tag = vj_tag_get(t1);
|
||||
@@ -3930,10 +3844,6 @@ static void tagParseEffects(xmlDocPtr doc, xmlNodePtr cur, int dst_stream)
|
||||
|
||||
void tagParseCalibration( xmlDocPtr doc, xmlNodePtr cur, int dst_sample , void *vp)
|
||||
{
|
||||
vj_tag *t = vj_tag_get( dst_sample );
|
||||
void *tmp = viewport_load_xml( doc, cur, vp );
|
||||
if( tmp )
|
||||
t->viewport_config = tmp;
|
||||
}
|
||||
|
||||
/*************************************************************************************************
|
||||
@@ -3981,7 +3891,6 @@ void tagParseStreamFX(char *sampleFile, xmlDocPtr doc, xmlNodePtr cur, void *fon
|
||||
xmlNodePtr subs = NULL;
|
||||
xmlNodePtr cali = NULL;
|
||||
void *d = vj_font_get_dict( font );
|
||||
void *viewport_config = NULL;
|
||||
|
||||
while (cur != NULL)
|
||||
{
|
||||
@@ -4053,7 +3962,6 @@ void tagParseStreamFX(char *sampleFile, xmlDocPtr doc, xmlNodePtr cur, void *fon
|
||||
tag->fader_direction = fader_dir;
|
||||
tag->opacity = opacity;
|
||||
tag->nframes = nframes;
|
||||
tag->viewport_config = viewport_config;
|
||||
|
||||
switch( source_type )
|
||||
{
|
||||
@@ -4232,8 +4140,6 @@ void tagCreateStream(xmlNodePtr node, vj_tag *tag, void *font, void *vp)
|
||||
|
||||
vj_font_xml_pack( node, font );
|
||||
|
||||
viewport_save_xml( node, tag->viewport_config );
|
||||
|
||||
xmlNodePtr childnode =
|
||||
xmlNewChild(node, NULL, (const xmlChar *) XMLTAG_EFFECTS, NULL);
|
||||
|
||||
|
||||
@@ -44,7 +44,8 @@ EXTRA_DIST += effects/autoeq.h effects/crosspixel.h effects/mask.h effects/rawva
|
||||
effects/complexthreshold.h effects/lumamask.h effects/radialblur.h effects/waterrippletv.h \
|
||||
effects/constantblend.h effects/magicmirror.h effects/radioactive.h effects/whiteframe.h \
|
||||
effects/contourextract.h effects/magicoverlays.h effects/raster.h effects/widthmirror.h \
|
||||
effects/contrast.h effects/magicscratcher.h effects/rawman.h effects/zoom.h effects/iris.h effects/cali.h effects/median.h effects/average-blend.h
|
||||
effects/contrast.h effects/magicscratcher.h effects/rawman.h effects/zoom.h effects/iris.h \
|
||||
effects/cali.h effects/median.h effects/average-blend.h effects/perspective.h
|
||||
|
||||
EXTRA_DIST += specs/FreeFrame.h specs/frei0r.h
|
||||
|
||||
@@ -91,6 +92,6 @@ libvje_la_SOURCES = vj-effect.c vj-effman.c effects/common.c \
|
||||
effects/cartonize.c effects/tripplicity.c effects/neighbours.c effects/neighbours2.c\
|
||||
effects/neighbours3.c effects/neighbours4.c effects/neighbours5.c effects/cutstop.c\
|
||||
effects/contourextract.c effects/maskstop.c effects/photoplay.c effects/videoplay.c effects/rgbchannel.c \
|
||||
effects/videowall.c effects/flare.c effects/radioactive.c effects/baltantv.c effects/constantblend.c effects/picinpic.c effects/bgsubtract.c effects/cali.c effects/median.c effects/average-blend.c
|
||||
effects/videowall.c effects/flare.c effects/radioactive.c effects/baltantv.c effects/constantblend.c effects/picinpic.c effects/bgsubtract.c effects/cali.c effects/median.c effects/average-blend.c effects/perspective.c
|
||||
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ int zoom_malloc(int width, int height)
|
||||
{
|
||||
int i;
|
||||
for( i = 0; i < 3; i ++ ) {
|
||||
zoom_private_[i] = (uint8_t*) vj_malloc( sizeof(uint8_t) * RUP8(width*height));
|
||||
zoom_private_[i] = (uint8_t*) vj_malloc( sizeof(uint8_t) * RUP8(width*height+width));
|
||||
if(!zoom_private_[i])
|
||||
return 0;
|
||||
}
|
||||
@@ -90,7 +90,7 @@ void zoom_apply( VJFrame *frame, int width, int height, int x, int y, int factor
|
||||
{
|
||||
if( zoom_vp_ )
|
||||
viewport_destroy( zoom_vp_ );
|
||||
zoom_vp_ = viewport_fx_init( VP_QUADZOOM, width,height,x,y,factor, dir );
|
||||
zoom_vp_ = viewport_fx_zoom_init( VP_QUADZOOM, width,height,x,y,factor, dir );
|
||||
if(!zoom_vp_ )
|
||||
return;
|
||||
zoom_[0] = x; zoom_[1] = y; zoom_[2] = factor; zoom_[3] = dir;
|
||||
|
||||
@@ -216,11 +216,12 @@ enum {
|
||||
VJ_IMAGE_EFFECT_LENSCORRECTION = 189,
|
||||
VJ_IMAGE_EFFECT_CALI = 190,
|
||||
VJ_IMAGE_EFFECT_MEDIANFILTER = 191,
|
||||
VJ_IMAGE_EFFECT_PERSPECTIVE = 192,
|
||||
VJ_IMAGE_EFFECT_DUMMY=100,
|
||||
};
|
||||
|
||||
#define VJ_IMAGE_EFFECT_MIN 100
|
||||
#define VJ_IMAGE_EFFECT_MAX 192
|
||||
#define VJ_IMAGE_EFFECT_MAX 193
|
||||
|
||||
#define VJ_VIDEO_EFFECT_MIN 200
|
||||
#define VJ_VIDEO_EFFECT_MAX 248
|
||||
@@ -482,6 +483,8 @@ extern void slice_apply(VJFrame *frame, int width, int height, int val, int rein
|
||||
|
||||
extern void zoom_apply(VJFrame *frame, int w, int h , int xo, int yo, int f, int dir);
|
||||
|
||||
extern void perspective_apply( VJFrame *frame, int width, int height, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int reverse);
|
||||
|
||||
extern void deinterlace_apply(VJFrame *frame, int w, int h, int val);
|
||||
|
||||
extern void simplematte_apply(VJFrame *frame, int w, int h, int threshold, int invert);
|
||||
|
||||
@@ -168,6 +168,7 @@
|
||||
#include "effects/cali.h"
|
||||
#include "effects/bgsubtract.h"
|
||||
#include "effects/average-blend.h"
|
||||
#include "effects/perspective.h"
|
||||
#include <libplugger/plugload.h>
|
||||
#include <veejay/vims.h>
|
||||
|
||||
@@ -258,6 +259,7 @@ static struct
|
||||
{ waterrippletv_malloc, waterrippletv_free, VJ_IMAGE_EFFECT_RIPPLETV },
|
||||
{ bgsubtract_malloc, bgsubtract_free, VJ_IMAGE_EFFECT_BGSUBTRACT },
|
||||
{ slicer_malloc, slicer_free, VJ_VIDEO_EFFECT_SLICER },
|
||||
{ perspective_malloc, perspective_free, VJ_IMAGE_EFFECT_PERSPECTIVE },
|
||||
{ NULL , NULL ,0 },
|
||||
};
|
||||
|
||||
@@ -658,6 +660,7 @@ void vj_effect_initialize(int width, int height, int full_range)
|
||||
vj_effects[i + 89 ]= radcor_init(width,height);
|
||||
vj_effects[i + 90 ]= cali_init(width,height);
|
||||
vj_effects[i + 91 ] = medianfilter_init(width,height);
|
||||
vj_effects[i + 92 ] = perspective_init(width,height);
|
||||
|
||||
max_width = width;
|
||||
max_height = height;
|
||||
|
||||
@@ -409,6 +409,9 @@ void vj_effman_apply_image_effect(
|
||||
slice_apply(frames[0],frames[0]->width,frames[0]->height,arg[0], todo_info->tmp[1]);
|
||||
todo_info->tmp[1] = 0;
|
||||
break;
|
||||
case VJ_IMAGE_EFFECT_PERSPECTIVE:
|
||||
perspective_apply(frames[0],frames[0]->width,frames[0]->height,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],arg[7],arg[8] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#define FX_LIMIT 1024
|
||||
|
||||
#define MAX_EFFECTS 140
|
||||
#define MAX_EFFECTS 141
|
||||
#define PARAM_WIDTH (1<<0x2)
|
||||
#define PARAM_HEIGHT (1<<0x3)
|
||||
#define PARAM_FADER (1<<0x1)
|
||||
|
||||
@@ -412,8 +412,6 @@ int veejay_free(veejay_t * info)
|
||||
|
||||
task_destroy();
|
||||
|
||||
if( info->settings->composite2 )
|
||||
composite_destroy( info->composite2 );
|
||||
if( info->composite )
|
||||
composite_destroy( info->composite );
|
||||
|
||||
@@ -586,6 +584,7 @@ static int veejay_stop_playing_sample( veejay_t *info, int new_sample_id )
|
||||
sample_chain_free( info->uc->sample_id );
|
||||
sample_set_framedups(info->uc->sample_id,0);
|
||||
sample_set_resume(info->uc->sample_id, info->settings->current_frame_num );
|
||||
|
||||
return 1;
|
||||
}
|
||||
static void veejay_stop_playing_stream( veejay_t *info, int new_stream_id )
|
||||
@@ -631,15 +630,29 @@ static int veejay_start_playing_sample( veejay_t *info, int sample_id )
|
||||
|
||||
}
|
||||
#endif
|
||||
if(info->composite )
|
||||
/* if(info->composite )
|
||||
{
|
||||
int has_cfg = sample_load_composite_config( info->composite , sample_id );
|
||||
if( has_cfg && info->settings->composite == 1 ) {
|
||||
void *cur = sample_get_composite_view(sample_id);
|
||||
if( cur ) composite_set_backing(info->composite,cur);
|
||||
if( cur == NULL ) {
|
||||
composite_set_file_mode( info->composite, info->homedir, info->uc->playback_mode,sample_id);
|
||||
if( sample_load_composite_config( info->composite, sample_id ) ) {
|
||||
veejay_msg(VEEJAY_MSG_WARNING, "Sample %d has composite view %p", sample_id, sample_get_composite_view(sample_id) );
|
||||
}
|
||||
}
|
||||
else {
|
||||
composite_set_backing( info->composite, cur );
|
||||
}
|
||||
|
||||
switch(composite_has_back(info->composite)) {
|
||||
case 2:
|
||||
settings->composite = composite_restore_config(info->composite);
|
||||
break;
|
||||
default:
|
||||
settings->composite = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
info->uc->sample_id = sample_id;
|
||||
info->last_sample_id = sample_id;
|
||||
|
||||
@@ -691,14 +704,29 @@ static int veejay_start_playing_stream(veejay_t *info, int stream_id )
|
||||
info->last_tag_id = stream_id;
|
||||
info->uc->sample_id = stream_id;
|
||||
|
||||
if(info->composite )
|
||||
/* if(info->composite )
|
||||
{
|
||||
int has_cfg = vj_tag_load_composite_config( info->composite , stream_id );
|
||||
if( has_cfg && info->settings->composite == 1 ) {
|
||||
void *cur = vj_tag_get_composite_view(stream_id);
|
||||
if( cur ) composite_set_backing(info->composite,cur);
|
||||
if(cur == NULL) {
|
||||
composite_set_file_mode( info->composite, info->homedir, info->uc->playback_mode,stream_id);
|
||||
if( vj_tag_load_composite_config( info->composite , stream_id ) ) {
|
||||
veejay_msg(VEEJAY_MSG_WARNING, "Stream %d has composite view %p", stream_id,vj_tag_get_composite_view(stream_id) );
|
||||
}
|
||||
}
|
||||
else {
|
||||
composite_set_backing( info->composite, cur );
|
||||
}
|
||||
|
||||
|
||||
switch(composite_has_back(info->composite)) {
|
||||
case 2:
|
||||
settings->composite = composite_restore_config(info->composite);
|
||||
break;
|
||||
default:
|
||||
settings->composite = 0;
|
||||
break;
|
||||
}
|
||||
}*/
|
||||
|
||||
veejay_msg(VEEJAY_MSG_INFO,"Playing stream %d (FX=%x) (Ff=%d)", stream_id, tmp, settings->max_frame_num );
|
||||
|
||||
@@ -776,8 +804,13 @@ void veejay_change_playback_mode( veejay_t *info, int new_pm, int sample_id )
|
||||
video_playback_setup *settings = info->settings;
|
||||
settings->min_frame_num = 0;
|
||||
settings->max_frame_num = info->edit_list->total_frames;
|
||||
veejay_msg(VEEJAY_MSG_INFO, "Playing plain video, frames %ld - %ld", (long)settings->min_frame_num, (long)settings->max_frame_num );
|
||||
|
||||
/* if(info->composite) {
|
||||
composite_set_file_mode( info->composite, info->homedir, new_pm, 0);
|
||||
composite_restore_config( info->composite );
|
||||
}
|
||||
*/
|
||||
veejay_msg(VEEJAY_MSG_INFO, "Playing plain video, frames %ld - %ld", (long)settings->min_frame_num, (long)settings->max_frame_num );
|
||||
}
|
||||
if(new_pm == VJ_PLAYBACK_MODE_TAG)
|
||||
{
|
||||
@@ -1838,19 +1871,22 @@ int veejay_init(veejay_t * info, int x, int y,char *arg, int def_tags, int gen_t
|
||||
|
||||
if( info->settings->composite )
|
||||
{
|
||||
char path[1024];
|
||||
snprintf(path,sizeof(path),"%s/viewport.cfg", info->homedir);
|
||||
int comp_mode = info->settings->composite;
|
||||
|
||||
info->composite = composite_init( info->video_output_width, info->video_output_height,
|
||||
info->video_output_width, info->video_output_height,
|
||||
info->homedir,
|
||||
path,
|
||||
info->settings->sample_mode,
|
||||
yuv_which_scaler(),
|
||||
info->pixel_format,
|
||||
&comp_mode);
|
||||
|
||||
if(!info->composite) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
info->composite2 = info->composite; // save ptr, composite
|
||||
composite_set_file_mode( info->composite, info->homedir, info->uc->playback_mode,info->uc->sample_id);
|
||||
|
||||
info->settings->zoom = 0;
|
||||
info->settings->composite = ( comp_mode == 1 ? 1: 0);
|
||||
|
||||
@@ -50,7 +50,6 @@ typedef struct
|
||||
uint8_t *proj_plane[4];
|
||||
uint8_t *mirror_plane[4];
|
||||
void *vp1;
|
||||
void *back1;
|
||||
void *scaler;
|
||||
void *back_scaler;
|
||||
VJFrame *frame1;
|
||||
@@ -62,9 +61,6 @@ typedef struct
|
||||
int pf;
|
||||
int use_back;
|
||||
int Y_only;
|
||||
int run;
|
||||
int back_run;
|
||||
int has_back;
|
||||
int proj_width; /* projection (output) */
|
||||
int proj_height;
|
||||
int img_width; /* image (input) */
|
||||
@@ -72,7 +68,7 @@ typedef struct
|
||||
int has_mirror_plane;
|
||||
int mirror_row_start;
|
||||
int mirror_row_end;
|
||||
int ownback1;
|
||||
char tmp_path[1024];
|
||||
} composite_t;
|
||||
|
||||
//@ round to multiple of 8
|
||||
@@ -84,19 +80,24 @@ void *composite_get_vp( void *data )
|
||||
return c->vp1;
|
||||
}
|
||||
|
||||
void composite_set_file_mode(void *data, const char *homedir, int mode, int id)
|
||||
{
|
||||
composite_t *c = (composite_t*) data;
|
||||
switch(mode) {
|
||||
case 2: snprintf(c->tmp_path,sizeof(c->tmp_path),"%s/viewport.cfg", homedir ); break;
|
||||
case 1: snprintf(c->tmp_path,sizeof(c->tmp_path),"%s/viewport-stream-%d", homedir,id );break;
|
||||
default:snprintf(c->tmp_path,sizeof(c->tmp_path),"%s/viewport-sample-%d.cfg", homedir,id );break;
|
||||
}
|
||||
veejay_msg(VEEJAY_MSG_DEBUG, "Save/load from File [%s]",c->tmp_path );
|
||||
}
|
||||
|
||||
int composite_get_ui(void *data )
|
||||
{
|
||||
composite_t *c = (composite_t*) data;
|
||||
return viewport_get_mode(c->vp1);
|
||||
}
|
||||
|
||||
int composite_has_back(void *data)
|
||||
{
|
||||
composite_t *c = (composite_t*) data;
|
||||
return c->has_back;
|
||||
}
|
||||
|
||||
void *composite_init( int pw, int ph, int iw, int ih, const char *homedir, int sample_mode, int zoom_type, int pf, int *vp1_e )
|
||||
void *composite_init( int pw, int ph, int iw, int ih, char *homedir, int sample_mode, int zoom_type, int pf, int *vp1_e )
|
||||
{
|
||||
composite_t *c = (composite_t*) vj_calloc(sizeof(composite_t));
|
||||
int vp1_frontback = 0;
|
||||
@@ -138,8 +139,6 @@ void *composite_init( int pw, int ph, int iw, int ih, const char *homedir, int s
|
||||
c->scaler = yuv_init_swscaler( c->frame1, c->frame2, &sws_templ, 0 );
|
||||
c->back_scaler = yuv_init_swscaler( c->frame4, c->frame3, &sws_templ, 0 );
|
||||
|
||||
c->back1 = NULL;
|
||||
|
||||
veejay_msg(VEEJAY_MSG_DEBUG, "\tSoftware scaler : %s", yuv_get_scaler_name(zoom_type) );
|
||||
veejay_msg(VEEJAY_MSG_DEBUG, "\tVideo resolution : %dx%d", iw,ih );
|
||||
veejay_msg(VEEJAY_MSG_DEBUG, "\tScreen resolution: %dx%d", pw,ph );
|
||||
@@ -169,20 +168,11 @@ void *composite_clone( void *compiz )
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
if(!c) return NULL;
|
||||
void *v = viewport_clone(c->vp1,c->img_width,c->img_height);
|
||||
viewport_reconfigure(v);
|
||||
return v;
|
||||
}
|
||||
// viewport_reconfigure(v);
|
||||
|
||||
void composite_set_backing( void *compiz, void *vp )
|
||||
{
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
if(c->ownback1) {
|
||||
c->ownback1 = 0;
|
||||
if(c->back1) {
|
||||
viewport_destroy( c->back1 );
|
||||
}
|
||||
}
|
||||
c->back1 = vp;
|
||||
veejay_msg(VEEJAY_MSG_WARNING, "Cloned new backing %p", v);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
void composite_destroy( void *compiz )
|
||||
@@ -192,7 +182,6 @@ void composite_destroy( void *compiz )
|
||||
{
|
||||
if(c->proj_plane[0]) free(c->proj_plane[0]);
|
||||
if(c->vp1) viewport_destroy( c->vp1 );
|
||||
if(c->ownback1 && c->back1) { viewport_destroy(c->back1); c->back1 = NULL; c->ownback1 = 0; }
|
||||
if(c->scaler) yuv_free_swscaler( c->scaler );
|
||||
if(c->back_scaler) yuv_free_swscaler(c->back_scaler);
|
||||
if(c->frame1) free(c->frame1);
|
||||
@@ -214,8 +203,6 @@ void composite_set_status(void *compiz, int mode)
|
||||
{
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
viewport_set_initial_active( c->vp1, mode );
|
||||
|
||||
viewport_save_settings( c->vp1, 1 );
|
||||
}
|
||||
|
||||
void composite_set_ui(void *compiz, int status )
|
||||
@@ -232,38 +219,10 @@ void composite_add_to_config( void *compiz, void *vc, int which_vp )
|
||||
viewport_set_composite( vc, which_vp, c->Y_only );
|
||||
}
|
||||
|
||||
void *composite_load_config( void *compiz, void *vc, int *result )
|
||||
{
|
||||
if( vc == NULL ) {
|
||||
*result = -1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
int cm = viewport_get_color_mode_from_config(vc);
|
||||
int m = viewport_get_composite_mode_from_config(vc);
|
||||
|
||||
int res = viewport_reconfigure_from_config( c->vp1, vc );
|
||||
//@ push to back1 too!
|
||||
if(res) {
|
||||
if( c->back1 == NULL ) {
|
||||
c->back1 = composite_clone(c );
|
||||
c->ownback1 = 1;
|
||||
}
|
||||
viewport_update_from(c->vp1, c->back1 );
|
||||
c->Y_only = cm;
|
||||
*result = m;
|
||||
return (void*)c->back1;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int composite_event( void *compiz, uint8_t *in[4], int mouse_x, int mouse_y, int mouse_button, int w_x, int w_y )
|
||||
int composite_event( void *compiz, uint8_t *in[4], int mouse_x, int mouse_y, int mouse_button, int w_x, int w_y, char *homedir, int mode, int id )
|
||||
{
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
if(viewport_external_mouse( c->vp1, c->proj_plane, mouse_x, mouse_y, mouse_button, 1,w_x,w_y )) {
|
||||
if(c->back1)
|
||||
viewport_update_from(c->vp1, c->back1 );
|
||||
if(viewport_external_mouse( c->vp1, c->proj_plane, mouse_x, mouse_y, mouse_button, 1,w_x,w_y, homedir, mode, id )) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -322,8 +281,6 @@ void composite_blit_yuyv( void *compiz, uint8_t *in[4], uint8_t *yuyv, int which
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
int vp1_active = viewport_active(c->vp1);
|
||||
|
||||
c->has_back = 0;
|
||||
|
||||
if( which_vp == 2 && vp1_active ) {
|
||||
yuv422_to_yuyv(c->proj_plane,yuyv,c->proj_width,c->proj_height );
|
||||
return;
|
||||
@@ -371,13 +328,10 @@ void composite_blit_ycbcr( void *compiz,
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void *composite_get_config(void *compiz, int which_vp )
|
||||
void *composite_get_config(void *compiz)
|
||||
{
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
void *config = viewport_get_configuration( c->vp1 );
|
||||
viewport_set_composite( config, which_vp, c->Y_only );
|
||||
return config;
|
||||
return viewport_get_configuration( c->vp1, c->tmp_path );
|
||||
}
|
||||
|
||||
/* Top frame */
|
||||
@@ -385,11 +339,6 @@ int composite_process(void *compiz, VJFrame *output, VJFrame *input, int which_v
|
||||
{
|
||||
composite_t *c = (composite_t*) compiz;
|
||||
|
||||
if(c->run == 0 ) {
|
||||
viewport_reconfigure(c->vp1);
|
||||
c->run=1;
|
||||
}
|
||||
|
||||
int vp1_active = viewport_active(c->vp1);
|
||||
|
||||
if( c->has_mirror_plane ) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Linux VeeJay
|
||||
*
|
||||
* Copyright(C)2002-2008 Niels Elburg <nwelburg@gmail.com>
|
||||
* Copyright(C)2002-2015 Niels Elburg <nwelburg@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -40,22 +40,21 @@ void composite_process_divert( void *compiz, uint8_t *in[4], VJFrame *out, void
|
||||
|
||||
void composite_blit_yuyv( void *compiz,uint8_t *in[4], uint8_t *yuyv, int which_vp );
|
||||
|
||||
int composite_event( void *compiz, uint8_t *in[4], int mouse_x, int mouse_y, int mouse_button, int w_x, int w_y );
|
||||
int composite_event( void *compiz, uint8_t *in[4], int mouse_x, int mouse_y, int mouse_button, int w_x, int w_y, char *homedir, int mode, int id );
|
||||
|
||||
void *composite_get_config(void *compiz);
|
||||
|
||||
void composite_destroy( void *compiz );
|
||||
|
||||
void *composite_init( int pw, int ph, int iw, int ih, const char *homedir, int sample_mode, int zoom_type, int pf, int *vp1_enabled );
|
||||
|
||||
void composite_set_backing( void *compiz, void *vp );
|
||||
void *composite_init( int pw, int ph, int iw, int ih, char *homedir, int sample_mode, int zoom_type, int pf, int *vp1_enabled );
|
||||
|
||||
void *composite_clone( void *compiz );
|
||||
|
||||
void composite_set_file_mode(void *data, const char *homedir, int mode, int id);
|
||||
|
||||
void *composite_get_vp( void *data );
|
||||
void composite_set_ui(void *compiz, int status );
|
||||
int composite_get_ui(void *compiz );
|
||||
//@ load config after loading to activate viewport setup
|
||||
//@ add to config before saving
|
||||
void *composite_load_config( void *compiz, void *vc, int *result );
|
||||
void composite_add_to_config( void *compiz, void *vc, int which_vp );
|
||||
int composite_get_status(void *compiz );
|
||||
void composite_set_status(void *compiz, int mode);
|
||||
|
||||
@@ -7095,8 +7095,8 @@ void vj_event_vp_proj_toggle(void *ptr, const char format[],va_list ap )
|
||||
return;
|
||||
}
|
||||
|
||||
int mode = !composite_get_status(v->composite2);
|
||||
composite_set_status( v->composite2, mode );
|
||||
int mode = !composite_get_status(v->composite);
|
||||
composite_set_status( v->composite, mode );
|
||||
|
||||
veejay_msg(VEEJAY_MSG_INFO, "Projection transform is now %s on startup.",(mode==0? "inactive" : "active"));
|
||||
}
|
||||
@@ -7120,11 +7120,6 @@ void vj_event_vp_stack( void *ptr, const char format[], va_list ap )
|
||||
if ( args[1] == 1 ) {
|
||||
int mode = v->settings->composite;
|
||||
if( mode == 0 ) {
|
||||
if( SAMPLE_PLAYING(v) ) {
|
||||
sample_set_composite( v->composite, v->uc->sample_id, 1 );
|
||||
} else if (STREAM_PLAYING(v) ) {
|
||||
vj_tag_set_composite( v->composite, v->uc->sample_id, 1 );
|
||||
}
|
||||
v->settings->composite = 1;
|
||||
} else if ( mode == 1 ) {
|
||||
v->settings->composite = 0;
|
||||
@@ -7132,7 +7127,6 @@ void vj_event_vp_stack( void *ptr, const char format[], va_list ap )
|
||||
v->settings->composite = 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void vj_event_vp_set_points( void *ptr, const char format[], va_list ap )
|
||||
@@ -7284,43 +7278,15 @@ void vj_event_viewport_frontback(void *ptr, const char format[], va_list ap)
|
||||
}
|
||||
|
||||
if( v->settings->composite == 2 && composite_get_ui( v->composite ) ) {
|
||||
// if(v->use_osd==3)
|
||||
// v->use_osd = 0;
|
||||
// v->settings->composite = 2;
|
||||
if(STREAM_PLAYING(v)) {
|
||||
void *cur = vj_tag_get_composite_view(v->uc->sample_id);
|
||||
if(cur == NULL ) {
|
||||
cur = (void*)composite_clone(v->composite);
|
||||
vj_tag_set_composite_view(v->uc->sample_id,cur);
|
||||
}
|
||||
vj_tag_reload_config(v->composite,v->uc->sample_id,v->settings->composite );
|
||||
veejay_msg(VEEJAY_MSG_INFO, "Saved calibration to stream %d",v->uc->sample_id);
|
||||
} else if (SAMPLE_PLAYING(v)) {
|
||||
void *cur = sample_get_composite_view( v->uc->sample_id );
|
||||
if( cur == NULL ) {
|
||||
cur = composite_clone(v->composite);
|
||||
sample_set_composite_view(v->uc->sample_id, cur );
|
||||
}
|
||||
sample_reload_config( v->composite,v->uc->sample_id, v->settings->composite);
|
||||
veejay_msg(VEEJAY_MSG_INFO, "Saved calibration to sample %d",v->uc->sample_id );
|
||||
} else {
|
||||
//FIXME plain mode restore
|
||||
}
|
||||
if(v->use_osd==3)
|
||||
v->use_osd = 0;
|
||||
composite_set_ui(v->composite, 0 );
|
||||
v->settings->composite = 1;
|
||||
//#ifdef HAVE_SDL
|
||||
// if(v->video_out==0 || v->video_out == 2)
|
||||
// vj_sdl_grab( v->sdl[0], 0 );
|
||||
//#endif
|
||||
v->settings->composite = 0;
|
||||
}
|
||||
else {
|
||||
composite_set_ui( v->composite, 2 );
|
||||
v->settings->composite = 2;
|
||||
v->use_osd=3;
|
||||
//#ifdef HAVE_SDL
|
||||
// if(v->video_out==0 || v->video_out == 2)
|
||||
// vj_sdl_grab( v->sdl[0], 1 );
|
||||
//#endif
|
||||
veejay_msg(VEEJAY_MSG_INFO, "You can now calibrate your projection/camera, press CTRL-s again to save and exit.");
|
||||
}
|
||||
}
|
||||
@@ -7943,9 +7909,6 @@ void vj_event_print_tag_info(veejay_t *v, int id)
|
||||
id, vj_tag_size()-1, description,
|
||||
(vj_tag_get_active(id) == 1 ? "is active" : "is not active"));
|
||||
|
||||
if( vj_tag_get_composite( id ) )
|
||||
veejay_msg(VEEJAY_MSG_INFO, "This tag is transformed when used as secundary input.");
|
||||
|
||||
for (i = 0; i < SAMPLE_MAX_EFFECTS; i++)
|
||||
{
|
||||
y = vj_tag_get_effect_any(id, i);
|
||||
@@ -8096,9 +8059,6 @@ void vj_event_print_sample_info(veejay_t *v, int id)
|
||||
sampletitle,id,sample_size()-1,timecode,len, (long)v->settings->current_frame_num,
|
||||
curtime);
|
||||
|
||||
if( sample_get_composite( id ) )
|
||||
veejay_msg(VEEJAY_MSG_INFO, "This sample will be transformed when used as secundary input.");
|
||||
|
||||
if(sample_encoder_active(v->uc->sample_id))
|
||||
{
|
||||
veejay_msg(VEEJAY_MSG_INFO, "REC %09d\t[timecode: %s | %8ld ]",
|
||||
@@ -9085,7 +9045,7 @@ void vj_event_send_shm_info( void *ptr, const char format[], va_list ap)
|
||||
int msg_len = strlen(msg);
|
||||
char *tmp = get_print_buf(1 + msg_len + 3);
|
||||
|
||||
sprintf( tmp, "%03zu%s",msg_len, msg );
|
||||
sprintf( tmp, "%03d%s",msg_len, msg );
|
||||
|
||||
SEND_MSG(v,tmp);
|
||||
free(msg);
|
||||
|
||||
@@ -169,7 +169,6 @@ typedef struct {
|
||||
char *vims_group_name;
|
||||
int zoom;
|
||||
int composite;
|
||||
int composite2;
|
||||
sws_template sws_templ;
|
||||
vj_schedule_t action_scheduler;
|
||||
float output_fps;
|
||||
|
||||
@@ -41,6 +41,8 @@
|
||||
#include <libvje/vje.h>
|
||||
#include <libyuv/yuvconv.h>
|
||||
#include <libavutil/pixfmt.h>
|
||||
#include <libxml/xmlmemory.h>
|
||||
#include <libxml/parser.h>
|
||||
#include <pthread.h>
|
||||
|
||||
|
||||
@@ -644,3 +646,25 @@ int veejay_sprintf( char *s, size_t size, const char *format, ... )
|
||||
}
|
||||
#endif
|
||||
|
||||
void xml2flt( xmlDocPtr doc, xmlNodePtr cur, float *dst , const xmlChar *name) {
|
||||
if(!xmlStrcmp(cur->name, name ) ) {
|
||||
xmlChar *xmlTemp = xmlNodeListGetString(doc, cur->xmlChildrenNode,1);
|
||||
unsigned char *chTemp = UTF8toLAT1(xmlTemp);
|
||||
if (chTemp) {
|
||||
*dst = (float) atof( (char*)chTemp);
|
||||
free(chTemp);
|
||||
}
|
||||
free(xmlTemp);
|
||||
}
|
||||
}
|
||||
void xml2int( xmlDocPtr doc, xmlNodePtr cur, int *dst , const xmlChar *name) {
|
||||
if(!xmlStrcmp(cur->name, name ) ) {
|
||||
xmlChar *xmlTemp = xmlNodeListGetString(doc, cur->xmlChildrenNode,1);
|
||||
unsigned char *chTemp = UTF8toLAT1(xmlTemp);
|
||||
if (chTemp) {
|
||||
*dst = (int) atoi( (char*)chTemp);
|
||||
free(chTemp);
|
||||
}
|
||||
free(xmlTemp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3111,22 +3111,6 @@ static char *vj_perform_osd_status( veejay_t *info )
|
||||
tc.h, tc.m, tc.s, tc.f );
|
||||
|
||||
char *extra = NULL;
|
||||
if( info->composite ) {
|
||||
int status = -1;
|
||||
if( info->uc->playback_mode == VJ_PLAYBACK_MODE_SAMPLE ) {
|
||||
status = sample_get_composite( info->uc->sample_id );
|
||||
} else if (info->uc->playback_mode == VJ_PLAYBACK_MODE_TAG ) {
|
||||
status = vj_tag_get_composite( info->uc->sample_id );
|
||||
}
|
||||
if( status == 0 ) {
|
||||
snprintf(tmp,sizeof(tmp), "Proj");
|
||||
extra = vj_strdup(tmp);
|
||||
}
|
||||
else if(status == 1 ) {
|
||||
snprintf(tmp,sizeof(tmp), "Cam");
|
||||
extra = vj_strdup(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
switch(info->uc->playback_mode) {
|
||||
case VJ_PLAYBACK_MODE_SAMPLE:
|
||||
@@ -3251,27 +3235,7 @@ static void vj_perform_finish_render( veejay_t *info, video_playback_setup *sett
|
||||
|
||||
//@ focus on projection screen
|
||||
if(composite_event( info->composite, pri, info->uc->mouse[0],info->uc->mouse[1],info->uc->mouse[2],
|
||||
vj_perform_get_width(info), vj_perform_get_height(info)) ) {
|
||||
//@ save config to playing sample/stream
|
||||
if( info->uc->playback_mode == VJ_PLAYBACK_MODE_TAG ) {
|
||||
void *cur = vj_tag_get_composite_view(info->uc->sample_id);
|
||||
if(cur == NULL )
|
||||
{
|
||||
cur = composite_clone(info->composite);
|
||||
vj_tag_set_composite_view(info->uc->sample_id, cur );
|
||||
}
|
||||
composite_set_backing(info->composite,cur);
|
||||
vj_tag_reload_config( info->composite,info->uc->sample_id, 1);
|
||||
|
||||
} else if ( info->uc->playback_mode == VJ_PLAYBACK_MODE_SAMPLE) {
|
||||
void *cur = sample_get_composite_view(info->uc->sample_id);
|
||||
if(cur==NULL) {
|
||||
cur = composite_clone(info->composite);
|
||||
sample_set_composite_view(info->uc->sample_id,cur);
|
||||
}
|
||||
composite_set_backing(info->composite,cur);
|
||||
sample_reload_config( info->composite,info->uc->sample_id, 1 );
|
||||
}
|
||||
vj_perform_get_width(info), vj_perform_get_height(info),info->homedir,info->uc->playback_mode,info->uc->sample_id ) ) {
|
||||
#ifdef HAVE_SDL
|
||||
if( info->video_out == 0 ) {
|
||||
//@ release focus
|
||||
|
||||
@@ -45,10 +45,8 @@ typedef struct
|
||||
int initial_active;
|
||||
} viewport_config_t;
|
||||
|
||||
void viewport_save_xml(xmlNodePtr parent,void *vv);
|
||||
void *viewport_load_xml(xmlDocPtr doc, xmlNodePtr cur, void *vv );
|
||||
extern void composite_add_to_config( void *compiz, void *vc, int which_vp );
|
||||
extern void *composite_load_config( void *compiz, void *vc, int *result );
|
||||
|
||||
void *composite_get_config(void *compiz, int which_vp );
|
||||
extern void *composite_load_config( void *compiz, void *vc, void *backing, int *result );
|
||||
extern void *composite_get_config( void *compiz );
|
||||
extern void *composite_clone( void *compiz );
|
||||
#endif
|
||||
@@ -35,13 +35,12 @@
|
||||
#include <libvjmsg/vj-msg.h>
|
||||
#include <libvje/vje.h>
|
||||
#include <veejay/vj-viewport.h>
|
||||
#include <libxml/xmlmemory.h>
|
||||
#include <libxml/parser.h>
|
||||
#include <veejay/vj-viewport-xml.h>
|
||||
#include <libvje/effects/opacity.h>
|
||||
#include <libyuv/yuvconv.h>
|
||||
#include <libavutil/pixfmt.h>
|
||||
#include <libvjmem/vjmem.h>
|
||||
#include <veejay/vj-viewport-cfg.h>
|
||||
#include <veejay/vj-viewport.h>
|
||||
#include <math.h>
|
||||
#include <assert.h>
|
||||
#define X0 0
|
||||
@@ -132,7 +131,6 @@ typedef struct
|
||||
char *help;
|
||||
uint8_t grid_val;
|
||||
int parameters[8];
|
||||
char *homedir;
|
||||
int32_t tx1,tx2,ty1,ty2;
|
||||
int32_t ttx1,ttx2,tty1,tty2;
|
||||
int mode;
|
||||
@@ -184,7 +182,7 @@ static matrix_t *viewport_matrix(void);
|
||||
static void viewport_find_transform( float *coord, matrix_t *M );
|
||||
void viewport_line (uint8_t *plane,int x1, int y1, int x2, int y2, int w, int h, uint8_t col);
|
||||
static void draw_point( uint8_t *plane, int x, int y, int w, int h, int size, int col );
|
||||
static viewport_config_t *viewport_load_settings( const char *dir, int mode );
|
||||
static viewport_config_t *viewport_load_settings( char *dir );
|
||||
static void viewport_prepare_process( viewport_t *v );
|
||||
static void viewport_compute_grid( viewport_t *v );
|
||||
|
||||
@@ -1049,6 +1047,11 @@ void viewport_process_dynamic_map( void *data, uint8_t *in[3], uint8_t *out[3],
|
||||
float ttx,tty;
|
||||
int32_t x,y;
|
||||
int32_t itx,ity;
|
||||
|
||||
outY[ w * h + 1 ] = 0;
|
||||
outU[ w * h + 1 ] = 128;
|
||||
outV[ w * h + 1 ] = 128;
|
||||
|
||||
/*
|
||||
#if defined (HAVE_ASM_MMX) || defined (HAVE_AMS_SSE )
|
||||
|
||||
@@ -1288,8 +1291,6 @@ void viewport_destroy( void *data )
|
||||
if( v->T ) free( v->T );
|
||||
if( v->map ) free( v->map );
|
||||
if( v->help ) free( v->help );
|
||||
if( v->homedir) free(v->homedir);
|
||||
// if( v->buf ) free(v->buf);
|
||||
if( v->ui ) {
|
||||
if( v->ui->scaler )
|
||||
yuv_free_swscaler(v->ui->scaler);
|
||||
@@ -1441,8 +1442,16 @@ void viewport_set_initial_active( void *vv, int status )
|
||||
v->initial_active = status;
|
||||
}
|
||||
|
||||
void *viewport_get_configuration(void *vv )
|
||||
void empireoftheclouds()
|
||||
{
|
||||
}
|
||||
|
||||
void *viewport_get_configuration(void *vv, char *filename )
|
||||
{
|
||||
viewport_config_t *vc = viewport_load_settings( filename );
|
||||
if(vc) {
|
||||
return vc;
|
||||
}
|
||||
|
||||
viewport_t *v = (viewport_t*) vv;
|
||||
viewport_config_t *o = (viewport_config_t*) vj_calloc(sizeof(viewport_config_t)); //FIXME not always freed?
|
||||
@@ -1470,12 +1479,15 @@ void *viewport_get_configuration(void *vv )
|
||||
return o;
|
||||
}
|
||||
|
||||
int viewport_reconfigure_from_config(void *vv, void *vc)
|
||||
int viewport_reconfigure_from_config(void *vv, void *config, char *filename)
|
||||
{
|
||||
viewport_t *v = (viewport_t*) vv;
|
||||
viewport_config_t *c = (viewport_config_t*) vc;
|
||||
viewport_config_t *o = viewport_get_configuration(vv );
|
||||
viewport_config_t *c = (viewport_config_t*) config;
|
||||
viewport_config_t *o = viewport_get_configuration(vv, filename);
|
||||
|
||||
veejay_msg(0,"Configuration saved %dx%d, have %dx%d",
|
||||
c->saved_w, c->saved_h,v->saved_w,v->saved_h );
|
||||
/*
|
||||
if( c->saved_w != v->saved_w || c->saved_h != v->saved_h ) {
|
||||
float sx=1.0f;
|
||||
float sy=1.0f;
|
||||
@@ -1487,8 +1499,10 @@ int viewport_reconfigure_from_config(void *vv, void *vc)
|
||||
o->y0 = c->y0 * sy;
|
||||
o->w0 = c->w0 * sx;
|
||||
o->h0 = c->h0 * sy;
|
||||
}
|
||||
|
||||
veejay_msg(VEEJAY_MSG_WARNING, "Correcting geometry for current setup");
|
||||
}
|
||||
*/
|
||||
|
||||
// Clear map
|
||||
const int len = v->w * v->h;
|
||||
@@ -1538,7 +1552,7 @@ int viewport_reconfigure_from_config(void *vv, void *vc)
|
||||
v->user_ui = 0;
|
||||
viewport_process( v );
|
||||
veejay_msg(VEEJAY_MSG_DEBUG,
|
||||
"Reconfigured calibration for %dx%d to (1)=%fx%f\t(2)=%fx%f\t(3)=%fx%f\t(4)=%fx%f\t%dx%d+%dx%d",
|
||||
"Reconfigured calibration for %dx%d to (1)=%fx%f\t(2)=%fx%f\t(3)=%fx%f\t(4)=%fx%f\t%fx%f+%fx%f",
|
||||
v->w,v->h,v->x1,v->y1,v->x2,v->y2,v->x3,v->y3,v->x4,v->y4,v->x0,v->y0,v->w0,v->h0);
|
||||
|
||||
}
|
||||
@@ -1598,10 +1612,10 @@ void viewport_update_from(void *vv, void *bb)
|
||||
|
||||
}
|
||||
|
||||
void *viewport_init(int x0, int y0, int w0, int h0, int w, int h, int iw, int ih,const char *homedir, int *enable, int *frontback, int mode )
|
||||
void *viewport_init(int x0, int y0, int w0, int h0, int w, int h, int iw, int ih,char *filename, int *enable, int *frontback, int mode )
|
||||
{
|
||||
//@ try to load last saved settings
|
||||
viewport_config_t *vc = viewport_load_settings( homedir,mode );
|
||||
viewport_config_t *vc = viewport_load_settings( filename );
|
||||
if(vc) {
|
||||
float sx = (float) w / (float) vc->saved_w;
|
||||
float sy = (float) h / (float) vc->saved_h;
|
||||
@@ -1632,7 +1646,6 @@ void *viewport_init(int x0, int y0, int w0, int h0, int w, int h, int iw, int ih
|
||||
v->w = w;
|
||||
v->h = h;
|
||||
v->marker_size = 4;
|
||||
v->homedir = strdup(homedir);
|
||||
v->disable = 0;
|
||||
|
||||
int res;
|
||||
@@ -1683,7 +1696,6 @@ void *viewport_init(int x0, int y0, int w0, int h0, int w, int h, int iw, int ih
|
||||
if(! res )
|
||||
{
|
||||
veejay_msg(VEEJAY_MSG_ERROR, "Invalid point locations");
|
||||
free(v->homedir);
|
||||
free(v->ui->buf[0]);
|
||||
free(v->ui);
|
||||
free(v);
|
||||
@@ -1693,12 +1705,20 @@ void *viewport_init(int x0, int y0, int w0, int h0, int w, int h, int iw, int ih
|
||||
|
||||
// Allocate memory for map
|
||||
v->map = (int32_t*) vj_calloc(sizeof(int32_t) * RUP8(v->w * v->h + (v->w*2)) );
|
||||
if(!v->map) {
|
||||
free(v->ui->buf[0]);
|
||||
free(v->ui);
|
||||
free(v);
|
||||
free(vc);
|
||||
veejay_msg(VEEJAY_MSG_ERROR, "Memory allocation error");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const int len = v->w * v->h;
|
||||
const int eln = len + ( v->w * 2 );
|
||||
int k;
|
||||
for( k = len ; k < eln ; k ++ )
|
||||
v->map[k] = len+1;
|
||||
|
||||
veejay_memset( v->map, len+1, eln );
|
||||
|
||||
// calculate initial view
|
||||
viewport_process( v );
|
||||
@@ -1741,7 +1761,6 @@ void *viewport_clone(void *vv, int new_w, int new_h )
|
||||
q->ui->buf[0] = vj_calloc(sizeof(uint8_t) * RUP8(new_w * new_h) );
|
||||
q->ui->scale = 1.0f;
|
||||
q->ui->scaler = viewport_init_swscaler(q->ui,new_w,new_h);
|
||||
q->homedir = strdup(v->homedir);
|
||||
q->disable = 0;
|
||||
|
||||
int res = viewport_configure( q, q->x1, q->y1,
|
||||
@@ -1760,7 +1779,6 @@ void *viewport_clone(void *vv, int new_w, int new_h )
|
||||
if(! res )
|
||||
{
|
||||
veejay_msg(VEEJAY_MSG_ERROR, "Invalid point locations");
|
||||
free(q->homedir);
|
||||
free(q->ui->buf[0]);
|
||||
free(q->ui);
|
||||
free(q);
|
||||
@@ -1768,7 +1786,7 @@ void *viewport_clone(void *vv, int new_w, int new_h )
|
||||
}
|
||||
|
||||
// Allocate memory for map
|
||||
q->map = (int32_t*) vj_calloc(sizeof(int32_t) * RUP8(q->w * q->h + (q->w*2)) );
|
||||
q->map = (int32_t*) vj_malloc(sizeof(int32_t) * RUP8(q->w * q->h + (q->w*2)) );
|
||||
|
||||
const int len = q->w * q->h;
|
||||
const int eln = len + ( q->w * 2 );
|
||||
@@ -1801,23 +1819,26 @@ char *viewport_get_help(void *data)
|
||||
return v->help;
|
||||
}
|
||||
|
||||
static viewport_config_t *viewport_load_settings( const char *dir, int mode )
|
||||
|
||||
|
||||
static viewport_config_t *viewport_load_settings( char *path )
|
||||
{
|
||||
viewport_config_t *vc = vj_calloc(sizeof(viewport_config_t));
|
||||
|
||||
char path[1024];
|
||||
sprintf(path, "%s/viewport.cfg", dir);
|
||||
FILE *fd = fopen( path, "r" );
|
||||
if(!fd)
|
||||
{
|
||||
free(vc);
|
||||
veejay_msg(VEEJAY_MSG_WARNING, "No such file %s", path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fseek(fd,0,SEEK_END );
|
||||
unsigned int len = ftell( fd );
|
||||
|
||||
if( len <= 0 )
|
||||
{
|
||||
veejay_msg(VEEJAY_MSG_WARNING, "File %s is empty",path);
|
||||
free(vc);
|
||||
return NULL;
|
||||
}
|
||||
@@ -1874,11 +1895,9 @@ static viewport_config_t *viewport_load_settings( const char *dir, int mode )
|
||||
return vc;
|
||||
}
|
||||
|
||||
void viewport_save_settings( void *ptr, int frontback )
|
||||
void viewport_save_settings( void *ptr, int frontback, char *path )
|
||||
{
|
||||
viewport_t *v = (viewport_t *) ptr;
|
||||
char path[1024];
|
||||
sprintf(path, "%s/viewport.cfg", v->homedir );
|
||||
|
||||
FILE *fd = fopen( path, "wb" );
|
||||
|
||||
@@ -1915,7 +1934,7 @@ void viewport_save_settings( void *ptr, int frontback )
|
||||
|
||||
fclose( fd );
|
||||
|
||||
veejay_msg(VEEJAY_MSG_DEBUG, "Saved viewport settings to %s", path);
|
||||
veejay_msg(VEEJAY_MSG_INFO, "Saved viewport settings to %s. Press CTRL-p to enable/disable", path);
|
||||
}
|
||||
/*
|
||||
static int viewport_locate_marker( viewport_t *v, uint8_t *img, float fx, float fy , float *dx, float *dy )
|
||||
@@ -2490,7 +2509,7 @@ int viewport_finetune_coord(void *data, int screen_width, int screen_height,int
|
||||
return 1;
|
||||
}
|
||||
|
||||
int viewport_external_mouse( void *data, uint8_t *img[3], int sx, int sy, int button, int frontback, int screen_width, int screen_height )
|
||||
int viewport_external_mouse( void *data, uint8_t *img[3], int sx, int sy, int button, int frontback, int screen_width, int screen_height, char *homedir, int mode, int id )
|
||||
{
|
||||
viewport_t *v = (viewport_t*) data;
|
||||
if( sx == 0 && sy == 0 && button == 0 )
|
||||
@@ -2591,7 +2610,20 @@ int viewport_external_mouse( void *data, uint8_t *img[3], int sx, int sy, int bu
|
||||
|
||||
if( v->user_ui == 0 )
|
||||
{
|
||||
viewport_save_settings(v, frontback);
|
||||
char filename[1024];
|
||||
switch(mode) {
|
||||
case 1:
|
||||
snprintf(filename,sizeof(filename), "%s/viewport-stream-%d.cfg", homedir,id );
|
||||
break;
|
||||
case 0:
|
||||
snprintf(filename,sizeof(filename), "%s/viewport-sample-%d.cfg", homedir,id );
|
||||
break;
|
||||
default:
|
||||
snprintf(filename,sizeof(filename),"%s/viewport.cfg", homedir);
|
||||
break;
|
||||
}
|
||||
|
||||
viewport_save_settings(v, frontback, filename);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3182,21 +3214,21 @@ void viewport_render_dynamic( void *vdata, uint8_t *in[3], uint8_t *out[3],int w
|
||||
}
|
||||
|
||||
void *viewport_fx_init_map( int wid, int hei, int x1, int y1,
|
||||
int x2, int y2, int x3, int y3, int x4, int y4)
|
||||
int x2, int y2, int x3, int y3, int x4, int y4, int reverse)
|
||||
{
|
||||
viewport_t *v = (viewport_t*) vj_calloc(sizeof(viewport_t));
|
||||
|
||||
float fracx = (float) wid / 100.0f;
|
||||
float fracy = (float) hei / 100.0f;
|
||||
|
||||
v->x1 = x1 / fracx;
|
||||
v->y1 = y1 / fracy;
|
||||
v->x2 = x2 / fracx;
|
||||
v->y2 = y2 / fracy;
|
||||
v->x3 = x3 / fracx;
|
||||
v->y3 = y3 / fracy;
|
||||
v->x4 = x4 / fracx;
|
||||
v->y4 = y4 / fracy;
|
||||
v->x1 = x1;
|
||||
v->y1 = y1;
|
||||
v->x2 = x2;
|
||||
v->y2 = y2;
|
||||
v->x3 = x3;
|
||||
v->y3 = y3;
|
||||
v->x4 = x4;
|
||||
v->y4 = y4;
|
||||
|
||||
int res = viewport_configure (v,
|
||||
v->x1, v->y1,
|
||||
@@ -3206,7 +3238,7 @@ void *viewport_fx_init_map( int wid, int hei, int x1, int y1,
|
||||
0,0,
|
||||
wid,hei,
|
||||
wid,hei,
|
||||
0,
|
||||
reverse,
|
||||
0xff,
|
||||
32 );
|
||||
|
||||
@@ -3228,10 +3260,9 @@ int viewport_get_mode( void *vv ) {
|
||||
return v->user_ui;
|
||||
}
|
||||
|
||||
void *viewport_fx_init(int type, int wid, int hei, int x, int y, int zoom, int dir)
|
||||
void *viewport_fx_zoom_init(int type, int wid, int hei, int x, int y, int zoom, int dir)
|
||||
{
|
||||
viewport_t *v = (viewport_t*) vj_calloc(sizeof(viewport_t));
|
||||
|
||||
float fracx = (float) wid;
|
||||
float fracy = (float) hei;
|
||||
|
||||
@@ -3285,141 +3316,4 @@ void *viewport_fx_init(int type, int wid, int hei, int x, int y, int zoom, int d
|
||||
}
|
||||
|
||||
|
||||
static void flxml( xmlDocPtr doc, xmlNodePtr cur, float *dst , const xmlChar *name) {
|
||||
if(!xmlStrcmp(cur->name, name ) ) {
|
||||
xmlChar *xmlTemp = xmlNodeListGetString(doc, cur->xmlChildrenNode,1);
|
||||
unsigned char *chTemp = UTF8toLAT1(xmlTemp);
|
||||
if (chTemp) {
|
||||
*dst = (float) atof( (char*)chTemp);
|
||||
free(chTemp);
|
||||
}
|
||||
free(xmlTemp);
|
||||
}
|
||||
}
|
||||
static void ixml( xmlDocPtr doc, xmlNodePtr cur, int *dst , const xmlChar *name) {
|
||||
if(!xmlStrcmp(cur->name, name ) ) {
|
||||
xmlChar *xmlTemp = xmlNodeListGetString(doc, cur->xmlChildrenNode,1);
|
||||
unsigned char *chTemp = UTF8toLAT1(xmlTemp);
|
||||
if (chTemp) {
|
||||
*dst = (int) atoi( (char*)chTemp);
|
||||
free(chTemp);
|
||||
}
|
||||
free(xmlTemp);
|
||||
}
|
||||
}
|
||||
void *viewport_load_xml(xmlDocPtr doc, xmlNodePtr cur, void *vv )
|
||||
{
|
||||
viewport_t *vc = (viewport_t*) vv;
|
||||
if(!vc || !cur) return NULL;
|
||||
|
||||
viewport_config_t *c = (viewport_config_t*) vj_calloc(sizeof(viewport_config_t));
|
||||
//effectIndex++;
|
||||
while( cur != NULL ) {
|
||||
flxml( doc,cur,&(c->x1),(const xmlChar*) "x1" );
|
||||
flxml( doc,cur,&(c->x2),(const xmlChar*)"x2" );
|
||||
flxml( doc,cur,&(c->y1),(const xmlChar*)"y1" );
|
||||
flxml( doc,cur,&(c->y2),(const xmlChar*)"y2" );
|
||||
flxml( doc,cur,&(c->x3),(const xmlChar*)"x3" );
|
||||
flxml( doc,cur,&(c->x4),(const xmlChar*)"x4" );
|
||||
flxml( doc,cur,&(c->y3),(const xmlChar*)"y3" );
|
||||
flxml( doc,cur,&(c->y4),(const xmlChar*)"y4" );
|
||||
ixml( doc,cur,&(c->x0),(const xmlChar*)"x0" );
|
||||
ixml( doc,cur,&(c->w0),(const xmlChar*)"w0" );
|
||||
ixml( doc,cur,&(c->y0),(const xmlChar*)"y0" );
|
||||
ixml( doc,cur,&(c->h0),(const xmlChar*)"h0" );
|
||||
ixml( doc,cur,&(c->saved_w),(const xmlChar*)"saved_w" );
|
||||
ixml( doc,cur,&(c->saved_h),(const xmlChar*)"saved_h" );
|
||||
ixml( doc,cur,&(c->reverse),(const xmlChar*)"reverse" );
|
||||
ixml( doc,cur,&(c->grid_color),(const xmlChar*)"grid_color" );
|
||||
ixml( doc,cur,&(c->grid_resolution),(const xmlChar*)"grid_resolution" );
|
||||
ixml( doc,cur,&(c->composite_mode),(const xmlChar*) "compositemode");
|
||||
ixml( doc,cur,&(c->colormode),(const xmlChar*) "colormode");
|
||||
ixml( doc,cur,&(c->marker_size),(const xmlChar*) "markersize");
|
||||
ixml( doc,cur,&(c->grid_mode),(const xmlChar*) "gridmode");
|
||||
cur = cur->next;
|
||||
}
|
||||
return (void*) c;
|
||||
}
|
||||
|
||||
void viewport_save_xml(xmlNodePtr parent,void *vv)
|
||||
{
|
||||
viewport_config_t *vc = (viewport_config_t*) vv;
|
||||
if(!vc) return;
|
||||
|
||||
xmlNodePtr node = xmlNewChild(parent, NULL,
|
||||
(const xmlChar*) "calibration",
|
||||
NULL );
|
||||
|
||||
char buffer[100];
|
||||
|
||||
sprintf(buffer, "%f", vc->x1);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "x1",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%f", vc->y1);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "y1",
|
||||
(const xmlChar *) buffer);
|
||||
|
||||
sprintf(buffer, "%f", vc->x2);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "x2",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%f", vc->y2);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "y2",
|
||||
(const xmlChar *) buffer);
|
||||
|
||||
sprintf(buffer, "%f", vc->x3);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "x3",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%f", vc->y3);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "y3",
|
||||
(const xmlChar *) buffer);
|
||||
|
||||
sprintf(buffer, "%f", vc->x4);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "x4",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%f", vc->y4);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "y4",
|
||||
(const xmlChar *) buffer);
|
||||
|
||||
sprintf(buffer, "%d", vc->saved_w);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "saved_w",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->saved_h);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "saved_h",
|
||||
(const xmlChar *) buffer);
|
||||
|
||||
sprintf(buffer, "%d", vc->reverse);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "reverse",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->grid_color);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "grid_color",
|
||||
(const xmlChar *) buffer);
|
||||
|
||||
sprintf(buffer, "%d", vc->grid_resolution);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "grid_resolution",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->x0);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "x0",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->y0);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "y0",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->w0);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "w0",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->h0);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "h0",
|
||||
(const xmlChar *) buffer);
|
||||
|
||||
sprintf(buffer, "%d", vc->colormode);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "colormode",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->composite_mode);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "compositemode",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->marker_size);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "markersize",
|
||||
(const xmlChar *) buffer);
|
||||
sprintf(buffer, "%d", vc->grid_mode);
|
||||
xmlNewChild(node, NULL, (const xmlChar *) "gridmode",
|
||||
(const xmlChar *) buffer);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
#define VP_QUADZOOM 1
|
||||
void viewport_process_dynamic( void *data, uint8_t *in[3], uint8_t *out[3] );
|
||||
void viewport_process_dynamic_map( void *data, uint8_t *in[3], uint8_t *out[3], uint32_t *map, int feather );
|
||||
void *viewport_fx_init( int type, int wid, int hei, int x, int y, int zoom, int dir );
|
||||
void *viewport_fx_init_map( int wid, int hei, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int reverse);
|
||||
void *viewport_fx_zoom_init(int type, int wid, int hei, int x, int y, int zoom, int dir);
|
||||
void viewport_update_from(void *vv, void *bb);
|
||||
void *viewport_clone(void *iv, int new_w, int new_h );
|
||||
void viewport_set_ui(void *vv, int value );
|
||||
@@ -32,11 +33,11 @@ void viewport_set_ui(void *vv, int value );
|
||||
int viewport_active( void *data );
|
||||
int viewport_render_ssm(void *vdata );
|
||||
void viewport_render( void *data, uint8_t *in[3], uint8_t *out[3], int width, int height,int uv_len );
|
||||
int viewport_external_mouse( void *data, uint8_t *in[3],int sx, int sy, int button, int frontback, int w, int h );
|
||||
int viewport_external_mouse( void *data, uint8_t *in[3],int sx, int sy, int button, int frontback, int w, int h, char *homedir, int mode, int id );
|
||||
char *viewport_get_help(void *data);
|
||||
char *viewport_get_my_status(void *v);
|
||||
void viewport_clone_parameters( void *src , void *dst );
|
||||
void *viewport_init(int x0, int y0, int w0, int h0, int w, int h,int iw, int ih, const char *dir, int *enable, int *frontback, int mode);
|
||||
void *viewport_init(int x0, int y0, int w0, int h0, int w, int h,int iw, int ih, char *dir, int *enable, int *frontback, int mode);
|
||||
int viewport_active( void *data );
|
||||
void viewport_destroy( void *data );
|
||||
void vewport_draw_interface_color( void *vdata, uint8_t *img[3] );
|
||||
@@ -52,17 +53,17 @@ int viewport_event_set_projection(void *data, float x, float y, int num, int fb)
|
||||
void viewport_push_frame(void *data, int w, int h, uint8_t *Y, uint8_t *U, uint8_t *V );
|
||||
void viewport_reconfigure(void *vv);
|
||||
int viewport_get_mode(void *vv);
|
||||
int viewport_reconfigure_from_config(void *vv, void *vc);
|
||||
int viewport_reconfigure_from_config(void *vv, void *vc, char *filename);
|
||||
void viewport_set_composite(void *vc, int mode, int colormode);
|
||||
int viewport_get_color_mode_from_config(void *vc);
|
||||
int viewport_get_composite_mode_from_config(void *vc);
|
||||
void *viewport_get_configuration(void *vv );
|
||||
void *viewport_get_configuration(void *vv, char *filename );
|
||||
int viewport_finetune_coord(void *data, int screen_width, int screen_height,int inc_x,int inc_y);
|
||||
void viewport_set_initial_active( void *vv, int status );
|
||||
int viewport_get_initial_active( void *vv );
|
||||
char *viewport_get_my_help(void *vv);
|
||||
int viewport_finetune_coord(void *data, int screen_width, int screen_height,int inc_x, int inc_y);
|
||||
void viewport_save_settings( void *v, int frontback );
|
||||
void viewport_save_settings( void *v, int frontback, char *path );
|
||||
void viewport_produce_full_img( void *vdata, uint8_t *img[3], uint8_t *out_img[3] );
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user