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

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

Issue 592203002: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 3 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/vp9_common.mk ('k') | source/libvpx/vpx/exports_enc » ('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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 if (cfg->ts_target_bitrate[i] < cfg->ts_target_bitrate[i - 1]) 171 if (cfg->ts_target_bitrate[i] < cfg->ts_target_bitrate[i - 1])
172 ERROR("ts_target_bitrate entries are not increasing"); 172 ERROR("ts_target_bitrate entries are not increasing");
173 173
174 RANGE_CHECK(cfg, ts_rate_decimator[cfg->ts_number_layers - 1], 1, 1); 174 RANGE_CHECK(cfg, ts_rate_decimator[cfg->ts_number_layers - 1], 1, 1);
175 for (i = cfg->ts_number_layers - 2; i > 0; --i) 175 for (i = cfg->ts_number_layers - 2; i > 0; --i)
176 if (cfg->ts_rate_decimator[i - 1] != 2 * cfg->ts_rate_decimator[i]) 176 if (cfg->ts_rate_decimator[i - 1] != 2 * cfg->ts_rate_decimator[i])
177 ERROR("ts_rate_decimator factors are not powers of 2"); 177 ERROR("ts_rate_decimator factors are not powers of 2");
178 } 178 }
179 179
180 #if CONFIG_SPATIAL_SVC 180 #if CONFIG_SPATIAL_SVC
181 if (cfg->ss_number_layers * cfg->ts_number_layers > REF_FRAMES)
182 ERROR("Too many layers. Maximum 8 layers could be set");
183 181
184 if ((cfg->ss_number_layers > 1 || cfg->ts_number_layers > 1) && 182 if ((cfg->ss_number_layers > 1 || cfg->ts_number_layers > 1) &&
185 cfg->g_pass == VPX_RC_LAST_PASS) { 183 cfg->g_pass == VPX_RC_LAST_PASS) {
186 unsigned int i, alt_ref_sum = 0; 184 unsigned int i, alt_ref_sum = 0;
187 for (i = 0; i < cfg->ss_number_layers; ++i) { 185 for (i = 0; i < cfg->ss_number_layers; ++i) {
188 if (cfg->ss_enable_auto_alt_ref[i]) 186 if (cfg->ss_enable_auto_alt_ref[i])
189 ++alt_ref_sum; 187 ++alt_ref_sum;
190 } 188 }
191 if (alt_ref_sum > 189 if (alt_ref_sum > REF_FRAMES - cfg->ss_number_layers)
192 REF_FRAMES - cfg->ss_number_layers * cfg->ts_number_layers)
193 ERROR("Not enough ref buffers for svc alt ref frames"); 190 ERROR("Not enough ref buffers for svc alt ref frames");
194 if ((cfg->ss_number_layers > 3 || 191 if ((cfg->ss_number_layers > 3 ||
195 cfg->ss_number_layers * cfg->ts_number_layers > 4) && 192 cfg->ss_number_layers * cfg->ts_number_layers > 4) &&
196 cfg->g_error_resilient == 0) 193 cfg->g_error_resilient == 0)
197 ERROR("Multiple frame context are not supported for more than 3 spatial " 194 ERROR("Multiple frame context are not supported for more than 3 spatial "
198 "layers or more than 4 spatial x temporal layers"); 195 "layers or more than 4 spatial x temporal layers");
199 } 196 }
200 #endif 197 #endif
201 198
202 // VP9 does not support a lower bound on the keyframe interval in 199 // VP9 does not support a lower bound on the keyframe interval in
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 static vpx_codec_err_t ctrl_set_enable_auto_alt_ref(vpx_codec_alg_priv_t *ctx, 545 static vpx_codec_err_t ctrl_set_enable_auto_alt_ref(vpx_codec_alg_priv_t *ctx,
549 va_list args) { 546 va_list args) {
550 struct vp9_extracfg extra_cfg = ctx->extra_cfg; 547 struct vp9_extracfg extra_cfg = ctx->extra_cfg;
551 extra_cfg.enable_auto_alt_ref = CAST(VP8E_SET_ENABLEAUTOALTREF, args); 548 extra_cfg.enable_auto_alt_ref = CAST(VP8E_SET_ENABLEAUTOALTREF, args);
552 return update_extra_cfg(ctx, &extra_cfg); 549 return update_extra_cfg(ctx, &extra_cfg);
553 } 550 }
554 551
555 static vpx_codec_err_t ctrl_set_noise_sensitivity(vpx_codec_alg_priv_t *ctx, 552 static vpx_codec_err_t ctrl_set_noise_sensitivity(vpx_codec_alg_priv_t *ctx,
556 va_list args) { 553 va_list args) {
557 struct vp9_extracfg extra_cfg = ctx->extra_cfg; 554 struct vp9_extracfg extra_cfg = ctx->extra_cfg;
558 extra_cfg.noise_sensitivity = CAST(VP8E_SET_NOISE_SENSITIVITY, args); 555 extra_cfg.noise_sensitivity = CAST(VP9E_SET_NOISE_SENSITIVITY, args);
559 return update_extra_cfg(ctx, &extra_cfg); 556 return update_extra_cfg(ctx, &extra_cfg);
560 } 557 }
561 558
562 static vpx_codec_err_t ctrl_set_sharpness(vpx_codec_alg_priv_t *ctx, 559 static vpx_codec_err_t ctrl_set_sharpness(vpx_codec_alg_priv_t *ctx,
563 va_list args) { 560 va_list args) {
564 struct vp9_extracfg extra_cfg = ctx->extra_cfg; 561 struct vp9_extracfg extra_cfg = ctx->extra_cfg;
565 extra_cfg.sharpness = CAST(VP8E_SET_SHARPNESS, args); 562 extra_cfg.sharpness = CAST(VP8E_SET_SHARPNESS, args);
566 return update_extra_cfg(ctx, &extra_cfg); 563 return update_extra_cfg(ctx, &extra_cfg);
567 } 564 }
568 565
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 ctx->config.enc = &priv->cfg; 676 ctx->config.enc = &priv->cfg;
680 } 677 }
681 678
682 priv->extra_cfg = default_extra_cfg; 679 priv->extra_cfg = default_extra_cfg;
683 vp9_initialize_enc(); 680 vp9_initialize_enc();
684 681
685 res = validate_config(priv, &priv->cfg, &priv->extra_cfg); 682 res = validate_config(priv, &priv->cfg, &priv->extra_cfg);
686 683
687 if (res == VPX_CODEC_OK) { 684 if (res == VPX_CODEC_OK) {
688 set_encoder_config(&priv->oxcf, &priv->cfg, &priv->extra_cfg); 685 set_encoder_config(&priv->oxcf, &priv->cfg, &priv->extra_cfg);
686 #if CONFIG_VP9_HIGHBITDEPTH
687 priv->oxcf.use_highbitdepth =
688 (ctx->init_flags & VPX_CODEC_USE_HIGHBITDEPTH) ? 1 : 0;
689 #endif
689 priv->cpi = vp9_create_compressor(&priv->oxcf); 690 priv->cpi = vp9_create_compressor(&priv->oxcf);
690 if (priv->cpi == NULL) 691 if (priv->cpi == NULL)
691 res = VPX_CODEC_MEM_ERROR; 692 res = VPX_CODEC_MEM_ERROR;
692 else 693 else
693 priv->cpi->output_pkt_list = &priv->pkt_list.head; 694 priv->cpi->output_pkt_list = &priv->pkt_list.head;
694 } 695 }
695 } 696 }
696 697
697 return res; 698 return res;
698 } 699 }
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 } else { 975 } else {
975 pkt.data.frame.buf = cx_data; 976 pkt.data.frame.buf = cx_data;
976 pkt.data.frame.sz = size; 977 pkt.data.frame.sz = size;
977 } 978 }
978 pkt.data.frame.partition_id = -1; 979 pkt.data.frame.partition_id = -1;
979 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt); 980 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
980 cx_data += size; 981 cx_data += size;
981 cx_data_sz -= size; 982 cx_data_sz -= size;
982 #if CONFIG_SPATIAL_SVC 983 #if CONFIG_SPATIAL_SVC
983 if (is_two_pass_svc(cpi)) { 984 if (is_two_pass_svc(cpi)) {
984 vpx_codec_cx_pkt_t pkt; 985 vpx_codec_cx_pkt_t pkt_sizes, pkt_psnr;
985 int i; 986 int i;
986 vp9_zero(pkt); 987 vp9_zero(pkt_sizes);
987 pkt.kind = VPX_CODEC_SPATIAL_SVC_LAYER_SIZES; 988 vp9_zero(pkt_psnr);
989 pkt_sizes.kind = VPX_CODEC_SPATIAL_SVC_LAYER_SIZES;
990 pkt_psnr.kind = VPX_CODEC_SPATIAL_SVC_LAYER_PSNR;
988 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) { 991 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) {
989 pkt.data.layer_sizes[i] = cpi->svc.layer_context[i].layer_size; 992 LAYER_CONTEXT *lc = &cpi->svc.layer_context[i];
990 cpi->svc.layer_context[i].layer_size = 0; 993 pkt_sizes.data.layer_sizes[i] = lc->layer_size;
994 pkt_psnr.data.layer_psnr[i] = lc->psnr_pkt;
995 lc->layer_size = 0;
991 } 996 }
992 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt); 997 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt_sizes);
998 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt_psnr);
993 } 999 }
994 #endif 1000 #endif
995 } 1001 }
996 } 1002 }
997 } 1003 }
998 1004
999 return res; 1005 return res;
1000 } 1006 }
1001 1007
1002 static const vpx_codec_cx_pkt_t *encoder_get_cxdata(vpx_codec_alg_priv_t *ctx, 1008 static const vpx_codec_cx_pkt_t *encoder_get_cxdata(vpx_codec_alg_priv_t *ctx,
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 if (svc->spatial_layer_id < 0 || 1191 if (svc->spatial_layer_id < 0 ||
1186 svc->spatial_layer_id >= (int)ctx->cfg.ss_number_layers) { 1192 svc->spatial_layer_id >= (int)ctx->cfg.ss_number_layers) {
1187 return VPX_CODEC_INVALID_PARAM; 1193 return VPX_CODEC_INVALID_PARAM;
1188 } 1194 }
1189 return VPX_CODEC_OK; 1195 return VPX_CODEC_OK;
1190 } 1196 }
1191 1197
1192 static vpx_codec_err_t ctrl_set_svc_parameters(vpx_codec_alg_priv_t *ctx, 1198 static vpx_codec_err_t ctrl_set_svc_parameters(vpx_codec_alg_priv_t *ctx,
1193 va_list args) { 1199 va_list args) {
1194 VP9_COMP *const cpi = ctx->cpi; 1200 VP9_COMP *const cpi = ctx->cpi;
1195 vpx_svc_parameters_t *const params = va_arg(args, vpx_svc_parameters_t *); 1201 vpx_svc_extra_cfg_t *const params = va_arg(args, vpx_svc_extra_cfg_t *);
1202 int i;
1196 1203
1197 if (params == NULL || params->spatial_layer < 0 || 1204 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) {
1198 params->spatial_layer >= cpi->svc.number_spatial_layers) 1205 LAYER_CONTEXT *lc = &cpi->svc.layer_context[i];
1199 return VPX_CODEC_INVALID_PARAM;
1200 1206
1201 if (params->spatial_layer == 0) { 1207 lc->max_q = params->max_quantizers[i];
1202 int i; 1208 lc->min_q = params->min_quantizers[i];
1203 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) { 1209 lc->scaling_factor_num = params->scaling_factor_num[i];
1204 cpi->svc.layer_context[i].svc_params_received.spatial_layer = -1; 1210 lc->scaling_factor_den = params->scaling_factor_den[i];
1205 }
1206 } 1211 }
1207 1212
1208 cpi->svc.layer_context[params->spatial_layer].svc_params_received =
1209 *params;
1210
1211 return VPX_CODEC_OK; 1213 return VPX_CODEC_OK;
1212 } 1214 }
1213 1215
1214 static vpx_codec_err_t ctrl_set_tune_content(vpx_codec_alg_priv_t *ctx, 1216 static vpx_codec_err_t ctrl_set_tune_content(vpx_codec_alg_priv_t *ctx,
1215 va_list args) { 1217 va_list args) {
1216 struct vp9_extracfg extra_cfg = ctx->extra_cfg; 1218 struct vp9_extracfg extra_cfg = ctx->extra_cfg;
1217 extra_cfg.content = CAST(VP9E_SET_TUNE_CONTENT, args); 1219 extra_cfg.content = CAST(VP9E_SET_TUNE_CONTENT, args);
1218 return update_extra_cfg(ctx, &extra_cfg); 1220 return update_extra_cfg(ctx, &extra_cfg);
1219 } 1221 }
1220 1222
1221 static vpx_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { 1223 static vpx_codec_ctrl_fn_map_t encoder_ctrl_maps[] = {
1222 {VP8_COPY_REFERENCE, ctrl_copy_reference}, 1224 {VP8_COPY_REFERENCE, ctrl_copy_reference},
1223 {VP8E_UPD_ENTROPY, ctrl_update_entropy}, 1225 {VP8E_UPD_ENTROPY, ctrl_update_entropy},
1224 {VP8E_UPD_REFERENCE, ctrl_update_reference}, 1226 {VP8E_UPD_REFERENCE, ctrl_update_reference},
1225 {VP8E_USE_REFERENCE, ctrl_use_reference}, 1227 {VP8E_USE_REFERENCE, ctrl_use_reference},
1226 1228
1227 // Setters 1229 // Setters
1228 {VP8_SET_REFERENCE, ctrl_set_reference}, 1230 {VP8_SET_REFERENCE, ctrl_set_reference},
1229 {VP8_SET_POSTPROC, ctrl_set_previewpp}, 1231 {VP8_SET_POSTPROC, ctrl_set_previewpp},
1230 {VP8E_SET_ROI_MAP, ctrl_set_roi_map}, 1232 {VP8E_SET_ROI_MAP, ctrl_set_roi_map},
1231 {VP8E_SET_ACTIVEMAP, ctrl_set_active_map}, 1233 {VP8E_SET_ACTIVEMAP, ctrl_set_active_map},
1232 {VP8E_SET_SCALEMODE, ctrl_set_scale_mode}, 1234 {VP8E_SET_SCALEMODE, ctrl_set_scale_mode},
1233 {VP8E_SET_CPUUSED, ctrl_set_cpuused}, 1235 {VP8E_SET_CPUUSED, ctrl_set_cpuused},
1234 {VP8E_SET_NOISE_SENSITIVITY, ctrl_set_noise_sensitivity},
1235 {VP8E_SET_ENABLEAUTOALTREF, ctrl_set_enable_auto_alt_ref}, 1236 {VP8E_SET_ENABLEAUTOALTREF, ctrl_set_enable_auto_alt_ref},
1236 {VP8E_SET_SHARPNESS, ctrl_set_sharpness}, 1237 {VP8E_SET_SHARPNESS, ctrl_set_sharpness},
1237 {VP8E_SET_STATIC_THRESHOLD, ctrl_set_static_thresh}, 1238 {VP8E_SET_STATIC_THRESHOLD, ctrl_set_static_thresh},
1238 {VP9E_SET_TILE_COLUMNS, ctrl_set_tile_columns}, 1239 {VP9E_SET_TILE_COLUMNS, ctrl_set_tile_columns},
1239 {VP9E_SET_TILE_ROWS, ctrl_set_tile_rows}, 1240 {VP9E_SET_TILE_ROWS, ctrl_set_tile_rows},
1240 {VP8E_SET_ARNR_MAXFRAMES, ctrl_set_arnr_max_frames}, 1241 {VP8E_SET_ARNR_MAXFRAMES, ctrl_set_arnr_max_frames},
1241 {VP8E_SET_ARNR_STRENGTH, ctrl_set_arnr_strength}, 1242 {VP8E_SET_ARNR_STRENGTH, ctrl_set_arnr_strength},
1242 {VP8E_SET_ARNR_TYPE, ctrl_set_arnr_type}, 1243 {VP8E_SET_ARNR_TYPE, ctrl_set_arnr_type},
1243 {VP8E_SET_TUNING, ctrl_set_tuning}, 1244 {VP8E_SET_TUNING, ctrl_set_tuning},
1244 {VP8E_SET_CQ_LEVEL, ctrl_set_cq_level}, 1245 {VP8E_SET_CQ_LEVEL, ctrl_set_cq_level},
1245 {VP8E_SET_MAX_INTRA_BITRATE_PCT, ctrl_set_rc_max_intra_bitrate_pct}, 1246 {VP8E_SET_MAX_INTRA_BITRATE_PCT, ctrl_set_rc_max_intra_bitrate_pct},
1246 {VP9E_SET_LOSSLESS, ctrl_set_lossless}, 1247 {VP9E_SET_LOSSLESS, ctrl_set_lossless},
1247 {VP9E_SET_FRAME_PARALLEL_DECODING, ctrl_set_frame_parallel_decoding_mode}, 1248 {VP9E_SET_FRAME_PARALLEL_DECODING, ctrl_set_frame_parallel_decoding_mode},
1248 {VP9E_SET_AQ_MODE, ctrl_set_aq_mode}, 1249 {VP9E_SET_AQ_MODE, ctrl_set_aq_mode},
1249 {VP9E_SET_FRAME_PERIODIC_BOOST, ctrl_set_frame_periodic_boost}, 1250 {VP9E_SET_FRAME_PERIODIC_BOOST, ctrl_set_frame_periodic_boost},
1250 {VP9E_SET_SVC, ctrl_set_svc}, 1251 {VP9E_SET_SVC, ctrl_set_svc},
1251 {VP9E_SET_SVC_PARAMETERS, ctrl_set_svc_parameters}, 1252 {VP9E_SET_SVC_PARAMETERS, ctrl_set_svc_parameters},
1252 {VP9E_SET_SVC_LAYER_ID, ctrl_set_svc_layer_id}, 1253 {VP9E_SET_SVC_LAYER_ID, ctrl_set_svc_layer_id},
1253 {VP9E_SET_TUNE_CONTENT, ctrl_set_tune_content}, 1254 {VP9E_SET_TUNE_CONTENT, ctrl_set_tune_content},
1255 {VP9E_SET_NOISE_SENSITIVITY, ctrl_set_noise_sensitivity},
1254 1256
1255 // Getters 1257 // Getters
1256 {VP8E_GET_LAST_QUANTIZER, ctrl_get_quantizer}, 1258 {VP8E_GET_LAST_QUANTIZER, ctrl_get_quantizer},
1257 {VP8E_GET_LAST_QUANTIZER_64, ctrl_get_quantizer64}, 1259 {VP8E_GET_LAST_QUANTIZER_64, ctrl_get_quantizer64},
1258 {VP9_GET_REFERENCE, ctrl_get_reference}, 1260 {VP9_GET_REFERENCE, ctrl_get_reference},
1259 1261
1260 { -1, NULL}, 1262 { -1, NULL},
1261 }; 1263 };
1262 1264
1263 static vpx_codec_enc_cfg_map_t encoder_usage_cfg_map[] = { 1265 static vpx_codec_enc_cfg_map_t encoder_usage_cfg_map[] = {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 } 1328 }
1327 }, 1329 },
1328 }; 1330 };
1329 1331
1330 #ifndef VERSION_STRING 1332 #ifndef VERSION_STRING
1331 #define VERSION_STRING 1333 #define VERSION_STRING
1332 #endif 1334 #endif
1333 CODEC_INTERFACE(vpx_codec_vp9_cx) = { 1335 CODEC_INTERFACE(vpx_codec_vp9_cx) = {
1334 "WebM Project VP9 Encoder" VERSION_STRING, 1336 "WebM Project VP9 Encoder" VERSION_STRING,
1335 VPX_CODEC_INTERNAL_ABI_VERSION, 1337 VPX_CODEC_INTERNAL_ABI_VERSION,
1338 #if CONFIG_VP9_HIGHBITDEPTH
1339 VPX_CODEC_CAP_HIGHBITDEPTH |
1340 #endif
1336 VPX_CODEC_CAP_ENCODER | VPX_CODEC_CAP_PSNR, // vpx_codec_caps_t 1341 VPX_CODEC_CAP_ENCODER | VPX_CODEC_CAP_PSNR, // vpx_codec_caps_t
1337 encoder_init, // vpx_codec_init_fn_t 1342 encoder_init, // vpx_codec_init_fn_t
1338 encoder_destroy, // vpx_codec_destroy_fn_t 1343 encoder_destroy, // vpx_codec_destroy_fn_t
1339 encoder_ctrl_maps, // vpx_codec_ctrl_fn_map_t 1344 encoder_ctrl_maps, // vpx_codec_ctrl_fn_map_t
1340 { // NOLINT 1345 { // NOLINT
1341 NULL, // vpx_codec_peek_si_fn_t 1346 NULL, // vpx_codec_peek_si_fn_t
1342 NULL, // vpx_codec_get_si_fn_t 1347 NULL, // vpx_codec_get_si_fn_t
1343 NULL, // vpx_codec_decode_fn_t 1348 NULL, // vpx_codec_decode_fn_t
1344 NULL, // vpx_codec_frame_get_fn_t 1349 NULL, // vpx_codec_frame_get_fn_t
1345 NULL // vpx_codec_set_fb_fn_t 1350 NULL // vpx_codec_set_fb_fn_t
1346 }, 1351 },
1347 { // NOLINT 1352 { // NOLINT
1348 1, // 1 cfg map 1353 1, // 1 cfg map
1349 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t 1354 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t
1350 encoder_encode, // vpx_codec_encode_fn_t 1355 encoder_encode, // vpx_codec_encode_fn_t
1351 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t 1356 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t
1352 encoder_set_config, // vpx_codec_enc_config_set_fn_t 1357 encoder_set_config, // vpx_codec_enc_config_set_fn_t
1353 NULL, // vpx_codec_get_global_headers_fn_t 1358 NULL, // vpx_codec_get_global_headers_fn_t
1354 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t 1359 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t
1355 NULL // vpx_codec_enc_mr_get_mem_loc_fn_t 1360 NULL // vpx_codec_enc_mr_get_mem_loc_fn_t
1356 } 1361 }
1357 }; 1362 };
OLDNEW
« no previous file with comments | « source/libvpx/vp9/vp9_common.mk ('k') | source/libvpx/vpx/exports_enc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698