Commit 7f1d3962 authored by Antoine Cellerier's avatar Antoine Cellerier

add --screen-aspect-ratio option (user support at its best ...)

parent 854dec19
...@@ -275,6 +275,12 @@ static char *ppsz_align_descriptions[] = ...@@ -275,6 +275,12 @@ static char *ppsz_align_descriptions[] =
"aspect, or a float value (1.25, 1.3333, etc.) expressing pixel " \ "aspect, or a float value (1.25, 1.3333, etc.) expressing pixel " \
"squareness.") "squareness.")
#define SASPECT_RATIO_TEXT N_("Screen aspect ratio")
#define SASPECT_RATIO_LONGTEXT N_( \
"This will force the scree aspect ratio. Default screen aspect ratio" \
"is 4:3. Setting the screen aspect ratio to 4:3 will have no effect," \
"other settings (like 16:9) will change the image.")
#define SKIP_FRAMES_TEXT N_("Skip frames") #define SKIP_FRAMES_TEXT N_("Skip frames")
#define SKIP_FRAMES_LONGTEXT N_( \ #define SKIP_FRAMES_LONGTEXT N_( \
"Disable this option to disable frame drops on MPEG-2 streams.") "Disable this option to disable frame drops on MPEG-2 streams.")
...@@ -991,6 +997,8 @@ vlc_module_begin(); ...@@ -991,6 +997,8 @@ vlc_module_begin();
add_integer( "video-y", -1, NULL, VIDEOY_TEXT, VIDEOY_LONGTEXT, VLC_TRUE ); add_integer( "video-y", -1, NULL, VIDEOY_TEXT, VIDEOY_LONGTEXT, VLC_TRUE );
add_string( "aspect-ratio", "", NULL, add_string( "aspect-ratio", "", NULL,
ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT, VLC_FALSE ); ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT, VLC_FALSE );
add_string( "screen-aspect-ratio", "", NULL,
SASPECT_RATIO_TEXT, SASPECT_RATIO_LONGTEXT, VLC_FALSE );
add_bool( "video-deco", 1, NULL, VIDEO_DECO_TEXT, add_bool( "video-deco", 1, NULL, VIDEO_DECO_TEXT,
VIDEO_DECO_LONGTEXT, VLC_TRUE ); VIDEO_DECO_LONGTEXT, VLC_TRUE );
add_string( "video-title", NULL, NULL, VIDEO_TITLE_TEXT, add_string( "video-title", NULL, NULL, VIDEO_TITLE_TEXT,
......
...@@ -216,7 +216,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) ...@@ -216,7 +216,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
input_thread_t * p_input_thread; input_thread_t * p_input_thread;
int i_index; /* loop variable */ int i_index; /* loop variable */
char * psz_plugin; char * psz_plugin;
vlc_value_t val, text; vlc_value_t val, val2, text;
unsigned int i_width = p_fmt->i_width; unsigned int i_width = p_fmt->i_width;
unsigned int i_height = p_fmt->i_height; unsigned int i_height = p_fmt->i_height;
...@@ -316,25 +316,49 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) ...@@ -316,25 +316,49 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
* the video output pipe */ * the video output pipe */
if( p_parent->i_object_type != VLC_OBJECT_VOUT ) if( p_parent->i_object_type != VLC_OBJECT_VOUT )
{ {
int i_screen_aspect_x = 4 , i_screen_aspect_y = 3;
var_Get( p_vout, "aspect-ratio", &val ); var_Get( p_vout, "aspect-ratio", &val );
var_Get( p_vout, "screen-aspect-ratio", &val2 );
if( val2.psz_string )
{
char *psz_parser = strchr( val2.psz_string, ':' );
if( psz_parser )
{
*psz_parser++ = '\0';
i_screen_aspect_x = atoi( val2.psz_string );
i_screen_aspect_y = atoi( psz_parser );
} else {
AspectRatio( VOUT_ASPECT_FACTOR * atof( val2.psz_string ),
&i_screen_aspect_x, &i_screen_aspect_y );
}
free( val2.psz_string );
}
/* Check whether the user tried to override aspect ratio */ /* Check whether the user tried to override aspect ratio */
if( val.psz_string ) if( val.psz_string )
{ {
unsigned int i_new_aspect = i_aspect; unsigned int i_new_aspect = i_aspect;
char *psz_parser = strchr( val.psz_string, ':' ); char *psz_parser = strchr( val.psz_string, ':' );
int i_aspect_x, i_aspect_y;
AspectRatio( i_aspect, &i_aspect_x, &i_aspect_y );
if( psz_parser ) if( psz_parser )
{ {
*psz_parser++ = '\0'; *psz_parser++ = '\0';
i_new_aspect = atoi( val.psz_string ) * VOUT_ASPECT_FACTOR i_new_aspect = atoi( val.psz_string )
/ atoi( psz_parser ); * VOUT_ASPECT_FACTOR / atoi( psz_parser );
} }
else else
{ {
i_new_aspect = VOUT_ASPECT_FACTOR if( atof( val.psz_string ) != 0 )
* atof( val.psz_string ); {
i_new_aspect = VOUT_ASPECT_FACTOR * atof( val.psz_string );
}
} }
i_new_aspect = (int)((float)i_new_aspect
* (float)i_screen_aspect_y*4.0/((float)i_screen_aspect_x*3.0));
free( val.psz_string ); free( val.psz_string );
......
...@@ -177,6 +177,8 @@ void vout_IntfInit( vout_thread_t *p_vout ) ...@@ -177,6 +177,8 @@ void vout_IntfInit( vout_thread_t *p_vout )
var_Create( p_vout, "snapshot-path", VLC_VAR_STRING | VLC_VAR_DOINHERIT ); var_Create( p_vout, "snapshot-path", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
var_Create( p_vout, "snapshot-format", VLC_VAR_STRING | VLC_VAR_DOINHERIT ); var_Create( p_vout, "snapshot-format", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
var_Create( p_vout, "aspect-ratio", VLC_VAR_STRING | VLC_VAR_DOINHERIT ); var_Create( p_vout, "aspect-ratio", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
var_Create( p_vout, "screen-aspect-ratio",
VLC_VAR_STRING | VLC_VAR_DOINHERIT );
var_Create( p_vout, "width", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT ); var_Create( p_vout, "width", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Create( p_vout, "height", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT ); var_Create( p_vout, "height", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Create( p_vout, "align", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT ); var_Create( p_vout, "align", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment