Skip to content

Instantly share code, notes, and snippets.

@anubhavpulkit
Last active August 18, 2021 19:24
Show Gist options
  • Save anubhavpulkit/a2a624ddc141fe2bd231d48a37331df7 to your computer and use it in GitHub Desktop.
Save anubhavpulkit/a2a624ddc141fe2bd231d48a37331df7 to your computer and use it in GitHub Desktop.

Google Summer of Code 2021 with VideoLAN Final Report

Overview

VLC media player is a cross-platform multimedia player, encoder and streamer application. It is one of the most successful open-source projects worldwide.

We're currently in the process of rewriting and updating the entire UI for VLC iOS. There are a lot of components that need refactoring and need to get an updated UI. Like for example the video player controller. If we compare it with the VLC Android then the port of VLC Android has done most of that and was successful. We need the same level of vlc-ios to match or surpass the Android app.

Goals

This summer I worked with VLC as an iOS developer and because VLC iOS is in the process of major UI changes, My task is to work on issues which are already present and open new issues and discuss how to resolve/implement with mentors and VLC community members.

Work Summary

Adding the Shuffle and Repeat button on the video player controller teaches me so many important assets of open source development. Starting with discussion about redesign the video player controller so I can add both buttons. And redesigning a video player controller is not an easy choice because the same video player controller is used for large variations of screen size from iPhone 5 to iPad Pro.

old ➡️ new

After a vibrant discussion of redesign video player controller we decide, for the small devices on portrait orientation presenting all buttons are not possible so we decide to follow a table to present buttons according to uses -

Portrait Audio Video
Repeat 👍 🚫
Shuffle 👍 🚫
Subtitle 🚫 👍
Full screen 🚫 👍

This issue is not completely resolved, But I figured out how it works. All the languages follow patterns in their names, mainly there are only three patterns for naming. First of them is language code.lproj is used in maximum of languages like English, Spanish etc, second one is language code-Script code.lproj this pattern is used for languages like Chinese and last one is language code-Region code.lproj this pattern is used for language like Portuguese in which language is changing with region..


new

You can reset playback speed by clicking on the speed, but there is no reset button for playback speed. New users are unable to find the reset button because it is hidden inside the speed label. So I added a new button which is present parallel to the slider and it is for reset playback speed, Audio delay and Subtitles delay.


Cloud service walkthrough is not visible properly in small size iPhones like iPhone 5. So I have two options to resolve this issue one is to change the position of cloud services icons and next is to remove cloud services icons from the screen. And I realise that all the other walkthrough screens are different from the Cloud service walkthrough screen. If we remove the cloud services icons then it follows the same design pattern as the other so we decide to remove all the icons from this screen and make a perfect sync between all walkthrough screens

old ➡️ new


Minor Updates

What is coming up next?

I will keep contributing to this project and other projects of VLC. I will be happy to become a part of the VLC community.

Conclusion

Special thanks to Soomin Lee (bubu) and Edgar Fouillet for reviewing the MR and solving the doubts despite having a busy schedule, Bubu and other people in the community for teaching the basic etiquettes and facts required to be a better open-source contributor and solving the doubts no matter how silly they were.

I stuck at many points during the implementation of these features but I am able to overcome them at every time. These 2 Months are one of the best days of my life. I am solving each day and learning something new.

Overall, the GSoC experience was truly astounding and I am more than thankful to Google for making this amazing program possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment