[svn] / branches / release-1_3-branch / xvidcore / vfw / src / codec.c Repository:
ViewVC logotype

Diff of /branches/release-1_3-branch/xvidcore/vfw/src/codec.c

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

revision 1718, Mon Jul 10 17:39:38 2006 UTC revision 1906, Tue Nov 16 14:42:07 2010 UTC
# Line 421  Line 421 
421          xvid_plugin_single_t single;          xvid_plugin_single_t single;
422          xvid_plugin_2pass1_t pass1;          xvid_plugin_2pass1_t pass1;
423          xvid_plugin_2pass2_t pass2;          xvid_plugin_2pass2_t pass2;
424            xvid_plugin_lumimasking_t masking;
425        xvid_gbl_info_t info;
426          int i;          int i;
427          HANDLE hFile;          HANDLE hFile;
428    const quality_t* quality_preset = (codec->config.quality==quality_table_num) ?    const quality_t* quality_preset = (codec->config.quality==quality_table_num) ?
# Line 442  Line 444 
444          init.debug = codec->config.debug;          init.debug = codec->config.debug;
445          codec->xvid_global_func(0, XVID_GBL_INIT, &init, NULL);          codec->xvid_global_func(0, XVID_GBL_INIT, &init, NULL);
446    
447            memset(&info, 0, sizeof(info));
448            info.version = XVID_VERSION;
449            codec->xvid_global_func(0, XVID_GBL_INFO, &info, NULL);
450    
451          memset(&create, 0, sizeof(create));          memset(&create, 0, sizeof(create));
452          create.version = XVID_VERSION;          create.version = XVID_VERSION;
453    
# Line 508  Line 514 
514                  pass2.vbv_size = profiles[codec->config.profile].max_vbv_size;                  pass2.vbv_size = profiles[codec->config.profile].max_vbv_size;
515                  pass2.vbv_initial = (profiles[codec->config.profile].max_vbv_size*3)/4; /* 75% */                  pass2.vbv_initial = (profiles[codec->config.profile].max_vbv_size*3)/4; /* 75% */
516                  pass2.vbv_maxrate = profiles[codec->config.profile].max_bitrate;                  pass2.vbv_maxrate = profiles[codec->config.profile].max_bitrate;
517                    pass2.vbv_peakrate = profiles[codec->config.profile].vbv_peakrate;
     // XXX: xvidcore current provides a "peak bits over 3secs" constraint.  
     //      according to the latest dxn literature, a 1sec constraint is now used  
     pass2.vbv_peakrate = profiles[codec->config.profile].vbv_peakrate * 3;  
518    
519                  plugins[create.num_plugins].func = codec->xvid_plugin_2pass2_func;                  plugins[create.num_plugins].func = codec->xvid_plugin_2pass2_func;
520                  plugins[create.num_plugins].param = &pass2;                  plugins[create.num_plugins].param = &pass2;
# Line 541  Line 544 
544          }          }
545    
546          /* lumimasking plugin */          /* lumimasking plugin */
547          if ((profiles[codec->config.profile].flags & PROFILE_ADAPTQUANT) && codec->config.lum_masking) {          if ((profiles[codec->config.profile].flags & PROFILE_ADAPTQUANT) && (codec->config.lum_masking>0)) {
548                    memset(&masking, 0, sizeof(masking));
549                    masking.method = (codec->config.lum_masking==2);
550                  plugins[create.num_plugins].func = codec->xvid_plugin_lumimasking_func;                  plugins[create.num_plugins].func = codec->xvid_plugin_lumimasking_func;
551                  plugins[create.num_plugins].param = NULL;                  plugins[create.num_plugins].param = &masking;
552                  create.num_plugins++;                  create.num_plugins++;
553          }          }
554    
# Line 597  Line 602 
602    
603          create.frame_drop_ratio = quality_preset->frame_drop_ratio;          create.frame_drop_ratio = quality_preset->frame_drop_ratio;
604    
605        /* Encoder threads */
606        if (codec->config.num_threads == 0)
607            create.num_threads = info.num_threads; /* Autodetect */
608        else if (codec->config.num_threads == 1)
609            create.num_threads = -1; /* Single-threaded, disable SMP */
610        else
611          create.num_threads = codec->config.num_threads;          create.num_threads = codec->config.num_threads;
612    
613    
614          switch(codec->xvid_encore_func(0, XVID_ENC_CREATE, &create, NULL))          switch(codec->xvid_encore_func(0, XVID_ENC_CREATE, &create, NULL))
615          {          {
616          case XVID_ERR_FAIL :          case XVID_ERR_FAIL :
# Line 984  Line 996 
996    
997  LRESULT decompress_begin(CODEC * codec, BITMAPINFO * lpbiInput, BITMAPINFO * lpbiOutput)  LRESULT decompress_begin(CODEC * codec, BITMAPINFO * lpbiInput, BITMAPINFO * lpbiOutput)
998  {  {
999            BITMAPINFOHEADER * inhdr = &lpbiInput->bmiHeader;
1000          xvid_gbl_init_t init;          xvid_gbl_init_t init;
1001          xvid_dec_create_t create;          xvid_dec_create_t create;
1002          HKEY hKey;          HKEY hKey;
# Line 1000  Line 1013 
1013          create.version = XVID_VERSION;          create.version = XVID_VERSION;
1014          create.width = lpbiInput->bmiHeader.biWidth;          create.width = lpbiInput->bmiHeader.biWidth;
1015          create.height = lpbiInput->bmiHeader.biHeight;          create.height = lpbiInput->bmiHeader.biHeight;
1016            create.fourcc = inhdr->biCompression;
1017    
1018          switch(codec->xvid_decore_func(0, XVID_DEC_CREATE, &create, NULL))          switch(codec->xvid_decore_func(0, XVID_DEC_CREATE, &create, NULL))
1019          {          {
# Line 1021  Line 1035 
1035          RegOpenKeyEx(XVID_REG_KEY, XVID_REG_PARENT "\\" XVID_REG_CHILD, 0, KEY_READ, &hKey);          RegOpenKeyEx(XVID_REG_KEY, XVID_REG_PARENT "\\" XVID_REG_CHILD, 0, KEY_READ, &hKey);
1036    
1037          REG_GET_N("Brightness", pp_brightness, 0);          REG_GET_N("Brightness", pp_brightness, 0);
1038          REG_GET_N("Deblock_Y",  pp_dy, 0)          REG_GET_N("Deblock_Y",  pp_dy, 0);
1039          REG_GET_N("Deblock_UV", pp_duv, 0)          REG_GET_N("Deblock_UV", pp_duv, 0);
1040          REG_GET_N("Dering_Y",  pp_dry, 0)          REG_GET_N("Dering_Y",  pp_dry, 0);
1041          REG_GET_N("Dering_UV", pp_druv, 0)          REG_GET_N("Dering_UV", pp_druv, 0);
1042          REG_GET_N("FilmEffect", pp_fe, 0)          REG_GET_N("FilmEffect", pp_fe, 0);
1043    
1044          RegCloseKey(hKey);          RegCloseKey(hKey);
1045    

Legend:
Removed from v.1718  
changed lines
  Added in v.1906

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