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

Side by Side Diff: source/libvpx/vp8/vp8_dx_iface.c

Issue 341293003: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 6 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/vp8/vp8_cx_iface.c ('k') | source/libvpx/vp8/vp8cx.mk » ('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 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 ctx->postproc_cfg.noise_level = 0; 379 ctx->postproc_cfg.noise_level = 0;
380 } 380 }
381 381
382 res = vp8_create_decoder_instances(&ctx->yv12_frame_buffers, &oxcf); 382 res = vp8_create_decoder_instances(&ctx->yv12_frame_buffers, &oxcf);
383 ctx->decoder_init = 1; 383 ctx->decoder_init = 1;
384 } 384 }
385 385
386 /* Set these even if already initialized. The caller may have changed the 386 /* Set these even if already initialized. The caller may have changed the
387 * decrypt config between frames. 387 * decrypt config between frames.
388 */ 388 */
389 ctx->yv12_frame_buffers.pbi[0]->decrypt_cb = ctx->decrypt_cb; 389 if (ctx->decoder_init) {
390 ctx->yv12_frame_buffers.pbi[0]->decrypt_state = ctx->decrypt_state; 390 ctx->yv12_frame_buffers.pbi[0]->decrypt_cb = ctx->decrypt_cb;
391 ctx->yv12_frame_buffers.pbi[0]->decrypt_state = ctx->decrypt_state;
392 }
391 393
392 if (!res) 394 if (!res)
393 { 395 {
394 VP8D_COMP *pbi = ctx->yv12_frame_buffers.pbi[0]; 396 VP8D_COMP *pbi = ctx->yv12_frame_buffers.pbi[0];
395 if(resolution_change) 397 if(resolution_change)
396 { 398 {
397 VP8_COMMON *const pc = & pbi->common; 399 VP8_COMMON *const pc = & pbi->common;
398 MACROBLOCKD *const xd = & pbi->mb; 400 MACROBLOCKD *const xd = & pbi->mb;
399 #if CONFIG_MULTITHREAD 401 #if CONFIG_MULTITHREAD
400 int i; 402 int i;
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 569
568 yv12->y_stride = img->stride[VPX_PLANE_Y]; 570 yv12->y_stride = img->stride[VPX_PLANE_Y];
569 yv12->uv_stride = img->stride[VPX_PLANE_U]; 571 yv12->uv_stride = img->stride[VPX_PLANE_U];
570 572
571 yv12->border = (img->stride[VPX_PLANE_Y] - img->d_w) / 2; 573 yv12->border = (img->stride[VPX_PLANE_Y] - img->d_w) / 2;
572 return res; 574 return res;
573 } 575 }
574 576
575 577
576 static vpx_codec_err_t vp8_set_reference(vpx_codec_alg_priv_t *ctx, 578 static vpx_codec_err_t vp8_set_reference(vpx_codec_alg_priv_t *ctx,
577 int ctr_id, 579 va_list args)
578 va_list args)
579 { 580 {
580 581
581 vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *); 582 vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
582 583
583 if (data && !ctx->yv12_frame_buffers.use_frame_threads) 584 if (data && !ctx->yv12_frame_buffers.use_frame_threads)
584 { 585 {
585 vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data; 586 vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data;
586 YV12_BUFFER_CONFIG sd; 587 YV12_BUFFER_CONFIG sd;
587 588
588 image2yuvconfig(&frame->img, &sd); 589 image2yuvconfig(&frame->img, &sd);
589 590
590 return vp8dx_set_reference(ctx->yv12_frame_buffers.pbi[0], 591 return vp8dx_set_reference(ctx->yv12_frame_buffers.pbi[0],
591 frame->frame_type, &sd); 592 frame->frame_type, &sd);
592 } 593 }
593 else 594 else
594 return VPX_CODEC_INVALID_PARAM; 595 return VPX_CODEC_INVALID_PARAM;
595 596
596 } 597 }
597 598
598 static vpx_codec_err_t vp8_get_reference(vpx_codec_alg_priv_t *ctx, 599 static vpx_codec_err_t vp8_get_reference(vpx_codec_alg_priv_t *ctx,
599 int ctr_id, 600 va_list args)
600 va_list args)
601 { 601 {
602 602
603 vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *); 603 vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
604 604
605 if (data && !ctx->yv12_frame_buffers.use_frame_threads) 605 if (data && !ctx->yv12_frame_buffers.use_frame_threads)
606 { 606 {
607 vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data; 607 vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data;
608 YV12_BUFFER_CONFIG sd; 608 YV12_BUFFER_CONFIG sd;
609 609
610 image2yuvconfig(&frame->img, &sd); 610 image2yuvconfig(&frame->img, &sd);
611 611
612 return vp8dx_get_reference(ctx->yv12_frame_buffers.pbi[0], 612 return vp8dx_get_reference(ctx->yv12_frame_buffers.pbi[0],
613 frame->frame_type, &sd); 613 frame->frame_type, &sd);
614 } 614 }
615 else 615 else
616 return VPX_CODEC_INVALID_PARAM; 616 return VPX_CODEC_INVALID_PARAM;
617 617
618 } 618 }
619 619
620 static vpx_codec_err_t vp8_set_postproc(vpx_codec_alg_priv_t *ctx, 620 static vpx_codec_err_t vp8_set_postproc(vpx_codec_alg_priv_t *ctx,
621 int ctr_id,
622 va_list args) 621 va_list args)
623 { 622 {
624 #if CONFIG_POSTPROC 623 #if CONFIG_POSTPROC
625 vp8_postproc_cfg_t *data = va_arg(args, vp8_postproc_cfg_t *); 624 vp8_postproc_cfg_t *data = va_arg(args, vp8_postproc_cfg_t *);
626 625
627 if (data) 626 if (data)
628 { 627 {
629 ctx->postproc_cfg_set = 1; 628 ctx->postproc_cfg_set = 1;
630 ctx->postproc_cfg = *((vp8_postproc_cfg_t *)data); 629 ctx->postproc_cfg = *((vp8_postproc_cfg_t *)data);
631 return VPX_CODEC_OK; 630 return VPX_CODEC_OK;
632 } 631 }
633 else 632 else
634 return VPX_CODEC_INVALID_PARAM; 633 return VPX_CODEC_INVALID_PARAM;
635 634
636 #else 635 #else
637 return VPX_CODEC_INCAPABLE; 636 return VPX_CODEC_INCAPABLE;
638 #endif 637 #endif
639 } 638 }
640 639
641 static vpx_codec_err_t vp8_set_dbg_options(vpx_codec_alg_priv_t *ctx, 640
642 int ctrl_id, 641 static vpx_codec_err_t vp8_set_dbg_color_ref_frame(vpx_codec_alg_priv_t *ctx,
643 va_list args) 642 va_list args) {
644 {
645 #if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC 643 #if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
646 int data = va_arg(args, int); 644 ctx->dbg_color_ref_frame_flag = va_arg(args, int);
645 return VPX_CODEC_OK;
646 #else
647 (void)ctx;
648 (void)args;
649 return VPX_CODEC_INCAPABLE;
650 #endif
651 }
647 652
648 #define MAP(id, var) case id: var = data; break; 653 static vpx_codec_err_t vp8_set_dbg_color_mb_modes(vpx_codec_alg_priv_t *ctx,
654 va_list args) {
655 #if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
656 ctx->dbg_color_mb_modes_flag = va_arg(args, int);
657 return VPX_CODEC_OK;
658 #else
659 (void)ctx;
660 (void)args;
661 return VPX_CODEC_INCAPABLE;
662 #endif
663 }
649 664
650 switch (ctrl_id) 665 static vpx_codec_err_t vp8_set_dbg_color_b_modes(vpx_codec_alg_priv_t *ctx,
651 { 666 va_list args) {
652 MAP (VP8_SET_DBG_COLOR_REF_FRAME, ctx->dbg_color_ref_frame_flag); 667 #if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
653 MAP (VP8_SET_DBG_COLOR_MB_MODES, ctx->dbg_color_mb_modes_flag); 668 ctx->dbg_color_b_modes_flag = va_arg(args, int);
654 MAP (VP8_SET_DBG_COLOR_B_MODES, ctx->dbg_color_b_modes_flag); 669 return VPX_CODEC_OK;
655 MAP (VP8_SET_DBG_DISPLAY_MV, ctx->dbg_display_mv_flag); 670 #else
656 } 671 (void)ctx;
672 (void)args;
673 return VPX_CODEC_INCAPABLE;
674 #endif
675 }
657 676
658 return VPX_CODEC_OK; 677 static vpx_codec_err_t vp8_set_dbg_display_mv(vpx_codec_alg_priv_t *ctx,
678 va_list args) {
679 #if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
680 ctx->dbg_display_mv_flag = va_arg(args, int);
681 return VPX_CODEC_OK;
659 #else 682 #else
660 return VPX_CODEC_INCAPABLE; 683 (void)ctx;
684 (void)args;
685 return VPX_CODEC_INCAPABLE;
661 #endif 686 #endif
662 } 687 }
663 688
664 static vpx_codec_err_t vp8_get_last_ref_updates(vpx_codec_alg_priv_t *ctx, 689 static vpx_codec_err_t vp8_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
665 int ctrl_id,
666 va_list args) 690 va_list args)
667 { 691 {
668 int *update_info = va_arg(args, int *); 692 int *update_info = va_arg(args, int *);
669 693
670 if (update_info && !ctx->yv12_frame_buffers.use_frame_threads) 694 if (update_info && !ctx->yv12_frame_buffers.use_frame_threads)
671 { 695 {
672 VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0]; 696 VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
673 697
674 *update_info = pbi->common.refresh_alt_ref_frame * (int) VP8_ALTR_FRAME 698 *update_info = pbi->common.refresh_alt_ref_frame * (int) VP8_ALTR_FRAME
675 + pbi->common.refresh_golden_frame * (int) VP8_GOLD_FRAME 699 + pbi->common.refresh_golden_frame * (int) VP8_GOLD_FRAME
676 + pbi->common.refresh_last_frame * (int) VP8_LAST_FRAME; 700 + pbi->common.refresh_last_frame * (int) VP8_LAST_FRAME;
677 701
678 return VPX_CODEC_OK; 702 return VPX_CODEC_OK;
679 } 703 }
680 else 704 else
681 return VPX_CODEC_INVALID_PARAM; 705 return VPX_CODEC_INVALID_PARAM;
682 } 706 }
683 707
684 extern int vp8dx_references_buffer( VP8_COMMON *oci, int ref_frame ); 708 extern int vp8dx_references_buffer( VP8_COMMON *oci, int ref_frame );
685 static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx, 709 static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx,
686 int ctrl_id,
687 va_list args) 710 va_list args)
688 { 711 {
689 int *ref_info = va_arg(args, int *); 712 int *ref_info = va_arg(args, int *);
690 713
691 if (ref_info && !ctx->yv12_frame_buffers.use_frame_threads) 714 if (ref_info && !ctx->yv12_frame_buffers.use_frame_threads)
692 { 715 {
693 VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0]; 716 VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
694 VP8_COMMON *oci = &pbi->common; 717 VP8_COMMON *oci = &pbi->common;
695 *ref_info = 718 *ref_info =
696 (vp8dx_references_buffer( oci, ALTREF_FRAME )?VP8_ALTR_FRAME:0) | 719 (vp8dx_references_buffer( oci, ALTREF_FRAME )?VP8_ALTR_FRAME:0) |
697 (vp8dx_references_buffer( oci, GOLDEN_FRAME )?VP8_GOLD_FRAME:0) | 720 (vp8dx_references_buffer( oci, GOLDEN_FRAME )?VP8_GOLD_FRAME:0) |
698 (vp8dx_references_buffer( oci, LAST_FRAME )?VP8_LAST_FRAME:0); 721 (vp8dx_references_buffer( oci, LAST_FRAME )?VP8_LAST_FRAME:0);
699 722
700 return VPX_CODEC_OK; 723 return VPX_CODEC_OK;
701 } 724 }
702 else 725 else
703 return VPX_CODEC_INVALID_PARAM; 726 return VPX_CODEC_INVALID_PARAM;
704 } 727 }
705 728
706 static vpx_codec_err_t vp8_get_frame_corrupted(vpx_codec_alg_priv_t *ctx, 729 static vpx_codec_err_t vp8_get_frame_corrupted(vpx_codec_alg_priv_t *ctx,
707 int ctrl_id,
708 va_list args) 730 va_list args)
709 { 731 {
710 732
711 int *corrupted = va_arg(args, int *); 733 int *corrupted = va_arg(args, int *);
712 VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0]; 734 VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
713 735
714 if (corrupted && pbi) 736 if (corrupted && pbi)
715 { 737 {
716 *corrupted = pbi->common.frame_to_show->corrupted; 738 *corrupted = pbi->common.frame_to_show->corrupted;
717 739
718 return VPX_CODEC_OK; 740 return VPX_CODEC_OK;
719 } 741 }
720 else 742 else
721 return VPX_CODEC_INVALID_PARAM; 743 return VPX_CODEC_INVALID_PARAM;
722 744
723 } 745 }
724 746
725 static vpx_codec_err_t vp8_set_decryptor(vpx_codec_alg_priv_t *ctx, 747 static vpx_codec_err_t vp8_set_decryptor(vpx_codec_alg_priv_t *ctx,
726 int ctrl_id,
727 va_list args) 748 va_list args)
728 { 749 {
729 vpx_decrypt_init *init = va_arg(args, vpx_decrypt_init *); 750 vpx_decrypt_init *init = va_arg(args, vpx_decrypt_init *);
730 751
731 if (init) 752 if (init)
732 { 753 {
733 ctx->decrypt_cb = init->decrypt_cb; 754 ctx->decrypt_cb = init->decrypt_cb;
734 ctx->decrypt_state = init->decrypt_state; 755 ctx->decrypt_state = init->decrypt_state;
735 } 756 }
736 else 757 else
737 { 758 {
738 ctx->decrypt_cb = NULL; 759 ctx->decrypt_cb = NULL;
739 ctx->decrypt_state = NULL; 760 ctx->decrypt_state = NULL;
740 } 761 }
741 return VPX_CODEC_OK; 762 return VPX_CODEC_OK;
742 } 763 }
743 764
744 vpx_codec_ctrl_fn_map_t vp8_ctf_maps[] = 765 vpx_codec_ctrl_fn_map_t vp8_ctf_maps[] =
745 { 766 {
746 {VP8_SET_REFERENCE, vp8_set_reference}, 767 {VP8_SET_REFERENCE, vp8_set_reference},
747 {VP8_COPY_REFERENCE, vp8_get_reference}, 768 {VP8_COPY_REFERENCE, vp8_get_reference},
748 {VP8_SET_POSTPROC, vp8_set_postproc}, 769 {VP8_SET_POSTPROC, vp8_set_postproc},
749 {VP8_SET_DBG_COLOR_REF_FRAME, vp8_set_dbg_options}, 770 {VP8_SET_DBG_COLOR_REF_FRAME, vp8_set_dbg_color_ref_frame},
750 {VP8_SET_DBG_COLOR_MB_MODES, vp8_set_dbg_options}, 771 {VP8_SET_DBG_COLOR_MB_MODES, vp8_set_dbg_color_mb_modes},
751 {VP8_SET_DBG_COLOR_B_MODES, vp8_set_dbg_options}, 772 {VP8_SET_DBG_COLOR_B_MODES, vp8_set_dbg_color_b_modes},
752 {VP8_SET_DBG_DISPLAY_MV, vp8_set_dbg_options}, 773 {VP8_SET_DBG_DISPLAY_MV, vp8_set_dbg_display_mv},
753 {VP8D_GET_LAST_REF_UPDATES, vp8_get_last_ref_updates}, 774 {VP8D_GET_LAST_REF_UPDATES, vp8_get_last_ref_updates},
754 {VP8D_GET_FRAME_CORRUPTED, vp8_get_frame_corrupted}, 775 {VP8D_GET_FRAME_CORRUPTED, vp8_get_frame_corrupted},
755 {VP8D_GET_LAST_REF_USED, vp8_get_last_ref_frame}, 776 {VP8D_GET_LAST_REF_USED, vp8_get_last_ref_frame},
756 {VPXD_SET_DECRYPTOR, vp8_set_decryptor}, 777 {VPXD_SET_DECRYPTOR, vp8_set_decryptor},
757 { -1, NULL}, 778 { -1, NULL},
758 }; 779 };
759 780
760 781
761 #ifndef VERSION_STRING 782 #ifndef VERSION_STRING
762 #define VERSION_STRING 783 #define VERSION_STRING
(...skipping 19 matching lines...) Expand all
782 }, 803 },
783 { /* encoder functions */ 804 { /* encoder functions */
784 NOT_IMPLEMENTED, 805 NOT_IMPLEMENTED,
785 NOT_IMPLEMENTED, 806 NOT_IMPLEMENTED,
786 NOT_IMPLEMENTED, 807 NOT_IMPLEMENTED,
787 NOT_IMPLEMENTED, 808 NOT_IMPLEMENTED,
788 NOT_IMPLEMENTED, 809 NOT_IMPLEMENTED,
789 NOT_IMPLEMENTED 810 NOT_IMPLEMENTED
790 } 811 }
791 }; 812 };
OLDNEW
« no previous file with comments | « source/libvpx/vp8/vp8_cx_iface.c ('k') | source/libvpx/vp8/vp8cx.mk » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698