android (1)

来源:互联网 发布:用spss主成分分析数据 编辑:程序博客网 时间:2024/05/20 04:09
 

 

android  (1)

2011-7-15 11:23:34
CameraHal::cameraOpen()
打开设备

int CameraHal::cameraClose()
取消映射 关闭设备

int CameraHal::cameraDestroy()
关闭  有overlay 就关闭overlay


int CameraHal::cameraTakePicConfig()
设置像素信息

HAL_openCameraHardware
camera的单例


VPU  媒体处理单元

static int __init vpu_init(void)
{
 int ret = platform_driver_register(&mxcvpu_driver);

 init_waitqueue_head(&vpu_queue);

 return ret;
}
注册了一个平台驱动

static struct platform_driver mxcvpu_driver = {
 .driver = {
     .name = "mxc_vpu",
     },
 .probe = vpu_dev_probe,
 .remove = vpu_dev_remove,
 .suspend = vpu_suspend,
 .resume = vpu_resume,
};


在arch中定义了这样一个设备

struct platform_device mxcvpu_device = {
 .name = "mxc_vpu",
 .id = 0,
 .num_resources = ARRAY_SIZE(vpu_resources),
 .resource = vpu_resources,
};

对应的IRQ 资源为 9  内存资源为 4K


在probe中 将物理地址重新映射

VPU有一个16的DSP核

BIT procesor

解码一帧一帧的进行

以中断的方式进行交互

有自己的内存来加载固件

自动加载和重定位

多实例操作

创建一个新的实际就返回一个句柄

主机 ABMA 通信

共享内存

指令通过寄存器 数据通过共享内存

R分为3类

控制R 显示BIT寄存器的状态,大部分在引导的时候使用

全局R  显示全局变量

命令 IO R 

API 级的VPU 控制

初试化vpu_init

VPUEncoder.cpp (frameworks\base\media\libstagefright\codecs\vpu\enc): err = vpu_Init(NULL);

Vpu_lib.c (external\linux-lib\vpu):RetCode vpu_Init(void *cb)


扩展的linux库

typedef unsigned char Uint8;
typedef unsigned long Uint32;
typedef unsigned short Uint16;
typedef Uint32 PhysicalAddress;
typedef Uint32 VirtualAddress;


typedef enum {
 STD_MPEG4 = 0,
 STD_H263,
 STD_AVC,
 STD_VC1,
 STD_MPEG2,
 STD_DIV3,
 STD_RV,
 STD_MJPG
} CodStd;

媒体类型

typedef enum {
 RETCODE_SUCCESS = 0,
 RETCODE_FAILURE = -1,
 RETCODE_INVALID_HANDLE = -2,
 RETCODE_INVALID_PARAM = -3,
 RETCODE_INVALID_COMMAND = -4,
 RETCODE_ROTATOR_OUTPUT_NOT_SET = -5,
 RETCODE_ROTATOR_STRIDE_NOT_SET = -11,
 RETCODE_FRAME_NOT_COMPLETE = -6,
 RETCODE_INVALID_FRAME_BUFFER = -7,
 RETCODE_INSUFFICIENT_FRAME_BUFFERS = -8,
 RETCODE_INVALID_STRIDE = -9,
 RETCODE_WRONG_CALL_SEQUENCE = -10,
 RETCODE_CALLED_BEFORE = -12,
 RETCODE_NOT_INITIALIZED = -13,
 RETCODE_DEBLOCKING_OUTPUT_NOT_SET = -14,
 RETCODE_NOT_SUPPORTED = -15,
 RETCODE_REPORT_BUF_NOT_SET = -16,
 RETCODE_FAILURE_TIMEOUT = -17
} RetCode;

返回状态


CodecCommand 命令

typedef enum {
 SPS_RBSP,
 PPS_RBSP
} AvcHeaderType;

vpu_io.h

 

原创粉丝点击