summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libhb/scan.c4
-rw-r--r--test/test.c13
2 files changed, 13 insertions, 4 deletions
diff --git a/libhb/scan.c b/libhb/scan.c
index b139e5e4c..1fe3353ed 100644
--- a/libhb/scan.c
+++ b/libhb/scan.c
@@ -176,12 +176,12 @@ static void ScanFunc( void * _data )
/* Autocrop by default. Gnark gnark */
memcpy( job->crop, title->crop, 4 * sizeof( int ) );
- if( title->aspect == 16 )
+ if( title->aspect == 16 && !job->pixel_aspect_width && !job->pixel_aspect_height)
{
hb_reduce( &job->pixel_aspect_width, &job->pixel_aspect_height,
16 * title->height, 9 * title->width );
}
- else
+ else if( !job->pixel_aspect_width && !job->pixel_aspect_height )
{
hb_reduce( &job->pixel_aspect_width, &job->pixel_aspect_height,
4 * title->height, 3 * title->width );
diff --git a/test/test.c b/test/test.c
index f2996b449..1731edddf 100644
--- a/test/test.c
+++ b/test/test.c
@@ -68,6 +68,8 @@ static int mux = 0;
static int pixelratio = 0;
static int loosePixelratio = 0;
static int modulus = 0;
+static int par_height = 0;
+static int par_width = 0;
static int chapter_start = 0;
static int chapter_end = 0;
static int chapter_markers = 0;
@@ -792,6 +794,12 @@ static int HandleEvents( hb_handle_t * h )
{
job->modulus = modulus;
}
+ if( par_width && par_height )
+ {
+ job->pixel_ratio = 3;
+ job->pixel_aspect_width = par_width;
+ job->pixel_aspect_height = par_height;
+ }
}
else
{
@@ -1458,8 +1466,9 @@ static void ShowHelp()
" -g, --grayscale Grayscale encoding\n"
" -p, --pixelratio Store pixel aspect ratio in video stream\n"
" -P, --loosePixelratio Store pixel aspect ratio with specified width\n"
- " <modulus> Takes as optional argument what number you want\n"
+ " <MOD:PARX:PARY> Takes as optional arguments what number you want\n"
" the dimensions to divide cleanly by (default 16)\n"
+ " and the pixel ratio to use (default autodetected)\n)"
"\n"
@@ -1864,7 +1873,7 @@ static int ParseOptions( int argc, char ** argv )
loosePixelratio = 1;
if( optarg != NULL )
{
- modulus = atoi( optarg );
+ sscanf( optarg, "%i:%i:%i", &modulus, &par_width, &par_height );
}
break;
case 'e':