- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm trying to deinterlace a video but somehow it's not working well.
I receive a 4:2:2 non-planar video in YCbCr. This is fix and garateed.
I give the user an option to de-interlace the video. I've included the code.
The thing is that when i use the deinterlacing path, the video shows strange artifacts. It shows for example some of left part of the video in the right corner, and this looks like its interlaced.
So it keeps some lines of the left part in the correct position, and the other parts somewhere else.
As it's messing with the step. Does anyone have an idea what's wrong ?
Thank you.
The unny thing is that I've used the nvidia rotation to rotate the display, and again, the vertical lines... why does it happen only when the video is somehow rotated ?
Another thing, If I use ippiCbYCr422ToYCbCr420_8u_C2P3R instead of the interlace method, the artifacts are there as well. The error must be on the ippiYCbCr420ToBGR_8u_P3C3R function.
Marco
//reorder bytes
ippError = ippiYCbCr422ToCbYCr422_8u_C2R(pAuxIn, m_srcStep, m_auxiliarBuffer,
m_auxiliarBufferStep, m_srcSize);
if (ippError == 0) {
// convert to planar data, de-interlacing
ippError = ippiCbYCr422ToYCbCr420_Interlace_8u_C2P3R(
m_auxiliarBuffer, m_auxiliarBufferStep, m_planarBuffer, m_planarStep, m_srcSize);
if (ippError == 0) {
// convert to non-planar RGB
ippError = ippiYCbCr420ToBGR_8u_P3C3R(m_planarBuffer, m_planarStep,
m_auxiliarBuffer, m_auxiliarBufferStep, reducedSize);
if (ippError != 0)
DbgOutString(L" convert to RGB Failed!! --- ");
} else {
DbgOutString(L" deinterlace --- Failed!! --- ");
}
} else {
DbgOutString(L" reordering --- Failed!! --- ");
}
// convert to RGB
} else {
ippError = ippiYCbCr422ToBGR_8u_C2C3R(pAuxIn, m_srcStep, m_auxiliarBuffer,
&n bsp; m_auxiliarBufferStep, reducedSize);
}
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
if you pay attention to IPP documentation you may notice that ippiCbYCr422ToYCbCr420_Interlace_8u_C2P3R function do not do de-interlacing. It convert image from one format to other.
We do have in IPP functions which were specifically designed to do de-interlacing:
ippiDeinterlaceMotionAdaptive_8u_C1
ippiDeinterlaceBlend_8u_C1
ippiDeinterlaceFilterTriangle_8u_C1R
ippiDeinterlaceMedianThreshold_8u_C1R
ippiDeinterlaceEdgeDetect_8u_C1R
ippiDeinterlaceFilterCAVT_8u_C1R
ippiMedian_8u_P3C1R
you can see example of their usage in audio-video-codec sample, color-converter component, file umc_deinterlacing.cpp
Regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vladimir,
When you are mentioning that code sample I believe there is a bug "hidden" in it:
int field = (in->GetPictureStructure() & PS_TOP_FIELD_FIRST) ? 1 : 0; if (NULL == in || NULL == out) { return UMC_ERR_NULL_PTR; }
NULL check should come before dereferencing the pointer (in->GetPicture...).
Moreover, it doesn't explain how to use ippiDeinterlaceMotionAdaptive_8u_C1 which seems the most interesting one.
Finally, I really don't understand why those functions operate only on a single channel thus requiring splitting an RGBA image, multiple invocations and merging to RGBA afterwards.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vladimir
Vladimir,
Any progress on this? I would like to assess the speed and quality of IPP denterlace beforre I decide whether I should sit down and roll my own.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vladimir
Frankly I am more concerned with getting a usage sample or a more detailed explanation/documentation as to how to use that deinterlace function I asked about (the one which isn't in a sample).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Frankly I am more concerned with getting a usage sample or a more detailed explanation/documentation as to how to use that deinterlace function I asked about (the one which isn't in a sample).
Bump.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Could you please checkprevioustopics on deinterlace functions which might be already address your question, for example http://software.intel.com/en-us/forums/showthread.php?t=77702&o=a&s=lr.
Regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
http://origin-software.intel.com/en-us/forums/showthread.php?t=78614
I failed to find a clear example how to use ippiDeinterlaceMotionAdaptive_8u_C1() to process color video.
Documentation for deinterlacing functions should explain the algorithm, state expected color format, and data layout in memory (i.e. planar, interleaved, top or bottom field first, etc) in addition to giving usage examples.
Any chance we get documentation update? How about you task those developers who wrote the functions with documenting them properly now?

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page