VideoPlaybackQualityMetrics.h [plain text]
#pragma once
#if ENABLE(VIDEO)
namespace WebCore {
struct VideoPlaybackQualityMetrics {
uint32_t totalVideoFrames { 0 };
uint32_t droppedVideoFrames { 0 };
uint32_t corruptedVideoFrames { 0 };
double totalFrameDelay { 0 };
uint32_t displayCompositedVideoFrames { 0 };
template<class Encoder>
void encode(Encoder& encoder) const
{
encoder << totalVideoFrames;
encoder << droppedVideoFrames;
encoder << corruptedVideoFrames;
encoder << totalFrameDelay;
encoder << displayCompositedVideoFrames;
}
template <class Decoder>
static Optional<VideoPlaybackQualityMetrics> decode(Decoder& decoder)
{
Optional<uint32_t> totalVideoFrames;
decoder >> totalVideoFrames;
if (!totalVideoFrames)
return WTF::nullopt;
Optional<uint32_t> droppedVideoFrames;
decoder >> droppedVideoFrames;
if (!droppedVideoFrames)
return WTF::nullopt;
Optional<uint32_t> corruptedVideoFrames;
decoder >> corruptedVideoFrames;
if (!corruptedVideoFrames)
return WTF::nullopt;
Optional<double> totalFrameDelay;
decoder >> totalFrameDelay;
if (!totalFrameDelay)
return WTF::nullopt;
Optional<uint32_t> displayCompositedVideoFrames;
decoder >> displayCompositedVideoFrames;
if (!displayCompositedVideoFrames)
return WTF::nullopt;
return {{ *totalVideoFrames, *droppedVideoFrames, *corruptedVideoFrames, *totalFrameDelay, *displayCompositedVideoFrames }};
}
};
}
#endif // ENABLE(VIDEO)