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

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

Issue 111463005: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years 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/vp9_common.mk ('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 20 matching lines...) Expand all
31 unsigned int tile_rows; 31 unsigned int tile_rows;
32 unsigned int arnr_max_frames; 32 unsigned int arnr_max_frames;
33 unsigned int arnr_strength; 33 unsigned int arnr_strength;
34 unsigned int arnr_type; 34 unsigned int arnr_type;
35 unsigned int experimental; 35 unsigned int experimental;
36 vp8e_tuning tuning; 36 vp8e_tuning tuning;
37 unsigned int cq_level; /* constrained quality level */ 37 unsigned int cq_level; /* constrained quality level */
38 unsigned int rc_max_intra_bitrate_pct; 38 unsigned int rc_max_intra_bitrate_pct;
39 unsigned int lossless; 39 unsigned int lossless;
40 unsigned int frame_parallel_decoding_mode; 40 unsigned int frame_parallel_decoding_mode;
41 unsigned int aq_mode;
41 }; 42 };
42 43
43 struct extraconfig_map { 44 struct extraconfig_map {
44 int usage; 45 int usage;
45 struct vp9_extracfg cfg; 46 struct vp9_extracfg cfg;
46 }; 47 };
47 48
48 static const struct extraconfig_map extracfg_map[] = { 49 static const struct extraconfig_map extracfg_map[] = {
49 { 50 {
50 0, 51 0,
51 { // NOLINT 52 { // NOLINT
52 NULL, 53 NULL,
53 0, /* cpu_used */ 54 0, /* cpu_used */
54 1, /* enable_auto_alt_ref */ 55 1, /* enable_auto_alt_ref */
55 0, /* noise_sensitivity */ 56 0, /* noise_sensitivity */
56 0, /* Sharpness */ 57 0, /* Sharpness */
57 0, /* static_thresh */ 58 0, /* static_thresh */
58 0, /* tile_columns */ 59 0, /* tile_columns */
59 0, /* tile_rows */ 60 0, /* tile_rows */
60 7, /* arnr_max_frames */ 61 7, /* arnr_max_frames */
61 5, /* arnr_strength */ 62 5, /* arnr_strength */
62 3, /* arnr_type*/ 63 3, /* arnr_type*/
63 0, /* experimental mode */ 64 0, /* experimental mode */
64 0, /* tuning*/ 65 0, /* tuning*/
65 10, /* cq_level */ 66 10, /* cq_level */
66 0, /* rc_max_intra_bitrate_pct */ 67 0, /* rc_max_intra_bitrate_pct */
67 0, /* lossless */ 68 0, /* lossless */
68 0, /* frame_parallel_decoding_mode */ 69 0, /* frame_parallel_decoding_mode */
70 0, /* aq_mode */
69 } 71 }
70 } 72 }
71 }; 73 };
72 74
73 struct vpx_codec_alg_priv { 75 struct vpx_codec_alg_priv {
74 vpx_codec_priv_t base; 76 vpx_codec_priv_t base;
75 vpx_codec_enc_cfg_t cfg; 77 vpx_codec_enc_cfg_t cfg;
76 struct vp9_extracfg vp8_cfg; 78 struct vp9_extracfg vp8_cfg;
77 VP9_CONFIG oxcf; 79 VP9_CONFIG oxcf;
78 VP9_PTR cpi; 80 VP9_PTR cpi;
79 unsigned char *cx_data; 81 unsigned char *cx_data;
80 unsigned int cx_data_sz; 82 size_t cx_data_sz;
81 unsigned char *pending_cx_data; 83 unsigned char *pending_cx_data;
82 unsigned int pending_cx_data_sz; 84 size_t pending_cx_data_sz;
83 int pending_frame_count; 85 int pending_frame_count;
84 uint32_t pending_frame_sizes[8]; 86 size_t pending_frame_sizes[8];
85 uint32_t pending_frame_magnitude; 87 size_t pending_frame_magnitude;
86 vpx_image_t preview_img; 88 vpx_image_t preview_img;
87 vp8_postproc_cfg_t preview_ppcfg; 89 vp8_postproc_cfg_t preview_ppcfg;
88 vpx_codec_pkt_list_decl(64) pkt_list; 90 vpx_codec_pkt_list_decl(64) pkt_list;
89 unsigned int fixed_kf_cntr; 91 unsigned int fixed_kf_cntr;
90 }; 92 };
91 93
92 static VP9_REFFRAME ref_frame_to_vp9_reframe(vpx_ref_frame_type_t frame) { 94 static VP9_REFFRAME ref_frame_to_vp9_reframe(vpx_ref_frame_type_t frame) {
93 switch (frame) { 95 switch (frame) {
94 case VP8_LAST_FRAME: 96 case VP8_LAST_FRAME:
95 return VP9_LAST_FLAG; 97 return VP9_LAST_FLAG;
96 case VP8_GOLD_FRAME: 98 case VP8_GOLD_FRAME:
97 return VP9_GOLD_FLAG; 99 return VP9_GOLD_FLAG;
98 case VP8_ALTR_FRAME: 100 case VP8_ALTR_FRAME:
99 return VP9_ALT_FLAG; 101 return VP9_ALT_FLAG;
100 } 102 }
101 assert(!"Invalid Reference Frame"); 103 assert(0 && "Invalid Reference Frame");
102 return VP9_LAST_FLAG; 104 return VP9_LAST_FLAG;
103 } 105 }
104 106
105 static vpx_codec_err_t 107 static vpx_codec_err_t
106 update_error_state(vpx_codec_alg_priv_t *ctx, 108 update_error_state(vpx_codec_alg_priv_t *ctx,
107 const struct vpx_internal_error_info *error) { 109 const struct vpx_internal_error_info *error) {
108 vpx_codec_err_t res; 110 vpx_codec_err_t res;
109 111
110 if ((res = error->error_code)) 112 if ((res = error->error_code))
111 ctx->base.err_detail = error->has_detail 113 ctx->base.err_detail = error->has_detail
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 RANGE_CHECK(cfg, g_timebase.num, 1, cfg->g_timebase.den); 152 RANGE_CHECK(cfg, g_timebase.num, 1, cfg->g_timebase.den);
151 RANGE_CHECK_HI(cfg, g_profile, 3); 153 RANGE_CHECK_HI(cfg, g_profile, 3);
152 154
153 RANGE_CHECK_HI(cfg, rc_max_quantizer, 63); 155 RANGE_CHECK_HI(cfg, rc_max_quantizer, 63);
154 RANGE_CHECK_HI(cfg, rc_min_quantizer, cfg->rc_max_quantizer); 156 RANGE_CHECK_HI(cfg, rc_min_quantizer, cfg->rc_max_quantizer);
155 RANGE_CHECK_BOOL(vp8_cfg, lossless); 157 RANGE_CHECK_BOOL(vp8_cfg, lossless);
156 if (vp8_cfg->lossless) { 158 if (vp8_cfg->lossless) {
157 RANGE_CHECK_HI(cfg, rc_max_quantizer, 0); 159 RANGE_CHECK_HI(cfg, rc_max_quantizer, 0);
158 RANGE_CHECK_HI(cfg, rc_min_quantizer, 0); 160 RANGE_CHECK_HI(cfg, rc_min_quantizer, 0);
159 } 161 }
162 RANGE_CHECK(vp8_cfg, aq_mode, 0, AQ_MODES_COUNT - 1);
160 163
161 RANGE_CHECK_HI(cfg, g_threads, 64); 164 RANGE_CHECK_HI(cfg, g_threads, 64);
162 RANGE_CHECK_HI(cfg, g_lag_in_frames, MAX_LAG_BUFFERS); 165 RANGE_CHECK_HI(cfg, g_lag_in_frames, MAX_LAG_BUFFERS);
163 RANGE_CHECK(cfg, rc_end_usage, VPX_VBR, VPX_Q); 166 RANGE_CHECK(cfg, rc_end_usage, VPX_VBR, VPX_Q);
164 RANGE_CHECK_HI(cfg, rc_undershoot_pct, 1000); 167 RANGE_CHECK_HI(cfg, rc_undershoot_pct, 1000);
165 RANGE_CHECK_HI(cfg, rc_overshoot_pct, 1000); 168 RANGE_CHECK_HI(cfg, rc_overshoot_pct, 1000);
166 RANGE_CHECK_HI(cfg, rc_2pass_vbr_bias_pct, 100); 169 RANGE_CHECK_HI(cfg, rc_2pass_vbr_bias_pct, 100);
167 RANGE_CHECK(cfg, kf_mode, VPX_KF_DISABLED, VPX_KF_AUTO); 170 RANGE_CHECK(cfg, kf_mode, VPX_KF_DISABLED, VPX_KF_AUTO);
168 // RANGE_CHECK_BOOL(cfg, g_delete_firstpassfile); 171 // RANGE_CHECK_BOOL(cfg, g_delete_firstpassfile);
169 RANGE_CHECK_BOOL(cfg, rc_resize_allowed); 172 RANGE_CHECK_BOOL(cfg, rc_resize_allowed);
(...skipping 18 matching lines...) Expand all
188 RANGE_CHECK_HI(vp8_cfg, noise_sensitivity, 6); 191 RANGE_CHECK_HI(vp8_cfg, noise_sensitivity, 6);
189 192
190 RANGE_CHECK(vp8_cfg, tile_columns, 0, 6); 193 RANGE_CHECK(vp8_cfg, tile_columns, 0, 6);
191 RANGE_CHECK(vp8_cfg, tile_rows, 0, 2); 194 RANGE_CHECK(vp8_cfg, tile_rows, 0, 2);
192 RANGE_CHECK_HI(vp8_cfg, Sharpness, 7); 195 RANGE_CHECK_HI(vp8_cfg, Sharpness, 7);
193 RANGE_CHECK(vp8_cfg, arnr_max_frames, 0, 15); 196 RANGE_CHECK(vp8_cfg, arnr_max_frames, 0, 15);
194 RANGE_CHECK_HI(vp8_cfg, arnr_strength, 6); 197 RANGE_CHECK_HI(vp8_cfg, arnr_strength, 6);
195 RANGE_CHECK(vp8_cfg, arnr_type, 1, 3); 198 RANGE_CHECK(vp8_cfg, arnr_type, 1, 3);
196 RANGE_CHECK(vp8_cfg, cq_level, 0, 63); 199 RANGE_CHECK(vp8_cfg, cq_level, 0, 63);
197 200
201 // TODO(yaowu): remove this when ssim tuning is implemented for vp9
202 if (vp8_cfg->tuning == VP8_TUNE_SSIM)
203 ERROR("Option --tune=ssim is not currently supported in VP9.");
204
198 if (cfg->g_pass == VPX_RC_LAST_PASS) { 205 if (cfg->g_pass == VPX_RC_LAST_PASS) {
199 size_t packet_sz = sizeof(FIRSTPASS_STATS); 206 size_t packet_sz = sizeof(FIRSTPASS_STATS);
200 int n_packets = (int)(cfg->rc_twopass_stats_in.sz / packet_sz); 207 int n_packets = (int)(cfg->rc_twopass_stats_in.sz / packet_sz);
201 FIRSTPASS_STATS *stats; 208 FIRSTPASS_STATS *stats;
202 209
203 if (!cfg->rc_twopass_stats_in.buf) 210 if (!cfg->rc_twopass_stats_in.buf)
204 ERROR("rc_twopass_stats_in.buf not set."); 211 ERROR("rc_twopass_stats_in.buf not set.");
205 212
206 if (cfg->rc_twopass_stats_in.sz % packet_sz) 213 if (cfg->rc_twopass_stats_in.sz % packet_sz)
207 ERROR("rc_twopass_stats_in.sz indicates truncated packet."); 214 ERROR("rc_twopass_stats_in.sz indicates truncated packet.");
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 oxcf->tuning = vp8_cfg.tuning; 335 oxcf->tuning = vp8_cfg.tuning;
329 336
330 oxcf->tile_columns = vp8_cfg.tile_columns; 337 oxcf->tile_columns = vp8_cfg.tile_columns;
331 oxcf->tile_rows = vp8_cfg.tile_rows; 338 oxcf->tile_rows = vp8_cfg.tile_rows;
332 339
333 oxcf->lossless = vp8_cfg.lossless; 340 oxcf->lossless = vp8_cfg.lossless;
334 341
335 oxcf->error_resilient_mode = cfg.g_error_resilient; 342 oxcf->error_resilient_mode = cfg.g_error_resilient;
336 oxcf->frame_parallel_decoding_mode = vp8_cfg.frame_parallel_decoding_mode; 343 oxcf->frame_parallel_decoding_mode = vp8_cfg.frame_parallel_decoding_mode;
337 344
345 oxcf->aq_mode = vp8_cfg.aq_mode;
346
338 oxcf->ss_number_layers = cfg.ss_number_layers; 347 oxcf->ss_number_layers = cfg.ss_number_layers;
339 /* 348 /*
340 printf("Current VP9 Settings: \n"); 349 printf("Current VP9 Settings: \n");
341 printf("target_bandwidth: %d\n", oxcf->target_bandwidth); 350 printf("target_bandwidth: %d\n", oxcf->target_bandwidth);
342 printf("noise_sensitivity: %d\n", oxcf->noise_sensitivity); 351 printf("noise_sensitivity: %d\n", oxcf->noise_sensitivity);
343 printf("Sharpness: %d\n", oxcf->Sharpness); 352 printf("Sharpness: %d\n", oxcf->Sharpness);
344 printf("cpu_used: %d\n", oxcf->cpu_used); 353 printf("cpu_used: %d\n", oxcf->cpu_used);
345 printf("Mode: %d\n", oxcf->Mode); 354 printf("Mode: %d\n", oxcf->Mode);
346 // printf("delete_first_pass_file: %d\n", oxcf->delete_first_pass_file); 355 // printf("delete_first_pass_file: %d\n", oxcf->delete_first_pass_file);
347 printf("auto_key: %d\n", oxcf->auto_key); 356 printf("auto_key: %d\n", oxcf->auto_key);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 MAP(VP8E_SET_NOISE_SENSITIVITY, xcfg.noise_sensitivity); 444 MAP(VP8E_SET_NOISE_SENSITIVITY, xcfg.noise_sensitivity);
436 MAP(VP8E_SET_SHARPNESS, xcfg.Sharpness); 445 MAP(VP8E_SET_SHARPNESS, xcfg.Sharpness);
437 MAP(VP8E_SET_STATIC_THRESHOLD, xcfg.static_thresh); 446 MAP(VP8E_SET_STATIC_THRESHOLD, xcfg.static_thresh);
438 MAP(VP9E_SET_TILE_COLUMNS, xcfg.tile_columns); 447 MAP(VP9E_SET_TILE_COLUMNS, xcfg.tile_columns);
439 MAP(VP9E_SET_TILE_ROWS, xcfg.tile_rows); 448 MAP(VP9E_SET_TILE_ROWS, xcfg.tile_rows);
440 MAP(VP8E_SET_ARNR_MAXFRAMES, xcfg.arnr_max_frames); 449 MAP(VP8E_SET_ARNR_MAXFRAMES, xcfg.arnr_max_frames);
441 MAP(VP8E_SET_ARNR_STRENGTH, xcfg.arnr_strength); 450 MAP(VP8E_SET_ARNR_STRENGTH, xcfg.arnr_strength);
442 MAP(VP8E_SET_ARNR_TYPE, xcfg.arnr_type); 451 MAP(VP8E_SET_ARNR_TYPE, xcfg.arnr_type);
443 MAP(VP8E_SET_TUNING, xcfg.tuning); 452 MAP(VP8E_SET_TUNING, xcfg.tuning);
444 MAP(VP8E_SET_CQ_LEVEL, xcfg.cq_level); 453 MAP(VP8E_SET_CQ_LEVEL, xcfg.cq_level);
445 MAP(VP9E_SET_MAX_Q, ctx->cfg.rc_max_quantizer);
446 MAP(VP9E_SET_MIN_Q, ctx->cfg.rc_min_quantizer);
447 MAP(VP8E_SET_MAX_INTRA_BITRATE_PCT, xcfg.rc_max_intra_bitrate_pct); 454 MAP(VP8E_SET_MAX_INTRA_BITRATE_PCT, xcfg.rc_max_intra_bitrate_pct);
448 MAP(VP9E_SET_LOSSLESS, xcfg.lossless); 455 MAP(VP9E_SET_LOSSLESS, xcfg.lossless);
449 MAP(VP9E_SET_FRAME_PARALLEL_DECODING, xcfg.frame_parallel_decoding_mode); 456 MAP(VP9E_SET_FRAME_PARALLEL_DECODING, xcfg.frame_parallel_decoding_mode);
457 MAP(VP9E_SET_AQ_MODE, xcfg.aq_mode);
450 } 458 }
451 459
452 res = validate_config(ctx, &ctx->cfg, &xcfg); 460 res = validate_config(ctx, &ctx->cfg, &xcfg);
453 461
454 if (!res) { 462 if (!res) {
455 ctx->vp8_cfg = xcfg; 463 ctx->vp8_cfg = xcfg;
456 set_vp9e_config(&ctx->oxcf, ctx->cfg, ctx->vp8_cfg); 464 set_vp9e_config(&ctx->oxcf, ctx->cfg, ctx->vp8_cfg);
457 vp9_change_config(ctx->cpi, &ctx->oxcf); 465 vp9_change_config(ctx->cpi, &ctx->oxcf);
458 } 466 }
459 467
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 flags |= VPX_EFLAG_FORCE_KF; 701 flags |= VPX_EFLAG_FORCE_KF;
694 ctx->fixed_kf_cntr = 1; 702 ctx->fixed_kf_cntr = 1;
695 } 703 }
696 } 704 }
697 705
698 /* Initialize the encoder instance on the first frame*/ 706 /* Initialize the encoder instance on the first frame*/
699 if (!res && ctx->cpi) { 707 if (!res && ctx->cpi) {
700 unsigned int lib_flags; 708 unsigned int lib_flags;
701 YV12_BUFFER_CONFIG sd; 709 YV12_BUFFER_CONFIG sd;
702 int64_t dst_time_stamp, dst_end_time_stamp; 710 int64_t dst_time_stamp, dst_end_time_stamp;
703 unsigned long size, cx_data_sz; 711 size_t size, cx_data_sz;
704 unsigned char *cx_data; 712 unsigned char *cx_data;
705 713
706 /* Set up internal flags */ 714 /* Set up internal flags */
707 if (ctx->base.init_flags & VPX_CODEC_USE_PSNR) 715 if (ctx->base.init_flags & VPX_CODEC_USE_PSNR)
708 ((VP9_COMP *)ctx->cpi)->b_calculate_psnr = 1; 716 ((VP9_COMP *)ctx->cpi)->b_calculate_psnr = 1;
709 717
710 // if (ctx->base.init_flags & VPX_CODEC_USE_OUTPUT_PARTITION) 718 // if (ctx->base.init_flags & VPX_CODEC_USE_OUTPUT_PARTITION)
711 // ((VP9_COMP *)ctx->cpi)->output_partition = 1; 719 // ((VP9_COMP *)ctx->cpi)->output_partition = 1;
712 720
713 /* Convert API flags to internal codec lib flags */ 721 /* Convert API flags to internal codec lib flags */
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 if (!res) { 1010 if (!res) {
1003 return VPX_CODEC_OK; 1011 return VPX_CODEC_OK;
1004 } else { 1012 } else {
1005 return VPX_CODEC_INVALID_PARAM; 1013 return VPX_CODEC_INVALID_PARAM;
1006 } 1014 }
1007 } else { 1015 } else {
1008 return VPX_CODEC_INVALID_PARAM; 1016 return VPX_CODEC_INVALID_PARAM;
1009 } 1017 }
1010 } 1018 }
1011 1019
1012 static vpx_codec_err_t vp9e_set_width(vpx_codec_alg_priv_t *ctx, int ctr_id,
1013 va_list args) {
1014 unsigned int *data = va_arg(args, unsigned int *);
1015 if (data) {
1016 int res;
1017 res = vp9_set_size_literal(ctx->cpi, *data, 0);
1018 if (!res) {
1019 return VPX_CODEC_OK;
1020 } else {
1021 return VPX_CODEC_INVALID_PARAM;
1022 }
1023 } else {
1024 return VPX_CODEC_INVALID_PARAM;
1025 }
1026 }
1027
1028 static vpx_codec_err_t vp9e_set_height(vpx_codec_alg_priv_t *ctx,
1029 int ctr_id,
1030 va_list args) {
1031 unsigned int *data = va_arg(args, unsigned int *);
1032
1033 if (data) {
1034 int res;
1035 res = vp9_set_size_literal(ctx->cpi, 0, *data);
1036
1037 if (!res) {
1038 return VPX_CODEC_OK;
1039 } else {
1040 return VPX_CODEC_INVALID_PARAM;
1041 }
1042 } else {
1043 return VPX_CODEC_INVALID_PARAM;
1044 }
1045 }
1046
1047 static vpx_codec_err_t vp9e_set_layer(vpx_codec_alg_priv_t *ctx,
1048 int ctr_id,
1049 va_list args) {
1050 unsigned int *data = va_arg(args, unsigned int *);
1051
1052 if (data) {
1053 int res;
1054 res = 0;
1055
1056 res = vp9_switch_layer(ctx->cpi, *data);
1057
1058 if (!res) {
1059 return VPX_CODEC_OK;
1060 } else {
1061 return VPX_CODEC_INVALID_PARAM;
1062 }
1063 } else {
1064 return VPX_CODEC_INVALID_PARAM;
1065 }
1066 }
1067
1068 static vpx_codec_err_t vp9e_set_svc(vpx_codec_alg_priv_t *ctx, int ctr_id, 1020 static vpx_codec_err_t vp9e_set_svc(vpx_codec_alg_priv_t *ctx, int ctr_id,
1069 va_list args) { 1021 va_list args) {
1070 int data = va_arg(args, int); 1022 int data = va_arg(args, int);
1071 vp9_set_svc(ctx->cpi, data); 1023 vp9_set_svc(ctx->cpi, data);
1072 return VPX_CODEC_OK; 1024 return VPX_CODEC_OK;
1073 } 1025 }
1074 1026
1027 static vpx_codec_err_t vp9e_set_svc_parameters(vpx_codec_alg_priv_t *ctx,
1028 int ctr_id, va_list args) {
1029 vpx_svc_parameters_t *data = va_arg(args, vpx_svc_parameters_t *);
1030 VP9_COMP *cpi = (VP9_COMP *)ctx->cpi;
1031 vpx_svc_parameters_t params;
1032
1033 if (data == NULL) {
1034 return VPX_CODEC_INVALID_PARAM;
1035 }
1036
1037 params = *(vpx_svc_parameters_t *)data;
1038
1039 cpi->current_layer = params.layer;
1040 cpi->lst_fb_idx = params.lst_fb_idx;
1041 cpi->gld_fb_idx = params.gld_fb_idx;
1042 cpi->alt_fb_idx = params.alt_fb_idx;
1043
1044 if (vp9_set_size_literal(ctx->cpi, params.width, params.height) != 0) {
1045 return VPX_CODEC_INVALID_PARAM;
1046 }
1047
1048 ctx->cfg.rc_max_quantizer = params.max_quantizer;
1049 ctx->cfg.rc_min_quantizer = params.min_quantizer;
1050
1051 set_vp9e_config(&ctx->oxcf, ctx->cfg, ctx->vp8_cfg);
1052 vp9_change_config(ctx->cpi, &ctx->oxcf);
1053
1054 return VPX_CODEC_OK;
1055 }
1056
1075 static vpx_codec_ctrl_fn_map_t vp9e_ctf_maps[] = { 1057 static vpx_codec_ctrl_fn_map_t vp9e_ctf_maps[] = {
1076 {VP8_SET_REFERENCE, vp9e_set_reference}, 1058 {VP8_SET_REFERENCE, vp9e_set_reference},
1077 {VP8_COPY_REFERENCE, vp9e_copy_reference}, 1059 {VP8_COPY_REFERENCE, vp9e_copy_reference},
1078 {VP8_SET_POSTPROC, vp9e_set_previewpp}, 1060 {VP8_SET_POSTPROC, vp9e_set_previewpp},
1079 {VP8E_UPD_ENTROPY, vp9e_update_entropy}, 1061 {VP8E_UPD_ENTROPY, vp9e_update_entropy},
1080 {VP8E_UPD_REFERENCE, vp9e_update_reference}, 1062 {VP8E_UPD_REFERENCE, vp9e_update_reference},
1081 {VP8E_USE_REFERENCE, vp9e_use_reference}, 1063 {VP8E_USE_REFERENCE, vp9e_use_reference},
1082 {VP8E_SET_ROI_MAP, vp9e_set_roi_map}, 1064 {VP8E_SET_ROI_MAP, vp9e_set_roi_map},
1083 {VP8E_SET_ACTIVEMAP, vp9e_set_activemap}, 1065 {VP8E_SET_ACTIVEMAP, vp9e_set_activemap},
1084 {VP8E_SET_SCALEMODE, vp9e_set_scalemode}, 1066 {VP8E_SET_SCALEMODE, vp9e_set_scalemode},
1085 {VP8E_SET_CPUUSED, set_param}, 1067 {VP8E_SET_CPUUSED, set_param},
1086 {VP8E_SET_NOISE_SENSITIVITY, set_param}, 1068 {VP8E_SET_NOISE_SENSITIVITY, set_param},
1087 {VP8E_SET_ENABLEAUTOALTREF, set_param}, 1069 {VP8E_SET_ENABLEAUTOALTREF, set_param},
1088 {VP8E_SET_SHARPNESS, set_param}, 1070 {VP8E_SET_SHARPNESS, set_param},
1089 {VP8E_SET_STATIC_THRESHOLD, set_param}, 1071 {VP8E_SET_STATIC_THRESHOLD, set_param},
1090 {VP9E_SET_TILE_COLUMNS, set_param}, 1072 {VP9E_SET_TILE_COLUMNS, set_param},
1091 {VP9E_SET_TILE_ROWS, set_param}, 1073 {VP9E_SET_TILE_ROWS, set_param},
1092 {VP8E_GET_LAST_QUANTIZER, get_param}, 1074 {VP8E_GET_LAST_QUANTIZER, get_param},
1093 {VP8E_GET_LAST_QUANTIZER_64, get_param}, 1075 {VP8E_GET_LAST_QUANTIZER_64, get_param},
1094 {VP8E_SET_ARNR_MAXFRAMES, set_param}, 1076 {VP8E_SET_ARNR_MAXFRAMES, set_param},
1095 {VP8E_SET_ARNR_STRENGTH, set_param}, 1077 {VP8E_SET_ARNR_STRENGTH, set_param},
1096 {VP8E_SET_ARNR_TYPE, set_param}, 1078 {VP8E_SET_ARNR_TYPE, set_param},
1097 {VP8E_SET_TUNING, set_param}, 1079 {VP8E_SET_TUNING, set_param},
1098 {VP8E_SET_CQ_LEVEL, set_param}, 1080 {VP8E_SET_CQ_LEVEL, set_param},
1099 {VP9E_SET_MAX_Q, set_param},
1100 {VP9E_SET_MIN_Q, set_param},
1101 {VP8E_SET_MAX_INTRA_BITRATE_PCT, set_param}, 1081 {VP8E_SET_MAX_INTRA_BITRATE_PCT, set_param},
1102 {VP9E_SET_LOSSLESS, set_param}, 1082 {VP9E_SET_LOSSLESS, set_param},
1103 {VP9E_SET_FRAME_PARALLEL_DECODING, set_param}, 1083 {VP9E_SET_FRAME_PARALLEL_DECODING, set_param},
1084 {VP9E_SET_AQ_MODE, set_param},
1104 {VP9_GET_REFERENCE, get_reference}, 1085 {VP9_GET_REFERENCE, get_reference},
1105 {VP9E_SET_WIDTH, vp9e_set_width},
1106 {VP9E_SET_HEIGHT, vp9e_set_height},
1107 {VP9E_SET_LAYER, vp9e_set_layer},
1108 {VP9E_SET_SVC, vp9e_set_svc}, 1086 {VP9E_SET_SVC, vp9e_set_svc},
1087 {VP9E_SET_SVC_PARAMETERS, vp9e_set_svc_parameters},
1109 { -1, NULL}, 1088 { -1, NULL},
1110 }; 1089 };
1111 1090
1112 static vpx_codec_enc_cfg_map_t vp9e_usage_cfg_map[] = { 1091 static vpx_codec_enc_cfg_map_t vp9e_usage_cfg_map[] = {
1113 { 1092 {
1114 0, 1093 0,
1115 { // NOLINT 1094 { // NOLINT
1116 0, /* g_usage */ 1095 0, /* g_usage */
1117 0, /* g_threads */ 1096 0, /* g_threads */
1118 0, /* g_profile */ 1097 0, /* g_profile */
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1219 { // NOLINT 1198 { // NOLINT
1220 vp9e_usage_cfg_map, /* vpx_codec_enc_cfg_map_t peek_si; */ 1199 vp9e_usage_cfg_map, /* vpx_codec_enc_cfg_map_t peek_si; */
1221 vp9e_encode, /* vpx_codec_encode_fn_t encode; */ 1200 vp9e_encode, /* vpx_codec_encode_fn_t encode; */
1222 vp9e_get_cxdata, /* vpx_codec_get_cx_data_fn_t frame_get; */ 1201 vp9e_get_cxdata, /* vpx_codec_get_cx_data_fn_t frame_get; */
1223 vp9e_set_config, 1202 vp9e_set_config,
1224 NOT_IMPLEMENTED, 1203 NOT_IMPLEMENTED,
1225 vp9e_get_preview, 1204 vp9e_get_preview,
1226 } /* encoder functions */ 1205 } /* encoder functions */
1227 }; 1206 };
1228 #endif 1207 #endif
OLDNEW
« no previous file with comments | « source/libvpx/vp9/vp9_common.mk ('k') | source/libvpx/vp9/vp9_dx_iface.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698