Giter VIP home page Giter VIP logo

c1_sonix_test_ap's Introduction

Sonix chipset based Kurokesu C1 family USB camera extension unit parameter control toolset (like h.264 compression rate, measurement mode, GPIO, ...)

C1 PRO

Compile

cd C1_SONIX_Test_AP
cp Makefile.x86 Makefile
make

Using TestAP

Print help

./SONiX_UVC_TestAP -h
v1.0.22_SONiX_UVC_TestAP_Multi
kernel version 40f00
optind:2  optopt:0
Usage: ./SONiX_UVC_TestAP [options] device
Supported options:
-c, --capture[=nframes] Capture frames
-d, --delay             Delay (in ms) before requeuing buffers
-e,                     enum MaxPayloadTransferSize
-f, --format format     Set the video format (mjpg or yuyv)
-h, --help              Show this help screen
-i, --input input       Select the video input
-l, --list-controls     List available controls
-n, --nbufs n           Set the number of video buffers
-s, --size WxH          Set the frame size
    --fr framerate      Set framerate
-S, --save              Save captured images to disk
    --enum-inputs       Enumerate inputs
    --skip n            Skip the first n frames
-r, --record            Record H264 file
--still                         get still image
--still2 fmt w h        get still image
--bri-set values        Set brightness values
--bri-get               Get brightness values
--shrp-set values       Set sharpness values
--shrp-get              Get sharpness values
--dbg value             Set level of debug message(bit0:usage, bit1:error, bit2:flow, bit3:frame)
--vnd-get               Get vender version
SONiX XU supported options:
-a,  --add-xuctrl                       Add Extension Unit Ctrl into Driver
     --xuget id cs datasize d0 d1 ...   XU Get command: xu_id control_selector data_size data_0 data_1 ...
     --xuset id cs datasize d0 d1 ...   XU Set command: xu_id control_selector data_size data_0 data_1 ...
     --xuget-chip              Read SONiX Chip ID
     --xuget-qp                Get H.264 QP values
     --xuset-qp val            Set H.264 QP values: val
     --xuget-br                Get H.264 bit rate (bps)
     --xuset-br val            Set H.264 bit rate (bps)
     --asic-r addr             [Hex] Read register address data
     --asic-w addr data        [Hex] Write register address data
     --sf-r addr len           [Hex] Read sf address data
     --i2c-r ID addr data_len             [Hex] i2c read(fill Zero in LSB)
     --i2c-w ID addr data data_len        [Hex] i2c write(fill Zero in LSB)
     --mf val                   Set Multi-Stream format:[1]HD+QVGA [2]HD+180p [4]HD+360p [8]HD+VGA [10]HD+QVGA+VGA [20]HD+QVGA [40]HD+180p+360p [80]360p+180p
     --mgs                              Get Multi-Stream Status.
     --mgi                              Get Multi-Stream Info.
     --msqp StreamID QP                 Set Multi-Stream QP. StreamID = 0 ~ 2
     --mgqp StreamID                    Get Multi-Stream QP. StreamID = 0 ~ 2
     --msbr StreamID Bitrate            Set Multi-Stream Bitrate (bps). StreamID = 0 ~ 2
     --mgbr StreamID                    Get Multi-Stream BitRate (bps). StreamID = 0 ~ 2
     --mscvm StreamID H264Mode          Set Multi-Stream H264 Mode. StreamID = 0 ~ 2(1:CBR 2:VBR)
     --mgcvm StreamID                   Get Multi-Stream H264 Mode. StreamID = 0 ~ 2
     --msfr val                         Set Multi-Stream substream frame rate.
     --mgfr                             Get Multi-Stream substream frame rate.
     --msgop val                        Set Multi-Stream substream GOP(suggest GOP = fps-1).
     --mggop                            Get Multi-Stream substream GOP.
     --mse Enable                       Set Multi-Stream Enable : [0]Disable [1]H264  [3]H264+Mjpg.
     --mge                              Get Multi-Stream Enable.
     --xuset-timer Enable               Set OSD Timer Counting  1:enable   0:disable
     --xuset-rtc year month day hour min sec    Set OSD RTC
     --xuget-rtc                        Get OSD RTC
     --xuset-os Line Block              Set OSD Line and Block Size (0~4)
     --xuget-os                         Get OSD Line and Block Size (0~4)
     --xuset-oc Font Border             Set OSD Font and Border Color   0:Black  1:Red  2:Green  3:Blue  4:White
     --xuget-oc                         Get OSD Font and Border Color   0:Black  1:Red  2:Green  3:Blue  4:White
     --xuset-oe Line Block              Set OSD Show  1:enable  0:disable
     --xuget-oe                         Get OSD Show  1:enable  0:disable
     --xuset-oas Line Block             Set OSD Auto Scale  1:enable  0:disable
     --xuget-oas                        Get OSD Auto Scale  1:enable  0:disable
     --xuset-oms Stream0 Stream1 Stream2        Set OSD MultiStream Size  (0~4)
     --xuget-oms                        Get OSD MultiStream Size  (0~4)
     --xuset-osp Type Row Col           Set OSD Start Row and Col (unit:16)
     --xuget-osp                        Get OSD Start Row and Col (unit:16)
     --xuset-ostr Group '.....'         Set OSD 2nd String.Group from 0 to 2.8 words per 1 Group.
     --xuget-ostr Group                 Get OSD 2nd String.
     --xuset-omssp StreamID Row Col     Set OSD Multi stream start row and col.
     --xuget-omssp                      Get OSD Multi stream start raw and col.
     --xuset-mde Enable                 Set Motion detect enable
     --xuget-mde                        Get Motion detect enable
     --xuset-mdt Thd                    Set Motion detect threshold (0~65535)
     --xuget-mdt                        Get Motion detect threshold
     --xuset-mdm  m1 m2 ... m24         Set Motion detect mask
     --xuget-mdm                        Get Motion detect mask
     --xuset-mdr  m1 m2 ... m24         Set Motion detect result
     --xuget-mdr                        Get Motion detect result
     --xuset-mjb Bitrate                Set MJPG Bitrate (bps)
     --xuget-mjb                        Get MJPG Bitrate (bps)
     --xuset-if nframe                  Set H264 reset to IFrame.  nframe : reset per nframe.
     --xuset-sei                        Set H264 SEI Header Enable.
     --xuget-sei                        Get H264 SEI Header Enable.
     --xuset-gop                        Set H264 GOP. (1 ~ 4095)
     --xuget-gop                        Get H264 GOP.
     --xuset-cvm                        Set H264 CBR/VBR mode(1:CBR 2:VBR)
     --xuget-cvm                        Get H264 CBR/VBR mode(1:CBR 2:VBR)
     --xuset-mir                        Set Image mirror.
     --xuget-mir                        Get Image mirror.
     --xuset-flip                       Set Image flip.
     --xuget-flip                       Get Image flip.
     --xuset-gpio enable out_value      Set GPIO ctrl(hex).
     --xuget-gpio                       Get GPIO ctrl.
     --xuset-clr                        Set Image color.
     --xuget-clr                        Get Image color.
     --xuset-fde s1 s2                  Set Frame drop enable.
     --xuget-fde                        Get Frame drop enable.
     --xuset-fdc s1 s2                  Set Frame drop value.
     --xuget-fdc                        Get Frame drop value.

