Dropped frames

This page covers data collection for the Dropped frames variable. See Dropped frames for the corresponding reporting dimension and metric.

The dropped frames variable is the running count of frames the player has dropped during the session. Set it on the QoE object and update the value whenever the player reports new drops. The backend reports the latest value at session close.

NOTE
Always pass the cumulative total of dropped frames for the entire session up to that point, not a per-interval delta. If you reset the value to 0 between updates, the backend receives 0 as the final value and reports zero dropped frames for the session regardless of what actually dropped earlier.
Property
Value
Context data variable
a.media.qoe.droppedFrameCount
XDM collection field
xdm.mediaCollection.qoeDataDetails.droppedFrames
Audience Manager trait
c_contextdata.a.media.qoe.droppedFrameCount
Required
No
Sent with
Quality events (bitrate change, buffer start, error), session close
Web SDK

Set droppedFrames inside xdm.mediaCollection.qoeDataDetails when calling sendEvent:

code language-javascript
alloy("sendEvent", {
  xdm: {
    eventType: "media.bitrateChange",
    mediaCollection: {
      qoeDataDetails: {
        bitrate: 3200,
        droppedFrames: 3
      },
      sessionID: "{sid}",
      playhead: 90
    }
  }
});
iOS

Pass dropped frames as the fourth argument to createQoEObject. Update the tracker before any quality event fires.

code language-swift
let qoeObject = Media.createQoEObjectWith(bitrate: 3200,
                                       startupTime: 0,
                                               fps: 24,
                                     droppedFrames: 3)

tracker.updateQoEObject(qoe: qoeObject)
Android

Pass dropped frames as the fourth argument to createQoEObject. Update the tracker before any quality event fires.

code language-kotlin
val qoeObject = Media.createQoEObject(3200L,
                                      0.0,
                                      24.0,
                                      3L)

tracker.updateQoEObject(qoeObject)
Roku

Set droppedFrames inside xdm.mediaCollection.qoeDataDetails when calling sendMediaEvent:

code language-brightscript
m.aepSdk.sendMediaEvent({
    "xdm": {
        "eventType": "media.bitrateChange",
        "mediaCollection": {
            "qoeDataDetails": {
                "bitrate": 3200,
                "droppedFrames": 3
            },
            "playhead": 90
        }
    }
})
Media Edge API

Call the bitrateChange endpoint with droppedFrames inside xdm.mediaCollection.qoeDataDetails:

code language-json
{
  "events": [{
    "xdm": {
      "eventType": "media.bitrateChange",
      "mediaCollection": {
        "qoeDataDetails": {
          "droppedFrames": 3
        },
        "sessionID": "{sid}",
        "playhead": 90
      }
    }
  }]
}

Legacy implementation types (Analytics-only)

Media SDK JS 3.x

Pass dropped frames as the fourth argument to ADB.Media.createQoEObject:

code language-javascript
var qoeObject = ADB.Media.createQoEObject(3200, 0, 24, 3);
tracker.updateQoEObject(qoeObject);
Chromecast

Pass the cumulative dropped frame count as the fourth argument to ADBMobile.media.createQoSObject and update the tracker:

code language-javascript
var qosInfo = ADBMobile.media.createQoSObject(
  3200,  // bitrate
  0,     // startupTime
  24,    // fps
  0      // droppedFrames (cumulative total)
);
ADBMobile.media.updateQoSObject(qosInfo);
Media Collection API

Include media.qoe.droppedFrames in the params object:

code language-json
{
  "playerTime": { "playhead": 90, "ts": 1699523820000 },
  "eventType": "bitrateChange",
  "params": {
    "media.qoe.droppedFrames": 3
  }
}

See the Media Collection API events reference for the full request structure.

recommendation-more-help
media-analytics-help