fix setting norm to NTSC, fix NTSC in dummy mode, display norm when opening v4l devices, added environment var 'VEEJAY_RUN_MODE' to run old dummy mode, new mode runs in PAL or NTSC highest resolution by default.

git-svn-id: svn://code.dyne.org/veejay/trunk@1367 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
Niels Elburg
2010-02-02 19:19:01 +00:00
parent 8c5ada8f2b
commit 7f5419db4f
6 changed files with 56 additions and 23 deletions

View File

@@ -563,7 +563,7 @@ void v4lprint(v4ldevice *vd)
veejay_msg(VEEJAY_MSG_DEBUG,"\tPalette:%x",vd->picture.palette);
veejay_msg(VEEJAY_MSG_DEBUG,"\tWidth:%d",vd->mmap.width);
veejay_msg(VEEJAY_MSG_DEBUG,"\tHeight:%d",vd->mmap.height);
veejay_msg(VEEJAY_MSG_DEBUG,"\tNorm: %s", v4lvideo_templ_get_norm_str( vd->channel[0].norm ));
veejay_msg(VEEJAY_MSG_DEBUG,"\tBuffer size: %08x",vd->mbuf.size);
veejay_msg(VEEJAY_MSG_DEBUG,"\tNum buffers: %d",vd->mbuf.frames);
veejay_msg(VEEJAY_MSG_DEBUG,"\t offsets[0]: %08x",vd->mbuf.offsets[0]);

View File

@@ -209,6 +209,15 @@ int v4lvideo_templ_get_palette( int p )
return -1;
}
char *v4lvideo_templ_get_norm_str( int id ) {
int i;
for( i = 0; normlists[i].type != -1; i ++ ) {
if( normlists[i].type == id )
return normlists[i].name;
}
return "?";
}
int v4lvideo_templ_get_norm( const char *name )
{
int i;

View File

@@ -29,6 +29,7 @@ int v4lvideo_templ_get_norm( const char *name );
int v4lvideo_templ_getfreq( const char *name );
int v4lvideo_templ_num_devices();
int v4lvideo_templ_get_palette( int p );
char *v4lvideo_templ_get_norm_str(int id );
char **v4lvideo_templ_get_devices(int *num);

View File

@@ -225,6 +225,8 @@ Specify the default video4linux channel id
.B VEEJAY_SWAP_RGB
Capture in RGB or BGR (Video4Linux)
.TP
.B VEEJAY_RUN_MODE
Set this to "CLASSIC" if you want to startup in low resolution
.B Examples
.TP
.B VEEJAY_SCREEN_GEOMETRY=2624x1024+1600x0

View File

@@ -2918,11 +2918,7 @@ veejay_t *veejay_malloc()
info->uc->sample_end = 0;
info->net = 1;
info->dummy->width = 352;
info->dummy->height = 288;
info->dummy->fps = 25.0;
for( i =0; i < 8 ; i ++ )
for( i =0; i < 8 ; i ++ )
info->rlinks[i] = -1;
veejay_memset(info->action_file[0],0,256);
@@ -3627,21 +3623,45 @@ static int veejay_open_video_files(veejay_t *info, char **files, int num_files,
//TODO: pass yuv sampling to dummy
if( info->dummy->active )
{
if( !info->dummy->norm )
info->dummy->norm = 'p';
if( !info->dummy->fps )
info->dummy->norm = override_norm;
if( override_norm == 'n' ) {
if(!info->dummy->fps) //@ if not set
info->dummy->fps = 30000.0/1001;
}
if(!info->dummy->fps)
info->dummy->fps = 25.0;
if( !info->dummy->width )
info->dummy->width = 352;
if( !info->dummy->height)
info->dummy->height = 288;
info->dummy->chroma = CHROMA422;
if( !info->dummy->arate)
info->dummy->arate = 48000;
info->edit_list = vj_el_dummy( 0, info->auto_deinterlace, info->dummy->chroma,
info->dummy->norm, info->dummy->width, info->dummy->height, info->dummy->fps,
info->pixel_format );
int dw = 720;
int dh = (override_norm == 'p' ? 576 : 480);
char *runClassic = getenv( "VEEJAY_RUN_MODE" );
if( runClassic ) {
if( strncasecmp("CLASSIC",runClassic,7 ) == 0 ) {
dw = (override_norm == 'p' ? 352 : 360 );
dh = dh / 2;
}
}
if( !info->dummy->width )
info->dummy->width = dw;
if( !info->dummy->height)
info->dummy->height = dh;
info->dummy->chroma = CHROMA422;
if( info->audio ) {
if( !info->dummy->arate)
info->dummy->arate = 48000;
}
info->edit_list = vj_el_dummy( 0,
info->auto_deinterlace,
info->dummy->chroma,
info->dummy->norm,
info->dummy->width,
info->dummy->height,
info->dummy->fps,
info->pixel_format
);
if( info->dummy->arate )
{
@@ -3654,8 +3674,9 @@ static int veejay_open_video_files(veejay_t *info, char **files, int num_files,
veejay_msg(VEEJAY_MSG_DEBUG, "Dummy Audio: %f KHz, %d channels, %d bps, %d bit audio",
(float)el->audio_rate/1000.0,el->audio_chans,el->audio_bps,el->audio_bits);
}
veejay_msg(VEEJAY_MSG_DEBUG,"Dummy Video: %dx%d, chroma %x, fps %2.2f",
info->dummy->width,info->dummy->height, info->dummy->chroma,info->dummy->fps);
veejay_msg(VEEJAY_MSG_DEBUG,"Dummy Video: %dx%d, chroma %x, framerate %2.2f, norm %s",
info->dummy->width,info->dummy->height, info->dummy->chroma,info->dummy->fps,
(info->dummy->norm == 'n' ? "NTSC" :"PAL"));
}
else

View File

@@ -402,8 +402,8 @@ static int set_option(const char *name, char *value)
info->dummy->height = atoi(optarg);
}
else if(strcmp(name, "norm") == 0 || strcmp(name, "N") == 0 ) {
info->dummy->norm = optarg[0];
if(info->dummy->norm == 1 )
int val = atoi(optarg);
if(val == 1 )
override_norm = 'n';
}
else if(strcmp(name, "D") == 0 || strcmp(name, "composite") == 0)