S5PV210 多媒体预留内存空间 3 - JPEG codec
来源:互联网 发布:promise js 编辑:程序博客网 时间:2024/05/21 18:46
JPEG codec 用来compresses original raw image以及decompresses original JPEG image。这个硬件电路执行compression/decompression需要的所有功能:离散余弦变换,量化和霍夫曼编码。
编码功能:
输入raw image: 格式为YCbCr4:2:2, RGB565
输出的JPEG文件: Baseline JPEG,颜色空间为YCbCr4:2:2或者YCbCr4:2:0
不支持progressive模式
解码功能:
输入JPEG文件:Baseline JPEG,颜色空间为YCbCr4:4:4, YCbCr4:2:2, YCbCr4:2:0,gray
输出raw image: YCbCr4:2:2,YCbCr4:2:0
不支持progressive 模式
预留的内存空间定义在arch/arm/mach-s5pv210/mach-smdkc110.c
#define S5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG (8192 * SZ_1K)
S5PV210的JPEC codec 驱动在drivers/media/video/samsung/jpeg_v2/下,JEPG codec驱动使用预留的内存存放编解码的输入和输出图像,JPEG codec支持原始图像和thumbnail同时编解码,因此所需预留内存空间要满足main frame, thumbnail frame, main stream, thumbnail stream的内存需求
394 s3c_jpeg_limits.max_main_width = pdata->max_main_width;395 s3c_jpeg_limits.max_main_height = pdata->max_main_height;396 s3c_jpeg_limits.max_thumb_width = pdata->max_thumb_width;397 s3c_jpeg_limits.max_thumb_height = pdata->max_thumb_height;398 399 main_pixels = s3c_jpeg_limits.max_main_width *400 s3c_jpeg_limits.max_main_height;401 thumb_pixels = s3c_jpeg_limits.max_thumb_width *402 s3c_jpeg_limits.max_thumb_height;403 404 s3c_jpeg_bufinfo.main_stream_size = ALIGN(main_pixels, PAGE_SIZE);405 /* Assuming JPEG V2 uses YCBCR422 output format */406 s3c_jpeg_bufinfo.main_frame_size = ALIGN(main_pixels * 2, PAGE_SIZE);407 408 s3c_jpeg_bufinfo.thumb_stream_size = ALIGN(thumb_pixels, PAGE_SIZE);409 s3c_jpeg_bufinfo.thumb_frame_size = ALIGN(thumb_pixels * 2, PAGE_SIZE);410 411 s3c_jpeg_bufinfo.total_buf_size = s3c_jpeg_bufinfo.main_stream_size +412 s3c_jpeg_bufinfo.thumb_stream_size +413 s3c_jpeg_bufinfo.main_frame_size +414 s3c_jpeg_bufinfo.thumb_frame_size;
从上面代码我们可以得到如下预留内存计算公式
Reserved mem size = main_stream_size + thumb_stream_size + main_frame_size + thumb_frame_size
= ALIGN(main_pixels, PAGE_SIZE) + ALIGN(main_pixels * 2, PAGE_SIZE) + ALIGN(thumb_pixels, PAGE_SIZE) + ALIGN(thumb_pixels * 2, PAGE_SIZE)
= ALIGN(pdata->max_main_width * pdata->max_main_height, PAGE_SIZE) + ALIGN(pdata->max_main_width * pdata->max_main_height *2, PAGE_SIZE)
+ ALIGN(pdata->max_thumb_width * pdata->max_thumb_height, PAGE_SIZE) + ALIGN(pdata->max_thumb_width * pdata->max_thumb_height *2, PAGE_SIZE)
pdata->max_thumb_width,pdata->max_thumb_height,pdata->max_main_width, pdata->max_main_height的定义是项目相关的,是系统需要编解码的原始图片width,height以及thumbnail图片的宽高。
定义在arch/arm/mach-s5pv210/mach-smdkc110.c中
#ifdef CONFIG_VIDEO_JPEG_V2static struct s3c_platform_jpeg jpeg_plat __initdata = { .max_main_width = 800, .max_main_height = 480, .max_thumb_width = 320, .max_thumb_height = 240,};#endif
因此可得到JPEG codec预留内存的大小
ALIGN(800*480, PAGE_SIZE) + ALIGN(800*480*2, PAGE_SIZE) + ALIGN(320*240, PAGE_SIZE) + ALIGN(320*240*2, PAGE_SIZE) = 1352KB
- S5PV210 多媒体预留内存空间 3 - JPEG codec
- S5PV210 多媒体预留内存空间
- S5PV210 多媒体预留内存空间 1 - FIMC控制器
- S5PV210 多媒体预留内存空间 4 - textscream, GPU1
- S5PV210 多媒体预留内存空间 2 - FIMD和G2D控制器
- s5pv210 jpeg硬件编码
- s5pv210 jpeg硬件编码
- codec.jpeg不存在
- 多媒体container和codec概念
- 针对jpeg codec的FPGA测试总结
- import com.sun.image.codec.jpeg.JPEGCodec;
- com/sun/image/codec/jpeg/ImageFormatException
- import com.sun.image.codec.jpeg.JPEGCodec;
- 程序包com.sun.image.codec.jpeg不存在
- codec 直接读取jpeg文件的尺寸
- 程序包com.sun.image.codec.jpeg不存在
- import com.sun.image.codec.jpeg.JPEGCodec;
- 程序包com.sun.image.codec.jpeg不存在
- 深度、广度优先遍历算法C实现
- MFC中CTreeCtrl类的一些基本用法
- 回溯算法之迷宫问题
- mount: unknown filesystem type 'LVM2_member'解决方案
- Guided Image Filtering
- S5PV210 多媒体预留内存空间 3 - JPEG codec
- 多叉树转换为二叉树算法
- Servlet入门知识
- Information Communication Technology,简称ICT
- 回溯算法之N皇后问题
- MongoDB 学习开发入门
- spring定时任务 (二) 多个任务和执行时间间隔配置
- Linux2.6 内核的 Initrd 机制解析
- linux下ftp命令