Advertisement
tp7

DegrainMedian, GetFrame part

tp7
Dec 29th, 2013
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.06 KB | None | 0 0
  1. if (vi.IsYV12())
  2.         {
  3.             srcp = src->GetReadPtr(PLANAR_Y); // moved here in v 0.7
  4.             dstp = dst->GetWritePtr(PLANAR_Y);
  5.             src_pitch = src->GetPitch(PLANAR_Y);
  6.             dst_pitch = dst->GetPitch(PLANAR_Y);
  7.             rowsize = dst->GetRowSize(PLANAR_Y);
  8.             height = dst->GetHeight(PLANAR_Y);
  9.             if (limitY>0 && useFrame >= 1 && useFrame < Max_Frames-1)
  10.             {
  11.                 pPrev = PrevSrc->GetReadPtr(PLANAR_Y);
  12.                 pNext = NextSrc->GetReadPtr(PLANAR_Y);
  13.  
  14.                 prev_pitch = PrevSrc->GetPitch(PLANAR_Y);
  15.                 next_pitch = NextSrc->GetPitch(PLANAR_Y);
  16.                 // check pitches and make its equal by copying (for algo) - added in v.0.4
  17.                 prev_created = false;
  18.                 if (prev_pitch != src_pitch)
  19.                 { // copy frame data to array with same pitch as source
  20.                     prevData = (BYTE *)malloc(height*src_pitch);
  21.                     prev_created = true;
  22.                     env->BitBlt(prevData, src_pitch, pPrev, prev_pitch, rowsize, height);
  23.                     pPrev = prevData;
  24.                 }
  25.                 next_created = false;
  26.                 if (next_pitch != src_pitch)
  27.                 { // copy frame data to array with same pitch as source (for algo)
  28.                     nextData = (BYTE *)malloc(height*src_pitch);
  29.                     next_created = true;
  30.                     env->BitBlt(nextData, src_pitch, pNext, next_pitch, rowsize, height);
  31.                     pNext = nextData;
  32.                 }
  33.  
  34.                 if (norow)
  35.                 {
  36.                     if (mode==0)
  37.                         DeGrainMedian_YV12mode0norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  38.                     else if (mode==1)
  39.                         DeGrainMedian_YV12mode1norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  40.                     else if (mode==2)
  41.                         DeGrainMedian_YV12mode2norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  42.                     else if (mode==3)
  43.                         DeGrainMedian_YV12mode3norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  44.                     else if (mode==4)
  45.                         DeGrainMedian_YV12mode4norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  46.                     else if (mode==5)
  47.                         DeGrainMedian_YV12mode5norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  48.                 }
  49.                 else
  50.                 {
  51.                     if (mode==0)
  52.                         DeGrainMedian_YV12mode0i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  53.                     else if (mode==1)
  54.                         DeGrainMedian_YV12mode1i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  55.                     else if (mode==2)
  56.                         DeGrainMedian_YV12mode2i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  57.                     else if (mode==3)
  58.                         DeGrainMedian_YV12mode3i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  59.                     else if (mode==4)
  60.                         DeGrainMedian_YV12mode4i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  61.                     else if (mode==5)
  62.                         DeGrainMedian_YV12mode5i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  63.                 }
  64.  
  65.  
  66.                 // free created copy arrays
  67.                 if (prev_created == true)
  68.                     free(prevData);
  69.                 if (next_created == true)
  70.                     free(nextData);
  71.             }
  72.             else
  73.                 env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
  74.            
  75.             srcp = src->GetReadPtr(PLANAR_U);
  76.             dstp = dst->GetWritePtr(PLANAR_U);
  77.             src_pitch = src->GetPitch(PLANAR_U);
  78.             dst_pitch = dst->GetPitch(PLANAR_U);
  79.             rowsize = dst->GetRowSize(PLANAR_U);
  80.             height = dst->GetHeight(PLANAR_U);
  81.             if (limitUV>0 && useFrame >= 1 && useFrame < Max_Frames-1)
  82.             {
  83.                 pPrev = PrevSrc->GetReadPtr(PLANAR_U);
  84.                 pNext = NextSrc->GetReadPtr(PLANAR_U);
  85.                 prev_pitch = PrevSrc->GetPitch(PLANAR_U);
  86.                 next_pitch = NextSrc->GetPitch(PLANAR_U);
  87.                 // check pitches and make its equal by copying (for algo) - added in v.0.4
  88.                 prev_created = false;
  89.                 if (prev_pitch != src_pitch)
  90.                 { // copy frame data to array with same pitch as source
  91.                     prevData = (BYTE *)malloc(height*src_pitch);
  92.                     prev_created = true;
  93.                     env->BitBlt(prevData, src_pitch, pPrev, prev_pitch, rowsize, height);
  94.                     pPrev = prevData;
  95.                 }
  96.                 next_created = false;
  97.                 if (next_pitch != src_pitch)
  98.                 { // copy frame data to array with same pitch as source (for algo)
  99.                     nextData = (BYTE *)malloc(height*src_pitch);
  100.                     next_created = true;
  101.                     env->BitBlt(nextData, src_pitch, pNext, next_pitch, rowsize, height);
  102.                     pNext = nextData;
  103.                 }
  104.  
  105.                 if (norow)
  106.                 {
  107.                     if (mode==0)
  108.                         DeGrainMedian_YV12mode0norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext,rowsize, height, limitUV);
  109.                     else if (mode==1)
  110.                         DeGrainMedian_YV12mode1norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  111.                     else if (mode==2)
  112.                         DeGrainMedian_YV12mode2norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  113.                     else if (mode==3)
  114.                         DeGrainMedian_YV12mode3norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  115.                     else if (mode==4)
  116.                         DeGrainMedian_YV12mode4norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  117.                     else if (mode==5)
  118.                         DeGrainMedian_YV12mode5norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  119.                 }
  120.                 else
  121.                 {
  122.                     if (mode==0)
  123.                         DeGrainMedian_YV12mode0i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext,rowsize, height, limitUV);
  124.                     else if (mode==1)
  125.                         DeGrainMedian_YV12mode1i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  126.                     else if (mode==2)
  127.                         DeGrainMedian_YV12mode2i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  128.                     else if (mode==3)
  129.                         DeGrainMedian_YV12mode3i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  130.                     else if (mode==4)
  131.                         DeGrainMedian_YV12mode4i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  132.                     else if (mode==5)
  133.                         DeGrainMedian_YV12mode5i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  134.                 }
  135.            
  136.  
  137.                 // free created copy arrays
  138.                 if (prev_created == true)
  139.                     free(prevData);
  140.                 if (next_created == true)
  141.                     free(nextData);
  142.             }
  143.             else
  144.                 env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
  145.            
  146.             srcp = src->GetReadPtr(PLANAR_V);
  147.             dstp = dst->GetWritePtr(PLANAR_V);
  148.             src_pitch = src->GetPitch(PLANAR_V);
  149.             dst_pitch = dst->GetPitch(PLANAR_V);
  150.             rowsize = dst->GetRowSize(PLANAR_V);
  151.             height = dst->GetHeight(PLANAR_V);
  152.             if (limitUV>0 && useFrame >= 1 && useFrame < Max_Frames-1)
  153.             {
  154.                 pPrev = PrevSrc->GetReadPtr(PLANAR_V);
  155.                 pNext = NextSrc->GetReadPtr(PLANAR_V);
  156.                 prev_pitch = PrevSrc->GetPitch(PLANAR_V);
  157.                 next_pitch = NextSrc->GetPitch(PLANAR_V);
  158.                 // check pitches and make its equal by copying (for algo) - added in v.0.4
  159.                 prev_created = false;
  160.                 if (prev_pitch != src_pitch)
  161.                 { // copy frame data to array with same pitch as source
  162.                     prevData = (BYTE *)malloc(height*src_pitch);
  163.                     prev_created = true;
  164.                     env->BitBlt(prevData, src_pitch, pPrev, prev_pitch, rowsize, height);
  165.                     pPrev = prevData;
  166.                 }
  167.                 next_created = false;
  168.                 if (next_pitch != src_pitch)
  169.                 { // copy frame data to array with same pitch as source (for algo)
  170.                     nextData = (BYTE *)malloc(height*src_pitch);
  171.                     next_created = true;
  172.                     env->BitBlt(nextData, src_pitch, pNext, next_pitch, rowsize, height);
  173.                     pNext = nextData;
  174.                 }
  175.  
  176.                 if (norow)
  177.                 {
  178.                     if (mode==0)
  179.                         DeGrainMedian_YV12mode0norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext,rowsize, height, limitUV);
  180.                     else if (mode==1)
  181.                         DeGrainMedian_YV12mode1norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  182.                     else if (mode==2)
  183.                         DeGrainMedian_YV12mode2norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  184.                     else if (mode==3)
  185.                         DeGrainMedian_YV12mode3norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  186.                     else if (mode==4)
  187.                         DeGrainMedian_YV12mode4norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  188.                     else if (mode==5)
  189.                         DeGrainMedian_YV12mode5norowi( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  190.                 }
  191.                 else
  192.                 {
  193.                     if (mode==0)
  194.                         DeGrainMedian_YV12mode0i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext,rowsize, height, limitUV);
  195.                     else if (mode==1)
  196.                         DeGrainMedian_YV12mode1i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  197.                     else if (mode==2)
  198.                         DeGrainMedian_YV12mode2i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  199.                     else if (mode==3)
  200.                         DeGrainMedian_YV12mode3i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  201.                     else if (mode==4)
  202.                         DeGrainMedian_YV12mode4i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  203.                     else if (mode==5)
  204.                         DeGrainMedian_YV12mode5i( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  205.                 }
  206.            
  207.  
  208.                 // free created copy arrays
  209.                 if (prev_created == true)
  210.                     free(prevData);
  211.                 if (next_created == true)
  212.                     free(nextData);
  213.             }
  214.             else
  215.                 env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
  216.            
  217.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement