[svn] / trunk / xvidcore / vfw / src / codec.c Repository:
ViewVC logotype

Diff of /trunk/xvidcore/vfw/src/codec.c

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

revision 1932, Thu Dec 30 11:47:06 2010 UTC revision 1933, Thu Dec 30 22:08:02 2010 UTC
# Line 19  Line 19 
19   *      along with this program; if not, write to the Free Software   *      along with this program; if not, write to the Free Software
20   *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.   *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21   *   *
22   * $Id: codec.c,v 1.30 2010-12-27 16:11:05 Isibaar Exp $   * $Id: codec.c,v 1.31 2010-12-30 22:08:02 Isibaar Exp $
23   *   *
24   *************************************************************************/   *************************************************************************/
25    
# Line 437  Line 437 
437          if ((profiles[codec->config.profile].flags & PROFILE_RESYNCMARKER) && codec->config.num_slices != 1) {          if ((profiles[codec->config.profile].flags & PROFILE_RESYNCMARKER) && codec->config.num_slices != 1) {
438    
439                  if (codec->config.num_slices == 0) { /* auto */                  if (codec->config.num_slices == 0) { /* auto */
440                          int rows = (lpbiInput->bmiHeader.biHeight + 15) / 16;                          int mb_width = (lpbiInput->bmiHeader.biWidth + 15) / 16;
441                          int slices = (rows > 36) ? 4 : 1; /* use multiple slices only for HD resolutions */                          int mb_height = (lpbiInput->bmiHeader.biHeight + 15) / 16;
442    
443                          create.num_slices = (rows > 45) ? 8 : slices;                          int slices = (int)((mb_width*mb_height) / 811); /* use multiple slices only above SD resolutions for now */
444    
445                          if (create.num_slices > create.num_threads)                          if (slices > 1) {
446                                  create.num_slices = create.num_threads;                                  if (create.num_threads <= 1)
447                                            slices &= ~1; /* make even */
448                                    else if (create.num_threads <= slices)
449                                            slices = (slices / create.num_threads) * create.num_threads; /* multiple of threads */
450                                    else if (create.num_threads % slices)
451                                            slices = (!(create.num_threads%2)) ? (create.num_threads/2) : (create.num_threads/3);
452                            }
453    
454                            create.num_slices = slices;
455                  }                  }
456                  else {                  else {
457                          create.num_slices = codec->config.num_slices; /* force manual value - by registry edit */                          create.num_slices = codec->config.num_slices; /* force manual value - by registry edit */

Legend:
Removed from v.1932  
changed lines
  Added in v.1933

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