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

Side by Side Diff: source/libvpx/vp8/encoder/ethreading.c

Issue 1124333011: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: only update to last nights LKGR Created 5 years, 7 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
« no previous file with comments | « source/libvpx/vp8/encoder/encodemb.c ('k') | source/libvpx/vp8/encoder/firstpass.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 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 zd->gf_active_ptr = xd->gf_active_ptr; 409 zd->gf_active_ptr = xd->gf_active_ptr;
410 zd->frames_since_golden = xd->frames_since_golden; 410 zd->frames_since_golden = xd->frames_since_golden;
411 zd->frames_till_alt_ref_frame = xd->frames_till_alt_ref_frame; 411 zd->frames_till_alt_ref_frame = xd->frames_till_alt_ref_frame;
412 */ 412 */
413 zd->subpixel_predict = xd->subpixel_predict; 413 zd->subpixel_predict = xd->subpixel_predict;
414 zd->subpixel_predict8x4 = xd->subpixel_predict8x4; 414 zd->subpixel_predict8x4 = xd->subpixel_predict8x4;
415 zd->subpixel_predict8x8 = xd->subpixel_predict8x8; 415 zd->subpixel_predict8x8 = xd->subpixel_predict8x8;
416 zd->subpixel_predict16x16 = xd->subpixel_predict16x16; 416 zd->subpixel_predict16x16 = xd->subpixel_predict16x16;
417 zd->segmentation_enabled = xd->segmentation_enabled; 417 zd->segmentation_enabled = xd->segmentation_enabled;
418 zd->mb_segement_abs_delta = xd->mb_segement_abs_delta; 418 zd->mb_segement_abs_delta = xd->mb_segement_abs_delta;
419 vpx_memcpy(zd->segment_feature_data, xd->segment_feature_data, 419 memcpy(zd->segment_feature_data, xd->segment_feature_data,
420 sizeof(xd->segment_feature_data)); 420 sizeof(xd->segment_feature_data));
421 421
422 vpx_memcpy(zd->dequant_y1_dc, xd->dequant_y1_dc, 422 memcpy(zd->dequant_y1_dc, xd->dequant_y1_dc, sizeof(xd->dequant_y1_dc));
423 sizeof(xd->dequant_y1_dc)); 423 memcpy(zd->dequant_y1, xd->dequant_y1, sizeof(xd->dequant_y1));
424 vpx_memcpy(zd->dequant_y1, xd->dequant_y1, sizeof(xd->dequant_y1)); 424 memcpy(zd->dequant_y2, xd->dequant_y2, sizeof(xd->dequant_y2));
425 vpx_memcpy(zd->dequant_y2, xd->dequant_y2, sizeof(xd->dequant_y2)); 425 memcpy(zd->dequant_uv, xd->dequant_uv, sizeof(xd->dequant_uv));
426 vpx_memcpy(zd->dequant_uv, xd->dequant_uv, sizeof(xd->dequant_uv));
427 426
428 #if 1 427 #if 1
429 /*TODO: Remove dequant from BLOCKD. This is a temporary solution until 428 /*TODO: Remove dequant from BLOCKD. This is a temporary solution until
430 * the quantizer code uses a passed in pointer to the dequant constants. 429 * the quantizer code uses a passed in pointer to the dequant constants.
431 * This will also require modifications to the x86 and neon assembly. 430 * This will also require modifications to the x86 and neon assembly.
432 * */ 431 * */
433 for (i = 0; i < 16; i++) 432 for (i = 0; i < 16; i++)
434 zd->block[i].dequant = zd->dequant_y1; 433 zd->block[i].dequant = zd->dequant_y1;
435 for (i = 16; i < 24; i++) 434 for (i = 16; i < 24; i++)
436 zd->block[i].dequant = zd->dequant_uv; 435 zd->block[i].dequant = zd->dequant_uv;
437 zd->block[24].dequant = zd->dequant_y2; 436 zd->block[24].dequant = zd->dequant_y2;
438 #endif 437 #endif
439 438
440 439
441 vpx_memcpy(z->rd_threshes, x->rd_threshes, sizeof(x->rd_threshes)); 440 memcpy(z->rd_threshes, x->rd_threshes, sizeof(x->rd_threshes));
442 vpx_memcpy(z->rd_thresh_mult, x->rd_thresh_mult, 441 memcpy(z->rd_thresh_mult, x->rd_thresh_mult, sizeof(x->rd_thresh_mult));
443 sizeof(x->rd_thresh_mult));
444 442
445 z->zbin_over_quant = x->zbin_over_quant; 443 z->zbin_over_quant = x->zbin_over_quant;
446 z->zbin_mode_boost_enabled = x->zbin_mode_boost_enabled; 444 z->zbin_mode_boost_enabled = x->zbin_mode_boost_enabled;
447 z->zbin_mode_boost = x->zbin_mode_boost; 445 z->zbin_mode_boost = x->zbin_mode_boost;
448 446
449 vpx_memset(z->error_bins, 0, sizeof(z->error_bins)); 447 memset(z->error_bins, 0, sizeof(z->error_bins));
450 } 448 }
451 } 449 }
452 450
453 void vp8cx_init_mbrthread_data(VP8_COMP *cpi, 451 void vp8cx_init_mbrthread_data(VP8_COMP *cpi,
454 MACROBLOCK *x, 452 MACROBLOCK *x,
455 MB_ROW_COMP *mbr_ei, 453 MB_ROW_COMP *mbr_ei,
456 int count 454 int count
457 ) 455 )
458 { 456 {
459 457
460 VP8_COMMON *const cm = & cpi->common; 458 VP8_COMMON *const cm = & cpi->common;
461 MACROBLOCKD *const xd = & x->e_mbd; 459 MACROBLOCKD *const xd = & x->e_mbd;
462 int i; 460 int i;
463 461
464 for (i = 0; i < count; i++) 462 for (i = 0; i < count; i++)
465 { 463 {
466 MACROBLOCK *mb = & mbr_ei[i].mb; 464 MACROBLOCK *mb = & mbr_ei[i].mb;
467 MACROBLOCKD *mbd = &mb->e_mbd; 465 MACROBLOCKD *mbd = &mb->e_mbd;
468 466
469 mbd->subpixel_predict = xd->subpixel_predict; 467 mbd->subpixel_predict = xd->subpixel_predict;
470 mbd->subpixel_predict8x4 = xd->subpixel_predict8x4; 468 mbd->subpixel_predict8x4 = xd->subpixel_predict8x4;
471 mbd->subpixel_predict8x8 = xd->subpixel_predict8x8; 469 mbd->subpixel_predict8x8 = xd->subpixel_predict8x8;
472 mbd->subpixel_predict16x16 = xd->subpixel_predict16x16; 470 mbd->subpixel_predict16x16 = xd->subpixel_predict16x16;
473 mb->gf_active_ptr = x->gf_active_ptr; 471 mb->gf_active_ptr = x->gf_active_ptr;
474 472
475 vpx_memset(mbr_ei[i].segment_counts, 0, sizeof(mbr_ei[i].segment_counts) ); 473 memset(mbr_ei[i].segment_counts, 0, sizeof(mbr_ei[i].segment_counts));
476 mbr_ei[i].totalrate = 0; 474 mbr_ei[i].totalrate = 0;
477 475
478 mb->partition_info = x->pi + x->e_mbd.mode_info_stride * (i + 1); 476 mb->partition_info = x->pi + x->e_mbd.mode_info_stride * (i + 1);
479 477
480 mbd->mode_info_context = cm->mi + x->e_mbd.mode_info_stride * (i + 1); 478 mbd->mode_info_context = cm->mi + x->e_mbd.mode_info_stride * (i + 1);
481 mbd->mode_info_stride = cm->mode_info_stride; 479 mbd->mode_info_stride = cm->mode_info_stride;
482 480
483 mbd->frame_type = cm->frame_type; 481 mbd->frame_type = cm->frame_type;
484 482
485 mb->src = * cpi->Source; 483 mb->src = * cpi->Source;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 538
541 if(th_count == 0) 539 if(th_count == 0)
542 return 0; 540 return 0;
543 541
544 CHECK_MEM_ERROR(cpi->h_encoding_thread, 542 CHECK_MEM_ERROR(cpi->h_encoding_thread,
545 vpx_malloc(sizeof(pthread_t) * th_count)); 543 vpx_malloc(sizeof(pthread_t) * th_count));
546 CHECK_MEM_ERROR(cpi->h_event_start_encoding, 544 CHECK_MEM_ERROR(cpi->h_event_start_encoding,
547 vpx_malloc(sizeof(sem_t) * th_count)); 545 vpx_malloc(sizeof(sem_t) * th_count));
548 CHECK_MEM_ERROR(cpi->mb_row_ei, 546 CHECK_MEM_ERROR(cpi->mb_row_ei,
549 vpx_memalign(32, sizeof(MB_ROW_COMP) * th_count)); 547 vpx_memalign(32, sizeof(MB_ROW_COMP) * th_count));
550 vpx_memset(cpi->mb_row_ei, 0, sizeof(MB_ROW_COMP) * th_count); 548 memset(cpi->mb_row_ei, 0, sizeof(MB_ROW_COMP) * th_count);
551 CHECK_MEM_ERROR(cpi->en_thread_data, 549 CHECK_MEM_ERROR(cpi->en_thread_data,
552 vpx_malloc(sizeof(ENCODETHREAD_DATA) * th_count)); 550 vpx_malloc(sizeof(ENCODETHREAD_DATA) * th_count));
553 551
554 sem_init(&cpi->h_event_end_encoding, 0, 0); 552 sem_init(&cpi->h_event_end_encoding, 0, 0);
555 553
556 cpi->b_multi_threaded = 1; 554 cpi->b_multi_threaded = 1;
557 cpi->encoding_thread_count = th_count; 555 cpi->encoding_thread_count = th_count;
558 556
559 /* 557 /*
560 printf("[VP8:] multi_threaded encoding is enabled with %d threads\n\n", 558 printf("[VP8:] multi_threaded encoding is enabled with %d threads\n\n",
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 sem_destroy(&cpi->h_event_start_lpf); 663 sem_destroy(&cpi->h_event_start_lpf);
666 664
667 /* free thread related resources */ 665 /* free thread related resources */
668 vpx_free(cpi->h_event_start_encoding); 666 vpx_free(cpi->h_event_start_encoding);
669 vpx_free(cpi->h_encoding_thread); 667 vpx_free(cpi->h_encoding_thread);
670 vpx_free(cpi->mb_row_ei); 668 vpx_free(cpi->mb_row_ei);
671 vpx_free(cpi->en_thread_data); 669 vpx_free(cpi->en_thread_data);
672 } 670 }
673 } 671 }
674 #endif 672 #endif
OLDNEW
« no previous file with comments | « source/libvpx/vp8/encoder/encodemb.c ('k') | source/libvpx/vp8/encoder/firstpass.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698