Advertisement
tp7

DegrainMedian, GetFrame part 2

tp7
Dec 29th, 2013
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.99 KB | None | 0 0
  1. if (vi.IsYV12())
  2.         {
  3.             srcp = src->GetReadPtr(PLANAR_Y);
  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_YV12mode0norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  38.                     else if (mode==1)
  39.                         DeGrainMedian_YV12mode1norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  40.                     else if (mode==2)
  41.                         DeGrainMedian_YV12mode2norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  42.                     else if (mode==3)
  43.                         DeGrainMedian_YV12mode3norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  44.                     else if (mode==4)
  45.                         DeGrainMedian_YV12mode4norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  46.                     else if (mode==5)
  47.                         DeGrainMedian_YV12mode5norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  48.                 }
  49.                 else
  50.                 {
  51.                     if (mode==0)
  52.                         DeGrainMedian_YV12mode0( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  53.                     else if (mode==1)
  54.                         DeGrainMedian_YV12mode1( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  55.                     else if (mode==2)
  56.                         DeGrainMedian_YV12mode2( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  57.                     else if (mode==3)
  58.                         DeGrainMedian_YV12mode3( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  59.                     else if (mode==4)
  60.                         DeGrainMedian_YV12mode4( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
  61.                     else if (mode==5)
  62.                         DeGrainMedian_YV12mode5( 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_YV12mode0norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  109.                     else if (mode==1)
  110.                         DeGrainMedian_YV12mode1norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  111.                     else if (mode==2)
  112.                         DeGrainMedian_YV12mode2norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  113.                     else if (mode==3)
  114.                         DeGrainMedian_YV12mode3norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  115.                     else if (mode==4)
  116.                         DeGrainMedian_YV12mode4norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  117.                     else if (mode==5)
  118.                         DeGrainMedian_YV12mode5norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  119.                 }
  120.                 else
  121.                 {
  122.                     if (mode==0)
  123.                         DeGrainMedian_YV12mode0( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  124.                     else if (mode==1)
  125.                         DeGrainMedian_YV12mode1( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  126.                     else if (mode==2)
  127.                         DeGrainMedian_YV12mode2( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  128.                     else if (mode==3)
  129.                         DeGrainMedian_YV12mode3( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  130.                     else if (mode==4)
  131.                         DeGrainMedian_YV12mode4( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  132.                     else if (mode==5)
  133.                         DeGrainMedian_YV12mode5( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  134.                 }
  135.        
  136.                 // free created copy arrays
  137.                 if (prev_created == true)
  138.                     free(prevData);
  139.                 if (next_created == true)
  140.                     free(nextData);
  141.             }
  142.             else
  143.                 env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
  144.            
  145.             srcp = src->GetReadPtr(PLANAR_V);
  146.             dstp = dst->GetWritePtr(PLANAR_V);
  147.             src_pitch = src->GetPitch(PLANAR_V);
  148.             dst_pitch = dst->GetPitch(PLANAR_V);
  149.             rowsize = dst->GetRowSize(PLANAR_V);
  150.             height = dst->GetHeight(PLANAR_V);
  151.             if (limitUV>0 && useFrame >= 1 && useFrame < Max_Frames-1)
  152.             {
  153.                 pPrev = PrevSrc->GetReadPtr(PLANAR_V);
  154.                 pNext = NextSrc->GetReadPtr(PLANAR_V);
  155.                 prev_pitch = PrevSrc->GetPitch(PLANAR_V);
  156.                 next_pitch = NextSrc->GetPitch(PLANAR_V);
  157.                 // check pitches and make its equal by copying (for algo) - added in v.0.4
  158.                 prev_created = false;
  159.                 if (prev_pitch != src_pitch)
  160.                 { // copy frame data to array with same pitch as source
  161.                     prevData = (BYTE *)malloc(height*src_pitch);
  162.                     prev_created = true;
  163.                     env->BitBlt(prevData, src_pitch, pPrev, prev_pitch, rowsize, height);
  164.                     pPrev = prevData;
  165.                 }
  166.                 next_created = false;
  167.                 if (next_pitch != src_pitch)
  168.                 { // copy frame data to array with same pitch as source (for algo)
  169.                     nextData = (BYTE *)malloc(height*src_pitch);
  170.                     next_created = true;
  171.                     env->BitBlt(nextData, src_pitch, pNext, next_pitch, rowsize, height);
  172.                     pNext = nextData;
  173.                 }
  174.  
  175.                 if (norow)
  176.                 {
  177.                     if (mode==0)
  178.                         DeGrainMedian_YV12mode0norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  179.                     else if (mode==1)
  180.                         DeGrainMedian_YV12mode1norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  181.                     else if (mode==2)
  182.                         DeGrainMedian_YV12mode2norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  183.                     else if (mode==3)
  184.                         DeGrainMedian_YV12mode3norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  185.                     else if (mode==4)
  186.                         DeGrainMedian_YV12mode4norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  187.                     else if (mode==5)
  188.                         DeGrainMedian_YV12mode5norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  189.                 }
  190.                 else
  191.                 {
  192.                     if (mode==0)
  193.                         DeGrainMedian_YV12mode0( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  194.                     else if (mode==1)
  195.                         DeGrainMedian_YV12mode1( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  196.                     else if (mode==2)
  197.                         DeGrainMedian_YV12mode2( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  198.                     else if (mode==3)
  199.                         DeGrainMedian_YV12mode3( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  200.                     else if (mode==4)
  201.                         DeGrainMedian_YV12mode4( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  202.                     else if (mode==5)
  203.                         DeGrainMedian_YV12mode5( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
  204.                 }
  205.        
  206.                 // free created copy arrays
  207.                 if (prev_created == true)
  208.                     free(prevData);
  209.                 if (next_created == true)
  210.                     free(nextData);
  211.             }
  212.             else
  213.                 env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement