Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update kvsWebRTCClientMasterGstreamerSample.c - Provide Raspberry Pi hardware encode example #1398

Closed
wants to merge 16 commits into from

Conversation

bkneff
Copy link
Contributor

@bkneff bkneff commented Feb 13, 2022

Provide an example gstreamer pipeline for Raspberry Pi hardware encoding. Tested on Raspberry Pi 3

Issue #, if available:

Description of changes:

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

niyatim23 and others added 15 commits August 16, 2021 10:01
* create data channel sample

* moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive

* removed unused variables, moved variable declarations to the top of a block

* create data channel sample

* moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive
No code changed. Just a template change. So merging
…t empty, there is a check preventing the data channel to be opened. Now protocol length is correctly handled to avoid check failing. (awslabs#1228)
* Update README to include instructions for pull requests.

* Put develop branch mentions in README in a code block
* add the call response, it's verbose but maybe we should make it debug

* WARN level log when result is not 200 and VERBOSE for 200s

* missing null terminator

* alloc right amount to include null char
* Log ice candidate protocol appropriately (awslabs#1230)

* Log ice candidate protocol appropriately

* Add develop to travis CI

* Address comments

* Realign branches during transition (awslabs#1257)

* create data channel sample (awslabs#1203)

* create data channel sample

* moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive

* removed unused variables, moved variable declarations to the top of a block

* create data channel sample

* moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive

* Cancel the thread once mediaThreadStarted flag is set to false (awslabs#1227)

* Initial stale PR template (awslabs#1226)

* Update stale issue template

* Testing every minute

* Fix stale issue PR template (awslabs#1234)

No code changed. Just a template change. So merging

* Add bug and question label

* Switch stale PR action to daily cadence

* [FIX] When protocol in DCEP header of data channel open command is not empty, there is a check preventing the data channel to be opened. Now protocol length is correctly handled to avoid check failing. (awslabs#1228)

Co-authored-by: Niyati Maheshwari <[email protected]>
Co-authored-by: Divya Sampath Kumar <[email protected]>
Co-authored-by: ela34 <[email protected]>

* set protocol value following the spec (awslabs#1259)

Co-authored-by: liyufang <[email protected]>

* filter out invalid candidate in sdp (awslabs#1260)

Co-authored-by: liyufang <[email protected]>

* Added targets for cmake clean (awslabs#1253)

* added targets for cmake clean

* added new line, updated readme

* added missing new line

* updated readme to include folder details

* updated readme to include folder details

* viewer sample: wrap datachannel callback with `ENABLE_DATA_CHANNEL` (awslabs#1261)

* create data channel sample (awslabs#1203)

* create data channel sample

* moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive

* removed unused variables, moved variable declarations to the top of a block

* create data channel sample

* moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive

* Cancel the thread once mediaThreadStarted flag is set to false (awslabs#1227)

* Initial stale PR template (awslabs#1226)

* Update stale issue template

* Testing every minute

* Fix stale issue PR template (awslabs#1234)

No code changed. Just a template change. So merging

* Add bug and question label

* Switch stale PR action to daily cadence

* [FIX] When protocol in DCEP header of data channel open command is not empty, there is a check preventing the data channel to be opened. Now protocol length is correctly handled to avoid check failing. (awslabs#1228)

* viewer sample: wrap datachannel callback with `ENABLE_DATA_CHANNEL`

Signed-off-by: [email protected] <[email protected]>

Co-authored-by: Niyati Maheshwari <[email protected]>
Co-authored-by: Divya Sampath Kumar <[email protected]>
Co-authored-by: ela34 <[email protected]>

* libwebsockets: add patch to fix pipe fd leak issue (awslabs#1264)

Signed-off-by: Alex.Li <[email protected]>

* Fix scripts/pare_status.py for non-status #defines (awslabs#1268) (awslabs#1274)

Co-authored-by: Kevin Allen <[email protected]>

* fix a few bugs

* Revert "fix a few bugs"

This reverts commit 0939024.

* fix some bugs (awslabs#1277)

* Fix bugs (awslabs#1279)

* fix edge case try to unlock a mutex which is not locked in teh acse the sample config was NULL (awslabs#1286)

* cmake: allow user to specify OPEN_SRC_INSTALL_PREFIX (awslabs#1293)

Signed-off-by: Alex.Li <[email protected]>

* Fix inconsistent log priority (awslabs#1309)

Patch reduces priority of a few info level log messages to verbose
level to be consistent with other functions in file and rest of
code base.

* Modify protocol loggin design in develop (awslabs#1311)

* typo: typo fix (awslabs#1317)

Signed-off-by: Alex.Li <[email protected]>

* Signaling state machine rework (awslabs#1323)

* replaced recursive calls to stepSignalingStateMachine with loops

* removed recursive calls to stepSignalingStateMachine

* replaced stepSignalingstatemachine with signalingStateMachineIterator

* removed stepUntil, continueOnReady; removed status from iterator signature; set signalingclient version; added a lock in refreshIceConfiguration

* changed the declaration for i from int to UINT32

* added signaling version; removed unnecessary comment

* removed redeclaration; changed value in an existing macro

* Fix issue with API call failures being treated as success (awslabs#1328)

* return proper error, do not reset call result value

* for non retriable failures, set the terminal exit status for state in… (awslabs#1320)

* for non retriable failures, set the terminal exit status for state in state machine

* address comments

* adjust tests set retry max to 1

* Update LwsApiCalls.c

trigger travis ci

* Incorporating PIC state machine level retry changes into webrtc signaling state machine (awslabs#1326)

* Incorporating PIC state machine level retry changes into webrtc signaling state machine

* Signaling state machine rework (awslabs#1323)

* replaced recursive calls to stepSignalingStateMachine with loops

* removed recursive calls to stepSignalingStateMachine

* replaced stepSignalingstatemachine with signalingStateMachineIterator

* removed stepUntil, continueOnReady; removed status from iterator signature; set signalingclient version; added a lock in refreshIceConfiguration

* changed the declaration for i from int to UINT32

* added signaling version; removed unnecessary comment

* removed redeclaration; changed value in an existing macro

* Fix issue with API call failures being treated as success (awslabs#1328)

* return proper error, do not reset call result value

* for non retriable failures, set the terminal exit status for state in… (awslabs#1320)

* for non retriable failures, set the terminal exit status for state in state machine

* address comments

* adjust tests set retry max to 1

* Update LwsApiCalls.c

trigger travis ci

* Add retry strategy to client info to avoiud changing create signaling channel API signature

* Incorporating PIC state machine level retry changes into webrtc signaling state machine

* Add retry strategy to client info to avoiud changing create signaling channel API signature

* Adding more debug logs in the code

* fix merge conflicts

* PR feedback

Co-authored-by: Niyati Maheshwari <[email protected]>
Co-authored-by: Hassan Sahibzada <[email protected]>

* Revert " Incorporating PIC state machine level retry changes into webrtc signaling state machine (awslabs#1326)" (awslabs#1339)

This reverts commit 06bffce.

* Incorporating PIC state machine level retry changes into webrtc signaling state machine (awslabs#1341)

* Incorporating PIC state machine level retry changes into webrtc signaling state machine

* Add a n optional check for free retry strategy

* Remove unused goto label

* add missing sleep in get token state machine execute API

* update log line

* Update Producer hash

* Adding a high level retry strategy while creating signaling client

* Add Retry count retrieval in hook (awslabs#1335)

* Add Retry count retrieval in hook

* Fix compile issue on travis

* Pull in latest changes in retry structures

* Rebasing off develop with successful travis run for retry

* Log git hash (awslabs#1345)

* Log git hash

* Update CMakeLists.txt

white space change to trigger travis

Co-authored-by: Hassan Sahibzada <[email protected]>

* Fix retry count to indicate count only after a retry has occured (awslabs#1348)

Fix retry count to indicate count only after a retry has occurred

* add support for automatic clock skew detection and correction (awslabs#1344)

* add support for automatic clock skew detection and correction

* auto fix clock skew and add tests

* enable test to check clock recovery

* remove stuff left over from debugging, reset logging default to WARN

* remove unused variable

* get rid of verbose logging in unit tests causes static build to fail due to excessive log output

* simplify code get rid of extra call to length because the lws_hdr_copy returns the same value

* handle null stream track in case of recvonly (awslabs#1346)

* handle null stream track in case of recvonly

* a test with null stream track for revconly

* Fix a comment

* whitespace change

* State machine preparation is decoupled from the constructor (awslabs#1343)

* Merge master into develop (awslabs#1352)

* Missing the public API switch in the other samples (awslabs#1356)

* Fix Fetch error retry cases (awslabs#1359)

* Fix Fetch error retry cases

* update comment

Co-authored-by: Divya Sampath Kumar <[email protected]>
Co-authored-by: Niyati Maheshwari <[email protected]>
Co-authored-by: ela34 <[email protected]>
Co-authored-by: northteam <[email protected]>
Co-authored-by: liyufang <[email protected]>
Co-authored-by: Alex.D.Scofield <[email protected]>
Co-authored-by: Kevin Allen <[email protected]>
Co-authored-by: Hassan Sahibzada <[email protected]>
Co-authored-by: Chris Hiszpanski <[email protected]>
Co-authored-by: Anurag Katey <[email protected]>
awslabs#1391) (awslabs#1393)

* new Chrome v98 produces extra sdp attributes, up the limit so we do not reject

* Fix test and change count to unit16 to avoid overflow issues

* fix issue reported by codeql

Co-authored-by: Divya Sampath Kumar <[email protected]>

Co-authored-by: Hassan Sahibzada <[email protected]>
Provide an example gstreamer pipeline for Raspberry Pi hardware encoding.  Tested on Raspberry Pi 3
@codecov-commenter
Copy link

codecov-commenter commented Feb 13, 2022

Codecov Report

Merging #1398 (104d801) into develop (19e0f14) will increase coverage by 0.00%.
The diff coverage is 70.00%.

Impacted file tree graph

@@           Coverage Diff            @@
##           develop    #1398   +/-   ##
========================================
  Coverage    51.49%   51.49%           
========================================
  Files           46       46           
  Lines        12795    12802    +7     
========================================
+ Hits          6589     6593    +4     
- Misses        6206     6209    +3     
Impacted Files Coverage Δ
samples/kvsWebRTCClientMaster.c 0.00% <0.00%> (ø)
src/source/Ice/IceAgent.c 86.47% <ø> (+0.19%) ⬆️
src/source/Signaling/LwsApiCalls.c 1.53% <ø> (ø)
src/source/Signaling/Signaling.c 11.58% <ø> (ø)
src/source/PeerConnection/PeerConnection.c 80.68% <100.00%> (-0.57%) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 19e0f14...104d801. Read the comment docs.

* "v4l2src do-timestamp=TRUE device=\"/dev/video0\" ! queue ! videoconvert ! "
* "video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! "
* "omxh264enc control-rate=1 target-bitrate=500000 periodicty-idr=30 inline-header=FALSE ! "
* "h264parse config-interval=-1 ! "
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it necessary to send sps/pps with every key frame?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honestly, I'm not sure. I know most camera vendors send sps/pps withe very keyframe, but that is for rtsp/rtp.

hassanctech
hassanctech previously approved these changes Feb 14, 2022
Copy link
Contributor

@hassanctech hassanctech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding this example @bkneff !

@disa6302
Copy link
Contributor

Thank you @bkneff !
Can you direct this PR to origin/develop branch instead of master?

@bkneff bkneff changed the base branch from master to develop February 14, 2022 19:49
@bkneff bkneff dismissed hassanctech’s stale review February 14, 2022 19:49

The base branch was changed.

@bkneff
Copy link
Contributor Author

bkneff commented Feb 14, 2022 via email

@hassanctech
Copy link
Contributor

hassanctech commented Feb 17, 2022

@bkneff there were a ton of merge conflicts, I resolved them all, so as soon as the merge commit travis run succeeds we can get this merged.

@github-actions
Copy link

This is a very old issue. We encourage you to check if this is still an issue in the latest release and if you find that this is still a problem, please feel free to open a new one.

@github-actions github-actions bot added the Stale label Aug 17, 2022
@cyuste
Copy link

cyuste commented Dec 16, 2022

Thanks @bkneff for this, was really helpful despite not being merged in the repo

@jdelapla jdelapla mentioned this pull request Jan 19, 2023
@sirknightj sirknightj mentioned this pull request Feb 10, 2023
@sirknightj
Copy link
Contributor

Closed in favor of #1640 .

Thank you for your contribution @bkneff !

@sirknightj sirknightj closed this Feb 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants