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

Side by Side Diff: source/libvpx/vp9/encoder/vp9_encoder.h

Issue 375983002: 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_encodemb.c ('k') | source/libvpx/vp9/encoder/vp9_encoder.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 14 matching lines...) Expand all
25 25
26 #include "vp9/encoder/vp9_aq_cyclicrefresh.h" 26 #include "vp9/encoder/vp9_aq_cyclicrefresh.h"
27 #include "vp9/encoder/vp9_context_tree.h" 27 #include "vp9/encoder/vp9_context_tree.h"
28 #include "vp9/encoder/vp9_encodemb.h" 28 #include "vp9/encoder/vp9_encodemb.h"
29 #include "vp9/encoder/vp9_firstpass.h" 29 #include "vp9/encoder/vp9_firstpass.h"
30 #include "vp9/encoder/vp9_lookahead.h" 30 #include "vp9/encoder/vp9_lookahead.h"
31 #include "vp9/encoder/vp9_mbgraph.h" 31 #include "vp9/encoder/vp9_mbgraph.h"
32 #include "vp9/encoder/vp9_mcomp.h" 32 #include "vp9/encoder/vp9_mcomp.h"
33 #include "vp9/encoder/vp9_quantize.h" 33 #include "vp9/encoder/vp9_quantize.h"
34 #include "vp9/encoder/vp9_ratectrl.h" 34 #include "vp9/encoder/vp9_ratectrl.h"
35 #include "vp9/encoder/vp9_rdopt.h" 35 #include "vp9/encoder/vp9_rd.h"
36 #include "vp9/encoder/vp9_speed_features.h" 36 #include "vp9/encoder/vp9_speed_features.h"
37 #include "vp9/encoder/vp9_svc_layercontext.h" 37 #include "vp9/encoder/vp9_svc_layercontext.h"
38 #include "vp9/encoder/vp9_tokenize.h" 38 #include "vp9/encoder/vp9_tokenize.h"
39 #include "vp9/encoder/vp9_variance.h" 39 #include "vp9/encoder/vp9_variance.h"
40 #if CONFIG_DENOISING 40 #if CONFIG_DENOISING
41 #include "vp9/encoder/vp9_denoiser.h" 41 #include "vp9/encoder/vp9_denoiser.h"
42 #endif 42 #endif
43 43
44 #ifdef __cplusplus 44 #ifdef __cplusplus
45 extern "C" { 45 extern "C" {
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 return mode == ONE_PASS_BEST || mode == TWO_PASS_SECOND_BEST; 241 return mode == ONE_PASS_BEST || mode == TWO_PASS_SECOND_BEST;
242 } 242 }
243 243
244 typedef struct VP9_COMP { 244 typedef struct VP9_COMP {
245 QUANTS quants; 245 QUANTS quants;
246 MACROBLOCK mb; 246 MACROBLOCK mb;
247 VP9_COMMON common; 247 VP9_COMMON common;
248 VP9EncoderConfig oxcf; 248 VP9EncoderConfig oxcf;
249 struct lookahead_ctx *lookahead; 249 struct lookahead_ctx *lookahead;
250 struct lookahead_entry *source; 250 struct lookahead_entry *source;
251 #if CONFIG_MULTIPLE_ARF
252 struct lookahead_entry *alt_ref_source[REF_FRAMES];
253 #else
254 struct lookahead_entry *alt_ref_source; 251 struct lookahead_entry *alt_ref_source;
255 #endif
256 struct lookahead_entry *last_source; 252 struct lookahead_entry *last_source;
257 253
258 YV12_BUFFER_CONFIG *Source; 254 YV12_BUFFER_CONFIG *Source;
259 YV12_BUFFER_CONFIG *Last_Source; // NULL for first frame and alt_ref frames 255 YV12_BUFFER_CONFIG *Last_Source; // NULL for first frame and alt_ref frames
260 YV12_BUFFER_CONFIG *un_scaled_source; 256 YV12_BUFFER_CONFIG *un_scaled_source;
261 YV12_BUFFER_CONFIG scaled_source; 257 YV12_BUFFER_CONFIG scaled_source;
262 YV12_BUFFER_CONFIG *unscaled_last_source; 258 YV12_BUFFER_CONFIG *unscaled_last_source;
263 YV12_BUFFER_CONFIG scaled_last_source; 259 YV12_BUFFER_CONFIG scaled_last_source;
264 260
265 int gold_is_last; // gold same as last frame ( short circuit gold searches) 261 int gold_is_last; // gold same as last frame ( short circuit gold searches)
266 int alt_is_last; // Alt same as last ( short circuit altref search) 262 int alt_is_last; // Alt same as last ( short circuit altref search)
267 int gold_is_alt; // don't do both alt and gold search ( just do gold). 263 int gold_is_alt; // don't do both alt and gold search ( just do gold).
268 264
265 int skippable_frame;
266
269 int scaled_ref_idx[3]; 267 int scaled_ref_idx[3];
270 int lst_fb_idx; 268 int lst_fb_idx;
271 int gld_fb_idx; 269 int gld_fb_idx;
272 int alt_fb_idx; 270 int alt_fb_idx;
273 271
274 #if CONFIG_MULTIPLE_ARF
275 int alt_ref_fb_idx[REF_FRAMES - 3];
276 #endif
277 int refresh_last_frame; 272 int refresh_last_frame;
278 int refresh_golden_frame; 273 int refresh_golden_frame;
279 int refresh_alt_ref_frame; 274 int refresh_alt_ref_frame;
280 275
281 int ext_refresh_frame_flags_pending; 276 int ext_refresh_frame_flags_pending;
282 int ext_refresh_last_frame; 277 int ext_refresh_last_frame;
283 int ext_refresh_golden_frame; 278 int ext_refresh_golden_frame;
284 int ext_refresh_alt_ref_frame; 279 int ext_refresh_alt_ref_frame;
285 280
286 int ext_refresh_frame_context_pending; 281 int ext_refresh_frame_context_pending;
287 int ext_refresh_frame_context; 282 int ext_refresh_frame_context;
288 283
289 YV12_BUFFER_CONFIG last_frame_uf; 284 YV12_BUFFER_CONFIG last_frame_uf;
290 285
291 TOKENEXTRA *tok; 286 TOKENEXTRA *tok;
292 unsigned int tok_count[4][1 << 6]; 287 unsigned int tok_count[4][1 << 6];
293 288
294 #if CONFIG_MULTIPLE_ARF
295 // Position within a frame coding order (including any additional ARF frames).
296 unsigned int sequence_number;
297 // Next frame in naturally occurring order that has not yet been coded.
298 int next_frame_in_order;
299 #endif
300
301 // Ambient reconstruction err target for force key frames 289 // Ambient reconstruction err target for force key frames
302 int ambient_err; 290 int ambient_err;
303 291
304 RD_OPT rd; 292 RD_OPT rd;
305 293
306 CODING_CONTEXT coding_context; 294 CODING_CONTEXT coding_context;
307 295
308 int zbin_mode_boost; 296 int zbin_mode_boost;
309 int zbin_mode_boost_enabled; 297 int zbin_mode_boost_enabled;
310 int active_arnr_frames; // <= cpi->oxcf.arnr_max_frames 298 int active_arnr_frames; // <= cpi->oxcf.arnr_max_frames
(...skipping 29 matching lines...) Expand all
340 // clips, and 300 for < HD clips. 328 // clips, and 300 for < HD clips.
341 int encode_breakout; 329 int encode_breakout;
342 330
343 unsigned char *segmentation_map; 331 unsigned char *segmentation_map;
344 332
345 // segment threashold for encode breakout 333 // segment threashold for encode breakout
346 int segment_encode_breakout[MAX_SEGMENTS]; 334 int segment_encode_breakout[MAX_SEGMENTS];
347 335
348 unsigned char *complexity_map; 336 unsigned char *complexity_map;
349 337
350 unsigned char *active_map;
351 unsigned int active_map_enabled;
352
353 CYCLIC_REFRESH *cyclic_refresh; 338 CYCLIC_REFRESH *cyclic_refresh;
354 339
355 fractional_mv_step_fp *find_fractional_mv_step; 340 fractional_mv_step_fp *find_fractional_mv_step;
356 fractional_mv_step_comp_fp *find_fractional_mv_step_comp; 341 fractional_mv_step_comp_fp *find_fractional_mv_step_comp;
357 vp9_full_search_fn_t full_search_sad; 342 vp9_full_search_fn_t full_search_sad;
358 vp9_refining_search_fn_t refining_search_sad; 343 vp9_refining_search_fn_t refining_search_sad;
359 vp9_diamond_search_fn_t diamond_search_sad; 344 vp9_diamond_search_fn_t diamond_search_sad;
360 vp9_variance_fn_ptr_t fn_ptr[BLOCK_SIZES]; 345 vp9_variance_fn_ptr_t fn_ptr[BLOCK_SIZES];
361 uint64_t time_receive_data; 346 uint64_t time_receive_data;
362 uint64_t time_compress_data; 347 uint64_t time_compress_data;
363 uint64_t time_pick_lpf; 348 uint64_t time_pick_lpf;
364 uint64_t time_encode_sb_row; 349 uint64_t time_encode_sb_row;
365 350
351 #if CONFIG_FP_MB_STATS
352 int use_fp_mb_stats;
353 #endif
354
366 TWO_PASS twopass; 355 TWO_PASS twopass;
367 356
368 YV12_BUFFER_CONFIG alt_ref_buffer; 357 YV12_BUFFER_CONFIG alt_ref_buffer;
369 YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS]; 358 YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS];
370 359
371 #if CONFIG_INTERNAL_STATS 360 #if CONFIG_INTERNAL_STATS
372 unsigned int mode_chosen_counts[MAX_MODES]; 361 unsigned int mode_chosen_counts[MAX_MODES];
373 362
374 int count; 363 int count;
375 double total_y; 364 double total_y;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 398
410 unsigned int tx_stepdown_count[TX_SIZES]; 399 unsigned int tx_stepdown_count[TX_SIZES];
411 400
412 int initial_width; 401 int initial_width;
413 int initial_height; 402 int initial_height;
414 403
415 int use_svc; 404 int use_svc;
416 405
417 SVC svc; 406 SVC svc;
418 407
419 int use_large_partition_rate; 408 // Store frame variance info in SOURCE_VAR_BASED_PARTITION search type.
409 diff *source_diff_var;
410 // The threshold used in SOURCE_VAR_BASED_PARTITION search type.
411 unsigned int source_var_thresh;
412 int frames_till_next_var_check;
420 413
421 int frame_flags; 414 int frame_flags;
422 415
423 search_site_config ss_cfg; 416 search_site_config ss_cfg;
424 417
425 int mbmode_cost[INTRA_MODES]; 418 int mbmode_cost[INTRA_MODES];
426 unsigned inter_mode_cost[INTER_MODE_CONTEXTS][INTER_MODES]; 419 unsigned inter_mode_cost[INTER_MODE_CONTEXTS][INTER_MODES];
427 int intra_uv_mode_cost[FRAME_TYPES][INTRA_MODES]; 420 int intra_uv_mode_cost[FRAME_TYPES][INTRA_MODES];
428 int y_mode_costs[INTRA_MODES][INTRA_MODES][INTRA_MODES]; 421 int y_mode_costs[INTRA_MODES][INTRA_MODES][INTRA_MODES];
429 int switchable_interp_costs[SWITCHABLE_FILTER_CONTEXTS][SWITCHABLE_FILTERS]; 422 int switchable_interp_costs[SWITCHABLE_FILTER_CONTEXTS][SWITCHABLE_FILTERS];
430 423
431 PICK_MODE_CONTEXT *leaf_tree; 424 PICK_MODE_CONTEXT *leaf_tree;
432 PC_TREE *pc_tree; 425 PC_TREE *pc_tree;
433 PC_TREE *pc_root; 426 PC_TREE *pc_root;
434 int partition_cost[PARTITION_CONTEXTS][PARTITION_TYPES]; 427 int partition_cost[PARTITION_CONTEXTS][PARTITION_TYPES];
435 428
436 #if CONFIG_MULTIPLE_ARF 429 int multi_arf_allowed;
437 // ARF tracking variables.
438 int multi_arf_enabled; 430 int multi_arf_enabled;
439 unsigned int frame_coding_order_period; 431 int multi_arf_last_grp_enabled;
440 unsigned int new_frame_coding_order_period;
441 int frame_coding_order[MAX_LAG_BUFFERS * 2];
442 int arf_buffer_idx[MAX_LAG_BUFFERS * 3 / 2];
443 int arf_weight[MAX_LAG_BUFFERS];
444 int arf_buffered;
445 int this_frame_weight;
446 int max_arf_level;
447 #endif
448 432
449 #if CONFIG_DENOISING 433 #if CONFIG_DENOISING
450 VP9_DENOISER denoiser; 434 VP9_DENOISER denoiser;
451 #endif 435 #endif
452 } VP9_COMP; 436 } VP9_COMP;
453 437
454 void vp9_initialize_enc(); 438 void vp9_initialize_enc();
455 439
456 struct VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf); 440 struct VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf);
457 void vp9_remove_compressor(VP9_COMP *cpi); 441 void vp9_remove_compressor(VP9_COMP *cpi);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 int vp9_get_y_sse(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b); 521 int vp9_get_y_sse(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b);
538 522
539 void vp9_alloc_compressor_data(VP9_COMP *cpi); 523 void vp9_alloc_compressor_data(VP9_COMP *cpi);
540 524
541 void vp9_scale_references(VP9_COMP *cpi); 525 void vp9_scale_references(VP9_COMP *cpi);
542 526
543 void vp9_update_reference_frames(VP9_COMP *cpi); 527 void vp9_update_reference_frames(VP9_COMP *cpi);
544 528
545 int64_t vp9_rescale(int64_t val, int64_t num, int denom); 529 int64_t vp9_rescale(int64_t val, int64_t num, int denom);
546 530
531 void vp9_set_high_precision_mv(VP9_COMP *cpi, int allow_high_precision_mv);
532
547 YV12_BUFFER_CONFIG *vp9_scale_if_required(VP9_COMMON *cm, 533 YV12_BUFFER_CONFIG *vp9_scale_if_required(VP9_COMMON *cm,
548 YV12_BUFFER_CONFIG *unscaled, 534 YV12_BUFFER_CONFIG *unscaled,
549 YV12_BUFFER_CONFIG *scaled); 535 YV12_BUFFER_CONFIG *scaled);
550 536
537 void vp9_apply_encoding_flags(VP9_COMP *cpi, vpx_enc_frame_flags_t flags);
538
551 static INLINE void set_ref_ptrs(VP9_COMMON *cm, MACROBLOCKD *xd, 539 static INLINE void set_ref_ptrs(VP9_COMMON *cm, MACROBLOCKD *xd,
552 MV_REFERENCE_FRAME ref0, 540 MV_REFERENCE_FRAME ref0,
553 MV_REFERENCE_FRAME ref1) { 541 MV_REFERENCE_FRAME ref1) {
554 xd->block_refs[0] = &cm->frame_refs[ref0 >= LAST_FRAME ? ref0 - LAST_FRAME 542 xd->block_refs[0] = &cm->frame_refs[ref0 >= LAST_FRAME ? ref0 - LAST_FRAME
555 : 0]; 543 : 0];
556 xd->block_refs[1] = &cm->frame_refs[ref1 >= LAST_FRAME ? ref1 - LAST_FRAME 544 xd->block_refs[1] = &cm->frame_refs[ref1 >= LAST_FRAME ? ref1 - LAST_FRAME
557 : 0]; 545 : 0];
558 } 546 }
559 547
560 static INLINE int get_chessboard_index(const VP9_COMMON *cm) { 548 static INLINE int get_chessboard_index(const VP9_COMMON *cm) {
561 return cm->current_video_frame % 2; 549 return cm->current_video_frame % 2;
562 } 550 }
563 551
564 #ifdef __cplusplus 552 #ifdef __cplusplus
565 } // extern "C" 553 } // extern "C"
566 #endif 554 #endif
567 555
568 #endif // VP9_ENCODER_VP9_ENCODER_H_ 556 #endif // VP9_ENCODER_VP9_ENCODER_H_
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_encodemb.c ('k') | source/libvpx/vp9/encoder/vp9_encoder.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698