Skip to content

Commit de0f3a8

Browse files
committed
gpujpegtool: dump input image in debug if not file
Debug dump "special" inputs like test patter (1x1.tst) or special devices (/dev/random). File name is `n=$(basename $in_name); echo ${n%.*}.pnm`. Regular input files are not dumped.
1 parent 2f63587 commit de0f3a8

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

libgpujpeg/gpujpeg_common.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,8 @@ gpujpeg_image_load_from_file(const char* filename, uint8_t** image, size_t* imag
417417
* @return 0 if succeeds, otherwise nonzero
418418
*/
419419
GPUJPEG_API int
420-
gpujpeg_image_save_to_file(char* filename, uint8_t* image, size_t image_size, const struct gpujpeg_image_parameters *param_image);
420+
gpujpeg_image_save_to_file(char* filename, const uint8_t* image, size_t image_size,
421+
const struct gpujpeg_image_parameters* param_image);
421422

422423
/**
423424
* Reads/obtains properties from uncompressed file (PNM etc.)

src/gpujpeg_common.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,8 +1211,8 @@ set_file_extension(char *filename,
12111211

12121212
/* Documented at declaration */
12131213
int
1214-
gpujpeg_image_save_to_file(char *filename, uint8_t *image, size_t image_size,
1215-
const struct gpujpeg_image_parameters *param_image)
1214+
gpujpeg_image_save_to_file(char* filename, const uint8_t* image, size_t image_size,
1215+
const struct gpujpeg_image_parameters* param_image)
12161216
{
12171217
if (strrchr(filename, '.') != NULL &&
12181218
strcmp(strrchr(filename, '.'), ".XXX") == 0) {

src/main.c

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,47 @@ parse_pixel_format(const char *arg)
227227
return ret;
228228
}
229229

230+
/// dump input file if not a regular file (eg. test patern or /dev/random)
231+
static void
232+
debug_dump_infile(const char* filename, const uint8_t* image_data, size_t image_size,
233+
const struct gpujpeg_image_parameters* param_image)
234+
{
235+
FILE* f = fopen(filename, "rb");
236+
long file_sz = 0;
237+
if ( f != NULL ) {
238+
fseek(f, 0, SEEK_END);
239+
file_sz = ftell(f);
240+
fclose(f);
241+
}
242+
if ( file_sz > 0 ) { // regular file
243+
return;
244+
}
245+
char raw_name[256];
246+
const char* beg = strrchr(filename, '/');
247+
if ( beg == NULL ) {
248+
beg = strrchr(filename, '\\');
249+
}
250+
if ( beg == NULL ) {
251+
beg = filename;
252+
}
253+
else {
254+
beg += 1;
255+
}
256+
snprintf(raw_name, sizeof raw_name, "input-%s", beg);
257+
char* end = strrchr(raw_name, '.');
258+
if ( end == NULL ) {
259+
snprintf(raw_name + strlen(raw_name), sizeof raw_name - strlen(raw_name), ".");
260+
end = raw_name + strlen(raw_name);
261+
}
262+
else {
263+
end += 1;
264+
}
265+
snprintf(end, sizeof raw_name - (end - raw_name), "XXX");
266+
if ( gpujpeg_image_save_to_file(raw_name, image_data, image_size, param_image) == 0 ) {
267+
printf("Input data saved to file %s.\n", raw_name);
268+
}
269+
}
270+
230271
#ifndef GIT_REV
231272
#define GIT_REV "unknown"
232273
#endif
@@ -557,6 +598,10 @@ main(int argc, char *argv[])
557598
ret = EXIT_FAILURE; continue;
558599
}
559600

601+
if ( debug ) {
602+
debug_dump_infile(input, image, image_size, &param_image);
603+
}
604+
560605
duration = gpujpeg_get_time() - duration;
561606
printf("Load Image: %10.2f ms\n", duration * 1000.0);
562607

0 commit comments

Comments
 (0)