GSoC - Unified Subtitle Parser

Unified Subtitle Parser and Subtile Display Filter Library for XBMC's in-house DVDPlayer video-player core


 * Proposed by student: vaibhavgupta
 * Proposed primary mentor: spiff
 * Proposed backup mentor: Elupus

= GSoC proposal for 2008 = This is a discussion about a proposal for XBMC's Google Summer of Code 2008

Name
Vaibhav Gupta

XBMC Forum: vaibhavgupta

XBMC.org wiki: vaibhavgupta

IRC: vaibhavgupta

E-Mail
vaibhav.nirma@gmail.com

Project Title
Unified Subtitle Parser and Subtile Display Filter Library for XBMC's in-house DVDPlayer video-player core

Project Synopsis
Aim is to Create a common 'subtitles parser library' ( for adding support for additional subtitle formats) - a common sub-library for XBMC with all subtile decoders/ demuxers/ parsers gathered (similar to the libpostproc and libavutils). FFmpeg's already well-known libavcodec module has become the de facto standard library for video decoding and encoding in free software projects. Unfortunately, no similar standard library has surfaced for audio/video filtering and otherwise working with audio/video stream once it has been decoded. Various multimedia projects (such as MPlayer, Xine, GStreamer, VirtualDub, etc.) have implemented their own filter systems to various degrees of success. What is needed is a high quality display filter library - efficient, flexible enough to meet all the requirements which have led various projects to invent their own filter system, and yet easy to use or develop new filters with. This proposal is to implement a high quality Unified Subtitle parser for XBMC for external and embedded subtitles and FFmpeg libavfilter filter library where it can be easily used by other multimedia-related software projects.

