21 |
* along with this program; if not, write to the Free Software |
* along with this program; if not, write to the Free Software |
22 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
23 |
* |
* |
24 |
* $Id: xvid_encraw.c,v 1.31 2006-10-16 04:46:01 Skal Exp $ |
* $Id: xvid_encraw.c,v 1.34 2007-01-09 20:08:53 Isibaar Exp $ |
25 |
* |
* |
26 |
****************************************************************************/ |
****************************************************************************/ |
27 |
|
|
165 |
static frame_stats_t framestats[7]; |
static frame_stats_t framestats[7]; |
166 |
|
|
167 |
static int ARG_STATS = 0; |
static int ARG_STATS = 0; |
168 |
static int ARG_SSIM = 0; |
static int ARG_SSIM = -1; |
169 |
static char* ARG_SSIM_PATH = NULL; |
static char* ARG_SSIM_PATH = NULL; |
170 |
static int ARG_DUMP = 0; |
static int ARG_DUMP = 0; |
171 |
static int ARG_LUMIMASKING = 0; |
static int ARG_LUMIMASKING = 0; |
391 |
} else if (strcmp("-h", argv[i]) == 0 && i < argc - 1) { |
} else if (strcmp("-h", argv[i]) == 0 && i < argc - 1) { |
392 |
i++; |
i++; |
393 |
YDIM = atoi(argv[i]); |
YDIM = atoi(argv[i]); |
394 |
|
} else if (strcmp("-csp",argv[i]) == 0 && i < argc - 1) { |
395 |
|
i++; |
396 |
|
if (strcmp(argv[i],"i420") == 0){ |
397 |
|
ARG_COLORSPACE = XVID_CSP_I420; |
398 |
|
} else if(strcmp(argv[i],"yv12") == 0){ |
399 |
|
ARG_COLORSPACE = XVID_CSP_YV12; |
400 |
|
} else { |
401 |
|
printf("Invalid colorspace\n"); |
402 |
|
return 0; |
403 |
|
} |
404 |
} else if (strcmp("-bitrate", argv[i]) == 0) { |
} else if (strcmp("-bitrate", argv[i]) == 0) { |
405 |
if (i < argc - 1) |
if (i < argc - 1) |
406 |
ARG_BITRATE = atoi(argv[i+1]); |
ARG_BITRATE = atoi(argv[i+1]); |
591 |
} else if (strcmp("-stats", argv[i]) == 0) { |
} else if (strcmp("-stats", argv[i]) == 0) { |
592 |
ARG_STATS = 1; |
ARG_STATS = 1; |
593 |
} else if (strcmp("-ssim", argv[i]) == 0) { |
} else if (strcmp("-ssim", argv[i]) == 0) { |
594 |
ARG_SSIM = 1; |
ARG_SSIM = 2; |
595 |
|
if ((i < argc - 1) && (*argv[i+1] != '-')) { |
596 |
|
i++; |
597 |
|
ARG_SSIM = atoi(argv[i]); |
598 |
|
} |
599 |
} else if (strcmp("-ssim_file", argv[i]) == 0 && i < argc -1) { |
} else if (strcmp("-ssim_file", argv[i]) == 0 && i < argc -1) { |
600 |
i++; |
i++; |
601 |
ARG_SSIM_PATH = argv[i]; |
ARG_SSIM_PATH = argv[i]; |
1519 |
#endif |
#endif |
1520 |
fprintf(stderr, " -w integer: frame width ([1.2048])\n"); |
fprintf(stderr, " -w integer: frame width ([1.2048])\n"); |
1521 |
fprintf(stderr, " -h integer: frame height ([1.2048])\n"); |
fprintf(stderr, " -h integer: frame height ([1.2048])\n"); |
1522 |
|
fprintf(stderr, " -csp string : colorspace of raw input file i420, yv12 (default)\n"); |
1523 |
fprintf(stderr, " -frames integer: number of frames to encode\n"); |
fprintf(stderr, " -frames integer: number of frames to encode\n"); |
1524 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
1525 |
fprintf(stderr, "Output options:\n"); |
fprintf(stderr, "Output options:\n"); |
1583 |
fprintf(stderr, " -noclosed_gop : Disable closed GOP mode\n"); |
fprintf(stderr, " -noclosed_gop : Disable closed GOP mode\n"); |
1584 |
fprintf(stderr, " -lumimasking : use lumimasking algorithm\n"); |
fprintf(stderr, " -lumimasking : use lumimasking algorithm\n"); |
1585 |
fprintf(stderr, " -stats : print stats about encoded frames\n"); |
fprintf(stderr, " -stats : print stats about encoded frames\n"); |
1586 |
fprintf(stderr, " -ssim : prints the ssim stats for every encoded frame (slow!)\n"); |
fprintf(stderr, " -ssim [integer] : prints ssim for every frame (accurate: 0 fast: 4) (2)\n"); |
1587 |
fprintf(stderr, " -ssim_file filename : outputs the ssim stats into a file\n"); |
fprintf(stderr, " -ssim_file filename : outputs the ssim stats into a file\n"); |
1588 |
fprintf(stderr, " -debug : activates xvidcore internal debugging output\n"); |
fprintf(stderr, " -debug : activates xvidcore internal debugging output\n"); |
1589 |
fprintf(stderr, " -vop_debug : print some info directly into encoded frames\n"); |
fprintf(stderr, " -vop_debug : print some info directly into encoded frames\n"); |
1918 |
xvid_enc_create.num_plugins++; |
xvid_enc_create.num_plugins++; |
1919 |
} |
} |
1920 |
|
|
1921 |
if (ARG_SSIM || ARG_SSIM_PATH != NULL) { |
if (ARG_SSIM>=0 || ARG_SSIM_PATH != NULL) { |
1922 |
plugins[xvid_enc_create.num_plugins].func = xvid_plugin_ssim; |
plugins[xvid_enc_create.num_plugins].func = xvid_plugin_ssim; |
1923 |
ssim.b_printstat = ARG_SSIM; |
|
1924 |
|
if( ARG_SSIM >=0){ |
1925 |
|
ssim.b_printstat = 1; |
1926 |
|
ssim.acc = ARG_SSIM; |
1927 |
|
} else { |
1928 |
|
ssim.b_printstat = 0; |
1929 |
|
ssim.acc = 2; |
1930 |
|
} |
1931 |
|
|
1932 |
|
if(ARG_SSIM_PATH != NULL){ |
1933 |
ssim.stat_path = ARG_SSIM_PATH; |
ssim.stat_path = ARG_SSIM_PATH; |
1934 |
|
} |
1935 |
|
|
1936 |
ssim.b_visualize = 0; |
ssim.b_visualize = 0; |
1937 |
plugins[xvid_enc_create.num_plugins].param = &ssim; |
plugins[xvid_enc_create.num_plugins].param = &ssim; |
1938 |
xvid_enc_create.num_plugins++; |
xvid_enc_create.num_plugins++; |
2076 |
if (image) { |
if (image) { |
2077 |
xvid_enc_frame.input.plane[0] = image; |
xvid_enc_frame.input.plane[0] = image; |
2078 |
#ifndef READ_PNM |
#ifndef READ_PNM |
|
if (ARG_INPUTTYPE==2) |
|
2079 |
xvid_enc_frame.input.csp = ARG_COLORSPACE; |
xvid_enc_frame.input.csp = ARG_COLORSPACE; |
|
else |
|
|
xvid_enc_frame.input.csp = XVID_CSP_I420; |
|
2080 |
xvid_enc_frame.input.stride[0] = XDIM; |
xvid_enc_frame.input.stride[0] = XDIM; |
2081 |
#else |
#else |
2082 |
xvid_enc_frame.input.csp = XVID_CSP_BGR; |
xvid_enc_frame.input.csp = XVID_CSP_BGR; |