OSDN Git Service

Allow the user to directly set a pixel aspect height and width, instead of using...
authorjbrjake <jbrjake@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 13 May 2008 14:55:56 +0000 (14:55 +0000)
committerjbrjake <jbrjake@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 13 May 2008 14:55:56 +0000 (14:55 +0000)
To use in an interface, simply set job->pixel_ratio to 3, job->height and job->width to the desired output size, and job->pixel_aspect_height and job->pixel_aspect_width to the desired PAR. For now this is only for really advanced users who know what numbers they want for those values.

Controlled through the CLI as optional arguments to -P.

git-svn-id: svn://localhost/HandBrake/trunk@1459 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/scan.c
test/test.c

index b139e5e..1fe3353 100644 (file)
@@ -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 );
index f2996b4..1731edd 100644 (file)
@@ -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':