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

Side by Side Diff: source/libvpx/vp9/vp9_cx_iface.c

Issue 415333002: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_svc_layercontext.c ('k') | source/libvpx/vp9/vp9_dx_iface.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 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 RANGE_CHECK_HI(cfg, rc_resize_down_thresh, 100); 169 RANGE_CHECK_HI(cfg, rc_resize_down_thresh, 100);
170 RANGE_CHECK(cfg, g_pass, VPX_RC_ONE_PASS, VPX_RC_LAST_PASS); 170 RANGE_CHECK(cfg, g_pass, VPX_RC_ONE_PASS, VPX_RC_LAST_PASS);
171 171
172 if (cfg->rc_resize_allowed == 1) { 172 if (cfg->rc_resize_allowed == 1) {
173 RANGE_CHECK(cfg, rc_scaled_width, 1, cfg->g_w); 173 RANGE_CHECK(cfg, rc_scaled_width, 1, cfg->g_w);
174 RANGE_CHECK(cfg, rc_scaled_height, 1, cfg->g_h); 174 RANGE_CHECK(cfg, rc_scaled_height, 1, cfg->g_h);
175 } 175 }
176 176
177 RANGE_CHECK(cfg, ss_number_layers, 1, VPX_SS_MAX_LAYERS); 177 RANGE_CHECK(cfg, ss_number_layers, 1, VPX_SS_MAX_LAYERS);
178 178
179 #ifdef CONFIG_SPATIAL_SVC 179 #if CONFIG_SPATIAL_SVC
180 if (cfg->ss_number_layers > 1) { 180 if (cfg->ss_number_layers > 1) {
181 unsigned int i, alt_ref_sum = 0; 181 unsigned int i, alt_ref_sum = 0;
182 for (i = 0; i < cfg->ss_number_layers; ++i) { 182 for (i = 0; i < cfg->ss_number_layers; ++i) {
183 if (cfg->ss_enable_auto_alt_ref[i]) 183 if (cfg->ss_enable_auto_alt_ref[i])
184 ++alt_ref_sum; 184 ++alt_ref_sum;
185 } 185 }
186 if (alt_ref_sum > REF_FRAMES - cfg->ss_number_layers) 186 if (alt_ref_sum > REF_FRAMES - cfg->ss_number_layers)
187 ERROR("Not enough ref buffers for svc alt ref frames"); 187 ERROR("Not enough ref buffers for svc alt ref frames");
188 } 188 }
189 #endif 189 #endif
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 oxcf->aq_mode = extra_cfg->aq_mode; 396 oxcf->aq_mode = extra_cfg->aq_mode;
397 397
398 oxcf->frame_periodic_boost = extra_cfg->frame_periodic_boost; 398 oxcf->frame_periodic_boost = extra_cfg->frame_periodic_boost;
399 399
400 oxcf->ss_number_layers = cfg->ss_number_layers; 400 oxcf->ss_number_layers = cfg->ss_number_layers;
401 401
402 if (oxcf->ss_number_layers > 1) { 402 if (oxcf->ss_number_layers > 1) {
403 int i; 403 int i;
404 for (i = 0; i < VPX_SS_MAX_LAYERS; ++i) { 404 for (i = 0; i < VPX_SS_MAX_LAYERS; ++i) {
405 oxcf->ss_target_bitrate[i] = 1000 * cfg->ss_target_bitrate[i]; 405 oxcf->ss_target_bitrate[i] = 1000 * cfg->ss_target_bitrate[i];
406 #ifdef CONFIG_SPATIAL_SVC 406 #if CONFIG_SPATIAL_SVC
407 oxcf->ss_play_alternate[i] = cfg->ss_enable_auto_alt_ref[i]; 407 oxcf->ss_play_alternate[i] = cfg->ss_enable_auto_alt_ref[i];
408 #endif 408 #endif
409 } 409 }
410 } else if (oxcf->ss_number_layers == 1) { 410 } else if (oxcf->ss_number_layers == 1) {
411 oxcf->ss_target_bitrate[0] = (int)oxcf->target_bandwidth; 411 oxcf->ss_target_bitrate[0] = (int)oxcf->target_bandwidth;
412 } 412 }
413 413
414 oxcf->ts_number_layers = cfg->ts_number_layers; 414 oxcf->ts_number_layers = cfg->ts_number_layers;
415 415
416 if (oxcf->ts_number_layers > 1) { 416 if (oxcf->ts_number_layers > 1) {
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 881
882 while (cx_data_sz >= ctx->cx_data_sz / 2 && 882 while (cx_data_sz >= ctx->cx_data_sz / 2 &&
883 -1 != vp9_get_compressed_data(ctx->cpi, &lib_flags, &size, 883 -1 != vp9_get_compressed_data(ctx->cpi, &lib_flags, &size,
884 cx_data, &dst_time_stamp, 884 cx_data, &dst_time_stamp,
885 &dst_end_time_stamp, !img)) { 885 &dst_end_time_stamp, !img)) {
886 if (size) { 886 if (size) {
887 vpx_codec_pts_t round, delta; 887 vpx_codec_pts_t round, delta;
888 vpx_codec_cx_pkt_t pkt; 888 vpx_codec_cx_pkt_t pkt;
889 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi; 889 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi;
890 890
891 #ifdef CONFIG_SPATIAL_SVC 891 #if CONFIG_SPATIAL_SVC
892 if (cpi->use_svc && cpi->svc.number_temporal_layers == 1) 892 if (cpi->use_svc && cpi->svc.number_temporal_layers == 1)
893 cpi->svc.layer_context[cpi->svc.spatial_layer_id].layer_size += size; 893 cpi->svc.layer_context[cpi->svc.spatial_layer_id].layer_size += size;
894 #endif 894 #endif
895 895
896 // Pack invisible frames with the next visible frame 896 // Pack invisible frames with the next visible frame
897 if (cpi->common.show_frame == 0 897 if (cpi->common.show_frame == 0
898 #ifdef CONFIG_SPATIAL_SVC 898 #if CONFIG_SPATIAL_SVC
899 || (cpi->use_svc && cpi->svc.number_temporal_layers == 1 && 899 || (cpi->use_svc && cpi->svc.number_temporal_layers == 1 &&
900 cpi->svc.spatial_layer_id < cpi->svc.number_spatial_layers - 1) 900 cpi->svc.spatial_layer_id < cpi->svc.number_spatial_layers - 1)
901 #endif 901 #endif
902 ) { 902 ) {
903 if (ctx->pending_cx_data == 0) 903 if (ctx->pending_cx_data == 0)
904 ctx->pending_cx_data = cx_data; 904 ctx->pending_cx_data = cx_data;
905 ctx->pending_cx_data_sz += size; 905 ctx->pending_cx_data_sz += size;
906 ctx->pending_frame_sizes[ctx->pending_frame_count++] = size; 906 ctx->pending_frame_sizes[ctx->pending_frame_count++] = size;
907 ctx->pending_frame_magnitude |= size; 907 ctx->pending_frame_magnitude |= size;
908 cx_data += size; 908 cx_data += size;
909 cx_data_sz -= size; 909 cx_data_sz -= size;
910 continue; 910 continue;
911 } 911 }
912 912
913 // Add the frame packet to the list of returned packets. 913 // Add the frame packet to the list of returned packets.
914 round = (vpx_codec_pts_t)10000000 * ctx->cfg.g_timebase.num / 2 - 1; 914 round = (vpx_codec_pts_t)10000000 * ctx->cfg.g_timebase.num / 2 - 1;
915 delta = (dst_end_time_stamp - dst_time_stamp); 915 delta = (dst_end_time_stamp - dst_time_stamp);
916 pkt.kind = VPX_CODEC_CX_FRAME_PKT; 916 pkt.kind = VPX_CODEC_CX_FRAME_PKT;
917 pkt.data.frame.pts = 917 pkt.data.frame.pts =
918 (dst_time_stamp * ctx->cfg.g_timebase.den + round) 918 (dst_time_stamp * ctx->cfg.g_timebase.den + round)
919 / ctx->cfg.g_timebase.num / 10000000; 919 / ctx->cfg.g_timebase.num / 10000000;
920 pkt.data.frame.duration = (unsigned long) 920 pkt.data.frame.duration = (unsigned long)
921 ((delta * ctx->cfg.g_timebase.den + round) 921 ((delta * ctx->cfg.g_timebase.den + round)
922 / ctx->cfg.g_timebase.num / 10000000); 922 / ctx->cfg.g_timebase.num / 10000000);
923 pkt.data.frame.flags = lib_flags << 16; 923 pkt.data.frame.flags = lib_flags << 16;
924 924
925 if (lib_flags & FRAMEFLAGS_KEY 925 if (lib_flags & FRAMEFLAGS_KEY
926 #ifdef CONFIG_SPATIAL_SVC 926 #if CONFIG_SPATIAL_SVC
927 || (cpi->use_svc && cpi->svc.number_temporal_layers == 1 && 927 || (cpi->use_svc && cpi->svc.number_temporal_layers == 1 &&
928 cpi->svc.layer_context[0].is_key_frame) 928 cpi->svc.layer_context[0].is_key_frame)
929 #endif 929 #endif
930 ) 930 )
931 pkt.data.frame.flags |= VPX_FRAME_IS_KEY; 931 pkt.data.frame.flags |= VPX_FRAME_IS_KEY;
932 932
933 if (cpi->common.show_frame == 0) { 933 if (cpi->common.show_frame == 0) {
934 pkt.data.frame.flags |= VPX_FRAME_IS_INVISIBLE; 934 pkt.data.frame.flags |= VPX_FRAME_IS_INVISIBLE;
935 935
936 // This timestamp should be as close as possible to the 936 // This timestamp should be as close as possible to the
(...skipping 21 matching lines...) Expand all
958 ctx->pending_frame_count = 0; 958 ctx->pending_frame_count = 0;
959 ctx->pending_frame_magnitude = 0; 959 ctx->pending_frame_magnitude = 0;
960 } else { 960 } else {
961 pkt.data.frame.buf = cx_data; 961 pkt.data.frame.buf = cx_data;
962 pkt.data.frame.sz = size; 962 pkt.data.frame.sz = size;
963 } 963 }
964 pkt.data.frame.partition_id = -1; 964 pkt.data.frame.partition_id = -1;
965 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt); 965 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
966 cx_data += size; 966 cx_data += size;
967 cx_data_sz -= size; 967 cx_data_sz -= size;
968 #ifdef CONFIG_SPATIAL_SVC 968 #if CONFIG_SPATIAL_SVC
969 if (cpi->use_svc && cpi->svc.number_temporal_layers == 1) { 969 if (cpi->use_svc && cpi->svc.number_temporal_layers == 1) {
970 vpx_codec_cx_pkt_t pkt = {0}; 970 vpx_codec_cx_pkt_t pkt = {0};
971 int i; 971 int i;
972 pkt.kind = VPX_CODEC_SPATIAL_SVC_LAYER_SIZES; 972 pkt.kind = VPX_CODEC_SPATIAL_SVC_LAYER_SIZES;
973 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) { 973 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) {
974 pkt.data.layer_sizes[i] = cpi->svc.layer_context[i].layer_size; 974 pkt.data.layer_sizes[i] = cpi->svc.layer_context[i].layer_size;
975 cpi->svc.layer_context[i].layer_size = 0; 975 cpi->svc.layer_context[i].layer_size = 0;
976 } 976 }
977 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt); 977 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
978 } 978 }
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
1280 50, // rc_two_pass_vbrbias 1280 50, // rc_two_pass_vbrbias
1281 0, // rc_two_pass_vbrmin_section 1281 0, // rc_two_pass_vbrmin_section
1282 2000, // rc_two_pass_vbrmax_section 1282 2000, // rc_two_pass_vbrmax_section
1283 1283
1284 // keyframing settings (kf) 1284 // keyframing settings (kf)
1285 VPX_KF_AUTO, // g_kfmode 1285 VPX_KF_AUTO, // g_kfmode
1286 0, // kf_min_dist 1286 0, // kf_min_dist
1287 9999, // kf_max_dist 1287 9999, // kf_max_dist
1288 1288
1289 VPX_SS_DEFAULT_LAYERS, // ss_number_layers 1289 VPX_SS_DEFAULT_LAYERS, // ss_number_layers
1290 #ifdef CONFIG_SPATIAL_SVC 1290 #if CONFIG_SPATIAL_SVC
1291 {0}, 1291 {0},
1292 #endif 1292 #endif
1293 {0}, // ss_target_bitrate 1293 {0}, // ss_target_bitrate
1294 1, // ts_number_layers 1294 1, // ts_number_layers
1295 {0}, // ts_target_bitrate 1295 {0}, // ts_target_bitrate
1296 {0}, // ts_rate_decimator 1296 {0}, // ts_rate_decimator
1297 0, // ts_periodicity 1297 0, // ts_periodicity
1298 {0}, // ts_layer_id 1298 {0}, // ts_layer_id
1299 #if VPX_ENCODER_ABI_VERSION == (1 + VPX_CODEC_ABI_VERSION) 1299 #if VPX_ENCODER_ABI_VERSION == (1 + VPX_CODEC_ABI_VERSION)
1300 "vp8.fpf" // first pass filename 1300 "vp8.fpf" // first pass filename
(...skipping 25 matching lines...) Expand all
1326 { // NOLINT 1326 { // NOLINT
1327 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t 1327 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t
1328 encoder_encode, // vpx_codec_encode_fn_t 1328 encoder_encode, // vpx_codec_encode_fn_t
1329 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t 1329 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t
1330 encoder_set_config, // vpx_codec_enc_config_set_fn_t 1330 encoder_set_config, // vpx_codec_enc_config_set_fn_t
1331 NOT_IMPLEMENTED, // vpx_codec_get_global_headers_fn_t 1331 NOT_IMPLEMENTED, // vpx_codec_get_global_headers_fn_t
1332 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t 1332 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t
1333 NOT_IMPLEMENTED // vpx_codec_enc_mr_get_mem_loc_fn_t 1333 NOT_IMPLEMENTED // vpx_codec_enc_mr_get_mem_loc_fn_t
1334 } 1334 }
1335 }; 1335 };
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_svc_layercontext.c ('k') | source/libvpx/vp9/vp9_dx_iface.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698