[x264-devel] commit: Filtering system-related fixes (Steven Walters )

git at videolan.org git at videolan.org
Thu Jul 29 08:17:02 CEST 2010


x264 | branch: master | Steven Walters <kemuri9 at gmail.com> | Sun Jul 25 19:45:27 2010 -0400| [d2cfa9681c293066e96a3f1c5fd83f023839677b] | committer: Jason Garrett-Glaser 

Filtering system-related fixes
Fix configure to check for outdated libavutil in resize filter support.
Do not print an explicit error message in ffms when requesting a frame beyond the number of frames in the source.
Mention in --*help that filtering options can be specified as name=value.
Fix the shadowing warning in the resize filter on posix systems.

> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=d2cfa9681c293066e96a3f1c5fd83f023839677b
---

 configure              |    9 +++++++--
 filters/video/resize.c |    4 ++--
 input/ffms.c           |    7 +++++--
 x264.c                 |    1 +
 4 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/configure b/configure
index aeb215a..565eb98 100755
--- a/configure
+++ b/configure
@@ -549,8 +549,13 @@ if [ "$swscale" = "auto" ] ; then
     error="swscale must be at least version 0.9.0"
     if cc_check "libswscale/swscale.h" "$SWSCALE_CFLAGS $SWSCALE_LIBS" "sws_getContext(0,0,0,0,0,0,0,0,0,0);" ; then
         if cpp_check "libswscale/swscale.h" "$SWSCALE_CFLAGS" "LIBSWSCALE_VERSION_INT >= AV_VERSION_INT(0,9,0)" "$error"; then
-            define HAVE_SWSCALE
-            swscale="yes"
+            # we use colorspaces that were defined in libavutil r19775
+            if cc_check "libavutil/pixfmt.h" "$SWSCALE_CFLAGS" "enum PixelFormat pixfmt = PIX_FMT_YUV422P16LE;" ; then
+                define HAVE_SWSCALE
+                swscale="yes"
+            else
+                echo "Warning: libavutil is too old, update to ffmpeg r19775+"
+            fi
         else
             echo "Warning: ${error}"
         fi
diff --git a/filters/video/resize.c b/filters/video/resize.c
index 3a2faa4..60c6693 100644
--- a/filters/video/resize.c
+++ b/filters/video/resize.c
@@ -178,10 +178,10 @@ static int pick_closest_supported_csp( int csp )
     }
 }
 
-static int round_dbl( double val, int precision, int truncate )
+static int round_dbl( double val, int precision, int b_truncate )
 {
     int ret = (int)(val / precision) * precision;
-    if( !truncate && (val - ret) >= (precision/2) ) // use the remainder if we're not truncating it
+    if( !b_truncate && (val - ret) >= (precision/2) ) // use the remainder if we're not truncating it
         ret += precision;
     return ret;
 }
diff --git a/input/ffms.c b/input/ffms.c
index 84118d5..0472cc6 100644
--- a/input/ffms.c
+++ b/input/ffms.c
@@ -41,6 +41,7 @@ typedef struct
     FFMS_Track *track;
     int reduce_pts;
     int vfr_input;
+    int num_frames;
 } ffms_hnd_t;
 
 static int FFMS_CC update_progress( int64_t current, int64_t total, void *private )
@@ -92,7 +93,7 @@ static int open_file( char *psz_filename, hnd_t *p_handle, video_info_t *info, c
 
     FFMS_DestroyIndex( idx );
     const FFMS_VideoProperties *videop = FFMS_GetVideoProperties( h->video_source );
-    info->num_frames   = videop->NumFrames;
+    info->num_frames   = h->num_frames = videop->NumFrames;
     info->sar_height   = videop->SARDen;
     info->sar_width    = videop->SARNum;
     info->fps_den      = videop->FPSDenominator;
@@ -144,10 +145,12 @@ static int picture_alloc( cli_pic_t *pic, int csp, int width, int height )
 static int read_frame( cli_pic_t *pic, hnd_t handle, int i_frame )
 {
     ffms_hnd_t *h = handle;
+    if( i_frame >= h->num_frames )
+        return -1;
     FFMS_ErrorInfo e;
     e.BufferSize = 0;
     const FFMS_Frame *frame = FFMS_GetFrame( h->video_source, i_frame, &e );
-    FAIL_IF_ERROR( !frame, "could not read frame %d\n", i_frame )
+    FAIL_IF_ERROR( !frame, "could not read frame %d \n", i_frame )
 
     memcpy( pic->img.stride, frame->Linesize, sizeof(pic->img.stride) );
     memcpy( pic->img.plane, frame->Data, sizeof(pic->img.plane) );
diff --git a/x264.c b/x264.c
index 2f4263e..530ad4a 100644
--- a/x264.c
+++ b/x264.c
@@ -697,6 +697,7 @@ static void Help( x264_param_t *defaults, int longhelp )
     H0( "\n" );
     H0( "Filtering:\n" );
     H0( "\n" );
+    H0( "      Filter options may be specified in the name=value format\n" );
     H0( "--vf, --video-filter <filter0>/<filter1>/... Apply video filtering to the input file\n" );
     H0( "      Available filters:\n" );
     x264_register_vid_filters();



More information about the x264-devel mailing list