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 gstreamer and libcamera #36

Merged

Conversation

joaoantoniocardoso
Copy link
Member

@joaoantoniocardoso joaoantoniocardoso commented Aug 5, 2023

Gstreamer

GStreamer 1.22.3 (current) -> 1.24.x (new stable)

Critical improvements for BlueoS:

  • Solves the WebRTCBin leak

Interesting changes from 1.22.3 to 1.22.10:

Interesting changes from 1.22.10 to 1.24.0:

  • WebRTC: Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
  • rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it's a standard rtpjitterbuffer, but instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element in lieu of a jitter buffer.
  • RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer. Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
  • h264parse improved its AU boundary detection.
  • h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
  • The entire gst-omx package and plugin has been retired. The gst-omx module has been removed. The OpenMAX standard is long dead and even the Raspberry Pi OS no longer supports it. There has not been any development since 1.22 was released. Users of these elements should switch to the Video4Linux-based video encoders and decoders which have been the standard on embedded Linux for quite some time now.
  • New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
  • New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element. This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain properties at the end of an RTSP media sub-pipeline.
  • New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process. This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust bindings, and is also used inside webrtcsrc and webrtcsink.
  • New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.

Libcamera

note: libcamera is still disabled. I tried to enable it, but it is failing for armv7 because pyyaml is failing to build from pip. -> Fixed. It's now enabled back again!

LibCamera 0.0.4 (current) -> 0.0.5 -> 0.1.0 -> 0.2.0

@joaoantoniocardoso
Copy link
Member Author

Tested, it's running well: joaoantoniocardoso/blueos-core:update_base is using this docker pull joaoantoniocardoso/blueos-base:update-gstreamer

@patrickelectric
Copy link
Member

What is the main advantage of this update ?

@joaoantoniocardoso
Copy link
Member Author

What is the main advantage of this update ?

Nothing critical so far -- for what might affect us, GST has fixes regarding plugins used by MCM's imagesink (jpeg, appsink), and some fixes for h265, for MCM's future h265 feature.

@joaoantoniocardoso joaoantoniocardoso marked this pull request as draft August 11, 2023 17:25
@joaoantoniocardoso
Copy link
Member Author

Changing to draft to hold it until next BlueOS's stable.

@patrickelectric
Copy link
Member

@joaoantoniocardoso be free to remove it as a draft and make it open to review as well
We can merge, but probably we are not going to have a release with it for BlueOS stable.

@patrickelectric
Copy link
Member

@joaoantoniocardoso can you confirm that since we don´t have libav, h264 dec is not available, and as result the camera manager is failing at the moment ?
bluerobotics/BlueOS#2436 (comment)

@joaoantoniocardoso
Copy link
Member Author

@joaoantoniocardoso can you confirm that since we don´t have libav, h264 dec is not available, and as result the camera manager is failing at the moment ? bluerobotics/BlueOS#2436 (comment)

yeah, that's exactly what is happening.

@joaoantoniocardoso joaoantoniocardoso force-pushed the update-gstreamer branch 2 times, most recently from c30fc7f to 80589a8 Compare March 29, 2024 23:33
@joaoantoniocardoso joaoantoniocardoso force-pushed the update-gstreamer branch 3 times, most recently from 7c17627 to b6ab723 Compare March 30, 2024 17:00
@joaoantoniocardoso
Copy link
Member Author

joaoantoniocardoso commented Mar 30, 2024

@patrickelectric it's now building with both libav and libcamera enabled :)

note: the image size increased from 237 to 288 MB

@patrickelectric
Copy link
Member

@patrickelectric it's now building with both libav and libcamera enabled :)

note: the image size increased from 237 to 288 MB

Is there a blueOS version to test it ?

@joaoantoniocardoso
Copy link
Member Author

@patrickelectric it's now building with both libav and libcamera enabled :)
note: the image size increased from 237 to 288 MB

Is there a blueOS version to test it ?

This is updated: bluerobotics/BlueOS#2436

@patrickelectric patrickelectric merged commit e7a113c into bluerobotics:master Apr 23, 2024
1 check passed
@joaoantoniocardoso joaoantoniocardoso deleted the update-gstreamer branch April 24, 2024 12:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants