<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックIMX6 bayer to RGB</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/IMX6-bayer-to-RGB/m-p/874705#M132791</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are using Aptina&amp;nbsp; sensor (mt9p031) and interfaced with csi parallel bus. My sensor output gives bayer RGB (GRGB format) height &amp;amp; width = 2580X1944. I am able to display monochrome image with 15 fps.&lt;/P&gt;&lt;P&gt;Using opencv I am able to convert bayer to RGB, but it's not meeting our requirement (i.e., FPS is too low). I know IMX6 doesn't have ISP, so I planned to implement&amp;nbsp; demosaicing algoritim at driver level.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please suggest is it possible to implement at driver level, if yes please share the required modifications..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 20 Mar 2019 14:31:13 GMT</pubDate>
    <dc:creator>prasadadireddy</dc:creator>
    <dc:date>2019-03-20T14:31:13Z</dc:date>
    <item>
      <title>IMX6 bayer to RGB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IMX6-bayer-to-RGB/m-p/874705#M132791</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are using Aptina&amp;nbsp; sensor (mt9p031) and interfaced with csi parallel bus. My sensor output gives bayer RGB (GRGB format) height &amp;amp; width = 2580X1944. I am able to display monochrome image with 15 fps.&lt;/P&gt;&lt;P&gt;Using opencv I am able to convert bayer to RGB, but it's not meeting our requirement (i.e., FPS is too low). I know IMX6 doesn't have ISP, so I planned to implement&amp;nbsp; demosaicing algoritim at driver level.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please suggest is it possible to implement at driver level, if yes please share the required modifications..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Mar 2019 14:31:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IMX6-bayer-to-RGB/m-p/874705#M132791</guid>
      <dc:creator>prasadadireddy</dc:creator>
      <dc:date>2019-03-20T14:31:13Z</dc:date>
    </item>
    <item>
      <title>Re: IMX6 bayer to RGB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IMX6-bayer-to-RGB/m-p/874706#M132792</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi prasad,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;.MX6 IPU don't make Bayer conversion. You will need to use some graphics library/API like gstreamer, ffmpeg and others to make this conversion using the CPU. IPU (IC, DP, DC and etc) doesn't recognize bayer as a valid image format. It can receive bayer format from CSI port as generic data.&lt;/P&gt;&lt;P&gt;I have this capture driver (using the IPU) and used the following code to map the DMA memory (from IPU) to user space: Normally because of DMA memory is mapped uncached, but due to size and usage, it's no problem to map it cached.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* function to map DMA memory to user space */&lt;/P&gt;&lt;P&gt;static int capture_mmap(struct file *file, struct vm_area_struct *vm)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; struct capture_device *dev = file-&amp;gt;private_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; size_t rsize = vm-&amp;gt;vm_end - vm-&amp;gt;vm_start;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; int map;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; int idx;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if ((vm-&amp;gt;vm_pgoff * PAGE_SIZE) != (unsigned long)dev-&amp;gt;dma)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -ENOMEM;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wrong base address */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (down_interruptible(&amp;amp;dev-&amp;gt;busy_lock))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -EINTR;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; vm-&amp;gt;vm_page_prot = phys_mem_access_prot(file, vm-&amp;gt;vm_pgoff, rsize, vm-&amp;gt;vm_page_prot);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* map DMA memory to user process (allow cacheable, since data much larger than cache) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if (remap_pfn_range(vm, vm-&amp;gt;vm_start, vm-&amp;gt;vm_pgoff, rsize, vm-&amp;gt;vm_page_prot))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map = EAGAIN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; up(&amp;amp;dev-&amp;gt;busy_lock);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return map;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you use some driver from NXP, you may have to change the driver.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Apr 2019 15:12:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IMX6-bayer-to-RGB/m-p/874706#M132792</guid>
      <dc:creator>Bio_TICFSL</dc:creator>
      <dc:date>2019-04-03T15:12:59Z</dc:date>
    </item>
  </channel>
</rss>

