OSDN Git Service

Adds a job->cfr boolean to indicate "encode this with a constant frame rate" instead...
authorjbrjake <jbrjake@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 5 Jun 2008 15:59:24 +0000 (15:59 +0000)
committerjbrjake <jbrjake@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 5 Jun 2008 15:59:24 +0000 (15:59 +0000)
git-svn-id: svn://localhost/HandBrake/trunk@1496 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/common.h
libhb/sync.c
test/test.c

index 0e531d9..c12348b 100644 (file)
@@ -133,12 +133,13 @@ struct hb_job_s
          width:               must be a multiple of 16
          height:              must be a multiple of 16
          keep_ratio:          used by UIs
+         grayscale:           black and white encoding
          pixel_ratio:         store pixel aspect ratio in the video
          pixel_aspect_width:  numerator for pixel aspect ratio
          pixel_aspect_height: denominator for pixel aspect ratio
-                maxWidth:                        keep width below this
-                maxHeight:                       keep height below this */
-
+         modulus:             set a number besides 16 for dimensions to be multiples of
+         maxWidth:            keep width below this
+         maxHeight:           keep height below this */
     int             crop[4];
     int             deinterlace;
     hb_list_t     * filters;
@@ -150,18 +151,21 @@ struct hb_job_s
     int             pixel_aspect_width;
     int             pixel_aspect_height;
     int             modulus;
-       int                             maxWidth;
-       int                             maxHeight;
-
+    int             maxWidth;
+    int             maxHeight;
 
     /* Video settings:
          vcodec:            output codec
          vquality:          output quality (0.0..1.0)
-                            if < 0.0 or > 1.0, bitrate is used instead
+                            if < 0.0 or > 1.0, bitrate is used instead,
+                            except with x264, to use its real QP/RF scale
          vbitrate:          output bitrate (kbps)
-         pass:              0, 1 or 2 (or -1 for scan)
          vrate, vrate_base: output framerate is vrate / vrate_base
-         h264_level:        boolean for whether or not we're encoding for iPod
+         vfr:               boolean for variable frame rate detelecine
+         cfr:               boolean to use constant frame rates instead of
+                            passing through the source's frame durations.
+         pass:              0, 1 or 2 (or -1 for scan)
+         h264_level:        vestigial boolean to decide if we're encoding for iPod
          crf:               boolean for whether to use constant rate factor with x264
          x264opts:          string of extra x264 options
          areBframes:        boolean to note if b-frames are included in x264opts */
@@ -176,13 +180,14 @@ struct hb_job_s
     int             vbitrate;
     int             vrate;
     int             vrate_base;
+    int             vfr;
+    int             cfr;
     int             pass;
     int             h264_13;
     int             h264_level;
     int             crf;
     char            *x264opts;
     int             areBframes;
-    int             vfr;
 
     /* List of audio settings. */
     hb_list_t     * list_audio;
@@ -191,7 +196,7 @@ struct hb_job_s
          subtitle: index in hb_title_t's subtitles list, starting
          from 0. -1 means no subtitle */
     int             subtitle;
-    int                        subtitleSmartAdjust;
+    int             subtitleSmartAdjust;
 
     /* Muxer settings
          mux:  output file format
index f9c738b..0b0852b 100644 (file)
@@ -512,7 +512,7 @@ static int SyncVideo( hb_work_object_t * w )
         }
 
         int64_t duration;
-        if ( job->mux & HB_MUX_AVI || job->title->rate_base != job->vrate_base )
+        if ( job->mux & HB_MUX_AVI || job->cfr )
         {
             /*
              * The concept of variable frame rate video was a bit too advanced
index b30af9a..2c91287 100644 (file)
@@ -87,6 +87,7 @@ static int    largeFileSize = 0;
 static int    preset        = 0;
 static char * preset_name   = 0;
 static int    vfr           = 0;
+static int    cfr           = 0;
 static int    mp4_optimize  = 0;
 static int    ipod_atom     = 0;
 
@@ -884,6 +885,7 @@ static int HandleEvents( hb_handle_t * h )
             }
             if( vrate )
             {
+                job->cfr = 1;
                 job->vrate = 27000000;
                 job->vrate_base = vrate;
             }