Save MJPG frames (/dev/video0 is MJPG interface)

./SONiX_UVC_TestAP /dev/video0 -c -f mjpg -S

Save H.264 video data (/dev/video1 is H.264 interface, need SONiX UVC Like Driver support)

./SONiX_UVC_TestAP /dev/video1 -c -f H264 -r

Extension Unit (XU) controls

Add XU ctrls to uvc driver (if uvc driver doesn't support)

./SONiX_UVC_TestAP /dev/video1 -a

Get & Set H.264 resolutions & framerates (1280x720, 24fps), Insure getting format before setting format !

./SONiX_UVC_TestAP /dev/video1 --xuget-fmt --xuset-fmt 1-1

Get & Set H.264 QP/Bitrates(Kbps)

./SONiX_UVC_TestAP /dev/video1 --xuget-qp --xuset-qp 31 --xuget-br --xuset-br 6882

Get and set bitrate

./SONiX_UVC_TestAP --xuget-br /dev/video1
./SONiX_UVC_TestAP --xuset-br 1000 /dev/video1
./SONiX_UVC_TestAP --xuset-br 1000000 /dev/video1
./SONiX_UVC_TestAP --xuset-br 10000000 /dev/video1
./SONiX_UVC_TestAP --xuset-gop 100 /dev/video1

Set framerate

./SONiX_UVC_TestAP --fr 30 /dev/video1
./SONiX_UVC_TestAP --msfr 30 /dev/video1

Other settings

./SONiX_UVC_TestAP --xuset-gop 5 /dev/video1
./SONiX_UVC_TestAP --xuset-cvm 1 /dev/video1

./SONiX_UVC_TestAP --xuset-mir 1 /dev/video1
./SONiX_UVC_TestAP --xuset-flip 1 /dev/video1
./SONiX_UVC_TestAP --bri-get /dev/video1
./SONiX_UVC_TestAP --xuget-clr /dev/video1

./SONiX_UVC_TestAP --xuset-sei /dev/video1
./SONiX_UVC_TestAP --xuset-if 5 /dev/video1
    
     
./SONiX_UVC_TestAP --xuget-qp /dev/video1
./SONiX_UVC_TestAP --xuget-gop /dev/video1

./SONiX_UVC_TestAP --xuget-gop /dev/video1

c1_sonix_test_ap's People

Contributors

lukse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

c1_sonix_test_ap's Issues

Vendor Version Address

I'm currently looking at a discrepancy between two SONIX cameras, one of these is failing to read the vendor version. Is there any documentation anywhere that defines that the vendor version should be at 0x154?

return XU_SF_Read(dev, 0x154, szFlashVendorVer, 12);

Unable to get multiple h264 streams

Kurokesu C1 camera (KurokesuC1_SN000717: Kurokesu C)

When I trying to record two streams (HD + VGA)

$ ./SONiX_UVC_TestAP --mse 1 --xuset-sei 1 --mf 8 -c -r /dev/video3 
v1.0.22_SONiX_UVC_TestAP_Multi
kernel version 50a22
optind:3  optopt:0
optind:5  optopt:0
optind:7  optopt:0
optind:8  optopt:0
optind:9  optopt:0
Device /dev/video3 opened: KurokesuC1_SN000717: Kurokesu C.
XU_Ctrl_ReadChipID ==>
   == XU_Ctrl_ReadChipID Success == 
      ASIC READ data[0] : 1f
      ASIC READ data[1] : 10
      ASIC READ data[2] : 92 (Chip ID)
      ASIC READ data[3] : 0
ChipID = 2
XU_Ctrl_ReadChipID <==
XU_Multi_Get_Info ==>
   == XU_Multi_Get_Info Success == 
      Get Support Stream 3
      Get Support Resolution 0x5f
XU_Multi_Set_Type (8) ==>
XU_Multi_Set_Type <== Success 
XU_Multi_Set_Enable ==>
Set H264_Multi_Enable = 1 
Set MJPG_Multi_Enable = 0 
XU_Multi_Set_Enable <== Success 
XU_H264_Set_SEI ==>
XU_H264_Set_SEI <== Success 
Video format set: width: 1280 height: 720 buffer size: 1843200
Current frame rate: 1/30
Frame rate set: 1/30
6 buffers allocated.
length: 1843200 offset:          0     --  Buffer 0 mapped at address 0xffff9e2ab000.
length: 1843200 offset:    1843200     --  Buffer 1 mapped at address 0xffff9e0e9000.
length: 1843200 offset:    3686400     --  Buffer 2 mapped at address 0xffff9df27000.
length: 1843200 offset:    5529600     --  Buffer 3 mapped at address 0xffff9dd65000.
length: 1843200 offset:    7372800     --  Buffer 4 mapped at address 0xffff9dba3000.
length: 1843200 offset:    9216000     --  Buffer 5 mapped at address 0xffff9d9e1000.
[   HD]  Frame[   0] 2338 bytes 1769.390135 1629732858.815189
 [  VGA]  Frame[   1] 27329 bytes 1770.158123 1629732858.819288
 [   HD]  Frame[   2] 2205 bytes 1770.326112 1629732859.015144
 [  VGA]  Frame[   3] 157 bytes 1770.358125 1629732859.019171
 [   HD]  Frame[   4] 162 bytes 1770.526115 1629732859.215114
 [  VGA]  Frame[   5] 68 bytes 1770.562160 1629732859.219143
 [   HD]  Frame[   6] 769 bytes 1770.726101 1629732859.415108
 [  VGA]  Frame[   7] 61 bytes 1770.762169 1629732859.419126
 [   HD]  Frame[   8] 2560 bytes 1770.926137 1629732859.615106
 [  VGA]  Frame[   9] 61 bytes 1770.962153 1629732859.619120
 [   HD]  Frame[  10] 1281 bytes 1771.126082 1629732859.815117
 [  VGA]  Frame[  11] 61 bytes 1771.162145 1629732859.819116
 [   HD]  Frame[  12] 851 bytes 1771.326082 1629732860.015079
 [  VGA]  Frame[  13] 61 bytes 1771.362140 1629732860.019096
 [   HD]  Frame[  14] 964 bytes 1771.526069 1629732860.215061
 [  VGA]  Frame[  15] 61 bytes 1771.562140 1629732860.219110
 [   HD]  Frame[  16] 2576 bytes 1771.726070 1629732860.415082
 [  VGA]  Frame[  17] 61 bytes 1771.762108 1629732860.419090
...

I've got two files: RecordH264HD.h264 RecordH264VGA.h264
When playing them via mpv (or any other video player) RecordH264HD.h264 shows normal video, but RecordH264VGA.h264 only red lines.

$ file RecordH264VGA.h264 
RecordH264VGA.h264: JVT NAL sequence, H.264 video, main @ L 31
$ file RecordH264HD.h264 
RecordH264HD.h264: JVT NAL sequence, H.264 video, main @ L 31

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.