MIPI CSI-2笔记(8) -- Low Level Protocol(同步短包的数据类型编码)

 同步短包的数据类型编码(Synchronization Short Packet Data Type Codes)

帧同步包(Frame Synchronization Packets)

        每个图像帧都是从一个“帧开始FS(Frame Start)”的包开始的,这个包含有帧开始编码(Frame Start Code)。FS包后面紧跟着1个或多个含有图像数据的长包,以及0个或多个包含同步编码的短包。每个图像帧都以一个“帧结束FE(Frame End)”的包结束,这个包含有帧结束编码(Frame End Code)。

        对于FS和FE同步包,短包的数据域包含一个16-bit的帧号。对于同一个帧,这个帧号对于FS和FE同步包来说是一样的。正常的帧号是非0值,以此和无效的帧号0做区分。16-bit的帧号可能的值如下:

  •         帧号始终为0 - 帧号无效
  •         对每个相同的虚拟通道的FS包,帧号会增加1或2,并且会周期性地重置为1。比如“1, 2, 1, 2, 1, 2, 1, 2”,或“1, 2, 3, 4, 1, 2, 3, 4”,或者“1, 3, 5, 1, 3, 5”,或者“1,2,4,1,3,4”。帧号只有在图像帧被屏蔽(masked,即不传输)的时候能够加2。为了适应这种场景,帧号可以按照需要自由地混合加1和加2的情况。

行同步包(Line Synchronization Packets)

        行同步短包是可选的,它基于每一帧图像。如果一个图像帧包含了行开始LS(Line Start)和行结束LE(Line End)行同步短包,用于给定的数据类型和虚拟通道号的长包,那么这一帧中所有相同数据类型和虚拟通道号的所有长包都要包含LS和LE短包。

        对于LS和LE同步包,短包数据域要包含16-bit的行号。对于一个特定的行,LS和LE包里的行号是相同的。行号是逻辑上的行号,不一定非得和物理行号相同。

        当使用行号时,正常的行号是非零值,以便和无效的行号0做区分。相同的数据类型和虚拟通道内的16-bit的行号的行为,是如下列举的情况之一:

        行号始终为0 - 行号无效

        相同虚拟通道和数据类型的每一个LS包,行号都增加1。行号周期地在当前FS包之后的第一个LS包时重置为1。这种方式主要是为了逐行扫描(progressive scan, 非interlaced方式)的视频数据流。行号必须是非零值。

        相同虚拟通道和数据类型的每一个LS包,行号都增加一个相同的任意值,这个任意值大于1。行号周期地在当前FS包之后的第一个LS包时重置为任意的非零起始值。这个任意的起始值可能在连续帧之间有所不同。这种方式主要是用于交织(interlaced)的视频数据流。

        下图展示了在交织(interlaced)的帧(带有像素数据和其他内嵌类型)内使用可选的LS/LE包的例子。

         图中展示了如下几种使用场景:

        1. VC0 DT2 Interlaced frame,行递增2。Frame1从1开始,Frame2从3开始Frame1从1开始,Frame2从2开始注意,此处CSI-2规范上的原话“Frame1 starting at 1 and  Frame2 starting at 2”, 个人感觉写错了,请各位自行分辨。这里更正一下,规范没有问题,之前看图的时候搞错了帧和行的包,感谢网友qq_38388403的指正

        2. VC0 DT1 progressive scan frame,带行号。

        3. VC0 DT4 progressive scan frame,不使用行号(无效行号)。

        4. VC0 DT3,没有LS/LE操作。

猜你喜欢

转载自blog.csdn.net/vivo01/article/details/126484891#comments_24508727
今日推荐