You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+48-53Lines changed: 48 additions & 53 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,28 +1,36 @@
1
1
# H264Sharp
2
+
2
3
Cisco's OpenH264 Native facade/wrapper for .Net with highly optimised SIMD color format conversion support. It is very suitable for realtime streaming over network.
3
4
4
5
SIMD color format converters are up to 2.9x faster than OpenCV implementation.
5
6
6
7
- Cross Platform
7
8
- Plug&Play
8
9
- Tested on .NetFramework and Net(up to 8), Windows & Linux & Android (x86 and Arm).
10
+
9
11
- No memory leaks or GC pressure.
10
12
- Compatible with OpenCV.(i.e. OpenCVsharp)
11
13
12
14
Cisco Openh264 is chosen for its unbeatible performance compared to other available software encoders. A paper involving performance metrics can be found here:
For detailed information and documentation please check out [Wiki](https://github.com/ReferenceType/H264Sharp/wiki) page
108
99
### Data
109
100
Data classes can use existing memory or allocate one for you
110
101
```c#
@@ -147,7 +138,7 @@ ec.CopyAllTo(buffer,offset);
147
138
148
139
```
149
140
On single layer(standard use case) for IDR frames you get more than one EncodedData, the first frame is a metadata and it will produce neither an image nor an error when decoded.<br/>
150
-
Decoder can work with both frame by frame or merged. I personally merge the encoded frames into single array and decode them on single shot.
141
+
Decoder can work with both frame by frame or merged.
151
142
152
143
### Decoder
153
144
Decoder has the API:
@@ -165,11 +156,12 @@ API Where:<br/>
165
156
166
157
If methods return false means there is no image and you need to check DecodingState.
167
158
Otherwise there is an image but, on lossy link you still need to check DecodingState for error and perform necessary action(i.e. perform IDR refresh request to encoder).
168
-
### Tips
159
+
####Tips
169
160
- Raw image bytes are large, avoid allocating new ones and try to reuse same RgbImage or YuvImage or pool them in something like concurrent bag.
170
161
171
-
# Advanced Configuration & Features
172
-
## Advanced Setup
162
+
For more information refer to [Tutorial](https://github.com/ReferenceType/H264Sharp/wiki/Tutorial)
163
+
## Advanced Configuration & Features
164
+
### Advanced Setup
173
165
If you want to initialise your encoder and able to control everything, you can use provided API which is identical to Ciso C++ Release.
174
166
```c#
175
167
encoder=newH264Encoder();
@@ -246,15 +238,18 @@ Neon is only active on arm and does nothing on x86 systems.
There are many possible options and they are commented on the enum fields as well as required types. If you want more detail, search as general H264 options.
292
-
<br/>Because you wont find any documentation on cisco side RTFC(Read the F. code) pinciple.
292
+
<br/>Because you wont find any documentation on cisco side.
293
+
293
294
294
-
If you want to reuse your option structs for efficiency, you can use this method:
0 commit comments