About SOLO6110 2009.10.28 SoftLogic Doojin Han ([email protected]) 1 SoftLogic Contents 1. Video Matrix Function & Real Channel / Virtual Channel 2. H.264 encoding Page 3 Page 10 2 SoftLogic Video Matrix Function & Real Channel / Virtual Channel 1. Video Matrix Function 2. Real Channel / Virtual Channel 3. Video Matrix Function & Real Channel / Virtual Channel 3 SoftLogic 1. Video Matrix Function 1/4 Related register Camera Input 0 Camera Input 1 Camera Input 2 Camera Input 3 Camera Input 4 Camera Input 5 Camera Input 6 Camera Input 7 Camera Input 8 Camera Input 9 Camera Input 10 Camera Input 11 Camera Input 12 Camera Input 13 Camera Input 14 Camera Input 15 Video Channel 0 Video Channel 1 Video Channel 2 Video Channel 3 Video Channel 4 Video Channel 5 Video Channel 6 Video Channel 7 Video Channel 8 Video Channel 9 Video Channel 10 Video Channel 11 Video Channel 12 Video Channel 13 Video Channel 14 Video Channel 15 Video Matrix Encoded Stream data 0x0100 VI_CH_SWITCH0 Camera input number for video input 0 to 5 0x0104 VI_CH_SWITCH1 Camera input number for video input 6 to 11 0x0108 VI_CH_SWITCH2 Camera input number for video input 12 to 15 and Spot output H.264 encoder & JPEG encoder SOLO6110 The video matrix is a input switcher between camera input and video channel. You can assign any of camera input to any of video channel by setting video matrix. And you can assign 1 camera input to multiple video channels. There are some examples of video matrix setting in the next pages. 4 SoftLogic 1. Video Matrix Function – Example 1 2/4 Register value Camera Input 0 Camera Input 1 Camera Input 2 Camera Input 3 Camera Input 4 Camera Input 5 Camera Input 6 Camera Input 7 Camera Input 8 Camera Input 9 Camera Input 10 Camera Input 11 Camera Input 12 Camera Input 13 Camera Input 14 Camera Input 15 Video Channel 0 Video Channel 1 Video Channel 2 Video Channel 3 Video Channel 4 Video Channel 5 Video Channel 6 Video Channel 7 Video Channel 8 Video Channel 9 Video Channel 10 Video Channel 11 Video Channel 12 Video Channel 13 Video Channel 14 Video Channel 15 Video Matrix H.264 encoder & JPEG encoder 0x0100 VI_CH_SWITCH0 Encoded Stream data 0x0104 0x0108 VI_CH_SWITCH1 VI_CH_SWITCH2 SOLO6110 [29:25] 5 [24:20] 4 [19:15] 3 [14:10] 2 [9:5] 1 [4:0] 0 [29:25] 11 [24:20] 10 [19:15] 9 [14:10] 8 [9:5] 7 [4:0] 6 [24:20] Any value [19:15] 15 [14:10] 14 [9:5] 13 [4:0] 12 All camera inputs are connected to corresponding video channels. Encoding video channel 0 means encoding camera input 0. Encoding video channel 1 means encoding camera input 1. … Encoding video channel 15 means encoding camera input 15. Application setting (General Setting Dialog in Windows application) 5 SoftLogic 1. Video Matrix Function – Example 2 3/4 Register value Camera Input 0 Camera Input 1 Camera Input 2 Camera Input 3 Camera Input 4 Camera Input 5 Camera Input 6 Camera Input 7 Camera Input 8 Camera Input 9 Camera Input 10 Camera Input 11 Camera Input 12 Camera Input 13 Camera Input 14 Camera Input 15 Video Channel 0 Video Channel 1 Video Channel 2 Video Channel 3 Video Channel 4 Video Channel 5 Video Channel 6 Video Channel 7 Video Channel 8 Video Channel 9 Video Channel 10 Video Channel 11 Video Channel 12 Video Channel 13 Video Channel 14 Video Channel 15 Video Matrix H.264 encoder & JPEG encoder 0x0100 VI_CH_SWITCH0 Encoded Stream data 0x0104 0x0108 VI_CH_SWITCH1 VI_CH_SWITCH2 SOLO6110 [29:25] 10 [24:20] 11 [19:15] 12 [14:10] 13 [9:5] 14 [4:0] 15 [29:25] 4 [24:20] 5 [19:15] 6 [14:10] 7 [9:5] 8 [4:0] 9 [24:20] Any value [19:15] 0 [14:10] 1 [9:5] 2 [4:0] 3 All camera inputs are connected to reverse numbered video channels. Encoding video channel 0 means encoding camera input 15. Encoding video channel 1 means encoding camera input 14. … Encoding video channel 15 means encoding camera input 0. Application setting (General Setting Dialog in Windows application) 6 SoftLogic 1. Video Matrix Function – Example 3 4/4 Register value Camera Input 0 Camera Input 1 Camera Input 2 Camera Input 3 Camera Input 4 Camera Input 5 Camera Input 6 Camera Input 7 Camera Input 8 Camera Input 9 Camera Input 10 Camera Input 11 Camera Input 12 Camera Input 13 Camera Input 14 Camera Input 15 Video Channel 0 Video Channel 1 Video Channel 2 Video Channel 3 Video Channel 4 Video Channel 5 Video Channel 6 Video Channel 7 Video Channel 8 Video Channel 9 Video Channel 10 Video Channel 11 Video Channel 12 Video Channel 13 Video Channel 14 Video Channel 15 Video Matrix 0x0100 VI_CH_SWITCH0 Encoded Stream data 0x0104 H.264 encoder & JPEG encoder 0x0108 VI_CH_SWITCH1 VI_CH_SWITCH2 SOLO6110 [29:25] 0 [24:20] 4 [19:15] 3 [14:10] 2 [9:5] 1 [4:0] 0 [29:25] 4 [24:20] 4 [19:15] 4 [14:10] 3 [9:5] 2 [4:0] 1 [24:20] Any value [19:15] 15 [14:10] 14 [9:5] 13 [4:0] 4 Encoding video channel 0 means encoding camera input 0. Encoding video channel 5 means encoding camera input 0. -You can generate 2 encoded streams from camera input 0 by encoding video channel 0 and 5. And 2 channel can be encoded with different encoding settings. Encoding video channel 12 means encoding camera input 4. ... Video Channel 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Camera Input 0 1 2 3 4 0 1 2 3 4 4 4 4 13 14 15 Application setting (General Setting Dialog in Windows application) 7 SoftLogic 2. Real Channel / Virtual Channel Real channel stream Video channel SOLO6110 H.264 Encoder 1/1 The virtual channel is copy of real channel (share same input), but can have different “Image Size”, “Quality”, “FPS”, “GOP” value. Virtual channel stream FPS : Frames per second GOP : Group of picture (Key frame interval) 8 SoftLogic 3. Video Matrix Function & Real Channel / Virtual Channel Camera Input 0 Camera Input 1 Camera Input 2 Camera Input 3 Camera Input 4 Camera Input 5 Camera Input 6 Camera Input 7 Camera Input 8 Camera Input 9 Camera Input 10 Camera Input 11 Camera Input 12 Camera Input 13 Camera Input 14 Camera Input 15 Video Channel 0 Video Channel 1 Video Channel 2 Video Channel 3 Video Channel 4 Video Channel 5 Video Channel 6 Video Channel 7 Video Channel 8 Video Channel 9 Video Channel 10 Video Channel 11 Video Channel 12 Video Channel 13 Video Channel 14 Video Channel 15 H.264 encoder & JPEG encoder Video Matrix 1/1 Real Channel 0 / Virtual Channel 0 stream Real Channel 1 / Virtual Channel 1 stream Real Channel 2 / Virtual Channel 2 stream Real Channel 3 / Virtual Channel 3 stream Real Channel 4 / Virtual Channel 4 stream Real Channel 5 / Virtual Channel 5 stream Real Channel 6 / Virtual Channel 6 stream Real Channel 7 / Virtual Channel 7 stream Real Channel 8 / Virtual Channel 8 stream Real Channel 9 / Virtual Channel 9 stream Real Channel 10 / Virtual Channel 10 stream Real Channel 11 / Virtual Channel 11 stream Real Channel 12 / Virtual Channel 12 stream Real Channel 13 / Virtual Channel 13 stream Real Channel 14 / Virtual Channel 14 stream Real Channel 15 / Virtual Channel 15 stream Real Channel / Virtual Channel SOLO6110 “Video Matrix Function” and “Real Channel / Virtual Channel” are independent of each other. The “Video Matrix Function” reside between camera inputs and video channels. And the “Real Channel / Virtual Channel” reside between video channels and encoded streams. You can use video matrix function as virtual channel. If you use SOLO6110-4, please read “About SOLO6110-4 Video Muxing and Encoding.ppt” document. 9 SoftLogic H.264 Encoding 1. Encoding Procedure 2. H.264 Encoder Settings 3. Encoded H.264 Frame Data Format 4. About Encoder OSD 10 SoftLogic H.264 Encoding 1. Encoding Procedure 1. H.264 encoder core initialization 2. Start encoding 3. Get encoded H.264 stream data from SOLO6110 4. End encoding 5. SOLO6110 SDRAM and register status during encoding 11 SoftLogic 1-1. H.264 encoder core initialization “H.264 encoder core initialization” Request 1/1 “H.264 encoder core initialization” OK 1. Set H.264 Video Encoder Configuration Register 0x0610 VE_CFG0 Interrupt Mode H.264 Code Buffer Size H.264 Code Buffer Address 0x0614 VE_CFG1 Byte Align Encoder Motion Flag 0x0630 VE_ATTR Byte Order 12 SoftLogic 1-2. Start encoding 1/1 “Start encoding” Request “Start encoding” OK 1. Set H.264 Property Register except for “CAP_SCALE” or “CAP_SCALE_E” register 2. Set “CAP_SCALE” or “CAP_SCALE_E” register to start encoding Real Channel Real Channel 0x0700 +(4 *N) VE_CH_INTL Picture Size 0x04C0 +(4 *N) CAP_INTERVAL FPS 0x0780 +(4 *N) VE_CH_QP Picture Quality Virtual Channel 0x0800 +(4 *N) VE_CH_GOP Key Frame Interval 0x0480 +(4 *N) Virtual Channel 0x0440 +(4 *N) CAP_SCALE Picture Size Encoding Start / End CAP_SCALE _E Picture Size Encoding Start / End 0x0500 +(4 *N) CAP_INTERVAL_E FPS 0x07C0 +(4 *N) VE_CH_QP_E Picture Quality 0x0840 +(4 *N) VE_CH_GOP_E Key Frame Interval N : Channel number 13 SoftLogic 1-3. Get encoded H.264 stream data from SOLO6110 1/1 This diagram is based on SOLO6110 Windows RDK Application & Driver encoding procedure. No request, Wait event “Get H.264 stream” OK 1 Interrupt Application Driver ISR Thread 4 Copy encoded frame in SOLO6110 SDRAM To PC system memory Get H.264 stream data from H.264 code buffer 2 Encoded frame check by reading “Last queue position” Event Wait Event Wait SOLO6110 H.264 encoded frame information queue Get encoded frame information 0x0A00 VE_H264_QUE 0 0x0A08 VE_H264_QUE 1 H.264 code buffer overlap bug check Signal Event 3 Signal Event 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 H.264 stream file b u f f e r Last queue position (Index) 0x066C 8 c o d e … 7 6 H 2 6 4 VE_STATUS11 PC H.264 code buffer 5 P2M(DMA) transfer 14 SoftLogic 1-4. End encoding 1/1 “End encoding” Request “End encoding” OK 1. Set “CAP_SCALE” or “CAP_SCALE_E” register as 0 Real Channel 0x0440 +(4 *N) CAP_SCALE Picture Size Encoding Start / End Virtual Channel 0x0480 +(4 *N) CAP_SCALE _E Picture Size Encoding Start / End N : Channel number 15 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding 1/9 Stage 1. Encoding Start 2. Get 1st frame 3. Get 2nd frame … 4. Get 15th frame 5. Get 16th frame 6. Get 17th frame … 7. Get Nth frame (In case of H.264 code buffer overlap) 8. Get N+1th frame 9. Encoding End The “VE_H264_QUE N” registers save encoded frame information. The number of these register is 16. This means that unless you miss 16 or more interrupt, you can get all encoded frame. This register has information about “Motion Flag”, “VOP Type”, “Channel”, “H.264 Code Address Offset”. Most important information is “H.264 Code Address Offset”. This is the position of encoded frame in H.264 code buffer (SOLO6110 SDRAM) The “VE_STATUS11” register point to the index of the queue register (VE_H264_QUE N) which has information about just encoded frame. (Please refer to 1-3. Get encoded H.264 stream data from SOLO6110) The “VE_STATUS0 ~ VE_STATUS11” register always have information of just encoded frame. But you need not check this register value except “VE_STATUS11” because SOLO6110 frame header (64 byte) is just copy of these register. SOLO6110 frame header consist of 52 byte H.264 video Encoder status register (13 registers) and 12 byte garbage. Thus the only information you need is position and size of encoded frame. This information can be taken from “VE_STATUS11” and “VE_H264_QUE N” register. 16 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding Stage 1. Encoding Start 2/9 Stage 2. Get 1st frame H.264 encoded frame information queue H.264 encoded frame information queue 0x0A00 VE_H264_QUE 0 0x0A00 VE_H264_QUE 0 0x0A08 VE_H264_QUE 1 0x0A08 VE_H264_QUE 1 0x0A10 VE_H264_QUE 2 0x0A10 VE_H264_QUE 2 0x0A18 VE_H264_QUE 3 0x0A18 VE_H264_QUE 3 0x0A20 VE_H264_QUE 4 1st frame 0x0A20 VE_H264_QUE 4 H . 2 6 4 0x0A28 VE_H264_QUE 5 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 0x0A40 VE_H264_QUE 8 0x0A48 VE_H264_QUE 9 0x0A50 VE_H264_QUE 10 0x0A58 VE_H264_QUE 11 0x0A60 VE_H264_QUE 12 0x0A68 VE_H264_QUE 13 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 c o d e b u f f e r 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 0x0A40 VE_H264_QUE 8 0x0A48 VE_H264_QUE 9 0x0A50 VE_H264_QUE 10 0x0A58 VE_H264_QUE 11 0x0A60 VE_H264_QUE 12 0x0A68 VE_H264_QUE 13 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 Last queue position (Index) Last queue position (Index) 0x066C 0x066C VE_STATUS11 SOLO6110 H . 2 6 4 0x0A28 VE_H264_QUE 5 c o d e b u f f e r VE_STATUS11 SOLO6110 17 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding Stage 2. Get 1st frame H.264 encoded frame information queue 3/9 Stage 3. Get 2nd frame 1st frame H.264 encoded frame information queue 0x0A00 VE_H264_QUE 0 0x0A00 VE_H264_QUE 0 0x0A08 VE_H264_QUE 1 0x0A08 VE_H264_QUE 1 0x0A10 VE_H264_QUE 2 0x0A10 VE_H264_QUE 2 0x0A18 VE_H264_QUE 3 0x0A18 VE_H264_QUE 3 0x0A20 VE_H264_QUE 4 1st frame 2nd frame 0x0A20 VE_H264_QUE 4 H . 2 6 4 0x0A28 VE_H264_QUE 5 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 0x0A40 VE_H264_QUE 8 0x0A48 VE_H264_QUE 9 0x0A50 VE_H264_QUE 10 0x0A58 VE_H264_QUE 11 0x0A60 VE_H264_QUE 12 0x0A68 VE_H264_QUE 13 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 c o d e b u f f e r 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 0x0A40 VE_H264_QUE 8 0x0A48 VE_H264_QUE 9 0x0A50 VE_H264_QUE 10 0x0A58 VE_H264_QUE 11 0x0A60 VE_H264_QUE 12 0x0A68 VE_H264_QUE 13 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 Last queue position (Index) Last queue position (Index) 0x066C 0x066C VE_STATUS11 SOLO6110 H . 2 6 4 0x0A28 VE_H264_QUE 5 c o d e b u f f e r VE_STATUS11 SOLO6110 18 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding Stage 3. Get 2nd frame H.264 encoded frame information queue Stage 4. Get 15th frame H.264 encoded frame information queue 1st frame 0x0A00 VE_H264_QUE 0 0x0A08 VE_H264_QUE 1 0x0A08 VE_H264_QUE 1 0x0A10 VE_H264_QUE 2 0x0A10 VE_H264_QUE 2 0x0A18 VE_H264_QUE 3 0x0A18 VE_H264_QUE 3 0x0A20 VE_H264_QUE 4 0x0A20 VE_H264_QUE 4 H . 2 6 4 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 0x0A40 VE_H264_QUE 8 0x0A48 VE_H264_QUE 9 0x0A50 VE_H264_QUE 10 0x0A58 VE_H264_QUE 11 0x0A60 VE_H264_QUE 12 0x0A68 VE_H264_QUE 13 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 c o d e b u f f e r 3rd frame 4th frame 5th frame 6th frame H . 2 6 8th frame 4 7th frame 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 … c 0x0A48 VE_H264_QUE 9 10th oframe 0x0A50 VE_H264_QUE 10 11th dframe 0x0A58 VE_H264_QUE 11 12th frame 0x0A60 VE_H264_QUE 12 13th uframe 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A70 VE_H264_QUE 14 15th eframe 0x0A78 VE_H264_QUE 15 Last queue position (Index) 0x066C 0x066C SOLO6110 2nd frame 0x0A28 VE_H264_QUE 5 Last queue position (Index) VE_STATUS11 1st frame 0x0A00 VE_H264_QUE 0 2nd frame 0x0A28 VE_H264_QUE 5 4/9 e b f r VE_STATUS11 SOLO6110 19 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding Stage 4. Get 15th frame H.264 encoded frame information queue Stage 5. Get 16th frame 1st frame 0x0A00 VE_H264_QUE 0 5/9 2nd frame 0x0A08 VE_H264_QUE 1 H.264 encoded frame information queue 1st frame 0x0A00 VE_H264_QUE 0 2nd frame 0x0A08 VE_H264_QUE 1 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame H 0x0A28 VE_H264_QUE 5 . 7th frame 2 6 8th frame 4 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame H 0x0A28 VE_H264_QUE 5 . 2 6 8th frame 4 7th frame 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 0x0A50 VE_H264_QUE 10 c 10th oframe 11th dframe e 0x0A58 VE_H264_QUE 11 12th frame 0x0A60 VE_H264_QUE 12 13th uframe 0x0A60 VE_H264_QUE 12 13th uframe 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A70 VE_H264_QUE 14 15th eframe 0x0A48 VE_H264_QUE 9 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 b f 15th eframe r 10th oframe 0x0A50 VE_H264_QUE 10 11th dframe 0x0A58 VE_H264_QUE 11 12th frame 0x0A78 VE_H264_QUE 15 Last queue position (Index) Last queue position (Index) 0x066C 0x066C VE_STATUS11 SOLO6110 c 0x0A48 VE_H264_QUE 9 e b f r 16th frame VE_STATUS11 SOLO6110 20 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding Stage 5. Get 16th frame H.264 encoded frame information queue Stage 6. Get 17th frame 1st frame 0x0A00 VE_H264_QUE 0 6/9 2nd frame 0x0A08 VE_H264_QUE 1 H.264 encoded frame information queue 1st frame 0x0A00 VE_H264_QUE 0 2nd frame 0x0A08 VE_H264_QUE 1 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame H 0x0A28 VE_H264_QUE 5 . 7th frame 2 6 8th frame 4 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame H 0x0A28 VE_H264_QUE 5 . 2 6 8th frame 4 7th frame 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 0x0A50 VE_H264_QUE 10 c 10th oframe 11th dframe e 0x0A58 VE_H264_QUE 11 12th frame 0x0A60 VE_H264_QUE 12 13th uframe 0x0A60 VE_H264_QUE 12 13th uframe 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A70 VE_H264_QUE 14 15th eframe 0x0A48 VE_H264_QUE 9 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 b f 15th eframe r 16th frame 10th oframe 0x0A50 VE_H264_QUE 10 11th dframe 0x0A58 VE_H264_QUE 11 12th frame 0x0A78 VE_H264_QUE 15 Last queue position (Index) Last queue position (Index) 0x066C 0x066C VE_STATUS11 SOLO6110 c 0x0A48 VE_H264_QUE 9 e b f r 16th frame 17th frame VE_STATUS11 SOLO6110 21 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding 7/9 Stage 7. Get Nth frame Nth frame 2/2 1st frame H.264 encoded frame information queue 0x0A00 VE_H264_QUE 0 2nd frame 0x0A08 VE_H264_QUE 1 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame H 0x0A28 VE_H264_QUE 5 . 2 6 8th frame 4 7th frame 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 c 0x0A48 VE_H264_QUE 9 10th oframe 0x0A50 VE_H264_QUE 10 11th dframe 0x0A58 VE_H264_QUE 11 12th frame 0x0A60 VE_H264_QUE 12 13th uframe 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A70 VE_H264_QUE 14 15th eframe 0x0A78 VE_H264_QUE 15 b f r 16th frame 17th frame Last queue position (Index) 0x066C e VE_STATUS11 … Nth frame 1/2 SOLO6110 22 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding Stage 7. Get Nth frame Stage 8. Get N +1th frame Nth frame 2/2 1st frame H.264 encoded frame information queue 0x0A00 VE_H264_QUE 0 8/9 2nd frame 0x0A08 VE_H264_QUE 1 Nth frame 2/2 1st frame N +1th frame H.264 encoded frame information queue 0x0A00 VE_H264_QUE 0 2nd frame 0x0A08 VE_H264_QUE 1 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame H 0x0A28 VE_H264_QUE 5 . 7th frame 2 6 8th frame 4 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame M 0x0A28 VE_H264_QUE 5 P E G 8th frame 4 7th frame 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 0x0A50 VE_H264_QUE 10 c 10th oframe 11th dframe e 0x0A58 VE_H264_QUE 11 12th frame 0x0A60 VE_H264_QUE 12 13th uframe 0x0A60 VE_H264_QUE 12 13th uframe 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A70 VE_H264_QUE 14 15th eframe 0x0A48 VE_H264_QUE 9 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 f 15th eframe r 16th frame 17th frame Last queue position (Index) 0x066C b VE_STATUS11 10th oframe 0x0A50 VE_H264_QUE 10 11th dframe 0x0A58 VE_H264_QUE 11 12th frame 0x0A78 VE_H264_QUE 15 e b f r 16th frame 17th frame Last queue position (Index) 0x066C SOLO6110 c 0x0A48 VE_H264_QUE 9 VE_STATUS11 … … Nth frame 1/2 Nth frame 1/2 SOLO6110 23 SoftLogic 1-5. SOLO6110 SDRAM and register status during encoding Stage 8. Get N +1th frame Stage 9. Encoding End Nth frame 2/2 1st frame N +1th frame H.264 encoded frame information queue 0x0A00 VE_H264_QUE 0 9/9 2nd frame 0x0A08 VE_H264_QUE 1 Nth frame 2/2 1st frame N +1th frame H.264 encoded frame information queue 0x0A00 VE_H264_QUE 0 2nd frame 0x0A08 VE_H264_QUE 1 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame M 0x0A28 VE_H264_QUE 5 P 7th frame E G 8th frame 4 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 3rd frame 0x0A10 VE_H264_QUE 2 4th frame 0x0A18 VE_H264_QUE 3 5th frame 0x0A20 VE_H264_QUE 4 6th frame M 0x0A28 VE_H264_QUE 5 P E G 8th frame 4 7th frame 0x0A30 VE_H264_QUE 6 0x0A38 VE_H264_QUE 7 9th frame 0x0A40 VE_H264_QUE 8 0x0A50 VE_H264_QUE 10 c 10th oframe 11th dframe e 0x0A58 VE_H264_QUE 11 12th frame 0x0A60 VE_H264_QUE 12 13th uframe 0x0A60 VE_H264_QUE 12 13th uframe 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A68 VE_H264_QUE 13 f 14th frame 0x0A70 VE_H264_QUE 14 15th eframe 0x0A48 VE_H264_QUE 9 0x0A70 VE_H264_QUE 14 0x0A78 VE_H264_QUE 15 f 15th eframe r 16th frame 17th frame Last queue position (Index) 0x066C b VE_STATUS11 10th oframe 0x0A50 VE_H264_QUE 10 11th dframe 0x0A58 VE_H264_QUE 11 12th frame 0x0A78 VE_H264_QUE 15 e b f r 16th frame 17th frame Last queue position (Index) 0x066C SOLO6110 c 0x0A48 VE_H264_QUE 9 VE_STATUS11 … … Nth frame 1/2 Nth frame 1/2 SOLO6110 24 SoftLogic H.264 Encoding 2. H.264 Encoder Settings 1. Encoder property and related registers 2. Picture Size (Picture Resolution) 3. FPS (Frames per second) 4. Picture Quality (QP) 5. Key Frame Interval (GOP) 25 SoftLogic 2-1. Encoder property and related registers Property Name Picture Size (Picture Resolution) FPS (Frames per second) Range of value Encoder Off Property Name NTSC PAL 0 0 D1 704 x 480 704 x 576 Half D1 704 x 240 704 x 288 CIF 352 x 240 352 x 288 NTSC PAL 60, 30, … 50, 25, … Picture Size (Picture Resolution) 1/1 Related register (Address / Name) 0x0440 +(4 *N) CAP_SCALE 0x0480 +(4 *N) CAP_SCALE_E 0x0700 +(4 *N) VE_CH_INTL FPS (Frames per second) 0x04C0 +(4 *N) CAP_INTERVAL 0x0500 +(4 *N) CAP_INTERVAL_E 0x0780 +(4 *N) VE_CH_QP 0x07C0 +(4 *N) VE_CH_QP_E 0x0800 +(4 *N) VE_CH_GOP 0x0840 +(4 *N) VE_CH_GOP_E Picture Quality (QP) 3 (Best) ~ 31 (Worst) QP 1, 2 is not used. Picture Quality (QP) Key Frame Interval (GOP) 1 (Every frame is Key frame) ~ 255 Key Frame Interval (GOP) N : Channel Number xxx_E : This means virtual channel property. 26 SoftLogic 2-2. Picture Size (Picture Resolution) Property Name Range of value Picture Size (Picture Resolution) Property Name NTSC PAL 0 0 Encoder Off Picture Size (Picture Resolution) D1 704 x 480 704 x 576 Half D1 704 x 240 704 x 288 CIF 352 x 240 352 x 288 Channel 0 Picture Size 1/1 Related register (Address / Name) 0x0440 +(4 *N) CAP_SCALE 0x0480 +(4 *N) CAP_SCALE_E 0x0700 +(4 *N) VE_CH_INTL Channel 1 Channel 15 0x0440 0x0700 0x0444 0x0704 0x047C 0x073C CAP_SCALE VE_CH_INTL CAP_SCALE VE_CH_INTL CAP_SCALE VE_CH_INTL Encoder Off 0 0 0 0 0 0 … D1 9 1 9 1 9 1 Half D1 1 0 1 0 1 0 CIF 2 0 2 0 2 0 You cannot change “Picture Size” while encoding. “Picture Size” can be set only when before encoding. 27 SoftLogic 2-3. FPS (Frames per second) Property Name Range of value FPS (Frames per second) NTSC NTSC PAL 60, 30, … 50, 25, … Property Name FPS (Frames per second) Picture Size FPS D1 30 /(CAP_INTERVAL +1) Half D1, CIF IF (CAP_INTERVAL == 0 ) 60 ELSE 30 /CAP_INTERVAL D1 PAL 1/1 IF (CAP_INTERVAL == 0 ) 50 ELSE 25 /CAP_INTERVAL CAP_INTERVAL 0x0500 +(4 *N) CAP_INTERVAL_E CAP_INTERVAL is same as Skipped Frame Number. CAP_INTERVAL == 0 means no frame is skipped. (NTSC D1 30 frames, PAL D1 25 frames, …) CAP_INTERVAL == 1 means 1 frame is skipped. (Every second frame is encoded.) CAP_INTERVAL == 2 means 2 frame is skipped. (Every third frame is encoded.) … 25 /(CAP_INTERVAL +1) Half D1, CIF Related register (Address / Name) 0x04C0 +(4 *N) D1 is frame picture, the max. frame rate is 30 (25). And other picture size (Half D1, CIF) is field picture, the max. frame rate is 60 (50). NTSC PAL D1 Half D1, CIF FPS CAP_INTERVAL OR CAP_INTERVAL_E FPS CAP_INTERVAL OR CAP_INTERVAL_E 30 0 60 15 1 10 2 7.5 D1 Half D1, CIF FPS CAP_INTERVAL OR CAP_INTERVAL_E FPS CAP_INTERVAL OR CAP_INTERVAL_E 0 25 0 50 0 30 1 12.5 1 25 1 15 2 8.3 2 12.5 2 3 10 3 6.25 3 8.3 3 … … … … … … … … 0.25 119 0.5 60 0.25 99 0.5 50 0.2 149 0.25 120 0.2 124 0.25 100 0.1 299 0.2 150 0.1 249 0.2 125 You can change “FPS” while encoding. CAP_INTERVAL for Real Channel CAP_INTERVAL_E for Virtual Channel 28 SoftLogic 2-4. Picture Quality (QP) 1/1 Property Name Range of value Property Name Related register (Address / Name) Picture Quality (QP) 3 (Best) ~ 31 (Worst) QP 1, 2 is not used. Picture Quality (QP) 0x0780 +(4 *N) VE_CH_QP 0x07C0 +(4 *N) VE_CH_QP_E Real Channel 0 Virtual Channel 0 Real Channel 1 Virtual Channel 1 0x0780 0x07C0 0x0784 0x07C4 VE_CH_QP VE_CH_QP_E VE_CH_QP VE_CH_QP_E 3 (Best) 3 3 3 3 4 4 4 4 4 … … … … … 30 30 30 30 30 31 (Worst) 31 31 31 31 Picture Quality … You can change “Picture Quality” while encoding. 29 SoftLogic 2-5. Key Frame Interval (GOP) 1/1 Property Name Range of value Property Name Key Frame Interval (GOP) 1 (Every frame is Key frame) ~ 255 Key Frame Interval (GOP) Related register (Address / Name) 0x0800 +(4 *N) VE_CH_GOP 0x0840 +(4 *N) VE_CH_GOP_E Real Channel 0 Virtual Channel 0 Real Channel 1 Virtual Channel 1 0x0800 0x0840 0x0804 0x0844 VE_CH_GOP VE_CH_GOP_E VE_CH_GOP VE_CH_GOP_E 1 1 1 1 1 2 2 2 2 2 … … … … … 254 254 254 254 254 255 255 255 255 255 Key Frame Interval … Key Frame Interval 1 I I I I I I I I I I I I ... I frame only 2 I P I P I P I P I P I P ... 1 I frame + 1 P frame 3 I P P I P P I P P I P P ... 1 I frame + 2 P frame 4 I P P P I P P P I P P P … 1 I frame + 3 P frame P P P P P … 1 I frame + 254 P frame … 255 ... I P P P P P P You can change “Key Frame Interval” while encoding. 30 SoftLogic H.264 Encoding 3. Encoded H.264 Frame Data Format 1. Encoded H.264 Frame Data Format 31 SoftLogic 3. Encoded H.264 Frame Data Format 1/1 SOLO6110 H.264 Frame Header SOLO6110 H.264 Frame Header Encoded Frame 64 Byte Encoded M Frame Encoder Motion Data (Optional) P E G Frame Encoded 4 256 Byte c Encoded Frame o d e Encoded Frame b u Encoded f Frame f e Frame Encoded r Frame Data (H.264 VOP Header + H.264 Frame Data) Offset Data 00 (0x00) VE_STATUS0 04 (0x04) VE_STATUS1 08 (0x08) VE_STATUS2 12 (0x0c) VE_STATUS3 16 (0x10) VE_STATUS4 20 (0x14) VE_STATUS5 24 (0x18) VE_STATUS6 28 (0x1c) VE_STATUS7 32 (0x20) VE_STATUS8 36 (0x24) VE_STATUS9 40 (0x28) VE_STATUS10 44 (0x2c) VE_STATUS11 48 (0x30) VE_STATUS12 52 (0x34) dummy 56 (0x38) dummy 60 (0x3c) dummy SOLO6110 H.264 Frame Header is just mirror of “H.264 Video Encoder Status Register”. 0x0640 : VE_STATUS0 0x0644 : VE_STATUS1 … 0x0670 : VE_STATUS12 Variable Size The size of “Frame Data” is aligned size. The “H.264 Code Size” value in VE_STATUS11 or VE_STATUS0 is the true H.264 frame data size. The size of “Frame Data” is (“H.264 Code Size” +”Align Byte”) &(~(“Align Byte” -1)) … H.264 Code Buffer Encoded Frame Example) If “H.264 Code Size” is 35776 and “Align Byte” is 32, Frame Data = (35576 +0x20) &0xfffe0 32 SoftLogic H.264 Encoding 4. About Encoder OSD 1. About Encoder OSD 33 SoftLogic 4. About Encoder OSD 1/1 1024 pixels 32 pixels 16 pixels 8 pixels 1 32 33 2 3 34 35 4 5 36 37 6 7 38 39 8 9 40 41 28 29 60 61 30 31 62 63 2048 +0 2048 +1 2048 +32 2048 +33 2048 +2 2048 +3 2048 +34 2048 +35 2048 +4 2048 +5 2048 +36 2048 +37 2048 +6 2048 +7 2048 +38 2048 +39 2048 +8 2048 +9 2048 +40 2048 +41 1 2 3 … 65535 1024 pixels BYTE OSD_Buffer[65536] 0 … … 0 … … 2048 +28 2048 +29 2048 +60 2048 +61 2048 +30 2048 +31 2048 +62 2048 +63 … Bit / Pixel is 1. 1024 pixels x 1024 pixels /8 (Byte) = 131072 Byte In PAL video system, size of OSD image is less than size of PAL image (704 x 576). Thus, if you want to display OSD at bottom line of PAL image, you should change encoder OSD position value. In NTSC video system, there is no problem in encoder OSD displaying. 34 SoftLogic
© Copyright 2026 Paperzz