From ccdbbe0a2f9af8b74ca98e58f966f0425a02232c Mon Sep 17 00:00:00 2001 From: Marco Paniconi Date: Thu, 27 Mar 2014 14:15:37 -0700 Subject: vpx_temporal_pattern_encoder: add speed setting to command line. Change-Id: I0abf4401b37e2f786a958c8eb0fb40640f7fc140 --- examples/vpx_temporal_scalable_patterns.c | 37 ++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/examples/vpx_temporal_scalable_patterns.c b/examples/vpx_temporal_scalable_patterns.c index b25953f35..3a4f05b92 100644 --- a/examples/vpx_temporal_scalable_patterns.c +++ b/examples/vpx_temporal_scalable_patterns.c @@ -437,6 +437,7 @@ int main(int argc, char **argv) { vpx_codec_err_t res; unsigned int width; unsigned int height; + int speed; int frame_avail; int got_data; int flags = 0; @@ -457,7 +458,7 @@ int main(int argc, char **argv) { // Check usage and arguments. if (argc < 11) { die("Usage: %s " - " " + " " " ... \n", argv[0]); } @@ -473,12 +474,12 @@ int main(int argc, char **argv) { die("Invalid resolution: %d x %d", width, height); } - layering_mode = strtol(argv[9], NULL, 0); + layering_mode = strtol(argv[10], NULL, 0); if (layering_mode < 0 || layering_mode > 12) { - die("Invalid mode (0..12) %s", argv[9]); + die("Invalid layering mode (0..12) %s", argv[10]); } - if (argc != 10 + mode_to_num_layers[layering_mode]) { + if (argc != 11 + mode_to_num_layers[layering_mode]) { die("Invalid number of arguments"); } @@ -501,12 +502,17 @@ int main(int argc, char **argv) { cfg.g_timebase.num = strtol(argv[6], NULL, 0); cfg.g_timebase.den = strtol(argv[7], NULL, 0); - for (i = 10; (int)i < 10 + mode_to_num_layers[layering_mode]; ++i) { - cfg.ts_target_bitrate[i - 10] = strtol(argv[i], NULL, 0); + speed = strtol(argv[8], NULL, 0); + if (speed < 0) { + die("Invalid speed setting: must be positive"); + } + + for (i = 11; (int)i < 11 + mode_to_num_layers[layering_mode]; ++i) { + cfg.ts_target_bitrate[i - 11] = strtol(argv[i], NULL, 0); } // Real time parameters. - cfg.rc_dropframe_thresh = strtol(argv[8], NULL, 0); + cfg.rc_dropframe_thresh = strtol(argv[9], NULL, 0); cfg.rc_end_usage = VPX_CBR; cfg.rc_resize_allowed = 0; cfg.rc_min_quantizer = 2; @@ -563,14 +569,15 @@ int main(int argc, char **argv) { if (vpx_codec_enc_init(&codec, encoder->interface(), &cfg, 0)) die_codec(&codec, "Failed to initialize encoder"); - vpx_codec_control(&codec, VP8E_SET_CPUUSED, -6); - vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, 1); - if (strncmp(encoder->name, "vp9", 3) == 0) { - vpx_codec_control(&codec, VP8E_SET_CPUUSED, 5); - vpx_codec_control(&codec, VP9E_SET_AQ_MODE, 3); - vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, 0); - if (vpx_codec_control(&codec, VP9E_SET_SVC, 1)) { - die_codec(&codec, "Failed to set SVC"); + if (strncmp(encoder->name, "vp8", 3) == 0) { + vpx_codec_control(&codec, VP8E_SET_CPUUSED, -speed); + vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, 1); + } else if (strncmp(encoder->name, "vp9", 3) == 0) { + vpx_codec_control(&codec, VP8E_SET_CPUUSED, speed); + vpx_codec_control(&codec, VP9E_SET_AQ_MODE, 3); + vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, 0); + if (vpx_codec_control(&codec, VP9E_SET_SVC, 1)) { + die_codec(&codec, "Failed to set SVC"); } } vpx_codec_control(&codec, VP8E_SET_STATIC_THRESHOLD, 1); -- cgit v1.2.3