OSDN Git Service

Another minor step on the way back to Solaris compiles - not linking as yet.
[handbrake-jp/handbrake-jp-git.git] / libhb / encxvid.c
index b509baf..843d12a 100644 (file)
@@ -63,7 +63,7 @@ int encxvidInit( hb_work_object_t * w, hb_job_t * job )
         case 0:
             memset( &single, 0, sizeof( single ) );
             single.version   = XVID_VERSION;
-            if( job->vquality < 0.0 || job->vquality > 1.0 )
+            if( job->vquality < 0.0 )
             {
                 /* Rate control */
                 single.bitrate = 1000 * job->vbitrate;
@@ -71,8 +71,16 @@ int encxvidInit( hb_work_object_t * w, hb_job_t * job )
             }
             else
             {
-                /* Constant quantizer */
-                pv->quant = 31 - job->vquality * 30;
+                if( job->vquality > 0 && job->vquality < 1 )
+                {
+                    /* Constant quantizer */
+                    pv->quant = 31 - job->vquality * 30;
+                }
+                else
+                {
+                    pv->quant = job->vquality;
+                }
+                
                 hb_log( "encxvid: encoding at constant quantizer %d",
                         pv->quant );
             }
@@ -128,7 +136,7 @@ void encxvidClose( hb_work_object_t * w )
 
     if( pv->xvid )
     {
-        hb_log( "encxvid: closing libxvidcore" );
+        hb_deep_log( 2, "encxvid: closing libxvidcore" );
         xvid_encore( pv->xvid, XVID_ENC_DESTROY, NULL, NULL);
     }
 
@@ -158,7 +166,7 @@ int encxvidWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
     }
 
     /* Should be way too large */
-    buf = hb_buffer_init( 3 * job->width * job->height / 2 );
+    buf = hb_video_buffer_init( job->width, job->height );
     buf->start = in->start;
     buf->stop  = in->stop;
 
@@ -173,11 +181,11 @@ int encxvidWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
     frame.vol_flags = 0;
     frame.vop_flags = XVID_VOP_HALFPEL | XVID_VOP_INTER4V |
                       XVID_VOP_TRELLISQUANT | XVID_VOP_HQACPRED;
-    if( job->pixel_ratio )
+    if( job->anamorphic.mode )
     {
         frame.par = XVID_PAR_EXT;
-        frame.par_width = job->pixel_aspect_width;
-        frame.par_height = job->pixel_aspect_height;
+        frame.par_width  = job->anamorphic.par_width;
+        frame.par_height = job->anamorphic.par_height;
     }
 
     if( job->grayscale )
@@ -220,7 +228,7 @@ int encxvidWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
             }
         }
 
-        hb_log( "encxvid: VOL size is %d bytes", vop_start - vol_start );
+        hb_deep_log( 2, "encxvid: VOL size is %d bytes", vop_start - vol_start );
         job->config.mpeg4.length = vop_start - vol_start;
         memcpy( job->config.mpeg4.bytes, &buf->data[vol_start],
                 job->config.mpeg4.length );