[svn] / trunk / vfw / src / 2pass.c Repository:
ViewVC logotype

Diff of /trunk/vfw/src/2pass.c

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

revision 341, Thu Jul 25 00:43:19 2002 UTC revision 342, Fri Jul 26 19:58:22 2002 UTC
# Line 163  Line 163 
163                                          {                                          {
164                                                  i_boost_total = twopass->nns2.bytes * codec->config.keyframe_boost / 100;                                                  i_boost_total = twopass->nns2.bytes * codec->config.keyframe_boost / 100;
165                                                  i_total += twopass->nns2.bytes;                                                  i_total += twopass->nns2.bytes;
166                                                    twopass->keyframe_locations[i_frames] = frames;
167                                                  ++i_frames;                                                  ++i_frames;
168                                          }                                          }
169    
# Line 174  Line 175 
175    
176                                  ++frames;                                  ++frames;
177                          }                          }
178                            twopass->keyframe_locations[i_frames] = frames;
179    
180                          twopass->movie_curve = ((double)(total_ext + i_boost_total) / total_ext);                          twopass->movie_curve = ((double)(total_ext + i_boost_total) / total_ext);
181                          twopass->average_frame = ((double)(total_ext - i_total) / (frames - credits_frames - i_frames) / twopass->movie_curve);                          twopass->average_frame = ((double)(total_ext - i_total) / (frames - credits_frames - i_frames) / twopass->movie_curve);
# Line 371  Line 373 
373                                  {                                  {
374                                          i_total += twopass->nns1.bytes + twopass->nns1.bytes * codec->config.keyframe_boost / 100;                                          i_total += twopass->nns1.bytes + twopass->nns1.bytes * codec->config.keyframe_boost / 100;
375                                          total += twopass->nns1.bytes * codec->config.keyframe_boost / 100;                                          total += twopass->nns1.bytes * codec->config.keyframe_boost / 100;
376                                            twopass->keyframe_locations[i_frames] = frames;
377                                          ++i_frames;                                          ++i_frames;
378                                  }                                  }
379    
# Line 378  Line 381 
381    
382                                  ++frames;                                  ++frames;
383                          }                          }
384                            twopass->keyframe_locations[i_frames] = frames;
385    
386                          // compensate for avi frame overhead                          // compensate for avi frame overhead
387                          desired -= frames * 24;                          desired -= frames * 24;
# Line 682  Line 686 
686                  }                  }
687    
688                  twopass->overflow = 0;                  twopass->overflow = 0;
689                    twopass->KFoverflow = 0;
690                    twopass->KFoverflow_partial = 0;
691                    twopass->KF_idx = 1;
692    
693                  break;                  break;
694          }          }
# Line 1050  Line 1057 
1057    
1058          NNSTATS nns1;          NNSTATS nns1;
1059          DWORD wrote;          DWORD wrote;
1060          int credits_pos;          int credits_pos, tempdiv;
1061          char* quant_type;          char* quant_type;
1062    
1063          if (codec->framenum == 0)          if (codec->framenum == 0)
# Line 1097  Line 1104 
1104    
1105          case DLG_MODE_2PASS_2_INT :          case DLG_MODE_2PASS_2_INT :
1106          case DLG_MODE_2PASS_2_EXT :          case DLG_MODE_2PASS_2_EXT :
                 codec->twopass.overflow += codec->twopass.desired_bytes2 - frame->length;  
   
1107                  credits_pos = codec_is_in_credits(&codec->config, codec->framenum);                  credits_pos = codec_is_in_credits(&codec->config, codec->framenum);
1108                  if (!credits_pos)                  if (!credits_pos)
1109                    {
1110                          codec->twopass.quant_count[frame->quant]++;                          codec->twopass.quant_count[frame->quant]++;
1111                            if ((codec->twopass.nns1.quant & NNSTATS_KEYFRAME))
1112                            {
1113                                    codec->twopass.overflow += codec->twopass.KFoverflow;
1114                                    codec->twopass.KFoverflow = codec->twopass.desired_bytes2 - frame->length;
1115    
1116                                    tempdiv = (codec->twopass.keyframe_locations[codec->twopass.KF_idx] -
1117                                            codec->twopass.keyframe_locations[codec->twopass.KF_idx - 1]);
1118    
1119                                    if (tempdiv > 1)
1120                                    {
1121                                            // non-consecutive keyframes
1122                                            codec->twopass.KFoverflow_partial = codec->twopass.KFoverflow / (tempdiv - 1);
1123                                    }
1124                                    else
1125                                    {
1126                                            // consecutive keyframes
1127                                            codec->twopass.overflow += codec->twopass.KFoverflow;
1128                                            codec->twopass.KFoverflow = 0;
1129                                            codec->twopass.KFoverflow_partial = 0;
1130                                    }
1131                                    codec->twopass.KF_idx++;
1132                            }
1133                            else
1134                            {
1135                                    codec->twopass.overflow += codec->twopass.desired_bytes2 - frame->length +
1136                                            codec->twopass.KFoverflow_partial;
1137                                    codec->twopass.KFoverflow -= codec->twopass.KFoverflow_partial;
1138                            }
1139                    }
1140                    else
1141                    {
1142                            codec->twopass.overflow += codec->twopass.desired_bytes2 - frame->length;
1143    
1144                            // ugly fix for credits..
1145                            codec->twopass.overflow += codec->twopass.KFoverflow;
1146                            codec->twopass.KFoverflow = 0;
1147                            codec->twopass.KFoverflow_partial = 0;
1148                            // end of ugly fix.
1149                    }
1150    
1151                  DEBUG2ND(frame->quant, quant_type, frame->intra, codec->twopass.bytes1, codec->twopass.desired_bytes2, frame->length, codec->twopass.overflow, credits_pos)                  DEBUG2ND(frame->quant, quant_type, frame->intra, codec->twopass.bytes1, codec->twopass.desired_bytes2, frame->length, codec->twopass.overflow, credits_pos)
1152                  break;                  break;

Legend:
Removed from v.341  
changed lines
  Added in v.342

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