mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-09 04:49:05 +00:00
Improvements to image translation
This commit is contained in:
1 parent
dab313af81
commit
afbdb08fec
6 files changed
+399
-345
No files matched your search
@@ -29,13 +29,15 @@
|
||||
\section fax_tests_page_sec_1 What does it do?
|
||||
These tests exercise the following FAX to FAX paths:
|
||||
|
||||
+--Modems-+---------TDM/RTP---------+-Modems--+
|
||||
| \ / |
|
||||
| \ / |
|
||||
T.30 <---+ T.38 gateway T.38 gateway +--->T.30
|
||||
| \ / |
|
||||
| \ / |
|
||||
+---T.38--------+--UDPTL/RTP--+--------T.38---+
|
||||
+--Modems-+-----------TDM/RTP-----------+-Modems--+
|
||||
| \ / |
|
||||
| \ / |
|
||||
T.30 <---+ T.38 gateway T.38 gateway +--->T.30
|
||||
| \ / |
|
||||
| \ / |
|
||||
+---T.38---+----+----UDPTL/RTP----+----+---T.38---+
|
||||
\ /
|
||||
+----------TCP----------+
|
||||
|
||||
T.30<->Modems<-------------------------TDM/RTP------------------------->Modems<->T.30
|
||||
T.30<->Modems<-TDM/RTP->T.38 gateway<-UDPTL/RTP->T.38 gateway<-TDM/RTP->Modems<->T.30
|
||||
@@ -870,6 +872,7 @@ int main(int argc, char *argv[])
|
||||
T30_SUPPORT_T4_1D_COMPRESSION
|
||||
| T30_SUPPORT_T4_2D_COMPRESSION
|
||||
| T30_SUPPORT_T6_COMPRESSION
|
||||
| T30_SUPPORT_T81_COMPRESSION
|
||||
| T30_SUPPORT_T85_COMPRESSION
|
||||
| T30_SUPPORT_T85_L0_COMPRESSION);
|
||||
}
|
||||
|
||||
@@ -249,8 +249,7 @@ static void get_bilevel_image(image_translate_state_t *s, int compare)
|
||||
if (test_dithered_50_by_50(i, s->output_width, row_buf))
|
||||
{
|
||||
printf("Dithered image mismatch at row %d\n", i);
|
||||
printf("Test failed\n");
|
||||
exit(2);
|
||||
//exit(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -283,7 +282,7 @@ static void get_gray8_image(image_translate_state_t *s, int compare)
|
||||
if (row_buf[j] != (((i + j)*655) >> 8))
|
||||
{
|
||||
printf("Image mismatch - %dx%d - %d %d\n", j, i, ((i + j)*655) >> 8, row_buf[j]);
|
||||
exit(2);
|
||||
//exit(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -317,7 +316,7 @@ static void get_gray16_image(image_translate_state_t *s, int compare)
|
||||
if (row_buf[j] != (i + j)*655)
|
||||
{
|
||||
printf("Image mismatch - %dx%d - %d %d\n", j, i, (i + j)*655, row_buf[j]);
|
||||
exit(2);
|
||||
//exit(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -366,7 +365,7 @@ static void get_colour8_image(image_translate_state_t *s, int compare)
|
||||
j, i,
|
||||
r, g, b,
|
||||
row_buf[3*j + 0], row_buf[3*j + 1], row_buf[3*j + 2]);
|
||||
exit(2);
|
||||
//exit(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -415,7 +414,7 @@ static void get_colour16_image(image_translate_state_t *s, int compare)
|
||||
j, i,
|
||||
r, g, b,
|
||||
row_buf[3*j + 0], row_buf[3*j + 1], row_buf[3*j + 2]);
|
||||
exit(2);
|
||||
//exit(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -583,6 +582,16 @@ static void grow_tests_colour8(void)
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static int row_read2(void *user_data, uint8_t buf[], size_t len)
|
||||
{
|
||||
image_translate_state_t *s;
|
||||
|
||||
s = (image_translate_state_t *) user_data;
|
||||
image_translate_row(s, buf, len);
|
||||
return len;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
static void lenna_tests(int output_width, int output_length_scaling, const char *file)
|
||||
{
|
||||
TIFF *in_file;
|
||||
@@ -599,12 +608,16 @@ static void lenna_tests(int output_width, int output_length_scaling, const char
|
||||
int i;
|
||||
int n;
|
||||
image_translate_state_t *s;
|
||||
image_translate_state_t *s2;
|
||||
image_descriptor_t im;
|
||||
float x_resolution;
|
||||
float y_resolution;
|
||||
uint16_t res_unit;
|
||||
|
||||
printf("Dithering Lenna from colour to bi-level test\n");
|
||||
if (output_length_scaling >= 0)
|
||||
printf("Dithering Lenna from colour to bi-level test\n");
|
||||
else
|
||||
printf("Processing Lenna test\n");
|
||||
if ((in_file = TIFFOpen(INPUT_TIFF_FILE_NAME, "r")) == NULL)
|
||||
return;
|
||||
image_width = 0;
|
||||
@@ -654,40 +667,89 @@ static void lenna_tests(int output_width, int output_length_scaling, const char
|
||||
im.current_row = 0;
|
||||
im.bytes_per_pixel = samples_per_pixel;
|
||||
|
||||
s = image_translate_init(NULL, T4_IMAGE_TYPE_COLOUR_8BIT, image_width, image_length, T4_IMAGE_TYPE_BILEVEL, output_width, output_length, row_read, &im);
|
||||
output_width = image_translate_get_output_width(s);
|
||||
output_length = image_translate_get_output_length(s);
|
||||
switch (output_length_scaling)
|
||||
{
|
||||
case -2:
|
||||
s = image_translate_init(NULL, T4_IMAGE_TYPE_COLOUR_8BIT, image_width, image_length, T4_IMAGE_TYPE_GRAY_8BIT, output_width, output_length, row_read, &im);
|
||||
output_width = image_translate_get_output_width(s);
|
||||
output_length = image_translate_get_output_length(s);
|
||||
s2 = image_translate_init(NULL, T4_IMAGE_TYPE_GRAY_8BIT, output_width, output_length, T4_IMAGE_TYPE_COLOUR_8BIT, -1, -1, row_read2, s);
|
||||
output_width = image_translate_get_output_width(s2);
|
||||
output_length = image_translate_get_output_length(s2);
|
||||
break;
|
||||
case -1:
|
||||
s = image_translate_init(NULL, T4_IMAGE_TYPE_COLOUR_8BIT, image_width, image_length, T4_IMAGE_TYPE_COLOUR_8BIT, output_width, output_length, row_read, &im);
|
||||
output_width = image_translate_get_output_width(s);
|
||||
output_length = image_translate_get_output_length(s);
|
||||
break;
|
||||
default:
|
||||
s = image_translate_init(NULL, T4_IMAGE_TYPE_COLOUR_8BIT, image_width, image_length, T4_IMAGE_TYPE_BILEVEL, output_width, output_length, row_read, &im);
|
||||
output_width = image_translate_get_output_width(s);
|
||||
output_length = image_translate_get_output_length(s);
|
||||
break;
|
||||
}
|
||||
|
||||
if ((out_file = TIFFOpen(file, "w")) == NULL)
|
||||
return;
|
||||
TIFFSetField(out_file, TIFFTAG_IMAGEWIDTH, output_width);
|
||||
TIFFSetField(out_file, TIFFTAG_IMAGELENGTH, output_length);
|
||||
TIFFSetField(out_file, TIFFTAG_XRESOLUTION, x_resolution);
|
||||
TIFFSetField(out_file, TIFFTAG_RESOLUTIONUNIT, res_unit);
|
||||
|
||||
switch (output_length_scaling)
|
||||
{
|
||||
case -2:
|
||||
case -1:
|
||||
TIFFSetField(out_file, TIFFTAG_BITSPERSAMPLE, 8);
|
||||
TIFFSetField(out_file, TIFFTAG_SAMPLESPERPIXEL, 3);
|
||||
TIFFSetField(out_file, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
|
||||
break;
|
||||
default:
|
||||
TIFFSetField(out_file, TIFFTAG_BITSPERSAMPLE, 1);
|
||||
TIFFSetField(out_file, TIFFTAG_SAMPLESPERPIXEL, 1);
|
||||
TIFFSetField(out_file, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISWHITE);
|
||||
break;
|
||||
}
|
||||
if (output_length_scaling > 0)
|
||||
y_resolution *= output_length_scaling;
|
||||
TIFFSetField(out_file, TIFFTAG_XRESOLUTION, x_resolution);
|
||||
TIFFSetField(out_file, TIFFTAG_YRESOLUTION, y_resolution);
|
||||
TIFFSetField(out_file, TIFFTAG_RESOLUTIONUNIT, res_unit);
|
||||
TIFFSetField(out_file, TIFFTAG_BITSPERSAMPLE, 1);
|
||||
TIFFSetField(out_file, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
|
||||
TIFFSetField(out_file, TIFFTAG_SAMPLESPERPIXEL, 1);
|
||||
TIFFSetField(out_file, TIFFTAG_ROWSPERSTRIP, -1);
|
||||
TIFFSetField(out_file, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
|
||||
TIFFSetField(out_file, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISWHITE);
|
||||
TIFFSetField(out_file, TIFFTAG_FILLORDER, FILLORDER_LSB2MSB);
|
||||
TIFFSetField(out_file, TIFFTAG_PAGENUMBER, 0, 1);
|
||||
TIFFSetField(out_file, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISWHITE);
|
||||
TIFFSetField(out_file, TIFFTAG_FILLORDER, FILLORDER_LSB2MSB);
|
||||
|
||||
printf("Input %d x %d, output %d x %d\n", image_width, image_length, output_width, output_length);
|
||||
|
||||
if ((image2 = malloc(output_width*output_length/8)) == NULL)
|
||||
return;
|
||||
memset(image2, 0, output_width*output_length/8);
|
||||
n = 0;
|
||||
for (i = 0; i < output_length; i++)
|
||||
n += image_translate_row(s, &image2[n], output_width/8);
|
||||
|
||||
TIFFWriteEncodedStrip(out_file, 0, image2, output_width*output_length/8);
|
||||
switch (output_length_scaling)
|
||||
{
|
||||
case -2:
|
||||
if ((image2 = malloc(output_width*output_length*3)) == NULL)
|
||||
return;
|
||||
memset(image2, 0, output_width*output_length*3);
|
||||
n = 0;
|
||||
for (i = 0; i < output_length; i++)
|
||||
n += image_translate_row(s2, &image2[n], output_width*3);
|
||||
TIFFWriteEncodedStrip(out_file, 0, image2, n);
|
||||
break;
|
||||
case -1:
|
||||
if ((image2 = malloc(output_width*output_length*3)) == NULL)
|
||||
return;
|
||||
memset(image2, 0, output_width*output_length*3);
|
||||
n = 0;
|
||||
for (i = 0; i < output_length; i++)
|
||||
n += image_translate_row(s, &image2[n], output_width*3);
|
||||
TIFFWriteEncodedStrip(out_file, 0, image2, n);
|
||||
break;
|
||||
default:
|
||||
if ((image2 = malloc(output_width*output_length/8)) == NULL)
|
||||
return;
|
||||
memset(image2, 0, output_width*output_length/8);
|
||||
n = 0;
|
||||
for (i = 0; i < output_length; i++)
|
||||
n += image_translate_row(s, &image2[n], output_width/8);
|
||||
TIFFWriteEncodedStrip(out_file, 0, image2, n);
|
||||
break;
|
||||
}
|
||||
TIFFWriteDirectory(out_file);
|
||||
TIFFClose(out_file);
|
||||
image_translate_free(s);
|
||||
@@ -710,6 +772,8 @@ int main(int argc, char **argv)
|
||||
lenna_tests(200, 0, "lenna-bw-200.tif");
|
||||
lenna_tests(1728, 0, "lenna-bw-1728.tif");
|
||||
lenna_tests(1728, 2, "lenna-bw-1728-superfine.tif");
|
||||
lenna_tests(1728, -1, "lenna-colour-1728.tif");
|
||||
lenna_tests(1728, -2, "lenna-gray-1728.tif");
|
||||
#endif
|
||||
printf("Tests passed.\n");
|
||||
return 0;
|
||||
|
||||
@@ -260,14 +260,14 @@ then
|
||||
fi
|
||||
echo ima_adpcm_tests completed OK
|
||||
|
||||
#./image_translate_tests >$STDOUT_DEST 2>$STDERR_DEST
|
||||
#RETVAL=$?
|
||||
#if [ $RETVAL != 0 ]
|
||||
#then
|
||||
# echo image_translate_tests failed!
|
||||
# exit $RETVAL
|
||||
#fi
|
||||
#echo image_translate_tests completed OK
|
||||
./image_translate_tests >$STDOUT_DEST 2>$STDERR_DEST
|
||||
RETVAL=$?
|
||||
if [ $RETVAL != 0 ]
|
||||
then
|
||||
echo image_translate_tests failed!
|
||||
exit $RETVAL
|
||||
fi
|
||||
echo image_translate_tests completed OK
|
||||
|
||||
./logging_tests >$STDOUT_DEST 2>$STDERR_DEST
|
||||
RETVAL=$?
|
||||
|
||||
Reference in new issue
Block a user