C++ SDK QoE Ads
This guide is for integrating the C++-based MediaMelon Custom Player SDK
Step 1: MediaMelon SDK Files
Add and import the required MediaMelon SDK header files provided in the release notes
Step 2: Register and Initialise the MediaMelon Player SDK
<customer_id> as your MediaMelon-assigned Customer ID. If you do not know your Customer ID contact MediaMelon at support@mediamelon.com
Register the MediaMelon SDK and report the player information and device information as shown below:
Step 3: Report Custom, Network & Presentation Information
This information should be reported before the video starts playing.
Custom Metadata:
Reports custom metadata, in the form of a key-value pair, to analytics.
Network Type:
Reports the communications network type to analytics.
Enum values and their description for the MMConnectionInfo
are as below;
MMConnectionInfo::Cellular
Connection type is cellular (generic). If user explicitly knows the kind of connection, 2G or 3G for example, then they should use explicit enum value corresponding to that connection type.
MMConnectionInfo::Cellular_2G
Connection type is 2G cellular.
MMConnectionInfo::Cellular_3G
Connection type is 3G cellular.
MMConnectionInfo::Cellular_4G
Connection type is 4G cellular.
MMConnectionInfo::Cellular_LTE
Connection type is LTE cellular.
MMConnectionInfo::Cellular_5G
Connection type is 5G cellular.
MMConnectionInfo::NotReachable
Connection non reachable.
MMConnectionInfo::Wifi
Connection type is WiFi.
MMConnectionInfo::WiredNetwork
Connection type is wired.
Presentation Information:
Reports the available representations of the video that the player can present.
Step 4: Report Player State & Actions
Playback Initiation:
Reports that user initiated the playback session. This should be called at different instants depending on the mode of operation of player. In Auto Play Mode, should be the called when payer is fed with the manifest URL for playback In non-Auto Play Mode, should be called when the user presses the play button on the player.
Player State:
Reports the current player state to analytics.
Enum values and their description for the MMPlayerState
are as below;
MMPlayerState::PLAYING
Player is playing available content to the screen. Delays due to re-buffering are still considered PLAYING.
MMPlayerState::PAUSED
Player is paused
MMPlayerState::STOPPED
Playback is stopped, either due to user request or reaching the end of the content.
Note: When the player enters the STOPPED state the current video session is terminated. Re-entering the PLAYING state will result in a new session being logged for the video. The most common reason for this occurring is when a video plays to the end and then the user seeks back to a point earlier in the video.
Playback Position:
Reports current playback position in media to analytics. This should be reported every two seconds if possible. Reported playback position should be in milliseconds.
Seek Complete:
Reports that a seek event is complete, with the new playback starting position in milliseconds. This is the point from which playback will start after the seek.
Buffering:
Reports the start and completion of the buffering.
Error:
Reports an error encountered during the playback. Playback position should be in milliseconds.
Chunk Request:
Reports the encoded chunk bitrate when the current playing chunk bitrate is different from the previous chunk bitrate.
Download Rate:
Reports current download rate (rate at which chunk is downloaded) to analytics. This should be reported for every chunk download (if possible). If this value is not available on every chunk download, then last updated value with player should be reported every 2 seconds. Reported download rate should be in bits per second.
Frame Loss:
Reports cumulative frame loss count to analytics. This is Cumulative count of frames lost in playback session.
Step 5: Report Advertisement Analytics
Ad Info:
Reports advertisement-related information before or at the time of ad start.
MMAdInfo
properties and their respective data types are mentioned below:
adTitle
string
Advertisement title
adId
string
Advertisement ID
adDuration
int
Length of the video ad (in milliseconds).
adClient
string
Client used to play the ad, eg: VAST.
adServer
string
Ad server (ex. DoubleClick, YuMe, AdTech, Brightroll, etc.)
adCreativeId
string
The creative ID of the ad.
adCreativeType
string
Ad MIME type.
adPodIndex
int
Index of the ad pod.
adPodLength
int
Length of Pod, starts from 0 if ad in not part of any pod.
adPodPosition
int
Position of ad in Pod, starts from 0.
adPosition
string
Position of the ad in the video playback; one of “pre”, “post” or “mid” that represents that the ad played before, after or during playback respectively.
adBitrate
int
Advertisement bitrate (bits per second).
adResolution
string
Advertisement video resolution.
adUrl
string
Tag represented by the ad.
isBumper
bool
Represents the ad is bumper or not.
Ad State:
Reports advertisement playback state.
Enum values and their description for the MMAdState
are as below;
MMAdState::AD_REQUEST
Ad is requested [initial state]
MMAdState::AD_IMPRESSION
Ad impression happened before ad starts playing
MMAdState::AD_STARTED
Ad started playing
MMAdState::AD_FIRST_QUARTILE
Ad reached 25% of the ad duration
MMAdState::AD_MIDPOINT
Ad reached 50% of the ad duration
MMAdState::AD_THIRD_QUARTILE
Ad reached 75% of the ad duration
MMAdState::AD_COMPLETED
Ad completed play [terminal state]
MMAdState::AD_ENDED
Ad ended before reaching the completion point [terminal state]
MMAdState::AD_SKIPPED
Ad is skipped [terminal state]
MMAdState::AD_PAUSED
Ad is paused
MMAdState::AD_RESUMED
Ad playback session resumed
MMAdState::AD_BLOCKED
Ad is blocked [terminal state]
MMAdState::AD_ERROR
Unknown error prevented Ad play [terminal state]
MMAdState::AD_CLICKED
User clicks an ad to be redirected to its landing page
Ad Playback Time:
Reports current advertisement playback position. This should be reported every two seconds if possible. Reported playback position should be in milliseconds.
Ad Error:
Reports error encountered during the advertisement playback. Playback position should be in milliseconds.
Ad Buffering:
Reports the start and completion of the advertisement buffering.
Last updated