先寫個隨筆,後面再完善:
倒車視頻是在切倒檔後由車機來控制打開的,
Hicar 在接收到 倒檔信息後,做註冊callback,open camera 這兩步
然後,在 libdmspcamerahandler.so 中,實現將Camera 數據通過 callback 來上報。
目前daemon 中,我是模擬了一個 id = 5 ,判斷到open camera id=5 時,就說明進入倒車視頻。
然後啓動線程,在線程中,將數據以 yuv 文件的形式保存下來。
運行log 如下:
05-28 16:27:12.068 30361 30361 I CamSDK_3rdCamera: [reverse_exe][OpenCamera][570] id=5
05-28 16:27:12.070 30361 30361 I CamSDK_3rdCamera: [reverse_exe][OpenCamera][584] start create pthread , reverse_capturing=1
05-28 16:27:12.071 30361 30362 I CamSDK_3rdCamera: [reverse_exe][cap_reverse][548] Enter ...
05-28 16:27:12.079 30361 30362 I : [reverse_exe][open_Memory][80] buffer -- d2-d2-d2-d2 - d2-d2-d2-d2 - d2-d2-d2-d2
05-28 16:27:12.091 30361 30362 I : [reverse_exe][Camera_Dump][131] filename_buf=/sdcard/reverse/Rear-Camera-720x480-0.yuv
05-28 16:27:12.133 30361 30362 I : [reverse_exe][open_Memory][80] buffer -- d2-d2-d2-d2 - d2-d2-d2-d2 - d2-d2-d2-d2
05-28 16:27:12.133 30361 30362 I : [reverse_exe][Camera_Dump][131] filename_buf=/sdcard/reverse/Rear-Camera-720x480-1.yuv
05-28 16:27:12.175 30361 30362 I : [reverse_exe][open_Memory][80] buffer -- d2-d2-d2-d2 - d2-d2-d2-d2 - d2-d2-d2-d2
05-28 16:27:12.175 30361 30362 I : [reverse_exe][Camera_Dump][131] filename_buf=/sdcard/reverse/Rear-Camera-720x480-2.yuv
數據格式爲 YUV420P N21,720x480,
測試過程中保存的 yuv raw 圖可以使用如下命令查看:
ffplay -video_size 720x480 -pix_fmt nv21 Rear-Camera-720x480-20.yuv
注: 測試圖片爲Camera 的pattern 圖。
該方案目前用的是共享內存方式,但這個方案不能上量產,目前用來和華爲聯調使用,後面有時間,同步我再自已寫AIDL 來實現進程間大數據傳輸。
因爲安卓默認不支持共享內存,所以在Kernel 中,需要使能這兩個宏才能使用共享內存
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
TW9992 芯片在不接Camera 情況下,出圖需要改寄存器,往 0x7D 中寫 0x86 即可
// {0x7D,0x06,0x00}
// {0x7D,0x86,0x00} ----for test
播放NV21
ffplay -video_size 720x480 -pix_fmt nv21 Rear-Camera-720x480-20.yuv
播放YUV420P
ffplay -video_size 720x480 -pix_fmt yuv420p Rear-Camera-720x480-20.yuv