分享一个H7硬解码JPEG图片文件

2019-07-20 04:19发布

Chrom-Art Accelerator(DMA2D)是一个图形加速器,提供了高级的比特显示,行数据拷贝和像素格式转换。它支持以下功能:
•长方形填充有固定的颜 {MOD}
•矩形复制
•矩形拷贝和像素格式转换
•长方形合成,混合和像素格式转换
支持各种图像格式编码,从间接的4 bpp颜 {MOD}模式到32 bpp直接的颜 {MOD}。它嵌入了专用内存来存储颜 {MOD}查找表。
DMA2D还支持基于块的YCbCr来处理JPEG解码器输出。一个中断可以在一个操作完成或在程序中产生。水印。
所有操作都是完全自动化的,并且独立于CPU或DMA执行。


void LCD_CopyBuffer_YCbCr_To_RGB(uint32_t *pSrc, uint16_t x, uint16_t y,uint16_t xsize, uint16_t ysize,uint32_t ChromaSampling)
为显示函数
pSrc:数据源
x     :起始x坐标
y     :起始y坐标
xsize:宽度
ysize:高度
ChromaSampling: {MOD}度抽样
代码内容可以对着寄存器看一下这就不多说了。(应为我还理解完)


        FATFS_LinkDriver(&SD_Driver, SDPath);
        f_mount(&SDFatFs, (TCHAR const*)SDPath, 1);
        JPEG_OUTPUT_DATA_BUFFER = mymalloc(SRAMEX,1024*600*2);
       
        JPEG_Handle.Instance = JPEG;
        HAL_JPEG_Init(&JPEG_Handle);
       


//        HAL_JPEG_DeInit(&JPEG_Handle);       
//       
//        myfree(SRAMEX,JPEG_OUTPUT_DATA_BUFFER);
        for (;;)
        {       
                TICVK = HAL_GetTick();
                JPEG_picture(path1,JPEG_OUTPUT_DATA_BUFFER);
                LCD_CopyBuffer_YCbCr_To_RGB(JPEG_OUTPUT_DATA_BUFFER,0,0,JPEG_Info.ImageWidth, JPEG_Info.ImageHeight,JPEG_Info.ChromaSubsampling);
                printf_dma("%s show ok  %dms ",path1, HAL_GetTick()- TICVK);
                osDelay(100);
                LCD_Clear(BLACK);       
        }



这个是显示方法。。。。只支持RGB的屏幕

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
qiousanxi
1楼-- · 2019-07-20 05:24
这里使用的是DMA2D的 YCbCr转换功能,如果有32位SDRAM  那就不得了了,期待原子哥 750系列可以上@正点原子
qiousanxi
2楼-- · 2019-07-20 08:23
 精彩回答 2  元偷偷看……
qiousanxi
3楼-- · 2019-07-20 11:12
 精彩回答 2  元偷偷看……
tuoxin
4楼-- · 2019-07-20 12:16
谢谢分享!
正点原子
5楼-- · 2019-07-20 14:43
谢谢分享
qiousanxi
6楼-- · 2019-07-20 18:34
 精彩回答 2  元偷偷看……

一周热门 更多>