[svn] / trunk / xvidcore / examples / xvid_encraw.c Repository:
ViewVC logotype

Diff of /trunk/xvidcore/examples/xvid_encraw.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1712, Sat Jul 8 14:19:04 2006 UTC revision 1794, Fri Nov 14 15:43:28 2008 UTC
# Line 21  Line 21 
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.26 2006-07-08 14:19:04 Skal Exp $   * $Id: xvid_encraw.c,v 1.35 2008-11-14 15:43:27 Isibaar Exp $
25   *   *
26   ****************************************************************************/   ****************************************************************************/
27    
# Line 165  Line 165 
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 = -1;
169    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;
172  static  int ARG_BITRATE = 0;  static  int ARG_BITRATE = 0;
# Line 174  Line 176 
176  static  char *ARG_PASS2 = 0;  static  char *ARG_PASS2 = 0;
177  //static int ARG_QUALITY = ME_ELEMENTS - 1;  //static int ARG_QUALITY = ME_ELEMENTS - 1;
178  static  int ARG_QUALITY = 6;  static  int ARG_QUALITY = 6;
179  static  float ARG_FRAMERATE = 0.00f;  static  float ARG_FRAMERATE = 25.00f;
180  static  int ARG_DWRATE = 25;  static  int ARG_DWRATE = 25;
181  static  int ARG_DWSCALE = 1;  static  int ARG_DWSCALE = 1;
182  static  int ARG_MAXFRAMENR = ABS_MAXFRAMENR;  static  int ARG_MAXFRAMENR = ABS_MAXFRAMENR;
# Line 389  Line 391 
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]);
# Line 578  Line 590 
590                          ARG_INPUTFILE = argv[i];                          ARG_INPUTFILE = argv[i];
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) {
594                            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) {
600                            i++;
601                            ARG_SSIM_PATH = argv[i];
602                  } else if (strcmp("-timecode", argv[i]) == 0 && i < argc -1) {                  } else if (strcmp("-timecode", argv[i]) == 0 && i < argc -1) {
603                          i++;                          i++;
604                          ARG_TIMECODEFILE = argv[i];                          ARG_TIMECODEFILE = argv[i];
# Line 1190  Line 1211 
1211                                  framestats[5].size += stats_length;                                  framestats[5].size += stats_length;
1212                          }                          }
1213    
1214    #define SSE2PSNR(sse, width, height) ((!(sse))?0.0f : 48.131f - 10*(float)log10((float)(sse)/((float)((width)*(height)))))
1215    
1216                          if (ARG_PROGRESS == 0) {                          if (ARG_PROGRESS == 0) {
1217                                  printf("%5d: key=%i, time= %6.0f, len= %7d", !result ? input_num : -1,                                  printf("%5d: key=%i, time= %6.0f, len= %7d", !result ? input_num : -1,
# Line 1197  Line 1219 
1219                                  printf(" | type=%s, quant= %2d, len= %7d", type, stats_quant,                                  printf(" | type=%s, quant= %2d, len= %7d", type, stats_quant,
1220                                     stats_length);                                     stats_length);
1221    
 #define SSE2PSNR(sse, width, height) ((!(sse))?0.0f : 48.131f - 10*(float)log10((float)(sse)/((float)((width)*(height)))))  
1222    
1223                                  if (ARG_STATS) {                                  if (ARG_STATS) {
1224                                          printf(", psnr y = %2.2f, psnr u = %2.2f, psnr v = %2.2f",                                          printf(", psnr y = %2.2f, psnr u = %2.2f, psnr v = %2.2f",
1225                                                  SSE2PSNR(sse[0], XDIM, YDIM), SSE2PSNR(sse[1], XDIM / 2,                                                  SSE2PSNR(sse[0], XDIM, YDIM), SSE2PSNR(sse[1], XDIM / 2, YDIM / 2),
                                                                                                                                 YDIM / 2),  
1226                                                  SSE2PSNR(sse[2], XDIM / 2, YDIM / 2));                                                  SSE2PSNR(sse[2], XDIM / 2, YDIM / 2));
   
                                         totalPSNR[0] += SSE2PSNR(sse[0], XDIM, YDIM);  
                                         totalPSNR[1] += SSE2PSNR(sse[1], XDIM/2, YDIM/2);  
                                         totalPSNR[2] += SSE2PSNR(sse[2], XDIM/2, YDIM/2);  
1227                                  }                                  }
1228                                  printf("\n");                                  printf("\n");
1229                          } else {                          } else {
# Line 1224  Line 1240 
1240                                  }                                  }
1241                          }                          }
1242    
1243                            if (ARG_STATS) {
1244                                    totalPSNR[0] += SSE2PSNR(sse[0], XDIM, YDIM);
1245                                    totalPSNR[1] += SSE2PSNR(sse[1], XDIM/2, YDIM/2);
1246                                    totalPSNR[2] += SSE2PSNR(sse[2], XDIM/2, YDIM/2);
1247                  }                  }
1248  #undef SSE2PSNR  #undef SSE2PSNR
1249                    }
1250    
1251                  if (m4v_size < 0)                  if (m4v_size < 0)
1252                          break;                          break;
# Line 1498  Line 1519 
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");
# Line 1561  Line 1583 
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 [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");
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");
1590          fprintf(stderr, " -nochromame                    : Disable chroma motion estimation\n");          fprintf(stderr, " -nochromame                    : Disable chroma motion estimation\n");
# Line 1763  Line 1787 
1787      xvid_plugin_single_t single;      xvid_plugin_single_t single;
1788          xvid_plugin_2pass1_t rc2pass1;          xvid_plugin_2pass1_t rc2pass1;
1789          xvid_plugin_2pass2_t rc2pass2;          xvid_plugin_2pass2_t rc2pass2;
1790            xvid_plugin_ssim_t ssim;
1791          //xvid_plugin_fixed_t rcfixed;          //xvid_plugin_fixed_t rcfixed;
1792          xvid_enc_plugin_t plugins[7];          xvid_enc_plugin_t plugins[8];
1793          xvid_gbl_init_t xvid_gbl_init;          xvid_gbl_init_t xvid_gbl_init;
1794          xvid_enc_create_t xvid_enc_create;          xvid_enc_create_t xvid_enc_create;
1795          int i;          int i;
# Line 1893  Line 1918 
1918                  xvid_enc_create.num_plugins++;                  xvid_enc_create.num_plugins++;
1919          }          }
1920    
1921            if (ARG_SSIM>=0 || ARG_SSIM_PATH != NULL) {
1922                    plugins[xvid_enc_create.num_plugins].func = xvid_plugin_ssim;
1923    
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;
1934                    }
1935    
1936                    ssim.b_visualize = 0;
1937                    plugins[xvid_enc_create.num_plugins].param = &ssim;
1938                    xvid_enc_create.num_plugins++;
1939            }
1940    
1941  #if 0  #if 0
1942          if (ARG_DEBUG) {          if (ARG_DEBUG) {
1943                  plugins[xvid_enc_create.num_plugins].func = rawenc_debug;                  plugins[xvid_enc_create.num_plugins].func = rawenc_debug;
# Line 1976  Line 2021 
2021                  fprintf(stderr, "SSE ");                  fprintf(stderr, "SSE ");
2022          if (xvid_gbl_info.cpu_flags & XVID_CPU_SSE2)          if (xvid_gbl_info.cpu_flags & XVID_CPU_SSE2)
2023                  fprintf(stderr, "SSE2 ");                  fprintf(stderr, "SSE2 ");
2024            if (xvid_gbl_info.cpu_flags & XVID_CPU_SSE3)
2025                    fprintf(stderr, "SSE3 ");
2026            if (xvid_gbl_info.cpu_flags & XVID_CPU_SSE41)
2027                    fprintf(stderr, "SSE41 ");
2028          if (xvid_gbl_info.cpu_flags & XVID_CPU_3DNOW)          if (xvid_gbl_info.cpu_flags & XVID_CPU_3DNOW)
2029                  fprintf(stderr, "3DNOW ");                  fprintf(stderr, "3DNOW ");
2030          if (xvid_gbl_info.cpu_flags & XVID_CPU_3DNOWEXT)          if (xvid_gbl_info.cpu_flags & XVID_CPU_3DNOWEXT)
# Line 2031  Line 2080 
2080          if (image) {          if (image) {
2081                  xvid_enc_frame.input.plane[0] = image;                  xvid_enc_frame.input.plane[0] = image;
2082  #ifndef READ_PNM  #ifndef READ_PNM
                 if (ARG_INPUTTYPE==2)  
2083                          xvid_enc_frame.input.csp = ARG_COLORSPACE;                          xvid_enc_frame.input.csp = ARG_COLORSPACE;
                 else  
                         xvid_enc_frame.input.csp = XVID_CSP_I420;  
2084                  xvid_enc_frame.input.stride[0] = XDIM;                  xvid_enc_frame.input.stride[0] = XDIM;
2085  #else  #else
2086                  xvid_enc_frame.input.csp = XVID_CSP_BGR;                  xvid_enc_frame.input.csp = XVID_CSP_BGR;

Legend:
Removed from v.1712  
changed lines
  Added in v.1794

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4