Changeset 790 in 3DVCSoftware for branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibEncoder/TEncSbac.cpp
- Timestamp:
- 22 Jan 2014, 09:44:36 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibEncoder/TEncSbac.cpp
r773 r790 678 678 679 679 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 680 680 #if MTK_TEX_DEP_PAR_G0055 681 Bool depthDependent = false; 682 UInt uiTexturePart = eSize; 683 #endif 681 684 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() ) 682 685 { … … 684 687 UInt uiCUIdx = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU(); 685 688 assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); 689 #if !MTK_TEX_DEP_PAR_G0055 686 690 if (pcTextureCU->getDepth(uiCUIdx) == uiDepth && pcTextureCU->getPartitionSize( uiCUIdx ) != SIZE_NxN) 691 #else 692 if(pcTextureCU->getDepth(uiCUIdx) == uiDepth ) 693 { 694 depthDependent = true; 695 uiTexturePart = pcTextureCU->getPartitionSize( uiCUIdx ); 696 } 697 if (pcTextureCU->getDepth(uiCUIdx) == uiDepth && pcTextureCU->getPartitionSize( uiCUIdx ) == SIZE_2Nx2N) 698 #endif 687 699 { 688 700 assert( eSize == SIZE_2Nx2N ); … … 702 714 return; 703 715 } 704 716 705 717 #if H_MV_ENC_DEC_TRAC 706 718 DTRACE_CU("part_mode", eSize ) 707 719 #endif 708 switch(eSize) 709 { 710 case SIZE_2Nx2N: 711 { 712 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 713 break; 714 } 715 case SIZE_2NxN: 716 case SIZE_2NxnU: 717 case SIZE_2NxnD: 718 { 719 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 720 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 721 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 722 { 723 if (eSize == SIZE_2NxN) 720 #if MTK_TEX_DEP_PAR_G0055 721 if (depthDependent==false || uiTexturePart == SIZE_NxN|| uiTexturePart == SIZE_2Nx2N) 722 { 723 #endif 724 switch(eSize) 725 { 726 case SIZE_2Nx2N: 724 727 { 725 m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 )); 728 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 729 break; 726 730 } 727 else 731 case SIZE_2NxN: 732 case SIZE_2NxnU: 733 case SIZE_2NxnD: 728 734 { 729 m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 )); 735 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 736 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 737 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 738 { 739 if (eSize == SIZE_2NxN) 740 { 741 m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 )); 742 } 743 else 744 { 745 m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 )); 746 m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1)); 747 } 748 } 749 break; 750 } 751 case SIZE_Nx2N: 752 case SIZE_nLx2N: 753 case SIZE_nRx2N: 754 { 755 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 756 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 757 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) ) 758 { 759 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) ); 760 } 761 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 762 { 763 if (eSize == SIZE_Nx2N) 764 { 765 m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 )); 766 } 767 else 768 { 769 m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 )); 770 m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1)); 771 } 772 } 773 break; 774 } 775 case SIZE_NxN: 776 { 777 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) ) 778 { 779 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 780 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 781 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) ); 782 } 783 break; 784 } 785 default: 786 { 787 assert(0); 788 } 789 } 790 #if MTK_TEX_DEP_PAR_G0055 791 } 792 else if(uiTexturePart == SIZE_2NxN || uiTexturePart == SIZE_2NxnU || uiTexturePart == SIZE_2NxnD) 793 { 794 //assert(eSize!=SIZE_NxN); 795 //assert(eSize!=SIZE_Nx2N); 796 //assert(eSize==SIZE_2Nx2N || eSize==SIZE_2NxN || eSize==SIZE_2NxnU || eSize==SIZE_2NxnD); 797 switch(eSize) 798 { 799 case SIZE_2Nx2N: 800 { 801 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 802 break; 803 } 804 case SIZE_2NxN: 805 { 806 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 807 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 808 { 809 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 810 } 811 break; 812 } 813 case SIZE_2NxnU: 814 case SIZE_2NxnD: 815 { 816 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 817 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 730 818 m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1)); 819 break; 731 820 } 732 } 733 break; 734 } 735 case SIZE_Nx2N: 736 case SIZE_nLx2N: 737 case SIZE_nRx2N: 738 { 739 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 740 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 741 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) ) 742 { 743 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) ); 744 } 745 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 746 { 747 if (eSize == SIZE_Nx2N) 821 default: 748 822 { 749 m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 ));823 assert(0); 750 824 } 751 else 825 } 826 } 827 else if(uiTexturePart == SIZE_Nx2N|| uiTexturePart==SIZE_nLx2N || uiTexturePart==SIZE_nRx2N) 828 { 829 //assert(eSize!=SIZE_NxN); 830 //assert(eSize!=SIZE_2NxN); 831 //assert(eSize==SIZE_2Nx2N ||eSize==SIZE_Nx2N || eSize==SIZE_nLx2N || eSize==SIZE_nRx2N); 832 switch(eSize) 833 { 834 case SIZE_2Nx2N: 752 835 { 753 m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 )); 836 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 837 break; 838 } 839 case SIZE_Nx2N: 840 { 841 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 842 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 843 { 844 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 845 } 846 break; 847 } 848 case SIZE_nLx2N: 849 case SIZE_nRx2N: 850 { 851 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 852 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 754 853 m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1)); 854 break; 755 855 } 756 } 757 break; 758 } 759 case SIZE_NxN: 760 { 761 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) ) 762 { 763 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 764 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 765 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) ); 766 } 767 break; 768 } 769 default: 770 { 856 default: 857 { 858 assert(0); 859 } 860 } 861 } 862 else 863 { 864 printf("uiTexturePart=%d",uiTexturePart); 771 865 assert(0); 772 866 } 773 } 867 #endif 774 868 } 775 869
Note: See TracChangeset for help on using the changeset viewer.