[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 1885, Tue Mar 9 16:25:17 2010 UTC revision 1909, Sun Nov 28 15:19:07 2010 UTC
# Line 22  Line 22 
22   *  along with this program; if not, write to the Free Software   *  along with this program; if not, write to the Free Software
23   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
24   *   *
25   * $Id: xvid_encraw.c,v 1.41 2010-03-09 16:25:17 Isibaar Exp $   * $Id: xvid_encraw.c,v 1.45 2010-11-28 15:19:07 Isibaar Exp $
26   *   *
27   ****************************************************************************/   ****************************************************************************/
28    
# Line 189  Line 189 
189  static  int ARG_CPU_FLAGS = 0;  static  int ARG_CPU_FLAGS = 0;
190  static  int ARG_STATS = 0;  static  int ARG_STATS = 0;
191  static  int ARG_SSIM = -1;  static  int ARG_SSIM = -1;
192    static  int ARG_PSNRHVSM = 0;
193  static  char* ARG_SSIM_PATH = NULL;  static  char* ARG_SSIM_PATH = NULL;
194  static  int ARG_DUMP = 0;  static  int ARG_DUMP = 0;
195  static  int ARG_LUMIMASKING = 0;  static  int ARG_LUMIMASKING = 0;
# Line 230  Line 231 
231  static  int ARG_TURBO = 0;  static  int ARG_TURBO = 0;
232  static  int ARG_VHQMODE = 1;  static  int ARG_VHQMODE = 1;
233  static  int ARG_BVHQ = 0;  static  int ARG_BVHQ = 0;
234    static  int ARG_QMETRIC = 0;
235  static  int ARG_CLOSED_GOP = 1;  static  int ARG_CLOSED_GOP = 1;
236  static  int ARG_CHROMAME = 1;  static  int ARG_CHROMAME = 1;
237  static  int ARG_PAR = 1;  static  int ARG_PAR = 1;
# Line 388  Line 390 
390                                  ARG_BITRATE = atoi(argv[i+1]);                                  ARG_BITRATE = atoi(argv[i+1]);
391                          if (ARG_BITRATE) {                          if (ARG_BITRATE) {
392                                  i++;                                  i++;
393                                  if (ARG_BITRATE <= 10000)                                  if (ARG_BITRATE <= 20000)
394                                          /* if given parameter is <= 10000, assume it means kbps */                                          /* if given parameter is <= 20000, assume it means kbps */
395                                          ARG_BITRATE *= 1000;                                          ARG_BITRATE *= 1000;
396                          }                          }
397                          else                          else
# Line 550  Line 552 
552                  } else if (strcmp("-vhqmode", argv[i]) == 0 && i < argc - 1) {                  } else if (strcmp("-vhqmode", argv[i]) == 0 && i < argc - 1) {
553                          i++;                          i++;
554                          ARG_VHQMODE = atoi(argv[i]);                          ARG_VHQMODE = atoi(argv[i]);
555                    } else if (strcmp("-metric", argv[i]) == 0 && i < argc - 1) {
556                            i++;
557                            ARG_QMETRIC = atoi(argv[i]);
558                  } else if (strcmp("-framerate", argv[i]) == 0 && i < argc - 1) {                  } else if (strcmp("-framerate", argv[i]) == 0 && i < argc - 1) {
559                          int exponent;                          int exponent;
560                          i++;                          i++;
# Line 578  Line 583 
583                                  i++;                                  i++;
584                                  ARG_SSIM = atoi(argv[i]);                                  ARG_SSIM = atoi(argv[i]);
585                          }                          }
586                    } else if (strcmp("-psnrhvsm", argv[i]) == 0) {
587                            ARG_PSNRHVSM = 1;
588                  } else if (strcmp("-ssim_file", argv[i]) == 0 && i < argc -1) {                  } else if (strcmp("-ssim_file", argv[i]) == 0 && i < argc -1) {
589                          i++;                          i++;
590                          ARG_SSIM_PATH = argv[i];                          ARG_SSIM_PATH = argv[i];
# Line 697  Line 704 
704                          ARG_VBVMAXRATE = atoi(argv[i]);                          ARG_VBVMAXRATE = atoi(argv[i]);
705                  } else if (strcmp("-vbvpeak", argv[i]) == 0 && i < argc -1) {                  } else if (strcmp("-vbvpeak", argv[i]) == 0 && i < argc -1) {
706                          i++;                          i++;
707                          ARG_VBVPEAKRATE = atoi(argv[i])*3;                          ARG_VBVPEAKRATE = atoi(argv[i]);
708                  } else if (strcmp("-reaction", argv[i]) == 0 && i < argc -1) {                  } else if (strcmp("-reaction", argv[i]) == 0 && i < argc -1) {
709                          i++;                          i++;
710                          ARG_REACTION = atoi(argv[i]);                          ARG_REACTION = atoi(argv[i]);
# Line 1023  Line 1030 
1030                                  sprintf(statsfilename[k], "%s.%03d", ARG_PASS1, k);                                  sprintf(statsfilename[k], "%s.%03d", ARG_PASS1, k);
1031                                  enc_data[k].statsfilename1 = statsfilename[k];                                  enc_data[k].statsfilename1 = statsfilename[k];
1032                          }                          }
1033                          enc_data[k].start_num = k*((ARG_MAXFRAMENR-ARG_STARTFRAMENR)/ARG_NUM_APP_THREADS);                          enc_data[k].start_num = (k*(ARG_MAXFRAMENR-ARG_STARTFRAMENR))/ARG_NUM_APP_THREADS;
1034                          enc_data[k].stop_num = ((k+1)*(ARG_MAXFRAMENR-ARG_STARTFRAMENR))/ARG_NUM_APP_THREADS;                          enc_data[k].stop_num = ((k+1)*(ARG_MAXFRAMENR-ARG_STARTFRAMENR))/ARG_NUM_APP_THREADS;
1035                  }                  }
1036    
# Line 1854  Line 1861 
1861          fprintf(stderr, "-odegrade   integer             : max overflow degradation (5)\n");          fprintf(stderr, "-odegrade   integer             : max overflow degradation (5)\n");
1862          fprintf(stderr, "-chigh      integer             : high bitrate scenes degradation (0)\n");          fprintf(stderr, "-chigh      integer             : high bitrate scenes degradation (0)\n");
1863          fprintf(stderr, "-clow       integer             : low bitrate scenes improvement (0)\n");          fprintf(stderr, "-clow       integer             : low bitrate scenes improvement (0)\n");
1864          fprintf(stderr, "-overhead   integer             : container frame overhead (24)\n");          fprintf(stderr, "-overhead   integer             : container frame overhead (0)\n");
1865          fprintf(stderr, "-vbvsize    integer             : use vbv buffer size\n");          fprintf(stderr, "-vbvsize    integer             : use vbv buffer size\n");
1866          fprintf(stderr, "-vbvmax     integer             : vbv max bitrate\n");          fprintf(stderr, "-vbvmax     integer             : vbv max bitrate\n");
1867          fprintf(stderr, "-vbvpeak    integer             : vbv peak bitrate over 1 second\n");          fprintf(stderr, "-vbvpeak    integer             : vbv peak bitrate over 1 second\n");
# Line 1865  Line 1872 
1872          fprintf(stderr, " -quality integer               : quality ([0..%d]) (6)\n", ME_ELEMENTS - 1);          fprintf(stderr, " -quality integer               : quality ([0..%d]) (6)\n", ME_ELEMENTS - 1);
1873          fprintf(stderr, " -vhqmode integer               : level of R-D optimizations ([0..4]) (1)\n");          fprintf(stderr, " -vhqmode integer               : level of R-D optimizations ([0..4]) (1)\n");
1874          fprintf(stderr, " -bvhq                          : use R-D optimizations for B-frames\n");          fprintf(stderr, " -bvhq                          : use R-D optimizations for B-frames\n");
1875            fprintf(stderr, " -metric integer                : distortion metric for R-D opt (PSNR:0, PSNRHVSM: 1)\n");
1876          fprintf(stderr, " -qpel                          : use quarter pixel ME\n");          fprintf(stderr, " -qpel                          : use quarter pixel ME\n");
1877          fprintf(stderr, " -gmc                           : use global motion compensation\n");          fprintf(stderr, " -gmc                           : use global motion compensation\n");
1878          fprintf(stderr, " -qtype   integer               : quantization type (H263:0, MPEG4:1) (0)\n");          fprintf(stderr, " -qtype   integer               : quantization type (H263:0, MPEG4:1) (0)\n");
# Line 1876  Line 1884 
1884          fprintf(stderr, " -stats                         : print stats about encoded frames\n");          fprintf(stderr, " -stats                         : print stats about encoded frames\n");
1885          fprintf(stderr, " -ssim [integer]                : prints ssim for every frame (accurate: 0 fast: 4) (2)\n");          fprintf(stderr, " -ssim [integer]                : prints ssim for every frame (accurate: 0 fast: 4) (2)\n");
1886          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");
1887            fprintf(stderr, " -psnrhvsm                      : prints PSNRHVSM metric for every frame\n");
1888          fprintf(stderr, " -debug                         : activates xvidcore internal debugging output\n");          fprintf(stderr, " -debug                         : activates xvidcore internal debugging output\n");
1889          fprintf(stderr, " -vop_debug                     : print some info directly into encoded frames\n");          fprintf(stderr, " -vop_debug                     : print some info directly into encoded frames\n");
1890          fprintf(stderr, " -nochromame                    : Disable chroma motion estimation\n");          fprintf(stderr, " -nochromame                    : Disable chroma motion estimation\n");
# Line 2174  Line 2183 
2183                  rc2pass2.vbv_size     =  ARG_VBVSIZE;                  rc2pass2.vbv_size     =  ARG_VBVSIZE;
2184                  rc2pass2.vbv_initial  =  (ARG_VBVSIZE*3)/4;                  rc2pass2.vbv_initial  =  (ARG_VBVSIZE*3)/4;
2185                  rc2pass2.vbv_maxrate  =  ARG_VBVMAXRATE;                  rc2pass2.vbv_maxrate  =  ARG_VBVMAXRATE;
2186                  rc2pass2.vbv_peakrate =  ARG_VBVPEAKRATE*3;                  rc2pass2.vbv_peakrate =  ARG_VBVPEAKRATE;
2187    
2188    
2189                  plugins[xvid_enc_create.num_plugins].func = xvid_plugin_2pass2;                  plugins[xvid_enc_create.num_plugins].func = xvid_plugin_2pass2;
# Line 2241  Line 2250 
2250                  xvid_enc_create.num_plugins++;                  xvid_enc_create.num_plugins++;
2251          }          }
2252    
2253            if (ARG_PSNRHVSM>0) {
2254            plugins[xvid_enc_create.num_plugins].func = xvid_plugin_psnrhvsm;
2255                    plugins[xvid_enc_create.num_plugins].param = NULL;
2256                    xvid_enc_create.num_plugins++;
2257            }
2258    
2259  #if 0  #if 0
2260          if (ARG_DEBUG) {          if (ARG_DEBUG) {
2261                  plugins[xvid_enc_create.num_plugins].func = rawenc_debug;                  plugins[xvid_enc_create.num_plugins].func = rawenc_debug;
# Line 2472  Line 2487 
2487          if (ARG_BVHQ)          if (ARG_BVHQ)
2488                  xvid_enc_frame.vop_flags |= XVID_VOP_RD_BVOP;                  xvid_enc_frame.vop_flags |= XVID_VOP_RD_BVOP;
2489    
2490            if (ARG_QMETRIC == 1)
2491                    xvid_enc_frame.vop_flags |= XVID_VOP_RD_PSNRHVSM;
2492    
2493          switch (ARG_VHQMODE) /* this is the same code as for vfw */          switch (ARG_VHQMODE) /* this is the same code as for vfw */
2494          {          {
2495          case 1: /* VHQ_MODE_DECISION */          case 1: /* VHQ_MODE_DECISION */

Legend:
Removed from v.1885  
changed lines
  Added in v.1909

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