Revolutionizing Video Management: a GStreamer Project on Windows
Written by
Shiyin XuMay 31, 2023
A few months ago, an exciting request reached Fluendo. Our potential client was developing a GStreamer-based native Windows application to upgrade their current product: a video management system or VMS. They needed a staff augmentation service that could accelerate their development focused on three main scopes: stability, performance, and new features.
The requestor is a leading provider of mission-critical security surveillance systems, safeguarding businesses, schools, municipalities, hospitals, and cities worldwide. It has over 130 employees and generates over $27 million in revenue annually. It specializes in engineering complete security solutions that simplify deployment, operation, and ongoing maintenance.
Let’s talk about the project!
The project involved three engineers and one technical lead who did a big refactor to fix bugs and improve the performance and stability of the application. Our team of experts worked closely with the company during four months to identify the most suitable solution to meet their requirements. From there on, the extra features were added to the product.
By today the total amount of contributions done to the GStreamer community project are the following:
Merged ones:
- Fix memory leak in the rtspsrc
- Fix crash in the d3d11h265dec
- “Method” property of the d3d11scale
- Fix in the documentation of the gstbin
- A PR that fixes various race conditions in d3d11videosink and also adds a unit test that can reproduce these race conditions
Taken into account by the community and fixed on their side:
Other P.R.s proposed to the community:
- One workaround for a race condition in rtspsrc has been proposed.
- Videotestsrc: fix max value for timestamp-offset
- Fix the build of the plugins for OpenCV in Windows
- Bin: propagate upstream events to the leaves
A GStreamer training took place
Shortly after Fluendo successfully completed the client’s initial request, our team of experts organized a comprehensive 3-day training session. It was tailored to meet their specific needs and goals, where we provided in-depth knowledge and hands-on experience with the GStreamer framework.
We guided them to get sufficient GStreamer knowledge and also walked them through the common GStreamer mistakes and how to avoid them so that, later on, the client’s team could be self-sufficient and be able to create a reliable and high-performance application.
Other topics that we showcased were: GStreamer base classes, GObject, GstPad, GstPipeline, GstBus, GstCaps, GstBufferPool, Debugging, Synchronization, etc.
At the end of the training, we conducted feedback to evaluate the program’s effectiveness and identify areas for improvement. The feedback from the attendees was overwhelmingly positive, with many expressing appreciation for the practical examples and relevant content.
Final impressions
Overall, the project and the training were a success, and we were thrilled to have the opportunity to share our expertise and knowledge with another company. We look forward to continuing our collaboration with them and other organizations in the future.
Do you have any multimedia projects in progress? Fluendo is your ideal partner for any of them. Whether for training, developing, bug fixing, decoding, encoding, etc. We will be delighted to assist you in achieving your goals. Let’s talk!