| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 | 52 |
| 53 static int kfboost_qadjust(int qindex) { | 53 static int kfboost_qadjust(int qindex) { |
| 54 const double q = vp9_convert_qindex_to_q(qindex); | 54 const double q = vp9_convert_qindex_to_q(qindex); |
| 55 return (int)((0.00000973 * q * q * q) + | 55 return (int)((0.00000973 * q * q * q) + |
| 56 (-0.00613 * q * q) + | 56 (-0.00613 * q * q) + |
| 57 (1.316 * q) + 121.2); | 57 (1.316 * q) + 121.2); |
| 58 } | 58 } |
| 59 | 59 |
| 60 int vp9_bits_per_mb(FRAME_TYPE frame_type, int qindex, | 60 int vp9_bits_per_mb(FRAME_TYPE frame_type, int qindex, |
| 61 double correction_factor) { | 61 double correction_factor) { |
| 62 | |
| 63 const double q = vp9_convert_qindex_to_q(qindex); | 62 const double q = vp9_convert_qindex_to_q(qindex); |
| 64 int enumerator = frame_type == KEY_FRAME ? 4000000 : 2500000; | 63 int enumerator = frame_type == KEY_FRAME ? 3300000 : 2250000; |
| 65 | 64 |
| 66 // q based adjustment to baseline enumerator | 65 // q based adjustment to baseline enumerator |
| 67 enumerator += (int)(enumerator * q) >> 12; | 66 enumerator += (int)(enumerator * q) >> 12; |
| 68 return (int)(0.5 + (enumerator * correction_factor / q)); | 67 return (int)(0.5 + (enumerator * correction_factor / q)); |
| 69 } | 68 } |
| 70 | 69 |
| 71 void vp9_save_coding_context(VP9_COMP *cpi) { | 70 void vp9_save_coding_context(VP9_COMP *cpi) { |
| 72 CODING_CONTEXT *const cc = &cpi->coding_context; | 71 CODING_CONTEXT *const cc = &cpi->coding_context; |
| 73 VP9_COMMON *cm = &cpi->common; | 72 VP9_COMMON *cm = &cpi->common; |
| 74 | 73 |
| 75 // Stores a snapshot of key state variables which can subsequently be | 74 // Stores a snapshot of key state variables which can subsequently be |
| 76 // restored with a call to vp9_restore_coding_context. These functions are | 75 // restored with a call to vp9_restore_coding_context. These functions are |
| 77 // intended for use in a re-code loop in vp9_compress_frame where the | 76 // intended for use in a re-code loop in vp9_compress_frame where the |
| 78 // quantizer value is adjusted between loop iterations. | 77 // quantizer value is adjusted between loop iterations. |
| 79 | |
| 80 cc->nmvc = cm->fc.nmvc; | |
| 81 vp9_copy(cc->nmvjointcost, cpi->mb.nmvjointcost); | 78 vp9_copy(cc->nmvjointcost, cpi->mb.nmvjointcost); |
| 82 vp9_copy(cc->nmvcosts, cpi->mb.nmvcosts); | 79 vp9_copy(cc->nmvcosts, cpi->mb.nmvcosts); |
| 83 vp9_copy(cc->nmvcosts_hp, cpi->mb.nmvcosts_hp); | 80 vp9_copy(cc->nmvcosts_hp, cpi->mb.nmvcosts_hp); |
| 84 | 81 |
| 85 vp9_copy(cc->inter_mode_probs, cm->fc.inter_mode_probs); | |
| 86 | |
| 87 vp9_copy(cc->y_mode_prob, cm->fc.y_mode_prob); | |
| 88 vp9_copy(cc->uv_mode_prob, cm->fc.uv_mode_prob); | |
| 89 vp9_copy(cc->partition_prob, cm->fc.partition_prob); | |
| 90 | |
| 91 vp9_copy(cc->segment_pred_probs, cm->seg.pred_probs); | 82 vp9_copy(cc->segment_pred_probs, cm->seg.pred_probs); |
| 92 | 83 |
| 93 vp9_copy(cc->intra_inter_prob, cm->fc.intra_inter_prob); | |
| 94 vp9_copy(cc->comp_inter_prob, cm->fc.comp_inter_prob); | |
| 95 vp9_copy(cc->single_ref_prob, cm->fc.single_ref_prob); | |
| 96 vp9_copy(cc->comp_ref_prob, cm->fc.comp_ref_prob); | |
| 97 | |
| 98 vpx_memcpy(cpi->coding_context.last_frame_seg_map_copy, | 84 vpx_memcpy(cpi->coding_context.last_frame_seg_map_copy, |
| 99 cm->last_frame_seg_map, (cm->mi_rows * cm->mi_cols)); | 85 cm->last_frame_seg_map, (cm->mi_rows * cm->mi_cols)); |
| 100 | 86 |
| 101 vp9_copy(cc->last_ref_lf_deltas, cm->lf.last_ref_deltas); | 87 vp9_copy(cc->last_ref_lf_deltas, cm->lf.last_ref_deltas); |
| 102 vp9_copy(cc->last_mode_lf_deltas, cm->lf.last_mode_deltas); | 88 vp9_copy(cc->last_mode_lf_deltas, cm->lf.last_mode_deltas); |
| 103 | 89 |
| 104 vp9_copy(cc->coef_probs, cm->fc.coef_probs); | 90 cc->fc = cm->fc; |
| 105 vp9_copy(cc->switchable_interp_prob, cm->fc.switchable_interp_prob); | |
| 106 cc->tx_probs = cm->fc.tx_probs; | |
| 107 vp9_copy(cc->mbskip_probs, cm->fc.mbskip_probs); | |
| 108 } | 91 } |
| 109 | 92 |
| 110 void vp9_restore_coding_context(VP9_COMP *cpi) { | 93 void vp9_restore_coding_context(VP9_COMP *cpi) { |
| 111 CODING_CONTEXT *const cc = &cpi->coding_context; | 94 CODING_CONTEXT *const cc = &cpi->coding_context; |
| 112 VP9_COMMON *cm = &cpi->common; | 95 VP9_COMMON *cm = &cpi->common; |
| 113 | 96 |
| 114 // Restore key state variables to the snapshot state stored in the | 97 // Restore key state variables to the snapshot state stored in the |
| 115 // previous call to vp9_save_coding_context. | 98 // previous call to vp9_save_coding_context. |
| 116 | |
| 117 cm->fc.nmvc = cc->nmvc; | |
| 118 vp9_copy(cpi->mb.nmvjointcost, cc->nmvjointcost); | 99 vp9_copy(cpi->mb.nmvjointcost, cc->nmvjointcost); |
| 119 vp9_copy(cpi->mb.nmvcosts, cc->nmvcosts); | 100 vp9_copy(cpi->mb.nmvcosts, cc->nmvcosts); |
| 120 vp9_copy(cpi->mb.nmvcosts_hp, cc->nmvcosts_hp); | 101 vp9_copy(cpi->mb.nmvcosts_hp, cc->nmvcosts_hp); |
| 121 | 102 |
| 122 vp9_copy(cm->fc.inter_mode_probs, cc->inter_mode_probs); | |
| 123 | |
| 124 vp9_copy(cm->fc.y_mode_prob, cc->y_mode_prob); | |
| 125 vp9_copy(cm->fc.uv_mode_prob, cc->uv_mode_prob); | |
| 126 vp9_copy(cm->fc.partition_prob, cc->partition_prob); | |
| 127 | |
| 128 vp9_copy(cm->seg.pred_probs, cc->segment_pred_probs); | 103 vp9_copy(cm->seg.pred_probs, cc->segment_pred_probs); |
| 129 | 104 |
| 130 vp9_copy(cm->fc.intra_inter_prob, cc->intra_inter_prob); | |
| 131 vp9_copy(cm->fc.comp_inter_prob, cc->comp_inter_prob); | |
| 132 vp9_copy(cm->fc.single_ref_prob, cc->single_ref_prob); | |
| 133 vp9_copy(cm->fc.comp_ref_prob, cc->comp_ref_prob); | |
| 134 | |
| 135 vpx_memcpy(cm->last_frame_seg_map, | 105 vpx_memcpy(cm->last_frame_seg_map, |
| 136 cpi->coding_context.last_frame_seg_map_copy, | 106 cpi->coding_context.last_frame_seg_map_copy, |
| 137 (cm->mi_rows * cm->mi_cols)); | 107 (cm->mi_rows * cm->mi_cols)); |
| 138 | 108 |
| 139 vp9_copy(cm->lf.last_ref_deltas, cc->last_ref_lf_deltas); | 109 vp9_copy(cm->lf.last_ref_deltas, cc->last_ref_lf_deltas); |
| 140 vp9_copy(cm->lf.last_mode_deltas, cc->last_mode_lf_deltas); | 110 vp9_copy(cm->lf.last_mode_deltas, cc->last_mode_lf_deltas); |
| 141 | 111 |
| 142 vp9_copy(cm->fc.coef_probs, cc->coef_probs); | 112 cm->fc = cc->fc; |
| 143 vp9_copy(cm->fc.switchable_interp_prob, cc->switchable_interp_prob); | |
| 144 cm->fc.tx_probs = cc->tx_probs; | |
| 145 vp9_copy(cm->fc.mbskip_probs, cc->mbskip_probs); | |
| 146 } | 113 } |
| 147 | 114 |
| 148 void vp9_setup_key_frame(VP9_COMP *cpi) { | 115 void vp9_setup_key_frame(VP9_COMP *cpi) { |
| 149 VP9_COMMON *cm = &cpi->common; | 116 VP9_COMMON *cm = &cpi->common; |
| 150 | 117 |
| 151 vp9_setup_past_independence(cm); | 118 vp9_setup_past_independence(cm); |
| 152 | 119 |
| 153 // interval before next GF | 120 // interval before next GF |
| 154 cpi->frames_till_gf_update_due = cpi->baseline_gf_interval; | 121 cpi->frames_till_gf_update_due = cpi->baseline_gf_interval; |
| 155 /* All buffers are implicitly updated on key frames. */ | 122 /* All buffers are implicitly updated on key frames. */ |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 if (cpi->refresh_alt_ref_frame) { | 184 if (cpi->refresh_alt_ref_frame) { |
| 218 // Special alt reference frame case | 185 // Special alt reference frame case |
| 219 // Per frame bit target for the alt ref frame | 186 // Per frame bit target for the alt ref frame |
| 220 cpi->per_frame_bandwidth = cpi->twopass.gf_bits; | 187 cpi->per_frame_bandwidth = cpi->twopass.gf_bits; |
| 221 cpi->this_frame_target = cpi->per_frame_bandwidth; | 188 cpi->this_frame_target = cpi->per_frame_bandwidth; |
| 222 } else { | 189 } else { |
| 223 // Normal frames (gf,and inter) | 190 // Normal frames (gf,and inter) |
| 224 cpi->this_frame_target = cpi->per_frame_bandwidth; | 191 cpi->this_frame_target = cpi->per_frame_bandwidth; |
| 225 } | 192 } |
| 226 | 193 |
| 227 // Sanity check that the total sum of adjustments is not above the maximum all
owed | 194 // Check that the total sum of adjustments is not above the maximum allowed. |
| 228 // That is that having allowed for KF and GF penalties we have not pushed the | 195 // That is, having allowed for the KF and GF penalties, we have not pushed |
| 229 // current interframe target to low. If the adjustment we apply here is not ca
pable of recovering | 196 // the current inter-frame target too low. If the adjustment we apply here is |
| 230 // all the extra bits we have spent in the KF or GF then the remainder will ha
ve to be recovered over | 197 // not capable of recovering all the extra bits we have spent in the KF or GF, |
| 231 // a longer time span via other buffer / rate control mechanisms. | 198 // then the remainder will have to be recovered over a longer time span via |
| 199 // other buffer / rate control mechanisms. |
| 232 if (cpi->this_frame_target < min_frame_target) | 200 if (cpi->this_frame_target < min_frame_target) |
| 233 cpi->this_frame_target = min_frame_target; | 201 cpi->this_frame_target = min_frame_target; |
| 234 | 202 |
| 235 if (!cpi->refresh_alt_ref_frame) | 203 if (!cpi->refresh_alt_ref_frame) |
| 236 // Note the baseline target data rate for this inter frame. | 204 // Note the baseline target data rate for this inter frame. |
| 237 cpi->inter_frame_target = cpi->this_frame_target; | 205 cpi->inter_frame_target = cpi->this_frame_target; |
| 238 | 206 |
| 239 // Adjust target frame size for Golden Frames: | 207 // Adjust target frame size for Golden Frames: |
| 240 if (cpi->frames_till_gf_update_due == 0) { | 208 if (cpi->frames_till_gf_update_due == 0) { |
| 241 const int q = (cpi->oxcf.fixed_q < 0) ? cpi->last_q[INTER_FRAME] | 209 const int q = (cpi->oxcf.fixed_q < 0) ? cpi->last_q[INTER_FRAME] |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 } | 258 } |
| 291 | 259 |
| 292 // Work out how big we would have expected the frame to be at this Q given | 260 // Work out how big we would have expected the frame to be at this Q given |
| 293 // the current correction factor. | 261 // the current correction factor. |
| 294 // Stay in double to avoid int overflow when values are large | 262 // Stay in double to avoid int overflow when values are large |
| 295 projected_size_based_on_q = estimate_bits_at_q(cpi->common.frame_type, q, | 263 projected_size_based_on_q = estimate_bits_at_q(cpi->common.frame_type, q, |
| 296 cpi->common.MBs, | 264 cpi->common.MBs, |
| 297 rate_correction_factor); | 265 rate_correction_factor); |
| 298 | 266 |
| 299 // Work out a size correction factor. | 267 // Work out a size correction factor. |
| 300 // if ( cpi->this_frame_target > 0 ) | |
| 301 // correction_factor = (100 * cpi->projected_frame_size) / cpi->this_frame_ta
rget; | |
| 302 if (projected_size_based_on_q > 0) | 268 if (projected_size_based_on_q > 0) |
| 303 correction_factor = (100 * cpi->projected_frame_size) / projected_size_based
_on_q; | 269 correction_factor = |
| 270 (100 * cpi->projected_frame_size) / projected_size_based_on_q; |
| 304 | 271 |
| 305 // More heavily damped adjustment used if we have been oscillating either side
of target | 272 // More heavily damped adjustment used if we have been oscillating either side |
| 273 // of target. |
| 306 switch (damp_var) { | 274 switch (damp_var) { |
| 307 case 0: | 275 case 0: |
| 308 adjustment_limit = 0.75; | 276 adjustment_limit = 0.75; |
| 309 break; | 277 break; |
| 310 case 1: | 278 case 1: |
| 311 adjustment_limit = 0.375; | 279 adjustment_limit = 0.375; |
| 312 break; | 280 break; |
| 313 case 2: | 281 case 2: |
| 314 default: | 282 default: |
| 315 adjustment_limit = 0.25; | 283 adjustment_limit = 0.25; |
| 316 break; | 284 break; |
| 317 } | 285 } |
| 318 | 286 |
| 319 // if ( (correction_factor > 102) && (Q < cpi->active_worst_quality) ) | 287 // if ( (correction_factor > 102) && (Q < cpi->active_worst_quality) ) |
| 320 if (correction_factor > 102) { | 288 if (correction_factor > 102) { |
| 321 // We are not already at the worst allowable quality | 289 // We are not already at the worst allowable quality |
| 322 correction_factor = (int)(100.5 + ((correction_factor - 100) * adjustment_li
mit)); | 290 correction_factor = |
| 323 rate_correction_factor = ((rate_correction_factor * correction_factor) / 100
); | 291 (int)(100 + ((correction_factor - 100) * adjustment_limit)); |
| 292 rate_correction_factor = |
| 293 ((rate_correction_factor * correction_factor) / 100); |
| 324 | 294 |
| 325 // Keep rate_correction_factor within limits | 295 // Keep rate_correction_factor within limits |
| 326 if (rate_correction_factor > MAX_BPB_FACTOR) | 296 if (rate_correction_factor > MAX_BPB_FACTOR) |
| 327 rate_correction_factor = MAX_BPB_FACTOR; | 297 rate_correction_factor = MAX_BPB_FACTOR; |
| 328 } | 298 } else if (correction_factor < 99) { |
| 329 // else if ( (correction_factor < 99) && (Q > cpi->active_best_quality) ) | |
| 330 else if (correction_factor < 99) { | |
| 331 // We are not already at the best allowable quality | 299 // We are not already at the best allowable quality |
| 332 correction_factor = (int)(100.5 - ((100 - correction_factor) * adjustment_li
mit)); | 300 correction_factor = |
| 333 rate_correction_factor = ((rate_correction_factor * correction_factor) / 100
); | 301 (int)(100 - ((100 - correction_factor) * adjustment_limit)); |
| 302 rate_correction_factor = |
| 303 ((rate_correction_factor * correction_factor) / 100); |
| 334 | 304 |
| 335 // Keep rate_correction_factor within limits | 305 // Keep rate_correction_factor within limits |
| 336 if (rate_correction_factor < MIN_BPB_FACTOR) | 306 if (rate_correction_factor < MIN_BPB_FACTOR) |
| 337 rate_correction_factor = MIN_BPB_FACTOR; | 307 rate_correction_factor = MIN_BPB_FACTOR; |
| 338 } | 308 } |
| 339 | 309 |
| 340 if (cpi->common.frame_type == KEY_FRAME) | 310 if (cpi->common.frame_type == KEY_FRAME) { |
| 341 cpi->key_frame_rate_correction_factor = rate_correction_factor; | 311 cpi->key_frame_rate_correction_factor = rate_correction_factor; |
| 342 else { | 312 } else { |
| 343 if (cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) | 313 if (cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) |
| 344 cpi->gf_rate_correction_factor = rate_correction_factor; | 314 cpi->gf_rate_correction_factor = rate_correction_factor; |
| 345 else | 315 else |
| 346 cpi->rate_correction_factor = rate_correction_factor; | 316 cpi->rate_correction_factor = rate_correction_factor; |
| 347 } | 317 } |
| 348 } | 318 } |
| 349 | 319 |
| 350 | 320 |
| 351 int vp9_regulate_q(VP9_COMP *cpi, int target_bits_per_frame) { | 321 int vp9_regulate_q(VP9_COMP *cpi, int target_bits_per_frame) { |
| 352 int q = cpi->active_worst_quality; | 322 int q = cpi->active_worst_quality; |
| 353 | 323 |
| 354 int i; | 324 int i; |
| 355 int last_error = INT_MAX; | 325 int last_error = INT_MAX; |
| 356 int target_bits_per_mb; | 326 int target_bits_per_mb; |
| 357 int bits_per_mb_at_this_q; | 327 int bits_per_mb_at_this_q; |
| 358 double correction_factor; | 328 double correction_factor; |
| 359 | 329 |
| 360 // Select the appropriate correction factor based upon type of frame. | 330 // Select the appropriate correction factor based upon type of frame. |
| 361 if (cpi->common.frame_type == KEY_FRAME) | 331 if (cpi->common.frame_type == KEY_FRAME) { |
| 362 correction_factor = cpi->key_frame_rate_correction_factor; | 332 correction_factor = cpi->key_frame_rate_correction_factor; |
| 363 else { | 333 } else { |
| 364 if (cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) | 334 if (cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) |
| 365 correction_factor = cpi->gf_rate_correction_factor; | 335 correction_factor = cpi->gf_rate_correction_factor; |
| 366 else | 336 else |
| 367 correction_factor = cpi->rate_correction_factor; | 337 correction_factor = cpi->rate_correction_factor; |
| 368 } | 338 } |
| 369 | 339 |
| 370 // Calculate required scaling factor based on target frame size and size of fr
ame produced using previous Q | 340 // Calculate required scaling factor based on target frame size and size of |
| 341 // frame produced using previous Q. |
| 371 if (target_bits_per_frame >= (INT_MAX >> BPER_MB_NORMBITS)) | 342 if (target_bits_per_frame >= (INT_MAX >> BPER_MB_NORMBITS)) |
| 372 target_bits_per_mb = (target_bits_per_frame / cpi->common.MBs) << BPER_MB_NO
RMBITS; // Case where we would overflow int | 343 target_bits_per_mb = |
| 344 (target_bits_per_frame / cpi->common.MBs) |
| 345 << BPER_MB_NORMBITS; // Case where we would overflow int |
| 373 else | 346 else |
| 374 target_bits_per_mb = (target_bits_per_frame << BPER_MB_NORMBITS) / cpi->comm
on.MBs; | 347 target_bits_per_mb = |
| 348 (target_bits_per_frame << BPER_MB_NORMBITS) / cpi->common.MBs; |
| 375 | 349 |
| 376 i = cpi->active_best_quality; | 350 i = cpi->active_best_quality; |
| 377 | 351 |
| 378 do { | 352 do { |
| 379 bits_per_mb_at_this_q = (int)vp9_bits_per_mb(cpi->common.frame_type, i, | 353 bits_per_mb_at_this_q = (int)vp9_bits_per_mb(cpi->common.frame_type, i, |
| 380 correction_factor); | 354 correction_factor); |
| 381 | 355 |
| 382 if (bits_per_mb_at_this_q <= target_bits_per_mb) { | 356 if (bits_per_mb_at_this_q <= target_bits_per_mb) { |
| 383 if ((target_bits_per_mb - bits_per_mb_at_this_q) <= last_error) | 357 if ((target_bits_per_mb - bits_per_mb_at_this_q) <= last_error) |
| 384 q = i; | 358 q = i; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 = cpi->prior_key_frame_distance[i + 1]; | 404 = cpi->prior_key_frame_distance[i + 1]; |
| 431 else | 405 else |
| 432 cpi->prior_key_frame_distance[i] = last_kf_interval; | 406 cpi->prior_key_frame_distance[i] = last_kf_interval; |
| 433 | 407 |
| 434 av_key_frame_frequency += prior_key_frame_weight[i] | 408 av_key_frame_frequency += prior_key_frame_weight[i] |
| 435 * cpi->prior_key_frame_distance[i]; | 409 * cpi->prior_key_frame_distance[i]; |
| 436 total_weight += prior_key_frame_weight[i]; | 410 total_weight += prior_key_frame_weight[i]; |
| 437 } | 411 } |
| 438 | 412 |
| 439 av_key_frame_frequency /= total_weight; | 413 av_key_frame_frequency /= total_weight; |
| 440 | |
| 441 } | 414 } |
| 442 return av_key_frame_frequency; | 415 return av_key_frame_frequency; |
| 443 } | 416 } |
| 444 | 417 |
| 445 | 418 |
| 446 void vp9_adjust_key_frame_context(VP9_COMP *cpi) { | 419 void vp9_adjust_key_frame_context(VP9_COMP *cpi) { |
| 447 // Clear down mmx registers to allow floating point in what follows | 420 // Clear down mmx registers to allow floating point in what follows |
| 448 vp9_clear_system_state(); | 421 vp9_clear_system_state(); |
| 449 | 422 |
| 450 cpi->frames_since_key = 0; | 423 cpi->frames_since_key = 0; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 int vp9_pick_frame_size(VP9_COMP *cpi) { | 467 int vp9_pick_frame_size(VP9_COMP *cpi) { |
| 495 VP9_COMMON *cm = &cpi->common; | 468 VP9_COMMON *cm = &cpi->common; |
| 496 | 469 |
| 497 if (cm->frame_type == KEY_FRAME) | 470 if (cm->frame_type == KEY_FRAME) |
| 498 calc_iframe_target_size(cpi); | 471 calc_iframe_target_size(cpi); |
| 499 else | 472 else |
| 500 calc_pframe_target_size(cpi); | 473 calc_pframe_target_size(cpi); |
| 501 | 474 |
| 502 return 1; | 475 return 1; |
| 503 } | 476 } |
| OLD | NEW |