OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 }; |
OLD | NEW |