[svn] / branches / dev-api-4 / xvidcore / vfw / src / codec.c Repository:
ViewVC logotype

Diff of /branches/dev-api-4/xvidcore/vfw/src/codec.c

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

revision 1107, Sat Aug 2 15:08:48 2003 UTC revision 1267, Wed Dec 17 15:16:16 2003 UTC
# Line 49  Line 49 
49    
50  #include <windows.h>  #include <windows.h>
51  #include <vfw.h>  #include <vfw.h>
52    #include <stdio.h>
53  #include "vfwext.h"  #include "vfwext.h"
54    
55  #include <xvid.h>  #include <xvid.h>
# Line 280  Line 281 
281                  {                  {
282                          xvid_plg_data_t *data = (xvid_plg_data_t *) param1;                          xvid_plg_data_t *data = (xvid_plg_data_t *) param1;
283    
284                          DPRINTF("[%5i]   type=%c   Q:%2i   length:%6i",                          /* We don't use DPRINTF here because it's active only for _DEBUG
285                             * builds and that activates lot of other debug printfs. We only
286                             * want these all the time */
287                            char buf[1024];
288                            sprintf(buf, "[%6i]   type=%c   Q:%2i   length:%6i",
289                                     data->frame_num,                                     data->frame_num,
290                     type2char(data->type),                     type2char(data->type),
291                     data->quant,                     data->quant,
292                     data->length);                     data->length);
293                            OutputDebugString(buf);
294    
295                          return 0;                          return 0;
296                  }                  }
297          }          }
# Line 371  Line 378 
378                  pass2.filename = codec->config.stats;                  pass2.filename = codec->config.stats;
379    
380          pass2.keyframe_boost = codec->config.keyframe_boost;   /* keyframe boost percentage: [0..100...]; */          pass2.keyframe_boost = codec->config.keyframe_boost;   /* keyframe boost percentage: [0..100...]; */
         pass2.payback_method = codec->config.bitrate_payback_method;  
         pass2.bitrate_payback_delay = codec->config.bitrate_payback_delay;  
381          pass2.curve_compression_high = codec->config.curve_compression_high;          pass2.curve_compression_high = codec->config.curve_compression_high;
382          pass2.curve_compression_low = codec->config.curve_compression_low;          pass2.curve_compression_low = codec->config.curve_compression_low;
383                    pass2.overflow_control_strength = codec->config.overflow_control_strength;
384          pass2.max_overflow_improvement = codec->config.twopass_max_overflow_improvement;          pass2.max_overflow_improvement = codec->config.twopass_max_overflow_improvement;
385          pass2.max_overflow_degradation = codec->config.twopass_max_overflow_degradation;          pass2.max_overflow_degradation = codec->config.twopass_max_overflow_degradation;
         pass2.kftreshold = codec->config.kftreshold;  
386              pass2.kfreduction = codec->config.kfreduction;              pass2.kfreduction = codec->config.kfreduction;
387          pass2.min_key_interval = codec->config.min_key_interval;          pass2.kfthreshold = codec->config.kfthreshold;
388          pass2.container_frame_overhead = 24;    /* AVI */          pass2.container_frame_overhead = 24;    /* AVI */
389    
390          plugins[create.num_plugins].func = xvid_plugin_2pass2;          plugins[create.num_plugins].func = xvid_plugin_2pass2;
# Line 484  Line 489 
489      int i;      int i;
490    
491      for (i=0; i<config->num_zones && config->zones[i].frame <= framenum; i++) ;      for (i=0; i<config->num_zones && config->zones[i].frame <= framenum; i++) ;
     i--;  
492    
493        if (--i < 0) return; /* there are no zones, or we're before the first zone */
494    
495        if (framenum == config->zones[i].frame)
496      frame->type = config->zones[i].type;      frame->type = config->zones[i].type;
497    
498      if (config->zones[i].greyscale) {      if (config->zones[i].greyscale) {
# Line 550  Line 557 
557          if ((profiles[codec->config.profile].flags & PROFILE_INTERLACE) && codec->config.interlacing)          if ((profiles[codec->config.profile].flags & PROFILE_INTERLACE) && codec->config.interlacing)
558                  frame.vol_flags |= XVID_VOL_INTERLACING;                  frame.vol_flags |= XVID_VOL_INTERLACING;
559    
560            if (codec->config.display_aspect_ratio !=0) {
561                    int ar_x;
562                    int ar_y;
563    
564                    if (codec->config.display_aspect_ratio == 1) {
565                            ar_x = 4;
566                            ar_y = 3;
567                    }
568                    if (codec->config.display_aspect_ratio == 2) {
569                            ar_x = 16;
570                            ar_y = 9;
571                    }
572    
573                    /* custom pixel aspect ratio -> calculated from DAR */
574                    frame.par = XVID_PAR_EXT;
575                    frame.par_width = (100 * inhdr->biHeight) / ar_y;
576                    frame.par_height= (100 * inhdr->biWidth) / ar_x;
577            } else {
578                    /* assuming defaults for now... */
579                    frame.par = XVID_PAR_11_VGA;
580            }
581    
582      /* vop stuff */      /* vop stuff */
583    
584          frame.vop_flags |= XVID_VOP_HALFPEL;          frame.vop_flags |= XVID_VOP_HALFPEL;
# Line 568  Line 597 
597          if (codec->config.chromame)          if (codec->config.chromame)
598                  frame.motion |= XVID_ME_CHROMA_PVOP + XVID_ME_CHROMA_BVOP;                  frame.motion |= XVID_ME_CHROMA_PVOP + XVID_ME_CHROMA_BVOP;
599    
600            if (codec->config.cartoon_mode) {
601                    frame.vop_flags |= XVID_VOP_CARTOON;
602                    frame.motion |= XVID_ME_DETECT_STATIC_MOTION;
603            }
604    
605          frame.motion |= pmvfast_presets[codec->config.motion_search];          frame.motion |= pmvfast_presets[codec->config.motion_search];
606    
607          switch (codec->config.vhq_mode)          switch (codec->config.vhq_mode)
# Line 627  Line 661 
661    
662          // force keyframe spacing in 2-pass 1st pass          // force keyframe spacing in 2-pass 1st pass
663          if (codec->config.motion_search == 0)          if (codec->config.motion_search == 0)
         {  
664                  frame.type = XVID_TYPE_IVOP;                  frame.type = XVID_TYPE_IVOP;
         }  
         else if (codec->keyspacing < codec->config.min_key_interval && codec->framenum)  
         {  
                 DPRINTF("current frame forced to p-frame");  
                 frame.type = XVID_TYPE_PVOP;  
         }  
665    
666      /* frame-based stuff */      /* frame-based stuff */
667      apply_zone_modifiers(&frame, &codec->config, codec->framenum);      apply_zone_modifiers(&frame, &codec->config, codec->framenum);

Legend:
Removed from v.1107  
changed lines
  Added in v.1267

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