Ok, it was so easy I did it myself. Here are patches for the CVS yuvmedianfilter.c and yuvmedianfilter.1 to mention the -I interlace flag and to handle -t 0 and/or -T 0 with -I.
Dan --- yuvmedianfilter.c.orig 2003-02-24 23:09:49.000000000 -0500 +++ yuvmedianfilter.c 2003-03-04 00:10:14.000000000 -0500 @@ -48,12 +48,13 @@ static void Usage(char *name ) { fprintf(stderr, - "Usage: %s: [-h] [-r num] [-R num] [-t num] [-T num] [-v num]\n" + "Usage: %s: [-h] [-r num] [-R num] [-t num] [-T num] [-I] [-v num]\n" "-h - Print out this help\n" "-r - Radius for luma median (default: 2 pixels)\n" "-R - Radius for chroma median (default: 2 pixels)\n" "-t - Trigger luma threshold (default: 2 [0=disable])\n" "-T - Trigger chroma threshold (default: 2 [0=disable])\n" + "-I - Interlaced input (default: non-interlaced)\n" "-v - Verbosity [0..2]\n", name); } @@ -168,13 +169,27 @@ filter(int width, int height, uint8_t *input[], uint8_t * const output[]) { if( interlace ) - { + { + if(threshold_luma == 0) + { + memcpy(output[0], input[0], width * height); + } + else + { filter_buffer(width, height/2, width*2, radius_luma, threshold_luma, input[0], output[0]); filter_buffer(width, height/2, width*2, radius_luma, threshold_luma, input[0]+width, output[0]+width); + } + if(threshold_chroma == 0) + { + memcpy(output[1], input[1], width/2 * height/2); + memcpy(output[2], input[2], width/2 * height/2); + } + else + { filter_buffer(width/2, height/4, width, radius_chroma, threshold_chroma, input[1], output[1]); @@ -187,18 +202,34 @@ filter_buffer(width/2, height/4, width, radius_chroma, threshold_chroma, input[2]+width/2, output[2]+width/2); + } } else { + if(threshold_luma == 0) + { + memcpy(output[0], input[0], width * height); + } + else + { filter_buffer(width, height, width, radius_luma, threshold_luma, input[0], output[0]); + } + if(threshold_chroma == 0) + { + memcpy(output[1], input[1], width/2 * height/2); + memcpy(output[2], input[2], width/2 * height/2); + } + else + { filter_buffer(width/2, height/2, width/2, radius_chroma, threshold_chroma, input[1], output[1]); filter_buffer(width/2, height/2, width/2, radius_chroma, threshold_chroma, input[2], output[2]); + } } } @@ -224,12 +255,6 @@ min_count = (radius_count * radius_count + 2)/3; - if (threshold == 0) - { - memcpy(output, input, width * height); - return; - } - for(y=0; y < radius; y++) memcpy(&output[y * row_stride], &input[y * row_stride], width); --- yuvmedianfilter.1.orig 2003-02-24 23:09:44.000000000 -0500 +++ yuvmedianfilter.1 2003-03-04 00:17:48.000000000 -0500 @@ -13,6 +13,7 @@ .IR num ] .RB [ \-T .IR num ] +.RB [ \-I ] .RB [ \-v .IR num ] .RB [ \-h ] @@ -44,6 +45,9 @@ .BI \-T " num" Trigger threshold for chroma (default: 2 [0=disable]) .TP 5 +.BI \-I " num" +Interlaced input (default: non-interlaced) +.TP 5 .BI \-v " num" Verbosity level (0, 1 or 2) .TP 5 ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger for complex code. Debugging C/C++ programs can leave you feeling lost and disoriented. TotalView can help you find your way. Available on major UNIX and Linux platforms. Try it free. www.etnus.com _______________________________________________ Mjpeg-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/mjpeg-users