# esplusplayer
[![Potential Defect (Analysis Hub)](https://code.sec.samsung.net/crb/image/api/badge/18007/analysis-hub-service)](https://code.sec.samsung.net/crb/projects/1/18007)
[![Potential Defect (Analysis Hub)](https://code.sec.samsung.net/crb/image/api/badge/18007/analysis-hub-service?show=sam)](https://code.sec.samsung.net/crb/projects/1/18007)
[![gbs-build](https://github.sec.samsung.net/tizen-vault/esplusplayer/actions/workflows/gbs-build-p4.yml/badge.svg)](https://github.sec.samsung.net/tizen-vault/esplusplayer/actions/workflows/gbs-build-p4.yml)
[![Reviewability Service](https://code.sec.samsung.net/crb/image/api/badge/18007/reviewability-service)](https://code.sec.samsung.net/crb/projects/1/18007)
[![CheckSpell Service](https://code.sec.samsung.net/crb/image/api/badge/18007/checkspell-service)](https://code.sec.samsung.net/crb/projects/1/18007)
[![Reform Service](https://code.sec.samsung.net/crb/image/api/badge/18007/reform-service)](https://code.sec.samsung.net/crb/projects/1/18007)
[![Idiom Service](https://code.sec.samsung.net/crb/image/api/badge/18007/idiom-service)](https://code.sec.samsung.net/crb/projects/1/18007)
- [Introduction](#intro)
- [Contributing](#contrib)
- [Release Process](#release)
- [Programming Guide](#guide)
- [Suggestion & Trouble Shooting](#suggest)
## Introduction
### What is ESPlusPlayer?
* It is a player framework which focuses on handling ES (Elementary Stream) packet data to render audio and video.
* It was named after PlusPlayer, which was designed for rapidly increasing video streaming services.
* PlusPlayer has two parts - one is variant part and the other one is invariant part, which is called TrackRenderer.
* ESPlusPlayer also uses TrackRenderer for actual ES data handling (decryption, decoding and rendering).
> You can refer [PlusPlayer GitHub](https://github.sec.samsung.net/VD8-PlusPlayer/plusplayer), but note that PlusPlayer is not managed on Github now.
### Why ESPlusPlayer is required?
* Traditional media application relied on a plaform-provided player framework. The application just gives source URL to player and player does everything instead.
* This type of player performs source fetching, parsing (to get ES packet), decoding and rendering.
* The application just needs to monitor what player is doing now, and control its status - start, pause, resume, seek, etc.
* Recently some major OTT services (YouTube, Netflix, ...) have different concept of player:
* These apps don't rely on a platform player, instead they fetch media source and parse to extract ES packet by themselves.
* The only part that they rely on a platform player is ES packet handling, since it highly depends on the target devices.
* Not only the major OTT services, but web engines like Chromium also have the same playback concept.
> In Tizen platform, traditional player (MMPlayer) can support ES handling playback too.\
> but for better code maintenence, VD decided to make another player framework which only focuses on ES playback - That is ESPlusPlayer.
## Contributing
* Check the [contributing guidelines](CONTRIBUTING.md) about the submission process, coding rules, and more.
## Release Process
* This repository is auto-synced to VD P4, so please be aware of VD's [release process](https://github.sec.samsung.net/tizen-vault/esplusplayer/discussions/23).
## Programming Guide
* (TBD) Some important changes in ESPlusPlayer and basic guidelines will be provided [here](https://github.sec.samsung.net/tizen-vault/esplusplayer/wiki)
## Suggestion & Trouble Shooting
* Open new [discussion](https://github.sec.samsung.net/tizen-vault/esplusplayer/discussions) for any idea, or suggestion about ESPP feature or management of this repository.
* Open new [issues](https://github.sec.samsung.net/tizen-vault/esplusplayer/issues) when you have any problem on ESPP feature or using this repository.