Posts

I was there at GNOME.Asia Summit 2019

Image
I was there at Gnome Asia Summit 2019 in Gresik, Indonesia as a speaker. Since I am very new to open source community this was a great experience. I conducted the New comers workshop with my pal Gaurav Agarwal from India. We had our parallel class on day 0 (which is actually day 1) on the premises of University of Muhammadhiya. The expenses of me to attend the event was sponsored by Gnome Foundation. I'm so thankful for this great opportunity. Let me run through my experience in Gresik and in the conference. I and Guarav landed on 10th of October 2019 in Surabaya. Mr. Firdhous from local community came to pick us up and we had the hotel already booked in Gresik. They dropped us in Hotel Santika Gresik which was fabulous. On the next day I went to the conference and met with people from local community and open source community. I had my talk after lunch and It went very well. We used our personal experience and getting started with Gnome guide to steer the participants towa...

Review | GSoC 2019

Image
I've been working on GStreamer based project of Gnome Foundation. GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. The framework is based on plugins that will provide various codec and other functionality. The plugins can be linked and arranged in a pipeline. And most of the plugins are written in C. Now the developers are in an attempt to convert them to Rust which is more robust and easily maintainable. My task is to be a part of this conversion and to help fix issues related to this. Planned Tasks Implement Hyper-based HTTP source around async IO and make it feature-complete. (Explained in below section) GitLab issue: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/issues/31 Tutorial for gst-plugin-tutorial crate. (Explained in below section) GitLab issue: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/issues/44 Finish FLV demuxer. Conversion of FLV demuxer t...

Making Rust HTTP source Feature equivalent - Part 1 | GSoC 2019

souphttpsrc is the C version of HTTP source plugin of GStreamer. Making reqwesthttpsrc feature equivalent to that of souphttpsrc is a very important part of the conversion. Although Rust HTTP source is functioning well, it is not fully in to use because it is not equivalent to C HTTP source. For now there is only one property implemented from C HTTP source apart from the ones which come from base class. That is 'location'. We can set a URL to read using this property. For example >  gst-launch-1.0 reqwesthttpsrc location=https://www.google.com  ! fakesink dump=true I introduced two more properties to Rust HTTP source. Let's all give a warm welcome to 'is-live' and 'user-agent'. I had to go through the C code of the plugin to understand about the those properties and see where they've been used in the plugin.  'is-live' was a easy point to start with because the implementation was straight forward. This is a property which can have...

Writing tests for Rust HTTP source | GSoC 2019

Image
Writing test is an important part of Plugin development in GStreamer or rather for all most all software development. There are several reasons which clearly tells us as why writing test cases are important. To point out the defects and errors that were made during the development phases To check whether all features are working at every change To figure out unhandled scenarios in our software My GSoC mentor, Sebastian Dröge coded the skeleton of the test with a basic unit test case for HTTP source plugin (aka  reqwesthttpsrc ). Here is the link to the merge request . The test was to check whether we receive the data correctly which is sent by the server. Here we make a hyper HTTP server which respond with "Hello World". Then we use our plugin to receive the data and we compare both. Also the interesting thing here is the Custom test harness which can be used to initialize a HTTP server with required behavior and our HTTP element with required properties set. We...

Making the 'httpsrc' plugin asynchronous | GSoC 2019

Image
GStreamer plugins are the building units of any GStreamer application. The plugins can be linked and arranged in a pipeline. This pipeline defines the flow of the data. 'souphttpsrc' , aka HTTP source is a plugin which reads data from a remote location specified by a URI and the supported protocols are 'http', 'https'. This plugin is written in C.  'rshttpsrc' is the Rust version of the above said plugin.  Although the Rust version of the plugin is working, it is not feature complete. So my task here is to finish 'rshttpsrc' plugin completely. Let me break the task into smaller branches. Switching to async IO (Currently it is making request synchronously).  Support for cookie/HTTP connection sharing between multiple instances.  Making 'rshttpsrc' feature equivalent to 'souphttpsrc' (the C version of the same plugin). There are properties missing in 'rshttpsrc' which are implemented in C version of the plugin...

The Journey Begins | Google Summer of Code

Image
Google Summer of Code (GSoC) is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school. It has always been a wish of mine to contribute to open source community. I was ecstatic would be an understatement when I got the opportunity to contribute Gnome foundation through GSoC 2019. We go through an organized and friendly environment during this period which makes GSoC a great way to enter the open source community. More importantly each student gets a mentor to guide him/her through out the GSoC period. And I am the luckiest to have gotten Sebastian Dröge as my mentor. I'm working on GStreamer based project of Gnome Foundation. GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. The framework is based on plugins that will provide t...