-
Notifications
You must be signed in to change notification settings - Fork 317
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
[Feature] Add H265 support with SDP, RTP payloader-deplayloader #1965
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #1965 +/- ##
===========================================
- Coverage 88.78% 88.61% -0.17%
===========================================
Files 46 47 +1
Lines 12476 12695 +219
===========================================
+ Hits 11077 11250 +173
- Misses 1399 1445 +46 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the PR description it says it was tested with h265, I do not see any way to tell the master sample to use h265 it has hard coded h264 option. Are those changes on a different branch somewhere else? I do not see them in develop either.
I've added a command-line argument and updated the readme with new instructions. H264 and Opus are still the default. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A general remark so different encoders (hardware/software) may have different quirks. Aside from referencing the RFCs and following what should be supported, it is really important we look at a variety of encoders that are actually out in the wild and make sure this code is robust enough to work with them. At a minimum we should test with hardware and software encoders on iOS/Android and libx265 software encoder. If this PR could include a matrix of encoders / combinations that were tested we can know in the future we are not regressing and we will know and have documented what gaps we have.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I haven't looked at the RFC myself to finely go through the payloader/depayloader code will assume the proper due diligence was done there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Tested the following combinations
|
* Add RtpH265Payloader.c and RtpH265Payloader.h * Add support for H265 in PeerConnection/SessionDescription * Add support for H265 in PeerConnection/PeerConnection * Add support for H265 in PeerConnection/Rtp * Add support for H265 in samples/Common.c * Add support for H265 in samples/kvsWebRTCClientMaster.c * rtp, sdp fix, flag removed, clang fixed, windows build fixed, new test added * test fix * cleanup * cleanup * remove #if 0 * clang * presentation ts fix * clang-format fix * PKG_CONFIG_PATH in kvscommon * missing bracket * fix all builds * ci * cleanup * fix windows build, rename h265 defs * remove duplicate line from h264 and h265 * sample changes * address comments * clang-format * gst sample * cleanup args * clang-format * cleanup * add sdp tests * address comments * address commentas * set default payload type only once * address comments * fix height and width * sdp change --------- Co-authored-by: Hongli Wang <[email protected]>
* Add RtpH265Payloader.c and RtpH265Payloader.h * Add support for H265 in PeerConnection/SessionDescription * Add support for H265 in PeerConnection/PeerConnection * Add support for H265 in PeerConnection/Rtp * Add support for H265 in samples/Common.c * Add support for H265 in samples/kvsWebRTCClientMaster.c * rtp, sdp fix, flag removed, clang fixed, windows build fixed, new test added * test fix * cleanup * cleanup * remove #if 0 * clang * presentation ts fix * clang-format fix * PKG_CONFIG_PATH in kvscommon * missing bracket * fix all builds * ci * cleanup * fix windows build, rename h265 defs * remove duplicate line from h264 and h265 * sample changes * address comments * clang-format * gst sample * cleanup args * clang-format * cleanup * add sdp tests * address comments * address commentas * set default payload type only once * address comments * fix height and width * sdp change --------- Co-authored-by: Hongli Wang <[email protected]>
* Add RtpH265Payloader.c and RtpH265Payloader.h * Add support for H265 in PeerConnection/SessionDescription * Add support for H265 in PeerConnection/PeerConnection * Add support for H265 in PeerConnection/Rtp * Add support for H265 in samples/Common.c * Add support for H265 in samples/kvsWebRTCClientMaster.c * rtp, sdp fix, flag removed, clang fixed, windows build fixed, new test added * test fix * cleanup * cleanup * remove #if 0 * clang * presentation ts fix * clang-format fix * PKG_CONFIG_PATH in kvscommon * missing bracket * fix all builds * ci * cleanup * fix windows build, rename h265 defs * remove duplicate line from h264 and h265 * sample changes * address comments * clang-format * gst sample * cleanup args * clang-format * cleanup * add sdp tests * address comments * address commentas * set default payload type only once * address comments * fix height and width * sdp change --------- Co-authored-by: Hongli Wang <[email protected]>
* Add H265 and AAC frames (#1962) * aac and h265 frames * update readme * update cmake with h265 and aac * clang formay * [Sample] GStreamer media receiver (#1963) * create the gst receiver * fix ci * cmake flag * clang format, add cmake flag in ci * install gstreamer on ci * use macos12 * use defined values * indent * clang-format * readme and commentsa * clang :( * install glib to fix ci * -DCOMPILER_WARNINGS=FALSE to fix the CI * fix macos version for clang * address comments and cleanup * new viewer with gst * clang-format * missing null check * address comments * -DCOMPILER_WARNINGS=TRUE * clang-format * gst_init_check * fix CI * fix CI * [Bug] GStreamer sample (#1972) * gst-sample-fix * modify the message * fix windows * set to null * fix pts and eos in sample * unused var removed * move null init * Version check job (#1974) * Version check job * Working Version check template * Retest with dev * Version lint * Version lint * use new frames (#1978) * Sample TWCC implementation (#1957) * encoder bitrate change based on twcc * Change to 5% inc and dec * modify percentages * ema based calc * EMa fix * Nits * Readme * flip * memset remove * Readme update, move enable flags to createSampleConfiguration * Add codecov token * [Feature] Add H265 support with SDP, RTP payloader-deplayloader (#1965) * Add RtpH265Payloader.c and RtpH265Payloader.h * Add support for H265 in PeerConnection/SessionDescription * Add support for H265 in PeerConnection/PeerConnection * Add support for H265 in PeerConnection/Rtp * Add support for H265 in samples/Common.c * Add support for H265 in samples/kvsWebRTCClientMaster.c * rtp, sdp fix, flag removed, clang fixed, windows build fixed, new test added * test fix * cleanup * cleanup * remove #if 0 * clang * presentation ts fix * clang-format fix * PKG_CONFIG_PATH in kvscommon * missing bracket * fix all builds * ci * cleanup * fix windows build, rename h265 defs * remove duplicate line from h264 and h265 * sample changes * address comments * clang-format * gst sample * cleanup args * clang-format * cleanup * add sdp tests * address comments * address commentas * set default payload type only once * address comments * fix height and width * sdp change --------- Co-authored-by: Hongli Wang <[email protected]> * Version bump, fix tests, remove enableIceStats * Remove AAC related changes * Remove AAC frames * Clang format * fix kvsWebrtcClientMasterGstSample.c name in CMakeLists --------- Co-authored-by: Divya Sampath Kumar <[email protected]> Co-authored-by: Hongli Wang <[email protected]>
Hi @niyatim23, |
@naseebpanghal, yes it should be |
Hi @niyatim23 First i tried with H264, it works with web browser but not with local kvsWebrtcClientViewerGstSample running on same machine. |
Issue #, if available:
What was changed?
Why was it changed?
How was it changed?
What testing was done for the changes?
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.