作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
使用 libjpeg(或 libjpeg-turbo)进行 JPEG 编码,我想知道是否有任何改进可以同时向 jpeg_write_scanlines 函数提供多个扫描线。我对 720x288 图像进行了一些测试,但一次处理整个图像时我只增加了 0.5%。
我猜这种增加只是由于调用堆栈开销的移除,但我期待更多,至少对于 libjpeg-turbo。
性能测试是使用 Callgrind(在 Valgrind 中)运行的,所以我可能遗漏了什么。或者我真的误解了 JPEG 编码器的工作原理。
最佳答案
JPEG 有一个行的最小高度,称为 MCU 高度。在没有二次采样(4:4:4 模式)的图像中为 8 行,如果对色度进行二次采样(4:2:0 模式)则为 16 行。
如果您向 libjpeg 提供这 8 或 16 行,它将能够一次处理整行。否则它需要做额外的簿记或缓冲。
一次写入多个 MCU 高度或整个图像,不会有什么坏处。
关于c - 一次对多个扫描线使用 jpeg_write_scanlines 是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18630717/
使用 libjpeg(或 libjpeg-turbo)进行 JPEG 编码,我想知道是否有任何改进可以同时向 jpeg_write_scanlines 函数提供多个扫描线。我对 720x288 图像进
我正在开发视频软件并使用一些现有代码。现有代码包括一个循环缓冲区。作为制作人,我有一台摄像机,作为消费者,我有两个不同的线程。一个是 GLThread,使用 OpenGL 绘制帧,另一个是 Video
我是一名优秀的程序员,十分优秀!