OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3718|回复: 2

jpg如何用tjpgdec解码。。

[复制链接]

23

主题

117

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2019-8-7
在线时间
51 小时
发表于 2022-4-16 15:29:51 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 溪悦哦 于 2022-4-16 22:24 编辑

我获取了摄像头jpg数据到一个buf1和得到了size(因为要上传jpg到上位机所以摄像头工作在jpg模式),那怎么用tjpg解码到buf2呢,假设buf2满足大小

size_t input_func (        /* Returns number of bytes read (zero on error) */
        JDEC* jd,                /* Decompression object */
        uint8_t* buff,        /* Pointer to the read buffer (null to remove data) */
        size_t ndata        /* Number of bytes to read/skip */
)

int output_func (        /* 1:Ok, 0:Aborted */
        JDEC* jd,                /* Decompression object */
        void* bitmap,        /* Bitmap data to be output */
        JRECT* rect                /* Rectangular region to output */
)
示例是用文件系统看不懂
请大佬赐教

学习
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-4-16 16:44:04 | 显示全部楼层
回复

使用道具 举报

23

主题

117

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2019-8-7
在线时间
51 小时
 楼主| 发表于 2022-4-16 22:25:06 | 显示全部楼层
本帖最后由 溪悦哦 于 2022-4-20 20:53 编辑

帮顶

学习
回复

使用道具 举报

23

主题

117

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2019-8-7
在线时间
51 小时
 楼主| 发表于 2022-4-17 01:47:39 | 显示全部楼层

extern unsigned char data1[] ;
char *p=data1;

size_t input_func (        /* Returns number of bytes read (zero on error) */
    JDEC* jd,                /* Decompression object */
    uint8_t* buff,        /* Pointer to the read buffer (null to remove data) */
    size_t ndata        /* Number of bytes to read/skip */
)
{
    if (buff)
    {
        memcpy(buff,p,ndata);
        p+=ndata;

        return ndata;
    }
    else          /* Remove bytes from input stream */
    {
        p+=ndata;

        return ndata;
    }
}


int output_func (        /* 1:Ok, 0:Aborted */
    JDEC* jd,                /* Decompression object */
    void* bitmap,        /* Bitmap data to be output */
    JRECT* rect                /* Rectangular region to output */
)

{
    jd = jd; /* 说明: 输出函数中 JDEC 结构体没有用到 */


    LCD_Fill( bitmap, rect->left,rect->top,  rect->right- rect->left+1,rect->bottom- rect->top+1);
    return 1;        /* Continue to decompress */
}



void jpegtest (void)
{
    const size_t sz_work = 10000;        /* Size of working buffer for TJpgDec module */
    unsigned char jdwork[10000];        /* Pointer to TJpgDec work area */

    JDEC jd;                /* TJpgDec decompression object */
    void* iodev;        /* Identifier of the decompression session (depends on application) */
    JRESULT rc;
    uint32_t  xs, ys;

    /* Prepare to decompress the JPEG image */
    rc = jd_prepare(&jd, input_func, jdwork, sz_work, &iodev);
        printf("%d", rc);

    if (rc == JDR_OK)

    {
        printf("%u,%u\n", jd.width, jd.height);        /* Image dimensions */
        printf("%s\n", jd.ncomp == 1 ? "4:0:0" : jd.msx == 1 ? "4:4:4" : jd.msy == 1 ? "4:2:2" : "4:2:0");        /* Sampling ratio */

        printf("Used:%u\n", sz_work - jd.sz_pool);        /* Used memory size */
        printf("UN Used:%u\n", jd.sz_pool);        /* Used memory size */

        /* Initialize frame buffer */
        xs = jd.width >> SCALE;                /* Image size to output */
        ys = jd.height >> SCALE;

        rc = jd_decomp(&jd, output_func, SCALE);
        printf("%d", rc);
    }

}



学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 14:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表