# SOM Video Player This is only a description of a planned implementation, this is NOT implemented yet: The SOM Video Player component has the following responsibilities: * playback of a video * switch to ad playback and back to video * signal events: * start * first-quartile * middle * third-quartile * end API outline: ## VideoPlayer The main publicly available interface. ### VideoPlayer.initialize(domElement) Initializes the Video Player and binds it to the provided DOM element (an HTML5 player or a proprietary Samsung video player component, in case HTML5 is not supported on the device). ### VideoPlayer.load(url) Loads video content from the provided URL and prepares for play-back. Unloads any previous video content, that has been prepared before. Returns a play-back object (see below). ### VideoPlayer.dispose() Disposes of any internally prepared video content. Detaches from any HTML elements and removes all event-listeners. Can be called to manually free up resources. ## PlayBack An object exposing the video play-back interface. The only way to get an instance is a call to VideoPlayer.load() ### playBackInstance.play() Resumes play-back at the current position ### playBackInstance.stop() Stops play-back and rewinds to the beginning position. ### playBackInstance.pause() Stops play-back without changing the current position. ### playBackInstance.fastForward(), playBackInstance.rewind() TBD ### playBackInstance.showAd(url, callback) Displays an add from the provided URL, pausing the video play-back. The provided callback with signature `error => {}` is invoked, in case an error occurs or with `error === null`, when the ad has ended succesfully. Video play-back is NOT resumed automatically. ### addEventListener(eventType, listenerFunction) Adds an event listener for the given type. Types include: * start * first-quartile * middle * third-quartile * end Returns a function to remove the event listener. # Legacy Wrapper It is necessary to provide a wrapper around SOM Video Player and Somtag client library, so that the publisher can continue using the same API, as the OTT-Layer had before. The legacy interface has to mirror the following [API](https://github.com/SevenOneMedia/adtec-ottlayer/blob/063ff6f90d2b7eb8678e050fb1ba37db32760417/src/adlayer/adlayer-hbbtv.js#L1749) The Wrapper uses the Somtag library to query the ad-slots and passes the data on to the Video Player for play-back.