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

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

Issue 394353005: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 5 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_tokenize.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
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/vpx_codec.h" 15 #include "vpx/vpx_codec.h"
15 #include "vpx/internal/vpx_codec_internal.h" 16 #include "vpx/internal/vpx_codec_internal.h"
16 #include "./vpx_version.h" 17 #include "./vpx_version.h"
17 #include "vp9/encoder/vp9_encoder.h" 18 #include "vp9/encoder/vp9_encoder.h"
18 #include "vpx/vp8cx.h" 19 #include "vpx/vp8cx.h"
19 #include "vp9/encoder/vp9_firstpass.h" 20 #include "vp9/encoder/vp9_firstpass.h"
20 #include "vp9/vp9_iface_common.h" 21 #include "vp9/vp9_iface_common.h"
21 22
22 struct vp9_extracfg { 23 struct vp9_extracfg {
23 struct vpx_codec_pkt_list *pkt_list; 24 struct vpx_codec_pkt_list *pkt_list;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 VP9_COMP *cpi; 82 VP9_COMP *cpi;
82 unsigned char *cx_data; 83 unsigned char *cx_data;
83 size_t cx_data_sz; 84 size_t cx_data_sz;
84 unsigned char *pending_cx_data; 85 unsigned char *pending_cx_data;
85 size_t pending_cx_data_sz; 86 size_t pending_cx_data_sz;
86 int pending_frame_count; 87 int pending_frame_count;
87 size_t pending_frame_sizes[8]; 88 size_t pending_frame_sizes[8];
88 size_t pending_frame_magnitude; 89 size_t pending_frame_magnitude;
89 vpx_image_t preview_img; 90 vpx_image_t preview_img;
90 vp8_postproc_cfg_t preview_ppcfg; 91 vp8_postproc_cfg_t preview_ppcfg;
91 vpx_codec_pkt_list_decl(128) pkt_list; 92 vpx_codec_pkt_list_decl(256) pkt_list;
92 unsigned int fixed_kf_cntr; 93 unsigned int fixed_kf_cntr;
93 }; 94 };
94 95
95 static VP9_REFFRAME ref_frame_to_vp9_reframe(vpx_ref_frame_type_t frame) { 96 static VP9_REFFRAME ref_frame_to_vp9_reframe(vpx_ref_frame_type_t frame) {
96 switch (frame) { 97 switch (frame) {
97 case VP8_LAST_FRAME: 98 case VP8_LAST_FRAME:
98 return VP9_LAST_FLAG; 99 return VP9_LAST_FLAG;
99 case VP8_GOLD_FRAME: 100 case VP8_GOLD_FRAME:
100 return VP9_GOLD_FLAG; 101 return VP9_GOLD_FLAG;
101 case VP8_ALTR_FRAME: 102 case VP8_ALTR_FRAME:
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 RANGE_CHECK_HI(cfg, rc_resize_up_thresh, 100); 168 RANGE_CHECK_HI(cfg, rc_resize_up_thresh, 100);
168 RANGE_CHECK_HI(cfg, rc_resize_down_thresh, 100); 169 RANGE_CHECK_HI(cfg, rc_resize_down_thresh, 100);
169 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);
170 171
171 if (cfg->rc_resize_allowed == 1) { 172 if (cfg->rc_resize_allowed == 1) {
172 RANGE_CHECK(cfg, rc_scaled_width, 1, cfg->g_w); 173 RANGE_CHECK(cfg, rc_scaled_width, 1, cfg->g_w);
173 RANGE_CHECK(cfg, rc_scaled_height, 1, cfg->g_h); 174 RANGE_CHECK(cfg, rc_scaled_height, 1, cfg->g_h);
174 } 175 }
175 176
176 RANGE_CHECK(cfg, ss_number_layers, 1, VPX_SS_MAX_LAYERS); 177 RANGE_CHECK(cfg, ss_number_layers, 1, VPX_SS_MAX_LAYERS);
178
179 #ifdef CONFIG_SPATIAL_SVC
180 if (cfg->ss_number_layers > 1) {
181 unsigned int i, alt_ref_sum = 0;
182 for (i = 0; i < cfg->ss_number_layers; ++i) {
183 if (cfg->ss_enable_auto_alt_ref[i])
184 ++alt_ref_sum;
185 }
186 if (alt_ref_sum > REF_FRAMES - cfg->ss_number_layers)
187 ERROR("Not enough ref buffers for svc alt ref frames");
188 }
189 #endif
190
177 RANGE_CHECK(cfg, ts_number_layers, 1, VPX_TS_MAX_LAYERS); 191 RANGE_CHECK(cfg, ts_number_layers, 1, VPX_TS_MAX_LAYERS);
178 if (cfg->ts_number_layers > 1) { 192 if (cfg->ts_number_layers > 1) {
179 unsigned int i; 193 unsigned int i;
180 for (i = 1; i < cfg->ts_number_layers; ++i) 194 for (i = 1; i < cfg->ts_number_layers; ++i)
181 if (cfg->ts_target_bitrate[i] < cfg->ts_target_bitrate[i - 1]) 195 if (cfg->ts_target_bitrate[i] < cfg->ts_target_bitrate[i - 1])
182 ERROR("ts_target_bitrate entries are not increasing"); 196 ERROR("ts_target_bitrate entries are not increasing");
183 197
184 RANGE_CHECK(cfg, ts_rate_decimator[cfg->ts_number_layers - 1], 1, 1); 198 RANGE_CHECK(cfg, ts_rate_decimator[cfg->ts_number_layers - 1], 1, 1);
185 for (i = cfg->ts_number_layers - 2; i > 0; --i) 199 for (i = cfg->ts_number_layers - 2; i > 0; --i)
186 if (cfg->ts_rate_decimator[i - 1] != 2 * cfg->ts_rate_decimator[i]) 200 if (cfg->ts_rate_decimator[i - 1] != 2 * cfg->ts_rate_decimator[i])
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 if (cfg->rc_twopass_stats_in.sz < 2 * packet_sz) 267 if (cfg->rc_twopass_stats_in.sz < 2 * packet_sz)
254 ERROR("rc_twopass_stats_in requires at least two packets."); 268 ERROR("rc_twopass_stats_in requires at least two packets.");
255 269
256 stats = 270 stats =
257 (const FIRSTPASS_STATS *)cfg->rc_twopass_stats_in.buf + n_packets - 1; 271 (const FIRSTPASS_STATS *)cfg->rc_twopass_stats_in.buf + n_packets - 1;
258 272
259 if ((int)(stats->count + 0.5) != n_packets - 1) 273 if ((int)(stats->count + 0.5) != n_packets - 1)
260 ERROR("rc_twopass_stats_in missing EOS stats packet"); 274 ERROR("rc_twopass_stats_in missing EOS stats packet");
261 } 275 }
262 } 276 }
277
263 if (cfg->g_profile <= (unsigned int)PROFILE_1 && 278 if (cfg->g_profile <= (unsigned int)PROFILE_1 &&
264 extra_cfg->bit_depth > BITS_8) 279 extra_cfg->bit_depth > BITS_8)
265 ERROR("High bit-depth not supported in profile < 2"); 280 ERROR("High bit-depth not supported in profile < 2");
266 if (cfg->g_profile > (unsigned int)PROFILE_1 && 281 if (cfg->g_profile > (unsigned int)PROFILE_1 &&
267 extra_cfg->bit_depth == BITS_8) 282 extra_cfg->bit_depth == BITS_8)
268 ERROR("Bit-depth 8 not supported in profile > 1"); 283 ERROR("Bit-depth 8 not supported in profile > 1");
269 284
270 return VPX_CODEC_OK; 285 return VPX_CODEC_OK;
271 } 286 }
272 287
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 370
356 oxcf->speed = abs(extra_cfg->cpu_used); 371 oxcf->speed = abs(extra_cfg->cpu_used);
357 oxcf->encode_breakout = extra_cfg->static_thresh; 372 oxcf->encode_breakout = extra_cfg->static_thresh;
358 oxcf->play_alternate = extra_cfg->enable_auto_alt_ref; 373 oxcf->play_alternate = extra_cfg->enable_auto_alt_ref;
359 oxcf->noise_sensitivity = extra_cfg->noise_sensitivity; 374 oxcf->noise_sensitivity = extra_cfg->noise_sensitivity;
360 oxcf->sharpness = extra_cfg->sharpness; 375 oxcf->sharpness = extra_cfg->sharpness;
361 376
362 oxcf->two_pass_stats_in = cfg->rc_twopass_stats_in; 377 oxcf->two_pass_stats_in = cfg->rc_twopass_stats_in;
363 oxcf->output_pkt_list = extra_cfg->pkt_list; 378 oxcf->output_pkt_list = extra_cfg->pkt_list;
364 379
380 #if CONFIG_FP_MB_STATS
381 oxcf->firstpass_mb_stats_in = cfg->rc_firstpass_mb_stats_in;
382 #endif
383
365 oxcf->arnr_max_frames = extra_cfg->arnr_max_frames; 384 oxcf->arnr_max_frames = extra_cfg->arnr_max_frames;
366 oxcf->arnr_strength = extra_cfg->arnr_strength; 385 oxcf->arnr_strength = extra_cfg->arnr_strength;
367 oxcf->arnr_type = extra_cfg->arnr_type; 386 oxcf->arnr_type = extra_cfg->arnr_type;
368 387
369 oxcf->tuning = extra_cfg->tuning; 388 oxcf->tuning = extra_cfg->tuning;
370 389
371 oxcf->tile_columns = extra_cfg->tile_columns; 390 oxcf->tile_columns = extra_cfg->tile_columns;
372 oxcf->tile_rows = extra_cfg->tile_rows; 391 oxcf->tile_rows = extra_cfg->tile_rows;
373 392
374 oxcf->error_resilient_mode = cfg->g_error_resilient; 393 oxcf->error_resilient_mode = cfg->g_error_resilient;
375 oxcf->frame_parallel_decoding_mode = extra_cfg->frame_parallel_decoding_mode; 394 oxcf->frame_parallel_decoding_mode = extra_cfg->frame_parallel_decoding_mode;
376 395
377 oxcf->aq_mode = extra_cfg->aq_mode; 396 oxcf->aq_mode = extra_cfg->aq_mode;
378 397
379 oxcf->frame_periodic_boost = extra_cfg->frame_periodic_boost; 398 oxcf->frame_periodic_boost = extra_cfg->frame_periodic_boost;
380 399
381 oxcf->ss_number_layers = cfg->ss_number_layers; 400 oxcf->ss_number_layers = cfg->ss_number_layers;
382 401
383 if (oxcf->ss_number_layers > 1) { 402 if (oxcf->ss_number_layers > 1) {
384 int i; 403 int i;
385 for (i = 0; i < VPX_SS_MAX_LAYERS; ++i) 404 for (i = 0; i < VPX_SS_MAX_LAYERS; ++i) {
386 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
407 oxcf->ss_play_alternate[i] = cfg->ss_enable_auto_alt_ref[i];
408 #endif
409 }
387 } else if (oxcf->ss_number_layers == 1) { 410 } else if (oxcf->ss_number_layers == 1) {
388 oxcf->ss_target_bitrate[0] = (int)oxcf->target_bandwidth; 411 oxcf->ss_target_bitrate[0] = (int)oxcf->target_bandwidth;
389 } 412 }
390 413
391 oxcf->ts_number_layers = cfg->ts_number_layers; 414 oxcf->ts_number_layers = cfg->ts_number_layers;
392 415
393 if (oxcf->ts_number_layers > 1) { 416 if (oxcf->ts_number_layers > 1) {
394 int i; 417 int i;
395 for (i = 0; i < VPX_TS_MAX_LAYERS; ++i) { 418 for (i = 0; i < VPX_TS_MAX_LAYERS; ++i) {
396 oxcf->ts_target_bitrate[i] = 1000 * cfg->ts_target_bitrate[i]; 419 oxcf->ts_target_bitrate[i] = 1000 * cfg->ts_target_bitrate[i];
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 664
642 // Select the extra vp6 configuration table based on the current 665 // Select the extra vp6 configuration table based on the current
643 // usage value. If the current usage value isn't found, use the 666 // usage value. If the current usage value isn't found, use the
644 // values for usage case 0. 667 // values for usage case 0.
645 for (i = 0; 668 for (i = 0;
646 extracfg_map[i].usage && extracfg_map[i].usage != cfg->g_usage; 669 extracfg_map[i].usage && extracfg_map[i].usage != cfg->g_usage;
647 ++i) {} 670 ++i) {}
648 671
649 priv->extra_cfg = extracfg_map[i].cfg; 672 priv->extra_cfg = extracfg_map[i].cfg;
650 priv->extra_cfg.pkt_list = &priv->pkt_list.head; 673 priv->extra_cfg.pkt_list = &priv->pkt_list.head;
674
651 // Maximum buffer size approximated based on having multiple ARF. 675 // Maximum buffer size approximated based on having multiple ARF.
652 priv->cx_data_sz = priv->cfg.g_w * priv->cfg.g_h * 3 / 2 * 8; 676 priv->cx_data_sz = priv->cfg.g_w * priv->cfg.g_h * 3 / 2 * 8;
653 677
654 if (priv->cx_data_sz < 4096) 678 if (priv->cx_data_sz < 4096)
655 priv->cx_data_sz = 4096; 679 priv->cx_data_sz = 4096;
656 680
657 priv->cx_data = (unsigned char *)malloc(priv->cx_data_sz); 681 priv->cx_data = (unsigned char *)malloc(priv->cx_data_sz);
658 if (priv->cx_data == NULL) 682 if (priv->cx_data == NULL)
659 return VPX_CODEC_MEM_ERROR; 683 return VPX_CODEC_MEM_ERROR;
660 684
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 881
858 while (cx_data_sz >= ctx->cx_data_sz / 2 && 882 while (cx_data_sz >= ctx->cx_data_sz / 2 &&
859 -1 != vp9_get_compressed_data(ctx->cpi, &lib_flags, &size, 883 -1 != vp9_get_compressed_data(ctx->cpi, &lib_flags, &size,
860 cx_data, &dst_time_stamp, 884 cx_data, &dst_time_stamp,
861 &dst_end_time_stamp, !img)) { 885 &dst_end_time_stamp, !img)) {
862 if (size) { 886 if (size) {
863 vpx_codec_pts_t round, delta; 887 vpx_codec_pts_t round, delta;
864 vpx_codec_cx_pkt_t pkt; 888 vpx_codec_cx_pkt_t pkt;
865 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi; 889 VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi;
866 890
891 #ifdef CONFIG_SPATIAL_SVC
892 if (cpi->use_svc && cpi->svc.number_temporal_layers == 1)
893 cpi->svc.layer_context[cpi->svc.spatial_layer_id].layer_size += size;
894 #endif
895
867 // Pack invisible frames with the next visible frame 896 // Pack invisible frames with the next visible frame
868 if (cpi->common.show_frame == 0 897 if (cpi->common.show_frame == 0
869 #ifdef CONFIG_SPATIAL_SVC 898 #ifdef CONFIG_SPATIAL_SVC
870 || (cpi->use_svc && cpi->svc.number_temporal_layers == 1 && 899 || (cpi->use_svc && cpi->svc.number_temporal_layers == 1 &&
871 cpi->svc.spatial_layer_id < cpi->svc.number_spatial_layers - 1) 900 cpi->svc.spatial_layer_id < cpi->svc.number_spatial_layers - 1)
872 #endif 901 #endif
873 ) { 902 ) {
874 if (ctx->pending_cx_data == 0) 903 if (ctx->pending_cx_data == 0)
875 ctx->pending_cx_data = cx_data; 904 ctx->pending_cx_data = cx_data;
876 ctx->pending_cx_data_sz += size; 905 ctx->pending_cx_data_sz += size;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 ctx->pending_frame_count = 0; 958 ctx->pending_frame_count = 0;
930 ctx->pending_frame_magnitude = 0; 959 ctx->pending_frame_magnitude = 0;
931 } else { 960 } else {
932 pkt.data.frame.buf = cx_data; 961 pkt.data.frame.buf = cx_data;
933 pkt.data.frame.sz = size; 962 pkt.data.frame.sz = size;
934 } 963 }
935 pkt.data.frame.partition_id = -1; 964 pkt.data.frame.partition_id = -1;
936 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt); 965 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
937 cx_data += size; 966 cx_data += size;
938 cx_data_sz -= size; 967 cx_data_sz -= size;
968 #ifdef CONFIG_SPATIAL_SVC
969 if (cpi->use_svc && cpi->svc.number_temporal_layers == 1) {
970 vpx_codec_cx_pkt_t pkt = {0};
971 int i;
972 pkt.kind = VPX_CODEC_SPATIAL_SVC_LAYER_SIZES;
973 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) {
974 pkt.data.layer_sizes[i] = cpi->svc.layer_context[i].layer_size;
975 cpi->svc.layer_context[i].layer_size = 0;
976 }
977 vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
978 }
979 #endif
939 } 980 }
940 } 981 }
941 } 982 }
942 983
943 return res; 984 return res;
944 } 985 }
945 986
946 static const vpx_codec_cx_pkt_t *encoder_get_cxdata(vpx_codec_alg_priv_t *ctx, 987 static const vpx_codec_cx_pkt_t *encoder_get_cxdata(vpx_codec_alg_priv_t *ctx,
947 vpx_codec_iter_t *iter) { 988 vpx_codec_iter_t *iter) {
948 return vpx_codec_pkt_list_get(&ctx->pkt_list.head, iter); 989 return vpx_codec_pkt_list_get(&ctx->pkt_list.head, iter);
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 0, // rc_dropframe_thresh 1258 0, // rc_dropframe_thresh
1218 0, // rc_resize_allowed 1259 0, // rc_resize_allowed
1219 1, // rc_scaled_width 1260 1, // rc_scaled_width
1220 1, // rc_scaled_height 1261 1, // rc_scaled_height
1221 60, // rc_resize_down_thresold 1262 60, // rc_resize_down_thresold
1222 30, // rc_resize_up_thresold 1263 30, // rc_resize_up_thresold
1223 1264
1224 VPX_VBR, // rc_end_usage 1265 VPX_VBR, // rc_end_usage
1225 #if VPX_ENCODER_ABI_VERSION > (1 + VPX_CODEC_ABI_VERSION) 1266 #if VPX_ENCODER_ABI_VERSION > (1 + VPX_CODEC_ABI_VERSION)
1226 {NULL, 0}, // rc_twopass_stats_in 1267 {NULL, 0}, // rc_twopass_stats_in
1268 {NULL, 0}, // rc_firstpass_mb_stats_in
1227 #endif 1269 #endif
1228 256, // rc_target_bandwidth 1270 256, // rc_target_bandwidth
1229 0, // rc_min_quantizer 1271 0, // rc_min_quantizer
1230 63, // rc_max_quantizer 1272 63, // rc_max_quantizer
1231 100, // rc_undershoot_pct 1273 100, // rc_undershoot_pct
1232 100, // rc_overshoot_pct 1274 100, // rc_overshoot_pct
1233 1275
1234 6000, // rc_max_buffer_size 1276 6000, // rc_max_buffer_size
1235 4000, // rc_buffer_initial_size 1277 4000, // rc_buffer_initial_size
1236 5000, // rc_buffer_optimal_size 1278 5000, // rc_buffer_optimal_size
1237 1279
1238 50, // rc_two_pass_vbrbias 1280 50, // rc_two_pass_vbrbias
1239 0, // rc_two_pass_vbrmin_section 1281 0, // rc_two_pass_vbrmin_section
1240 2000, // rc_two_pass_vbrmax_section 1282 2000, // rc_two_pass_vbrmax_section
1241 1283
1242 // keyframing settings (kf) 1284 // keyframing settings (kf)
1243 VPX_KF_AUTO, // g_kfmode 1285 VPX_KF_AUTO, // g_kfmode
1244 0, // kf_min_dist 1286 0, // kf_min_dist
1245 9999, // kf_max_dist 1287 9999, // kf_max_dist
1246 1288
1247 VPX_SS_DEFAULT_LAYERS, // ss_number_layers 1289 VPX_SS_DEFAULT_LAYERS, // ss_number_layers
1290 #ifdef CONFIG_SPATIAL_SVC
1291 {0},
1292 #endif
1248 {0}, // ss_target_bitrate 1293 {0}, // ss_target_bitrate
1249 1, // ts_number_layers 1294 1, // ts_number_layers
1250 {0}, // ts_target_bitrate 1295 {0}, // ts_target_bitrate
1251 {0}, // ts_rate_decimator 1296 {0}, // ts_rate_decimator
1252 0, // ts_periodicity 1297 0, // ts_periodicity
1253 {0}, // ts_layer_id 1298 {0}, // ts_layer_id
1254 #if VPX_ENCODER_ABI_VERSION == (1 + VPX_CODEC_ABI_VERSION) 1299 #if VPX_ENCODER_ABI_VERSION == (1 + VPX_CODEC_ABI_VERSION)
1255 "vp8.fpf" // first pass filename 1300 "vp8.fpf" // first pass filename
1256 #endif 1301 #endif
1257 } 1302 }
(...skipping 23 matching lines...) Expand all
1281 { // NOLINT 1326 { // NOLINT
1282 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t 1327 encoder_usage_cfg_map, // vpx_codec_enc_cfg_map_t
1283 encoder_encode, // vpx_codec_encode_fn_t 1328 encoder_encode, // vpx_codec_encode_fn_t
1284 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t 1329 encoder_get_cxdata, // vpx_codec_get_cx_data_fn_t
1285 encoder_set_config, // vpx_codec_enc_config_set_fn_t 1330 encoder_set_config, // vpx_codec_enc_config_set_fn_t
1286 NOT_IMPLEMENTED, // vpx_codec_get_global_headers_fn_t 1331 NOT_IMPLEMENTED, // vpx_codec_get_global_headers_fn_t
1287 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t 1332 encoder_get_preview, // vpx_codec_get_preview_frame_fn_t
1288 NOT_IMPLEMENTED // vpx_codec_enc_mr_get_mem_loc_fn_t 1333 NOT_IMPLEMENTED // vpx_codec_enc_mr_get_mem_loc_fn_t
1289 } 1334 }
1290 }; 1335 };
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_tokenize.c ('k') | source/libvpx/vp9/vp9_dx_iface.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698