All pastes #1038290 Raw Edit

par changes

public diff v1 · immutable
#1038290 ·published 2008-06-04 00:07 UTC
rendered paste body
Index: libhb/hb.c===================================================================--- libhb/hb.c	(revision 1485)+++ libhb/hb.c	(working copy)@@ -657,7 +657,7 @@     int pixel_aspect_width = job->pixel_aspect_width;     int pixel_aspect_height = job->pixel_aspect_height; -    if (cropped_width <= 706)+    if (cropped_width <= 706 && !title->pixel_aspect_width && !title->pixel_aspect_height)     {         /* Handle ITU PARs */         if (title->height == 480)Index: libhb/decavcodec.c===================================================================--- libhb/decavcodec.c	(revision 1485)+++ libhb/decavcodec.c	(working copy)@@ -483,11 +483,15 @@                          (double)context->width /                          (double)context->sample_aspect_ratio.den /                          (double)context->height + 0.05 ) * HB_ASPECT_BASE;+        info->pixel_aspect_width = context->sample_aspect_ratio.num;+        info->pixel_aspect_height = context->sample_aspect_ratio.den; -		if( context->sample_aspect_ratio.num == 0 )-		{-			info->aspect = (double)context->width / (double)context->height * HB_ASPECT_BASE;-		}+        if( context->sample_aspect_ratio.num == 0 )+        {+            info->aspect = (double)context->width / (double)context->height * HB_ASPECT_BASE;+            info->pixel_aspect_width = 1;+            info->pixel_aspect_height = 1;+        }         info->profile = context->profile;         info->level = context->level;         info->name = context->codec->name;Index: libhb/scan.c===================================================================--- libhb/scan.c	(revision 1487)+++ libhb/scan.c	(working copy)@@ -176,6 +176,12 @@         /* Autocrop by default. Gnark gnark */         memcpy( job->crop, title->crop, 4 * sizeof( int ) ); +        if( title->pixel_aspect_width && title->pixel_aspect_height )+        {+            job->pixel_aspect_width  = title->pixel_aspect_width;+            job->pixel_aspect_height = title->pixel_aspect_height;+        }+         if( title->aspect == 16 && !job->pixel_aspect_width && !job->pixel_aspect_height)         {             hb_reduce( &job->pixel_aspect_width, &job->pixel_aspect_height,@@ -345,6 +351,9 @@          title->width = vid_info.width;         title->height = vid_info.height;+        title->pixel_aspect_width = vid_info.pixel_aspect_width;+        title->pixel_aspect_height = vid_info.pixel_aspect_height;+                 title->rate = vid_info.rate;         title->rate_base = vid_info.rate_base;         if ( vid_info.aspect != 0 )@@ -354,21 +363,25 @@                 hb_log( "aspect ratio changed from %g to %g",                         last_ar, vid_info.aspect );             }-            switch ( (int)vid_info.aspect )+            +            if( !title->pixel_aspect_width && !title->pixel_aspect_height )             {-                case HB_ASPECT_BASE * 4 / 3:-                    ++ar4_count;-                    break;-                case HB_ASPECT_BASE * 16 / 9:-                    ++ar16_count;-                    break;-                default:-                    hb_log( "unknown aspect ratio %g", vid_info.aspect );-                    /* if the aspect is closer to 4:3 use that-                     * otherwise use 16:9 */-                    vid_info.aspect < HB_ASPECT_BASE * 14 / 9 ? ++ar4_count :-                                                                ++ar16_count;-                    break;+                switch ( (int)vid_info.aspect )+                {+                    case HB_ASPECT_BASE * 4 / 3:+                        ++ar4_count;+                        break;+                    case HB_ASPECT_BASE * 16 / 9:+                        ++ar16_count;+                        break;+                    default:+                        hb_log( "unknown aspect ratio %g", vid_info.aspect );+                        /* if the aspect is closer to 4:3 use that+                         * otherwise use 16:9 */+                        vid_info.aspect < HB_ASPECT_BASE * 14 / 9 ? ++ar4_count :+                                                                    ++ar16_count;+                        break;+                }             }             last_ar = vid_info.aspect;         }@@ -489,23 +502,31 @@         if ( vid_buf )             hb_buffer_close( &vid_buf );     }+    +    if( title->pixel_aspect_width && title->pixel_aspect_width )+    {+        title->aspect = ( (double)title->pixel_aspect_width * +                         (double)title->width /+                         (double)title->pixel_aspect_height /+                         (double)title->height + 0.05 ) * HB_ASPECT_BASE;+    }+    else+    {+        /* if we found mostly 4:3 previews use that as the aspect ratio otherwise+           use 16:9 */+        title->aspect = ar4_count > ar16_count ?+                            HB_ASPECT_BASE * 4 / 3 : HB_ASPECT_BASE * 16 / 9;+    } -    /* if we found mostly 4:3 previews use that as the aspect ratio otherwise-       use 16:9 */-    title->aspect = ar4_count > ar16_count ?-                        HB_ASPECT_BASE * 4 / 3 : HB_ASPECT_BASE * 16 / 9;-     title->crop[0] = EVEN( title->crop[0] );     title->crop[1] = EVEN( title->crop[1] );     title->crop[2] = EVEN( title->crop[2] );     title->crop[3] = EVEN( title->crop[3] ); -    hb_log( "scan: %d previews, %dx%d, %.3f fps, autocrop = %d/%d/%d/%d, aspect %s",+    hb_log( "scan: %d previews, %dx%d, %.3f fps, autocrop = %d/%d/%d/%d, aspect %.2f",             npreviews, title->width, title->height, (float) title->rate /             (float) title->rate_base, title->crop[0], title->crop[1],-            title->crop[2], title->crop[3],-            title->aspect == HB_ASPECT_BASE * 16 / 9 ? "16:9" :-                title->aspect == HB_ASPECT_BASE * 4 / 3 ? "4:3" : "none" );+            title->crop[2], title->crop[3], (float)title->aspect/(float)HB_ASPECT_BASE);      if( interlaced_preview_count >= ( npreviews / 2 ) )     {Index: libhb/common.h===================================================================--- libhb/common.h	(revision 1485)+++ libhb/common.h	(working copy)@@ -437,6 +437,8 @@     int         width;     int         height;     int         aspect;+    int         pixel_aspect_width;+    int         pixel_aspect_height;     int         rate;     int         rate_base;     int         crop[4];@@ -521,6 +523,8 @@         struct {    // info only valid for video decoders             int     width;             int     height;+            int     pixel_aspect_width;+            int     pixel_aspect_height;             double  aspect;         };         struct {    // info only valid for audio decoders