PNM介绍以及FFMPEG如何去decode && encode PNM

  1 PNM 介绍

  PBM(portable bitmap,可移植位图格式),PGM(portable greymap,可移植灰度图格式),PPM(portable pixmap,可移植像素图格式),三者统称为PNM(Portable any map)。分别为位图,灰度图,像素图,可用ASCII,二进制编码,从P1 到P6 。有头部分和数据部分组成,头部分分三行,第一行表示文件描述子(P1~P6),第二行表示宽高,第三行表述像素取值范围。

如下图所示,图片格式为P4(PBM),0x0A为换行符, 宽为75,高为70。

下表为其中的关系。

文件描述子

类型

编码

特点

P1

位图

ASCII

PBM,单色图片,用0,1 的ascii 表示

P2

灰度图

ASCII

PGM

P3

像素图

ASCII

PPM

P4

位图

二进制

PBM,单色图片,用0,1 二进制表示,每个byte 表示8个像素

P5

灰度图

二进制

PGM,灰度图片,每个byte 表示一个像素

P6

像素图

二进制

PPM,RGB图片,每三个byte表示一个像素

 

2 PNM FFMPEG decode && encode

         PNM FFMPEG decode flow 如上图所示,比较简单,其中需要注意的是switch 会根据不同的corlorformat 去设置components,sample_len。 比如RGB24, components = 3,sample_len = 8。 GRAY8,componets =1,sample_len = 8。GRAY16,componets =1,sample_len = 16。

 

        

         PNM FFMPEG encode flow 如上图所示,也比较简单,其中PNM level 以及宽高信息通过snprintf() 去设置。然后直接拷贝color buff。 相当与在raw buff 前面加一个PNM header。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值