1.一种基于达芬奇技术的多格式码流显示和存储装置,其特征在于:所述装置的核心硬件部件采用视频CCD采集芯片和多核芯片,所述多核芯片采用ARM核和DSP核或编解码协处理器;
将视频CCD采集芯片获得的数据接入到多核芯片中,由DSP核或编解码协处理器完成视频数据的编码,最终通过ARM核的控制,完成数据流的正确传递和操作;
所述装置的软件框架部分采用多线程配合管道工作的方案,三个线程依次是Capture线程、Video线程和Writer线程,它们分别完成视频数据的采集,编码以及存储,三个主要线程之间通过管道的方式进行数据通信,一共申请了四个管道,每个管道在初始化时都分别申请一个读取端和一个写入端;
所述Capture线程在自己的循环主体中,通过V4L2驱动接口采集到D1分辨率大小YUV420SP格式的一帧视频画面数据,并在被配置为continues模式的Resizer模块的配合下,同时得到一帧CIF分辨率大小YUV420SP格式的和上述画面内容相同的视频数据,再对此帧数据进行适当的裁剪得到一帧QVGA分辨率大小YUV420SP格式的数据,最后同样通过V4L2驱动接口显示符合液晶屏分辨率的视频数据;
所述视频数据的编码,配置所需的编码引擎文件encode.cfg,应用程序通过配置cfg文件之后,只要调用API即可开启数据编码;所述三个线程执行顺序如下:Capture线程:C1步骤,C2步骤分别从hCapture句柄处获取存有采集到的一帧原始数据的缓存hCapBuf,从hDisplay获取可供显示数据写入的缓存hDisBuf,C3步骤将hCapBuf数据写入缓存hDstBuf,C4步骤将存有原始数据的缓存指针写入到hOutFifo,并向Video线程发出数据编码请求,C5步骤则将hCapBuf数据写入hDisBuf缓存,C6步骤向hDisplay输入需要显示的数据,hDisplay负责将数据输出到LCD显示;C7步骤从hInFifo管道读取由Video线程写入的缓存指针,C8步骤告知hCapture句柄,Capture线程已经完成一次操作,等待hCapture句柄再次捕获一帧原始数据;
Video线程:V1步骤从Capture线程读取存有数据的缓存的指针,V2步骤从hOutFifo管道读取由Writer线程写入的缓存指针,随后Video线程经过V3步骤,V4步骤得到了存有编码数据的缓存,并将该缓存指针写入hInFifo管道,向Writer线程发起下一次数据备份的请求;
Writer线程:W1步骤从Video线程读取存有数据的缓存的指针,W2步骤将数据写入到文件,W3步骤将缓存指针写回hOutFifo管道。