Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (vi.IsYV12())
- {
- srcp = src->GetReadPtr(PLANAR_Y);
- dstp = dst->GetWritePtr(PLANAR_Y);
- src_pitch = src->GetPitch(PLANAR_Y);
- dst_pitch = dst->GetPitch(PLANAR_Y);
- rowsize = dst->GetRowSize(PLANAR_Y);
- height = dst->GetHeight(PLANAR_Y);
- if (limitY>0 && useFrame >= 1 && useFrame < Max_Frames-1)
- {
- pPrev = PrevSrc->GetReadPtr(PLANAR_Y);
- pNext = NextSrc->GetReadPtr(PLANAR_Y);
- prev_pitch = PrevSrc->GetPitch(PLANAR_Y);
- next_pitch = NextSrc->GetPitch(PLANAR_Y);
- // check pitches and make its equal by copying (for algo) - added in v.0.4
- prev_created = false;
- if (prev_pitch != src_pitch)
- { // copy frame data to array with same pitch as source
- prevData = (BYTE *)malloc(height*src_pitch);
- prev_created = true;
- env->BitBlt(prevData, src_pitch, pPrev, prev_pitch, rowsize, height);
- pPrev = prevData;
- }
- next_created = false;
- if (next_pitch != src_pitch)
- { // copy frame data to array with same pitch as source (for algo)
- nextData = (BYTE *)malloc(height*src_pitch);
- next_created = true;
- env->BitBlt(nextData, src_pitch, pNext, next_pitch, rowsize, height);
- pNext = nextData;
- }
- if (norow)
- {
- if (mode==0)
- DeGrainMedian_YV12mode0norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==1)
- DeGrainMedian_YV12mode1norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==2)
- DeGrainMedian_YV12mode2norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==3)
- DeGrainMedian_YV12mode3norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==4)
- DeGrainMedian_YV12mode4norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==5)
- DeGrainMedian_YV12mode5norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- }
- else
- {
- if (mode==0)
- DeGrainMedian_YV12mode0( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==1)
- DeGrainMedian_YV12mode1( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==2)
- DeGrainMedian_YV12mode2( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==3)
- DeGrainMedian_YV12mode3( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==4)
- DeGrainMedian_YV12mode4( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- else if (mode==5)
- DeGrainMedian_YV12mode5( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitY);
- }
- // free created copy arrays
- if (prev_created == true)
- free(prevData);
- if (next_created == true)
- free(nextData);
- }
- else
- env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
- srcp = src->GetReadPtr(PLANAR_U);
- dstp = dst->GetWritePtr(PLANAR_U);
- src_pitch = src->GetPitch(PLANAR_U);
- dst_pitch = dst->GetPitch(PLANAR_U);
- rowsize = dst->GetRowSize(PLANAR_U);
- height = dst->GetHeight(PLANAR_U);
- if (limitUV>0 && useFrame >= 1 && useFrame < Max_Frames-1)
- {
- pPrev = PrevSrc->GetReadPtr(PLANAR_U);
- pNext = NextSrc->GetReadPtr(PLANAR_U);
- prev_pitch = PrevSrc->GetPitch(PLANAR_U);
- next_pitch = NextSrc->GetPitch(PLANAR_U);
- // check pitches and make its equal by copying (for algo) - added in v.0.4
- prev_created = false;
- if (prev_pitch != src_pitch)
- { // copy frame data to array with same pitch as source
- prevData = (BYTE *)malloc(height*src_pitch);
- prev_created = true;
- env->BitBlt(prevData, src_pitch, pPrev, prev_pitch, rowsize, height);
- pPrev = prevData;
- }
- next_created = false;
- if (next_pitch != src_pitch)
- { // copy frame data to array with same pitch as source (for algo)
- nextData = (BYTE *)malloc(height*src_pitch);
- next_created = true;
- env->BitBlt(nextData, src_pitch, pNext, next_pitch, rowsize, height);
- pNext = nextData;
- }
- if (norow)
- {
- if (mode==0)
- DeGrainMedian_YV12mode0norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==1)
- DeGrainMedian_YV12mode1norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==2)
- DeGrainMedian_YV12mode2norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==3)
- DeGrainMedian_YV12mode3norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==4)
- DeGrainMedian_YV12mode4norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==5)
- DeGrainMedian_YV12mode5norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- }
- else
- {
- if (mode==0)
- DeGrainMedian_YV12mode0( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==1)
- DeGrainMedian_YV12mode1( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==2)
- DeGrainMedian_YV12mode2( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==3)
- DeGrainMedian_YV12mode3( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==4)
- DeGrainMedian_YV12mode4( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==5)
- DeGrainMedian_YV12mode5( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- }
- // free created copy arrays
- if (prev_created == true)
- free(prevData);
- if (next_created == true)
- free(nextData);
- }
- else
- env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
- srcp = src->GetReadPtr(PLANAR_V);
- dstp = dst->GetWritePtr(PLANAR_V);
- src_pitch = src->GetPitch(PLANAR_V);
- dst_pitch = dst->GetPitch(PLANAR_V);
- rowsize = dst->GetRowSize(PLANAR_V);
- height = dst->GetHeight(PLANAR_V);
- if (limitUV>0 && useFrame >= 1 && useFrame < Max_Frames-1)
- {
- pPrev = PrevSrc->GetReadPtr(PLANAR_V);
- pNext = NextSrc->GetReadPtr(PLANAR_V);
- prev_pitch = PrevSrc->GetPitch(PLANAR_V);
- next_pitch = NextSrc->GetPitch(PLANAR_V);
- // check pitches and make its equal by copying (for algo) - added in v.0.4
- prev_created = false;
- if (prev_pitch != src_pitch)
- { // copy frame data to array with same pitch as source
- prevData = (BYTE *)malloc(height*src_pitch);
- prev_created = true;
- env->BitBlt(prevData, src_pitch, pPrev, prev_pitch, rowsize, height);
- pPrev = prevData;
- }
- next_created = false;
- if (next_pitch != src_pitch)
- { // copy frame data to array with same pitch as source (for algo)
- nextData = (BYTE *)malloc(height*src_pitch);
- next_created = true;
- env->BitBlt(nextData, src_pitch, pNext, next_pitch, rowsize, height);
- pNext = nextData;
- }
- if (norow)
- {
- if (mode==0)
- DeGrainMedian_YV12mode0norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==1)
- DeGrainMedian_YV12mode1norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==2)
- DeGrainMedian_YV12mode2norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==3)
- DeGrainMedian_YV12mode3norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==4)
- DeGrainMedian_YV12mode4norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==5)
- DeGrainMedian_YV12mode5norow( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- }
- else
- {
- if (mode==0)
- DeGrainMedian_YV12mode0( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==1)
- DeGrainMedian_YV12mode1( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==2)
- DeGrainMedian_YV12mode2( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==3)
- DeGrainMedian_YV12mode3( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==4)
- DeGrainMedian_YV12mode4( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- else if (mode==5)
- DeGrainMedian_YV12mode5( dstp,dst_pitch, pPrev, srcp, src_pitch, pNext, rowsize, height, limitUV);
- }
- // free created copy arrays
- if (prev_created == true)
- free(prevData);
- if (next_created == true)
- free(nextData);
- }
- else
- env->BitBlt(dstp, dst_pitch, srcp, src_pitch, rowsize, height);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement