在使用libjpeg库把yuv编成jpeg的时候发现,如果想要编出来的图片和实际yuv是水平镜像,那就需要进行像素级copy。效率比较低,而使用的场景是在嵌入式设备上,性能较弱。所以需要修改libjpeg实现编码的时候水平镜像。
jpeg的编码原理可以从这个链接了解 https://www.cnblogs.com/leaven/archive/2010/04/06/1705846.html
水平镜像:从原来左→右编码改成从右→左编码。由于jpeg编码原理分块编码的。在做FDCT之前会先分成8x8的宏块,然后送去做DCT变换。所以第一步是修改送去做DCT的循序。从
顺序变换到
需要注意的是jpeg_write_raw_data是读取整行的数据,在这里无法对编码宏块顺序进行控制,需要在下面几个地方修改: