// S3C6410 support that the source image is up to 4096 x 4096
// and the destination image is up to 2048 x 2048.
if ( (temp_src_width > 4096) || (temp_src_height > 4096)
|| (temp_dst_width > 2048) || (temp_dst_height > 2048) )
{
printk(KERN_ERR "\n%s: Size is too big to be
supported.\n", __FUNCTION__);
mutex_unlock(h_mutex);
return -EINVAL;
}
但是,我的视频文件时三星自带的,不可能超过4096 x 4096,后来我把这段代码注释掉,能运行,但
我发现28的post的结构体与24的post发生的变化。如下:
这是28的:
typedef struct {
unsigned int src_full_width; // Source Image Full Width (Virtual screen size)
unsigned int src_full_height; // Source Image Full Height (Virtual screen size)
unsigned int src_start_x; // Source Image Start width offset
unsigned int src_start_y; // Source Image Start height offset
unsigned int src_width; // Source Image Width
unsigned int src_height; // Source Image Height
unsigned int src_buf_addr_phy; // Base Address of the Source Image : Physical Address
unsigned int src_next_buf_addr_phy; // Base Address of Source Image to be displayed next time in FIFO_FREERUN Mode
s3c_color_space_t src_color_space; // Color Space of the Source Image
unsigned int dst_full_width; // Destination Image Full Width (Virtual screen size)
unsigned int dst_full_height; // Destination Image Full Height (Virtual screen size)
unsigned int dst_start_x; // Destination Image Start width offset
unsigned int dst_start_y; // Destination Image Start height offset
unsigned int dst_width; // Destination Image Width
unsigned int dst_height; // Destination Image Height
unsigned int dst_buf_addr_phy; // Base Address of the Destination Image : Physical Address
s3c_color_space_t dst_color_space; // Color Space of the Destination Image
s3c_pp_out_path_t out_path; // output and run mode (DMA_ONESHOT or FIFO_FREERUN)
s3c_pp_scan_mode_t scan_mode; // INTERLACE_MODE, PROGRESSIVE_MODE
} s3c_pp_params_t
这是24的:
typedef struct{
unsigned int SrcFullWidth; // Source Image Full Width(Virtual screen size)
unsigned int SrcFullHeight; // Source Image Full Height(Virtual screen size)
unsigned int SrcStartX; // Source Image Start width offset
unsigned int SrcStartY; // Source Image Start height offset
unsigned int SrcWidth; // Source Image Width
unsigned int SrcHeight; // Source Image Height
unsigned int SrcFrmSt; // Base Address of the Source Image : Physical Address
cspace_t SrcCSpace; // Color Space ot the Source Image
unsigned int DstFullWidth; // Source Image Full Width(Virtual screen size)
unsigned int DstFullHeight; // Source Image Full Height(Virtual screen size)
unsigned int DstStartX; // Source Image Start width offset
unsigned int DstStartY; // Source Image Start height offset
unsigned int DstWidth; // Source Image Width
unsigned int DstHeight; // Source Image Height
unsigned int DstFrmSt; // Base Address of the Source Image : Physical Address
cspace_t DstCSpace; // Color Space ot the Source Image
unsigned int SrcFrmBufNum; // Frame buffer number
s3c_pp_run_mode_t Mode; // POST running mode(PER_FRAME or FREE_RUN)
s3c_pp_path_t InPath; // Data path of the source image
s3c_pp_path_t OutPath; // Data path of the desitination image
unsigned int in_pixel_size; // source format size per pixel
unsigned int out_pixel_size; // destination format size per pixel
}pp_params;
而我使用的Multimedia_DD是24是内核的,所以在应用层传参给内核驱动时,出现不配套:
// set post processor configuration
pp_param.SrcFullWidth = 100;//stream_info.width;
pp_param.SrcFullHeight = 200;stream_info.height;
pp_param.SrcStartX = 0;
pp_param.SrcStartY = 0;
pp_param.SrcWidth = pp_param.SrcFullWidth;
pp_param.SrcHeight = pp_param.SrcFullHeight;
pp_param.SrcCSpace = YC420;
pp_param.DstStartX = 0;
pp_param.DstStartY = 0;
pp_param.DstFullWidth = 800; // destination width
pp_param.DstFullHeight = 480; // destination height
pp_param.DstWidth = pp_param.DstFullWidth;
pp_param.DstHeight = pp_param.DstFullHeight;
pp_param.DstCSpace = RGB16;
#ifdef RGB24BPP
pp_param.DstCSpace = RGB24;
#endif
pp_param.OutPath = POST_DMA;
pp_param.Mode = ONE_SHOT;
就会出现:
// S3C6410 support that the source image is up to 4096 x 4096
// and the destination image is up to 2048 x 2048.
if ( (temp_src_width > 4096) || (temp_src_height > 4096)
|| (temp_dst_width > 2048) || (temp_dst_height > 2048) )
{
printk(KERN_ERR "\n%s: Size is too big to be supported.\n", __FUNCTION__);
mutex_unlock(h_mutex);
return -EINVAL;
的问题;
请问哪位有28的应用层BSP包?
详情回复
发表于 2010-6-4 09:01
我发现28的post的结构体与24的post发生的变化。如下:
这是28的:
typedef struct {
unsigned int src_full_width; // Source Image Full Width (Virtual screen size)
unsigned int src_full_height; // Source Image Full Height (Virtual screen size)
unsigned int src_start_x; // Source Image Start width offset
unsigned int src_start_y; // Source Image Start height offset
unsigned int src_width; // Source Image Width
unsigned int src_height; // Source Image Height
unsigned int src_buf_addr_phy; // Base Address of the Source Image : Physical Address
unsigned int src_next_buf_addr_phy; // Base Address of Source Image to be displayed next time in FIFO_FREERUN Mode
s3c_color_space_t src_color_space; // Color Space of the Source Image
unsigned int dst_full_width; // Destination Image Full Width (Virtual screen size)
unsigned int dst_full_height; // Destination Image Full Height (Virtual screen size)
unsigned int dst_start_x; // Destination Image Start width offset
unsigned int dst_start_y; // Destination Image Start height offset
unsigned int dst_width; // Destination Image Width
unsigned int dst_height; // Destination Image Height
unsigned int dst_buf_addr_phy; // Base Address of the Destination Image : Physical Address
s3c_color_space_t dst_color_space; // Color Space of the Destination Image
s3c_pp_out_path_t out_path; // output and run mode (DMA_ONESHOT or FIFO_FREERUN)
s3c_pp_scan_mode_t scan_mode; // INTERLACE_MODE, PROGRESSIVE_MODE
} s3c_pp_params_t
这是24的:
typedef struct{
unsigned int SrcFullWidth; // Source Image Full Width(Virtual screen size)
unsigned int SrcFullHeight; // Source Image Full Height(Virtual screen size)
unsigned int SrcStartX; // Source Image Start width offset
unsigned int SrcStartY; // Source Image Start height offset
unsigned int SrcWidth; // Source Image Width
unsigned int SrcHeight; // Source Image Height
unsigned int SrcFrmSt; // Base Address of the Source Image : Physical Address
cspace_t SrcCSpace; // Color Space ot the Source Image
unsigned int DstFullWidth; // Source Image Full Width(Virtual screen size)
unsigned int DstFullHeight; // Source Image Full Height(Virtual screen size)
unsigned int DstStartX; // Source Image Start width offset
unsigned int DstStartY; // Source Image Start height offset
unsigned int DstWidth; // Source Image Width
unsigned int DstHeight; // Source Image Height
unsigned int DstFrmSt; // Base Address of the Source Image : Physical Address
cspace_t DstCSpace; // Color Space ot the Source Image
unsigned int SrcFrmBufNum; // Frame buffer number
s3c_pp_run_mode_t Mode; // POST running mode(PER_FRAME or FREE_RUN)
s3c_pp_path_t InPath; // Data path of the source image
s3c_pp_path_t OutPath; // Data path of the desitination image
unsigned int in_pixel_size; // source format size per pixel
unsigned int out_pixel_size; // destination format size per pixel
}pp_params;
就会出现:
// S3C6410 support that the source image is up to 4096 x 4096
// and the destination image is up to 2048 x 2048.
if ( (temp_src_width > 4096) || (temp_src_height > 4096)
|| (temp_dst_width > 2048) || (temp_dst_height > 2048) )
{
printk(KERN_ERR "\n%s: Size is too big to be supported.\n", __FUNCTION__);
mutex_unlock(h_mutex);
return -EINVAL;