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

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

Issue 1029663003: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: Created 5 years, 9 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/vp9/encoder/vp9_rdopt.c ('k') | source/libvpx/vpx/vp8cx.h » ('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
11 #include <stdlib.h> 11 #include <stdlib.h>
12 #include <string.h> 12 #include <string.h>
13 13
14 #include "./vpx_config.h" 14 #include "./vpx_config.h"
15 #include "vpx/vpx_codec.h" 15 #include "vpx/vpx_encoder.h"
16 #include "vpx_ports/vpx_once.h" 16 #include "vpx_ports/vpx_once.h"
17 #include "vpx/internal/vpx_codec_internal.h" 17 #include "vpx/internal/vpx_codec_internal.h"
18 #include "./vpx_version.h" 18 #include "./vpx_version.h"
19 #include "vp9/encoder/vp9_encoder.h" 19 #include "vp9/encoder/vp9_encoder.h"
20 #include "vpx/vp8cx.h" 20 #include "vpx/vp8cx.h"
21 #include "vp9/encoder/vp9_firstpass.h" 21 #include "vp9/encoder/vp9_firstpass.h"
22 #include "vp9/vp9_iface_common.h" 22 #include "vp9/vp9_iface_common.h"
23 23
24 struct vp9_extracfg { 24 struct vp9_extracfg {
25 int cpu_used; // available cpu percentage in 1/16 25 int cpu_used; // available cpu percentage in 1/16
(...skipping 1265 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 } 1291 }
1292 return VPX_CODEC_OK; 1292 return VPX_CODEC_OK;
1293 } 1293 }
1294 1294
1295 static vpx_codec_err_t ctrl_set_svc_layer_id(vpx_codec_alg_priv_t *ctx, 1295 static vpx_codec_err_t ctrl_set_svc_layer_id(vpx_codec_alg_priv_t *ctx,
1296 va_list args) { 1296 va_list args) {
1297 vpx_svc_layer_id_t *const data = va_arg(args, vpx_svc_layer_id_t *); 1297 vpx_svc_layer_id_t *const data = va_arg(args, vpx_svc_layer_id_t *);
1298 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi; 1298 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi;
1299 SVC *const svc = &cpi->svc; 1299 SVC *const svc = &cpi->svc;
1300 1300
1301 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
1301 svc->spatial_layer_id = data->spatial_layer_id; 1302 svc->spatial_layer_id = data->spatial_layer_id;
1303 #endif
1302 svc->temporal_layer_id = data->temporal_layer_id; 1304 svc->temporal_layer_id = data->temporal_layer_id;
1303 // Checks on valid layer_id input. 1305 // Checks on valid layer_id input.
1304 if (svc->temporal_layer_id < 0 || 1306 if (svc->temporal_layer_id < 0 ||
1305 svc->temporal_layer_id >= (int)ctx->cfg.ts_number_layers) { 1307 svc->temporal_layer_id >= (int)ctx->cfg.ts_number_layers) {
1306 return VPX_CODEC_INVALID_PARAM; 1308 return VPX_CODEC_INVALID_PARAM;
1307 } 1309 }
1308 if (svc->spatial_layer_id < 0 || 1310 if (svc->spatial_layer_id < 0 ||
1309 svc->spatial_layer_id >= (int)ctx->cfg.ss_number_layers) { 1311 svc->spatial_layer_id >= (int)ctx->cfg.ss_number_layers) {
1310 return VPX_CODEC_INVALID_PARAM; 1312 return VPX_CODEC_INVALID_PARAM;
1311 } 1313 }
1312 return VPX_CODEC_OK; 1314 return VPX_CODEC_OK;
1313 } 1315 }
1314 1316
1315 static vpx_codec_err_t ctrl_get_svc_layer_id(vpx_codec_alg_priv_t *ctx, 1317 static vpx_codec_err_t ctrl_get_svc_layer_id(vpx_codec_alg_priv_t *ctx,
1316 va_list args) { 1318 va_list args) {
1317 vpx_svc_layer_id_t *data = va_arg(args, vpx_svc_layer_id_t *); 1319 vpx_svc_layer_id_t *data = va_arg(args, vpx_svc_layer_id_t *);
1318 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi; 1320 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi;
1319 SVC *const svc = &cpi->svc; 1321 SVC *const svc = &cpi->svc;
1320 1322
1323 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
1321 data->spatial_layer_id = svc->spatial_layer_id; 1324 data->spatial_layer_id = svc->spatial_layer_id;
1325 #endif
1322 data->temporal_layer_id = svc->temporal_layer_id; 1326 data->temporal_layer_id = svc->temporal_layer_id;
1323 1327
1324 return VPX_CODEC_OK; 1328 return VPX_CODEC_OK;
1325 } 1329 }
1326 1330
1327 static vpx_codec_err_t ctrl_set_svc_parameters(vpx_codec_alg_priv_t *ctx, 1331 static vpx_codec_err_t ctrl_set_svc_parameters(vpx_codec_alg_priv_t *ctx,
1328 va_list args) { 1332 va_list args) {
1329 VP9_COMP *const cpi = ctx->cpi; 1333 VP9_COMP *const cpi = ctx->cpi;
1330 vpx_svc_extra_cfg_t *const params = va_arg(args, vpx_svc_extra_cfg_t *); 1334 vpx_svc_extra_cfg_t *const params = va_arg(args, vpx_svc_extra_cfg_t *);
1331 int i; 1335 int i;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1390 {VP8E_SET_TUNING, ctrl_set_tuning}, 1394 {VP8E_SET_TUNING, ctrl_set_tuning},
1391 {VP8E_SET_CQ_LEVEL, ctrl_set_cq_level}, 1395 {VP8E_SET_CQ_LEVEL, ctrl_set_cq_level},
1392 {VP8E_SET_MAX_INTRA_BITRATE_PCT, ctrl_set_rc_max_intra_bitrate_pct}, 1396 {VP8E_SET_MAX_INTRA_BITRATE_PCT, ctrl_set_rc_max_intra_bitrate_pct},
1393 {VP9E_SET_MAX_INTER_BITRATE_PCT, ctrl_set_rc_max_inter_bitrate_pct}, 1397 {VP9E_SET_MAX_INTER_BITRATE_PCT, ctrl_set_rc_max_inter_bitrate_pct},
1394 {VP9E_SET_GF_CBR_BOOST_PCT, ctrl_set_rc_gf_cbr_boost_pct}, 1398 {VP9E_SET_GF_CBR_BOOST_PCT, ctrl_set_rc_gf_cbr_boost_pct},
1395 {VP9E_SET_LOSSLESS, ctrl_set_lossless}, 1399 {VP9E_SET_LOSSLESS, ctrl_set_lossless},
1396 {VP9E_SET_FRAME_PARALLEL_DECODING, ctrl_set_frame_parallel_decoding_mode}, 1400 {VP9E_SET_FRAME_PARALLEL_DECODING, ctrl_set_frame_parallel_decoding_mode},
1397 {VP9E_SET_AQ_MODE, ctrl_set_aq_mode}, 1401 {VP9E_SET_AQ_MODE, ctrl_set_aq_mode},
1398 {VP9E_SET_FRAME_PERIODIC_BOOST, ctrl_set_frame_periodic_boost}, 1402 {VP9E_SET_FRAME_PERIODIC_BOOST, ctrl_set_frame_periodic_boost},
1399 {VP9E_SET_SVC, ctrl_set_svc}, 1403 {VP9E_SET_SVC, ctrl_set_svc},
1404 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
1400 {VP9E_SET_SVC_PARAMETERS, ctrl_set_svc_parameters}, 1405 {VP9E_SET_SVC_PARAMETERS, ctrl_set_svc_parameters},
1401 {VP9E_REGISTER_CX_CALLBACK, ctrl_register_cx_callback}, 1406 {VP9E_REGISTER_CX_CALLBACK, ctrl_register_cx_callback},
1407 #endif
1402 {VP9E_SET_SVC_LAYER_ID, ctrl_set_svc_layer_id}, 1408 {VP9E_SET_SVC_LAYER_ID, ctrl_set_svc_layer_id},
1403 {VP9E_SET_TUNE_CONTENT, ctrl_set_tune_content}, 1409 {VP9E_SET_TUNE_CONTENT, ctrl_set_tune_content},
1404 {VP9E_SET_COLOR_SPACE, ctrl_set_color_space}, 1410 {VP9E_SET_COLOR_SPACE, ctrl_set_color_space},
1405 {VP9E_SET_NOISE_SENSITIVITY, ctrl_set_noise_sensitivity}, 1411 {VP9E_SET_NOISE_SENSITIVITY, ctrl_set_noise_sensitivity},
1406 1412
1407 // Getters 1413 // Getters
1408 {VP8E_GET_LAST_QUANTIZER, ctrl_get_quantizer}, 1414 {VP8E_GET_LAST_QUANTIZER, ctrl_get_quantizer},
1409 {VP8E_GET_LAST_QUANTIZER_64, ctrl_get_quantizer64}, 1415 {VP8E_GET_LAST_QUANTIZER_64, ctrl_get_quantizer64},
1410 {VP9_GET_REFERENCE, ctrl_get_reference}, 1416 {VP9_GET_REFERENCE, ctrl_get_reference},
1417 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
1411 {VP9E_GET_SVC_LAYER_ID, ctrl_get_svc_layer_id}, 1418 {VP9E_GET_SVC_LAYER_ID, ctrl_get_svc_layer_id},
1419 #endif
1412 1420
1413 { -1, NULL}, 1421 { -1, NULL},
1414 }; 1422 };
1415 1423
1416 static vpx_codec_enc_cfg_map_t encoder_usage_cfg_map[] = { 1424 static vpx_codec_enc_cfg_map_t encoder_usage_cfg_map[] = {
1417 { 1425 {
1418 0, 1426 0,
1419 { // NOLINT 1427 { // NOLINT
1420 0, // g_usage 1428 0, // g_usage
1421 8, // g_threads 1429 8, // g_threads
(...skipping 13 matching lines...) Expand all
1435 25, // g_lag_in_frames 1443 25, // g_lag_in_frames
1436 1444
1437 0, // rc_dropframe_thresh 1445 0, // rc_dropframe_thresh
1438 0, // rc_resize_allowed 1446 0, // rc_resize_allowed
1439 0, // rc_scaled_width 1447 0, // rc_scaled_width
1440 0, // rc_scaled_height 1448 0, // rc_scaled_height
1441 60, // rc_resize_down_thresold 1449 60, // rc_resize_down_thresold
1442 30, // rc_resize_up_thresold 1450 30, // rc_resize_up_thresold
1443 1451
1444 VPX_VBR, // rc_end_usage 1452 VPX_VBR, // rc_end_usage
1445 #if VPX_ENCODER_ABI_VERSION > (1 + VPX_CODEC_ABI_VERSION)
1446 {NULL, 0}, // rc_twopass_stats_in 1453 {NULL, 0}, // rc_twopass_stats_in
1447 {NULL, 0}, // rc_firstpass_mb_stats_in 1454 {NULL, 0}, // rc_firstpass_mb_stats_in
1448 #endif
1449 256, // rc_target_bandwidth 1455 256, // rc_target_bandwidth
1450 0, // rc_min_quantizer 1456 0, // rc_min_quantizer
1451 63, // rc_max_quantizer 1457 63, // rc_max_quantizer
1452 25, // rc_undershoot_pct 1458 25, // rc_undershoot_pct
1453 25, // rc_overshoot_pct 1459 25, // rc_overshoot_pct
1454 1460
1455 6000, // rc_max_buffer_size 1461 6000, // rc_max_buffer_size
1456 4000, // rc_buffer_initial_size 1462 4000, // rc_buffer_initial_size
1457 5000, // rc_buffer_optimal_size 1463 5000, // rc_buffer_optimal_size
1458 1464
1459 50, // rc_two_pass_vbrbias 1465 50, // rc_two_pass_vbrbias
1460 0, // rc_two_pass_vbrmin_section 1466 0, // rc_two_pass_vbrmin_section
1461 2000, // rc_two_pass_vbrmax_section 1467 2000, // rc_two_pass_vbrmax_section
1462 1468
1463 // keyframing settings (kf) 1469 // keyframing settings (kf)
1464 VPX_KF_AUTO, // g_kfmode 1470 VPX_KF_AUTO, // g_kfmode
1465 0, // kf_min_dist 1471 0, // kf_min_dist
1466 9999, // kf_max_dist 1472 9999, // kf_max_dist
1467 1473
1468 VPX_SS_DEFAULT_LAYERS, // ss_number_layers 1474 VPX_SS_DEFAULT_LAYERS, // ss_number_layers
1469 {0}, 1475 {0},
1470 {0}, // ss_target_bitrate 1476 {0}, // ss_target_bitrate
1471 1, // ts_number_layers 1477 1, // ts_number_layers
1472 {0}, // ts_target_bitrate 1478 {0}, // ts_target_bitrate
1473 {0}, // ts_rate_decimator 1479 {0}, // ts_rate_decimator
1474 0, // ts_periodicity 1480 0, // ts_periodicity
1475 {0}, // ts_layer_id 1481 {0}, // ts_layer_id
1476 #if VPX_ENCODER_ABI_VERSION == (1 + VPX_CODEC_ABI_VERSION)
1477 "vp8.fpf" // first pass filename
1478 #endif
1479 } 1482 }
1480 }, 1483 },
1481 }; 1484 };
1482 1485
1483 #ifndef VERSION_STRING 1486 #ifndef VERSION_STRING
1484 #define VERSION_STRING 1487 #define VERSION_STRING
1485 #endif 1488 #endif
1486 CODEC_INTERFACE(vpx_codec_vp9_cx) = { 1489 CODEC_INTERFACE(vpx_codec_vp9_cx) = {
1487 "WebM Project VP9 Encoder" VERSION_STRING, 1490 "WebM Project VP9 Encoder" VERSION_STRING,
1488 VPX_CODEC_INTERNAL_ABI_VERSION, 1491 VPX_CODEC_INTERNAL_ABI_VERSION,
(...skipping 15 matching lines...) Expand all
1504 1, // 1 cfg map 1507 1, // 1 cfg map
1505 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t 1508 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t
1506 encoder_encode, // vpx_codec_encode_fn_t 1509 encoder_encode, // vpx_codec_encode_fn_t
1507 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t 1510 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t
1508 encoder_set_config, // vpx_codec_enc_config_set_fn_t 1511 encoder_set_config, // vpx_codec_enc_config_set_fn_t
1509 NULL, // vpx_codec_get_global_headers_fn_t 1512 NULL, // vpx_codec_get_global_headers_fn_t
1510 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t 1513 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t
1511 NULL // vpx_codec_enc_mr_get_mem_loc_fn_t 1514 NULL // vpx_codec_enc_mr_get_mem_loc_fn_t
1512 } 1515 }
1513 }; 1516 };
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_rdopt.c ('k') | source/libvpx/vpx/vp8cx.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698