Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: source/libvpx/vp8/encoder/firstpass.c

Issue 13042014: Description: (Closed) Base URL: https://src.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: libvpx: Pull from upstream Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/libvpx/vp8/encoder/block.h ('k') | source/libvpx/vp8/encoder/mcomp.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 840 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 sizeof(FIRSTPASS_STATS)); 851 sizeof(FIRSTPASS_STATS));
852 output_stats(cpi, cpi->output_pkt_list, &cpi->twopass.this_frame_stats); 852 output_stats(cpi, cpi->output_pkt_list, &cpi->twopass.this_frame_stats);
853 accumulate_stats(&cpi->twopass.total_stats, &fps); 853 accumulate_stats(&cpi->twopass.total_stats, &fps);
854 } 854 }
855 855
856 /* Copy the previous Last Frame into the GF buffer if specific 856 /* Copy the previous Last Frame into the GF buffer if specific
857 * conditions for doing so are met 857 * conditions for doing so are met
858 */ 858 */
859 if ((cm->current_video_frame > 0) && 859 if ((cm->current_video_frame > 0) &&
860 (cpi->twopass.this_frame_stats.pcnt_inter > 0.20) && 860 (cpi->twopass.this_frame_stats.pcnt_inter > 0.20) &&
861 ((cpi->twopass.this_frame_stats.intra_error / cpi->twopass.this_frame_st ats.coded_error) > 2.0)) 861 ((cpi->twopass.this_frame_stats.intra_error /
862 DOUBLE_DIVIDE_CHECK(cpi->twopass.this_frame_stats.coded_error)) >
863 2.0))
862 { 864 {
863 vp8_yv12_copy_frame(lst_yv12, gld_yv12); 865 vp8_yv12_copy_frame(lst_yv12, gld_yv12);
864 } 866 }
865 867
866 /* swap frame pointers so last frame refers to the frame we just 868 /* swap frame pointers so last frame refers to the frame we just
867 * compressed 869 * compressed
868 */ 870 */
869 vp8_swap_yv12_buffer(lst_yv12, new_yv12); 871 vp8_swap_yv12_buffer(lst_yv12, new_yv12);
870 vp8_yv12_extend_frame_borders(lst_yv12); 872 vp8_yv12_extend_frame_borders(lst_yv12);
871 873
(...skipping 1237 matching lines...) Expand 10 before | Expand all | Expand 10 after
2109 { 2111 {
2110 cpi->twopass.kf_group_bits = 2112 cpi->twopass.kf_group_bits =
2111 (cpi->twopass.bits_left > 0) ? cpi->twopass.bits_left : 0; 2113 (cpi->twopass.bits_left > 0) ? cpi->twopass.bits_left : 0;
2112 } 2114 }
2113 2115
2114 /* Calculate the bits to be allocated to the group as a whole */ 2116 /* Calculate the bits to be allocated to the group as a whole */
2115 if ((cpi->twopass.kf_group_bits > 0) && 2117 if ((cpi->twopass.kf_group_bits > 0) &&
2116 (cpi->twopass.kf_group_error_left > 0)) 2118 (cpi->twopass.kf_group_error_left > 0))
2117 { 2119 {
2118 cpi->twopass.gf_group_bits = 2120 cpi->twopass.gf_group_bits =
2119 (int)((double)cpi->twopass.kf_group_bits * 2121 (int64_t)(cpi->twopass.kf_group_bits *
2120 (gf_group_err / (double)cpi->twopass.kf_group_error_left)); 2122 (gf_group_err / cpi->twopass.kf_group_error_left));
2121 } 2123 }
2122 else 2124 else
2123 cpi->twopass.gf_group_bits = 0; 2125 cpi->twopass.gf_group_bits = 0;
2124 2126
2125 cpi->twopass.gf_group_bits = (int)( 2127 cpi->twopass.gf_group_bits =
2126 (cpi->twopass.gf_group_bits < 0) 2128 (cpi->twopass.gf_group_bits < 0)
2127 ? 0 2129 ? 0
2128 : (cpi->twopass.gf_group_bits > cpi->twopass.kf_group_bits) 2130 : (cpi->twopass.gf_group_bits > cpi->twopass.kf_group_bits)
2129 ? cpi->twopass.kf_group_bits : cpi->twopass.gf_group_bits); 2131 ? cpi->twopass.kf_group_bits : cpi->twopass.gf_group_bits;
2130 2132
2131 /* Clip cpi->twopass.gf_group_bits based on user supplied data rate 2133 /* Clip cpi->twopass.gf_group_bits based on user supplied data rate
2132 * variability limit (cpi->oxcf.two_pass_vbrmax_section) 2134 * variability limit (cpi->oxcf.two_pass_vbrmax_section)
2133 */ 2135 */
2134 if (cpi->twopass.gf_group_bits > max_bits * cpi->baseline_gf_interval) 2136 if (cpi->twopass.gf_group_bits >
2135 cpi->twopass.gf_group_bits = max_bits * cpi->baseline_gf_interval; 2137 (int64_t)max_bits * cpi->baseline_gf_interval)
2138 cpi->twopass.gf_group_bits =
2139 (int64_t)max_bits * cpi->baseline_gf_interval;
2136 2140
2137 /* Reset the file position */ 2141 /* Reset the file position */
2138 reset_fpf_position(cpi, start_pos); 2142 reset_fpf_position(cpi, start_pos);
2139 2143
2140 /* Update the record of error used so far (only done once per gf group) */ 2144 /* Update the record of error used so far (only done once per gf group) */
2141 cpi->twopass.modified_error_used += gf_group_err; 2145 cpi->twopass.modified_error_used += gf_group_err;
2142 2146
2143 /* Assign bits to the arf or gf. */ 2147 /* Assign bits to the arf or gf. */
2144 for (i = 0; i <= (cpi->source_alt_ref_pending && cpi->common.frame_type != K EY_FRAME); i++) { 2148 for (i = 0; i <= (cpi->source_alt_ref_pending && cpi->common.frame_type != K EY_FRAME); i++) {
2145 int Boost; 2149 int Boost;
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
2439 2443
2440 /* Special case: Error error_resilient_mode mode does not make much 2444 /* Special case: Error error_resilient_mode mode does not make much
2441 * sense for two pass but with its current meaning but this code is 2445 * sense for two pass but with its current meaning but this code is
2442 * designed to stop outlandish behaviour if someone does set it when 2446 * designed to stop outlandish behaviour if someone does set it when
2443 * using two pass. It effectively disables GF groups. This is 2447 * using two pass. It effectively disables GF groups. This is
2444 * temporary code till we decide what should really happen in this 2448 * temporary code till we decide what should really happen in this
2445 * case. 2449 * case.
2446 */ 2450 */
2447 if (cpi->oxcf.error_resilient_mode) 2451 if (cpi->oxcf.error_resilient_mode)
2448 { 2452 {
2449 cpi->twopass.gf_group_bits = (int)cpi->twopass.kf_group_bits; 2453 cpi->twopass.gf_group_bits = cpi->twopass.kf_group_bits;
2450 cpi->twopass.gf_group_error_left = 2454 cpi->twopass.gf_group_error_left =
2451 (int)cpi->twopass.kf_group_error_left; 2455 (int)cpi->twopass.kf_group_error_left;
2452 cpi->baseline_gf_interval = cpi->twopass.frames_to_key; 2456 cpi->baseline_gf_interval = cpi->twopass.frames_to_key;
2453 cpi->frames_till_gf_update_due = cpi->baseline_gf_interval; 2457 cpi->frames_till_gf_update_due = cpi->baseline_gf_interval;
2454 cpi->source_alt_ref_pending = 0; 2458 cpi->source_alt_ref_pending = 0;
2455 } 2459 }
2456 2460
2457 } 2461 }
2458 2462
2459 /* Is this a GF / ARF (Note that a KF is always also a GF) */ 2463 /* Is this a GF / ARF (Note that a KF is always also a GF) */
(...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after
3352 } 3356 }
3353 3357
3354 if ((cpi->common.Width != new_width) || (cpi->common.Height != new_heigh t)) 3358 if ((cpi->common.Width != new_width) || (cpi->common.Height != new_heigh t))
3355 { 3359 {
3356 cpi->common.Width = new_width; 3360 cpi->common.Width = new_width;
3357 cpi->common.Height = new_height; 3361 cpi->common.Height = new_height;
3358 vp8_alloc_compressor_data(cpi); 3362 vp8_alloc_compressor_data(cpi);
3359 } 3363 }
3360 } 3364 }
3361 } 3365 }
OLDNEW
« no previous file with comments | « source/libvpx/vp8/encoder/block.h ('k') | source/libvpx/vp8/encoder/mcomp.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698