Project Goals
Create a common 'subtitles parser library' (and/or an API system for adding support for additional subtitle formats?) - a common sub-library to XBMC with all subtile decoders/demuxers/parsers gathered (similar to the libpostproc and libavutils). Thus making it easier to add support for additional subtitles.
 * FFmpeg libavfilter filter library for subtitle support.
 * Support bold, italic, underline, RGB colors, size changes and font changes for a whole line or part of one line
 * Support for the subtitles HTML tags
 * Capability of displaying subtitles with no video enabled (for example for audio-books)
 * Support for Karaoke subtitles (for kar and cdg, etc.)
 * Dual-subtitle-display (display two subtitles/languages at the same time, one at the bottom as normal plus one at the top of the screen)
 * Capability of moving the subtitles in the picture (freetype renderer)
 * Support more subtitle formats (text and bitmap-based):
 * Closed captioning (CC) subtile support - (Closed captions for the deaf and hard of hearing)
 * xine have a SPU decoder for subpictures and Closed Captions software decoding
 * DirectVobSub (VSFilter) - standard VobSubs (DVD-Video subtitles) embedded in AVI containers
 * DivX Subtitles (XSUB) display/reader/decoder (Note: bitmap based subtitle, similar to VobSub)
 * SubRip (.srt) subtile support (Note: simple text-based based subtitle with timestamp)
 * Subviewer (.sub) subtile support (Note: simple text-based based subtitle with timestamp)
 * MicroDVD (.sub) subtile support (Note: simple text-based based subtitle with timestamp
 * Sami (.smi) subtile support (Note: simple text-based based subtitle with timestamp)
 * SubStation Alpha (.ssa+.ass) subtile support (Note: advanced text-based based subtitle with timestamps and XY location on screen)
 * RealText (.rt) subtile support
 * PowerDivx (.psb) subtile support
 * Universal Subtitle Format (.usf) subtile support
 * Structured Subtitle Format (.ssf) subtile support

Benefits to XBMC
XBMC will benefited by having a rich subtitle support and thus the community. Project Tasks and Deliverables:
 * A Unified Subtitle Parser library for XBMC subtitle support
 * Dual Subtile, HTML, Karaoke parsers
 * CCparser
 * DVDparser
 * samiparser
 * realtextparser
 * psbparser
 * usf_ssfparser
 * Complete FFmpeg libavfilter filter library to support subtitles
 * Subtitlefilter

Project Schedule
This would take around 10 weeks of work. It may also happen that it may finish up before the stipulated time but a realistic deadline is sorted for in order to have high quality results.


 * libavfilter: 20 days
 * Unified parser library: Rest of the time

Personal Statement
I am a junior undergraduate CSE student, I have been working on open source platforms, although I have not worked much on FFmpeg, but I am sure it would not pose much difficulties. I am determine to learn new techniques and thrive on meeting deadlines and to give a concerted and dedicated effort towards the organizational quest for achieving phenomenal heights and satisfy my self-actualization needs at the same time. Below is my brief Record.

PROJECTS UNDERTAKEN
 * Ballot-e-Electronicus
 * This project has been designed in order to provide an online portal for elections to be held in the University. Also voting is facilitated by allowing students to send a SMS. The online portal is developed in PHP and MySQL, and using Drupal CMS. The Integration of SMS has been achieved in Visual Basic and using Oxygen Mobile ActiveX Control. Further improvements are still being Carried Out.


 * Online Community For Students Club
 * Developed a website for students’ activities club for Rotatract Club of Nirma Institutes. This was done using PHP and MySQL and the functionalities of Drupal CMS.


 * BallonMan-Hit Game
 * This was a simple game designed using C++ Graphics library and integrating mouse clicks in it. All simple C++ graphics functions were used to give a good look and feel.


 * Disco Light Display Using 8085 Microprocessor and 8254
 * A disco light display using Intel 8085 Microprocessor and 8254 programmable Interval Timer was designed. The standard instructions set of 8085 was used programming in assembly language, and using MTK-85 development Kit.


 * College Master
 * A record keeping systems for all the staff and students of Nirma institute of Technology was developed. It included password protection and each and every minute details of a student about what courses she/he is pursuing till date and which faculty is involved in which course. It also included assignment submission facilities and many other features .The programming team included about 5 students.

SOFTWARE EXPOSURE
 * Programming Language: C/C++, JAVA, Perl(Basics) and Python(Basics)
 * Web Development : HTML/DHTML, CSS, JavaScript, PHP, Flash, PhotoShop, Java Applets, Servlets
 * Scripting Language: Shell Scripting.
 * Database Tools: JDBC, Oracle, MySQL.
 * Operating Systems: WIN 98/2000/Me/XP, Linux: Ubuntu, Fedora, DOS
 * Tools: NetBeansIDE, JCreatorPro, Sun Java Wireless TookKit., J2ME

RELEVANT COURSES (accomplished by May 2008)
 * Advanced Java Programming, Distributed Systems
 * Software Engineering
 * Satellite Communications
 * Object Oriented Concepts and Programming (VC++)
 * Discrete Structures, Theory of Languages and Finite Automata
 * Microprocessor Architecture and Interfacing (8086/8085)
 * Internet and Web Development, Computer Networks
 * Computer Graphics
 * Database Systems, Probability and Statistics, Linear Algebra
 * Data Structures and Algorithms, Design and Analysis of Algorithms
 * Computer Organization and Design, Basic Electrical Circuits and Design
 * Operating Systems, Design of UNIX Operating Systems, Systems Programming
 * Probability, Statistics and Numerical Analysis, Engineering Economics
 * Differential Equations, Calculus and General Physics and Chemistry.

TECHNICAL REWARDS (co-curricular activities)
 * First prize in web designing competition in INNOVISION '06 a national level technical symposium organized in Nirma University.
 * First prize in poster presentation (Optical Camouflage) in INNOVISION '06 a national level technical symposium organized in Nirma University.
 * Second Prize in Business Case Study in INNOVISION '06 a national level technical symposium organized in Nirma University.
 * Second Prize in Web Designing in Colosseum'05 a national level technical fest organized by Nirma University.

POSITION OF RESPONSIBILITY
 * Currently Serving as Professional Development Manager for Rotaract Club of Nirma Institutes, and responsible for developing professional skills in student members of the club.
 * Coordinator for Industry Institute Interaction Cell, Nirma University and responsible for placements of Computer Science Students Class of sixty students.

That said, I believe I would be able to accomplish the project with better quality and XBMC way.