如果全是c语言代码,一般直接移植过去就可以干活,只是内存在DSP上比PC上可能会有一些限制。还有就是要重新设计DSP的(图象)数据的输入和输出。
然后如果对解码效率如果不满意,则需要参照该款DSP提供的算法库(一般DSP供应商都会提供针对该款DSP优化的算法库)的文档将一些频繁使用的算法替换成调用这些算法库的程序,这个就是移植了,参照算法库时也需要根据算法库的要求安排数据在DSP存储区中的存放位置(片内/片外)。
再有就是进一步提高效率,利用DSP的特殊设备比如DMA、一二级高速缓存、特殊指令、高速片内存储器等等继续优化算法。
1、二维码有很多种标准,可以控制存储数据的信息量,也可以控制容错的数据量[使得部分污损的二维码可以被正常读取。通常的做法是调用二维码设计方提供的组件,如果是自己生成二维码,应该可以生成可以看起来很像的东西。
2、例程:
<pre name="code" class="cpp">int Fb_QrDisp(int iPenX,int iPenY,QRcodepQRcode)
{
T_PixelDatasg_tOriginPixelDatas;
T_PixelDatasg_tZoomPixelDatas;
//intiZoom;
inti;
g_tOriginPixelDatasiWidth= pQRcode->width;
g_tOriginPixelDatasiHeight=pQRcode->width;
g_tOriginPixelDatasiLineBytes=g_tOriginPixelDatasiWidth;
g_tOriginPixelDatasaucPixelDatas= pQRcode->data;
/
if(pQRcode->version< = 1)
{
iZoom= 2;
}
else
{
iZoom= 2;
}
g_tZoomPixelDatasiWidth = pQRcode->widthiZoom;
g_tZoomPixelDatasiHeight=pQRcode->widthiZoom;
g_tZoomPixelDatasiLineBytes=g_tZoomPixelDatasiWidth;
g_tZoomPixelDatasaucPixelDatas= malloc(g_tZoomPixelDatasiWidth g_tZoomPixelDatasiHeight);
if(g_tZoomPixelDatasaucPixelDatas== NULL)
{
printf("g_tZoomPixelDatas->aucPixelDatasmalloc failed\n");
return-1;
}
PicZoom(&g_tOriginPixelDatas,&g_tZoomPixelDatas);
#if 0
printf("g_tZoomPixelDatasiWidth=%d,g_tZoomPixelDatasiHeight=%d\n", g_tZoomPixelDatasiWidth,g_tZoomPixelDatasiHeight);
for(i=0;i<(g_tZoomPixelDatasiWidthg_tZoomPixelDatasiHeight);i++)
{
printf("0x%x,",g_tZoomPixelDatasaucPixelDatas[i]);
}
printf("\n");
#endif
/
Disp_FixelPic(iPenX,iPenY,&g_tZoomPixelDatas);
return 0;
}
因为stmf429运行起来后内存不够,这里不用申请内存再扩充放大二维码数据的方法,而是直接描点。所以这里注释掉了放大部分。
url编码的详细解释可以参考: >
以上就是关于如何将JPEG解码的C语言程序移植到DSP中去全部的内容,包括:如何将JPEG解码的C语言程序移植到DSP中去、C语言或C++编写二维码的解码部分详细的源代码及说明、C语言url编解码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)