DASH - Dynamic Adaptive Streaming
What is DASH?
DASH, or Dynamic Adaptive Streaming over HTTP, is a video streaming protocol that allows media content to be delivered over the internet in a way that adapts to the viewer’s network conditions. It’s also known as MPEG-DASH, and it works by breaking video into small segments at multiple quality levels.
Why is DASH Useful?
Adapts video quality in real time based on internet speed.
Reduces buffering and playback interruptions.
Works over standard HTTP servers, so it’s easy to deploy.
Supports multiple devices and platforms without needing plugins.
How it works?
Video is split into segments - The content is encoded at different quality levels (bitrates).
Client requests a manifest file - Called the MPD (Media Presentation Description), which lists available segments and qualities.
Client selects segments - Based on current bandwidth, the client downloads the best-quality segment it can play smoothly.
Playback continues - The client keeps checking network conditions and switches quality up or down as needed.
Where is DASH used?
Video streaming platforms - Like YouTube, Netflix, and others.
Live broadcasts - Sports, news, and events streamed online.
Educational platforms - For delivering lectures and tutorials.
Corporate training - For scalable, adaptive video delivery.
Which OSI layer does this protocol belong to?
It defines how video content is requested and delivered using HTTP.
It uses application-level logic to adapt to network conditions.
It works on top of standard web protocols like HTTP and TCP.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
sno |
DASH Version |
RFC / Standard |
Core / Contribution |
Year |
---|---|---|---|---|
1 |
MPEG-DASH (1st Ed.) |
ISO/IEC 23009-1:2012 |
MPEG (Moving Picture Experts Group) |
2012 |
2 |
MPEG-DASH (2nd Ed.) |
ISO/IEC 23009-1:2014 |
MPEG |
2014 |
3 |
MPEG-DASH (3rd Ed.) |
ISO/IEC 23009-1:2016 |
MPEG |
2016 |
4 |
MPEG-DASH (4th Ed.) |
ISO/IEC 23009-1:2019 |
MPEG |
2019 |
5 |
MPEG-DASH (5th Ed.) |
ISO/IEC 23009-1:2022 |
MPEG, DASH-IF, 3GPP, SC29, ISO Secretariat |
2022 |
Setup
Setup
DASH MPD Request Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
1 |
MPD Request Packet |
Used by the DASH client to request the Media Presentation Description (MPD) file from the server. The MPD file is an XML document that describes the structure, timing, and location of media segments |
~300800 bytes |
Request Line |
GET /path/to/file.mpd HTTP/1.1 |
~40100 |
|
Host |
Domain name of the server (e.g., example.com) |
~1540 |
|
User-Agent |
Identifies the client (e.g., dash.js/4.0.0) |
~2060 |
|
Accept |
MIME type accepted (e.g., application/dash+xml) |
~2540 |
|
Connection |
Type of connection (e.g., keep-alive) |
~1020 |
|
Cache-Control |
Caching behavior (e.g., no-cache) |
~1020 |
|
Other Headers |
Optional headers (e.g., Range, Referer) |
varies |
|
Body |
Typically empty for GET requests |
0 |
DASH MPD Response Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
2+K23B14:L22 |
MPD Response Packet |
Sent by the server in response to the client’s MPD request. It contains the |
~1 KB to 100 KB |
MPD XML file, which describes the media content, segment URLs, timing, and adaptation sets |
|||
Status Line |
HTTP/1.1 200 OK |
~1520 |
|
Content-Type |
MIME type of the response (e.g., application/dash+xml) |
~2540 |
|
Content-Length |
Size of the MPD file in bytes |
~1020 |
|
Date |
Timestamp of the response |
~3040 |
|
Server |
Server software info (e.g., nginx/1.18.0) |
~2040 |
|
Cache-Control |
Caching policy (e.g., no-cache) |
~1020 |
|
Body |
The actual MPD XML content |
~1,000100,000+ |
DASH Media segment Request Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
3 |
Media Segment Request Packet |
Used by the DASH client to request individual media segments (video/audio |
~300800 bytes |
chunks) based on the MPD file. These segments are typically small files |
|||
|
|||
Request Line |
GET /video/segment1.m4s HTTP/1.1 |
~40100 |
|
Host |
Domain name of the server (e.g., cdn.example.com) |
~1540 |
|
User-Agent |
Identifies the client (e.g., dash.js/4.0.0) |
~2060 |
|
Accept |
MIME type accepted (e.g., video/mp4) |
~2040 |
|
Range |
Byte range for partial content (e.g., bytes=0-999999) |
~2040 |
|
Connection |
Type of connection (e.g., keep-alive) |
~1020 |
|
Body |
Typically empty for GET requests |
0 |
DASH Media segment Response Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
4 |
Media Segment Response Packet |
sent by the server in response to a DASH client’s request for a specific media segment (e.g., a chunk of video or audio). These segments are defined in the MPD file and are essential for adaptive streaming |
~100kB to 50kB |
Status Line |
HTTP/1.1 206 Partial Content or 200 OK |
~1520 |
|
Content-Type |
MIME type (e.g., video/mp4) |
~2030 |
|
Content-Length |
Size of the segment in bytes |
~1020 |
|
Content-Range |
Byte range of the content (if partial) |
~2040 |
|
Date |
Timestamp of the response |
~3040 |
|
Body |
Actual media segment data |
~100 KB to several MB |
DASH Byte-Range Request Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
5 |
Byte-Range Request Packet |
Used to request a specific byte range of a media segment, allowing partial downloads and efficient streaming |
300800 |
Request Line |
GET /video/segment.m4s HTTP/1.1 |
~40100 |
|
Host |
Server domain (e.g., cdn.example.com) |
~1540 |
|
Range |
Byte range (e.g., bytes=100000-199999) |
~2040 |
|
User-Agent |
Identifies the client |
~2060 |
|
Accept |
MIME type (e.g., video/mp4) |
~2040 |
|
Connection |
keep-alive or close |
~1020 |
|
Body |
Empty |
0 |
DASH Byte-Range Response Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
6 |
Byte-Range Response Packet |
Server response to a byte-range request, returning only the requested portion of the media segment |
Varies |
(based on range) |
|||
Status Line |
HTTP/1.1 206 Partial Content |
~1520 |
|
Content-Range |
Byte range of the content |
~20-40 |
|
Content-Length |
Size of the returned data |
~1020 |
|
Content-Type |
MIME type (e.g., video/mp4) |
~20-30 |
|
Date |
Timestamp of the response |
~3040 |
|
Body |
Requested byte range of media segment |
100 KB 5 MB |
DASH Adaptive Bitrate Switch Request Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
7 |
Adaptive Bitrate Switch Request Packet |
Client request for a media segment at a different bitrate, based on current network conditions |
300800 |
Request Line |
GET /video/720p/segment5.m4s HTTP/1.1 |
~40100 |
|
Host |
Server domain |
~1540 |
|
User-Agent |
Identifies the client |
~20-60 |
|
Accept |
MIME type |
~2040 |
|
Connection |
keep-alive or close |
~10-20 |
|
Body |
Empty |
0 |
DASH Initialization Segment Request Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
8 |
Initialization Segment Request Packet |
Request for the initialization segment, which contains codec and decoding information required before media playback |
300800 |
Request Line |
GET /video/init.mp4 HTTP/1.1 |
~40-100 |
|
Host |
Server domain |
~15-40 |
|
User-Agent |
Identifies the client |
~2060 |
|
Accept |
MIME type |
~2040 |
|
Connection |
keep-alive or close |
~1020 |
|
Body |
Empty |
0 |
DASH Initialization Segment Response Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
9 |
Initialization Segment Response Packet |
Server response with the initialization segment, which includes metadata like codec info and track headers |
1 KB 100 KB |
Status Line |
HTTP/1.1 200 OK |
~1520 |
|
Content-Type |
MIME type (e.g., video/mp4) |
~20-30 |
|
Content-Length |
Size of the init segment |
~1020 |
|
Date |
Timestamp |
~3040 |
|
Body |
Initialization segment data |
1 KB 100 KB |
DASH Manifest Update Request Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
10 |
Manifest Update Request Packet |
Periodic request to re-fetch the MPD file, especially in live streaming scenarios |
300800 |
Request Line |
GET /live/stream.mpd HTTP/1.1 |
~40100 |
|
Host |
Server domain |
~1540 |
|
User-Agent |
Identifies the client |
~2060 |
|
Accept |
application/dash+xml |
~2040 |
|
Connection |
keep-alive or close |
~1020 |
|
Body |
Empty |
0 |
DASH Manifest Update Response Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
11 |
Manifest Update Response Packet |
Server response with an updated MPD file, reflecting new segments or timeline changes |
1,000100,000+ |
Status Line |
HTTP/1.1 200 OK |
~1520 |
|
Content-Type |
application/dash+xml |
~2540 |
|
Content-Length |
Size of the MPD file |
~1020 |
|
Date |
Timestamp |
~3040 |
|
Body |
Updated MPD XML content |
1,000 100,000+ |
sno |
Use Case |
Description |
---|---|---|
1 |
Adaptive Bitrate Streaming |
Automatically adjusts video quality based on users network conditions. |
2 |
Live Streaming |
Supports real-time delivery of live events with minimal latency. |
3 |
Video-on-Demand (VoD) |
Efficiently delivers pre-recorded content with high quality and flexibility. |
4 |
Multi-device Playback |
Enables seamless streaming across TVs, phones, tablets, and desktops. |
5 |
DRM Integration |
Supports content protection using standards like MPEG-CENC and Widevine. |
6 |
Offline Playback |
Allows downloading and caching of segments for viewing without connectivity. |
7 |
Low-Latency Streaming |
Enhances user experience for interactive applications like sports or gaming. |
8 |
Multi-language Support |
Delivers audio/subtitles in multiple languages using separate tracks. |
9 |
Ad Insertion |
Enables dynamic ad replacement and personalized ad delivery. |
10 |
Scalable Content Delivery |
Works with CDNs to distribute content efficiently to global audiences. |
Sno |
Feature |
Description |
---|---|---|
1 |
Adaptive Bitrate Streaming |
Dynamically adjusts video quality based on network conditions and device. |
2 |
Segment-Based Delivery |
Breaks media into small HTTP segments for efficient streaming. |
3 |
MPD (Media Presentation Description) |
XML-based manifest that describes media content, timing, and URLs. |
4 |
Codec Agnostic |
Supports various video/audio codecs like H.264, H.265, AAC, and Opus. |
5 |
DRM Support |
Integrates with content protection systems like Widevine and PlayReady. |
6 |
Multi-Track Support |
Allows multiple audio, video, and subtitle tracks for flexibility. |
7 |
Live and On-Demand Support |
Handles both live streaming and video-on-demand use cases. |
8 |
HTTP-Based Delivery |
Uses standard HTTP servers and CDNs for scalable content distribution. |
9 |
Low-Latency Extensions |
Supports low-latency streaming for real-time applications. |
10 |
Interoperability Profiles |
DASH-IF provides profiles for consistent playback across devices. |
Adaptive Bitrate Streaming - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Initial Bitrate Selection |
Start playback with default network |
Optimal bitrate selected |
2 |
Bandwidth Drop Detection |
Simulate bandwidth drop |
Bitrate lowered automatically |
3 |
Bandwidth Increase Detection |
Simulate bandwidth increase |
Bitrate increased automatically |
4 |
Buffer Underrun Recovery |
Simulate buffer underrun |
Bitrate reduced to recover |
5 |
Buffer Overrun Handling |
Simulate buffer overrun |
Bitrate maintained or increased |
6 |
Resolution Switch |
Switch from 1080p to 720p |
Seamless transition |
7 |
Frame Rate Adaptation |
Switch from 60fps to 30fps |
Playback continues smoothly |
8 |
Codec Compatibility |
Switch between codecs |
Compatible codec selected |
9 |
Segment Download Time |
Measure time to download segment |
Within expected threshold |
10 |
Segment Size Variation |
Compare sizes across bitrates |
Sizes vary appropriately |
11 |
Network Jitter Simulation |
Simulate jitter |
Bitrate adapts to stabilize playback |
12 |
Packet Loss Simulation |
Simulate packet loss |
Bitrate reduced to maintain playback |
13 |
Latency Spike Simulation |
Simulate latency spike |
Bitrate adjusted accordingly |
14 |
Device CPU Load |
Increase CPU load |
Bitrate adjusted to reduce processing |
15 |
Device Memory Load |
Increase memory usage |
Bitrate adjusted to reduce usage |
16 |
Mobile Network Switch |
Switch from Wi-Fi to 4G |
Bitrate lowered |
17 |
Wi-Fi Network Switch |
Switch from 4G to Wi-Fi |
Bitrate increased |
18 |
Browser Compatibility |
Test on Chrome |
Adaptive streaming works |
19 |
Browser Compatibility |
Test on Firefox |
Adaptive streaming works |
20 |
Browser Compatibility |
Test on Safari |
Adaptive streaming works |
21 |
Browser Compatibility |
Test on Edge |
Adaptive streaming works |
22 |
OS Compatibility |
Test on Windows |
Adaptive streaming works |
23 |
OS Compatibility |
Test on macOS |
Adaptive streaming works |
24 |
OS Compatibility |
Test on Android |
Adaptive streaming works |
25 |
OS Compatibility |
Test on iOS |
Adaptive streaming works |
26 |
Smart TV Compatibility |
Test on smart TV |
Adaptive streaming works |
27 |
Game Console Compatibility |
Test on console |
Adaptive streaming works |
28 |
Segment Switching Delay |
Measure delay during switch |
Minimal delay observed |
29 |
Manifest File Parsing |
Parse MPD file |
Bitrate options correctly listed |
30 |
MPD Update Handling |
Handle updated MPD |
New bitrates applied |
31 |
Multiple Audio Tracks |
Switch audio tracks |
Bitrate adapts accordingly |
32 |
Subtitle Track Handling |
Enable subtitles |
Bitrate unaffected |
33 |
DRM Integration |
Use DRM-protected stream |
Adaptive streaming works |
34 |
CDN Switching |
Switch between CDNs |
Bitrate adapts seamlessly |
35 |
Multi-CDN Failover |
Failover to backup CDN |
Bitrate maintained |
36 |
ABR Algorithm Accuracy |
Test ABR logic |
Correct bitrate selected |
37 |
ABR Algorithm Responsiveness |
Test ABR reaction time |
Quick adaptation observed |
38 |
ABR Algorithm Stability |
Test ABR stability |
No frequent bitrate oscillation |
39 |
Startup Delay |
Measure initial playback delay |
Within acceptable range |
40 |
Playback Smoothness |
Monitor for stuttering |
Smooth playback maintained |
41 |
Rebuffering Events |
Count rebuffering events |
Minimal or none |
42 |
Bitrate Oscillation |
Monitor bitrate changes |
Stable adaptation |
43 |
User-Initiated Quality Change |
Manually change quality |
Immediate switch |
44 |
Auto vs Manual Mode |
Toggle auto/manual mode |
Behavior changes accordingly |
45 |
Low Bandwidth Mode |
Enable low bandwidth mode |
Lowest bitrate selected |
46 |
High Bandwidth Mode |
Enable high bandwidth mode |
Highest bitrate selected |
47 |
Offline Mode |
Simulate offline |
Playback stops gracefully |
48 |
Segment Prefetching |
Prefetch next segments |
Bitrate adapts based on prediction |
49 |
Analytics Logging |
Log bitrate changes |
Accurate logs generated |
50 |
Error Recovery |
Simulate segment fetch error |
Bitrate adjusted or fallback used |
Segment-Based Delivery - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Segment Request via HTTP |
Request a single segment |
Segment downloaded successfully |
2 |
Segment Range Request |
Request byte range of a segment |
Correct byte range returned |
3 |
Segment Download Time |
Measure time to download a segment |
Within expected threshold |
4 |
Segment Size Consistency |
Check size of segments |
Sizes consistent per bitrate |
5 |
Segment Duration Consistency |
Check duration of segments |
Duration matches MPD |
6 |
Segment Numbering |
Verify segment naming convention |
Matches MPD manifest |
7 |
Segment URL Resolution |
Resolve segment URL from MPD |
URL resolves correctly |
8 |
Segment Caching |
Cache segment locally |
Segment reused from cache |
9 |
Segment Prefetching |
Prefetch next segment |
Segment available before playback |
10 |
Segment Reuse |
Reuse segment across sessions |
No re-download if cached |
11 |
Segment Expiry |
Expire old segments |
Expired segments not used |
12 |
Segment Integrity |
Validate segment checksum |
Segment not corrupted |
13 |
Segment Encryption |
Encrypted segment delivery |
Decrypted and played correctly |
14 |
Segment Decryption |
Decrypt encrypted segment |
Playback successful |
15 |
Segment with DRM |
Segment protected with DRM |
Playback authorized |
16 |
Segment Switching |
Switch between bitrates |
Seamless transition |
17 |
Segment Drop Recovery |
Drop a segment |
Player recovers and continues |
18 |
Segment Retry |
Retry failed segment download |
Segment downloaded on retry |
19 |
Segment Timeout |
Simulate timeout |
Player retries or switches bitrate |
20 |
Segment Download Over Wi-Fi |
Download segment on Wi-Fi |
Successful |
21 |
Segment Download Over 4G |
Download segment on mobile |
Successful |
22 |
Segment Download Over VPN |
Download segment via VPN |
Successful |
23 |
Segment Download Over Proxy |
Download segment via proxy |
Successful |
24 |
Segment Download Over CDN |
Download segment from CDN |
Successful |
25 |
Segment Download Over Local Server |
Download from local server |
Successful |
26 |
Segment Download Over Cloud |
Download from cloud storage |
Successful |
27 |
Segment Download with Latency |
Simulate high latency |
Segment still downloaded |
28 |
Segment Download with Packet Loss |
Simulate packet loss |
Segment downloaded with retry |
29 |
Segment Download with Jitter |
Simulate jitter |
Playback remains smooth |
30 |
Segment Download with Throttling |
Throttle bandwidth |
Segment downloaded at lower bitrate |
31 |
Segment Download with Firewall |
Download through firewall |
Segment accessible |
32 |
Segment Download with NAT |
Download behind NAT |
Segment accessible |
33 |
Segment Download with IPv6 |
Use IPv6 network |
Segment accessible |
34 |
Segment Download with IPv4 |
Use IPv4 network |
Segment accessible |
35 |
Segment Download in Browser |
Use browser player |
Segment downloaded and played |
36 |
Segment Download in Mobile App |
Use mobile app |
Segment downloaded and played |
37 |
Segment Download in Smart TV |
Use smart TV app |
Segment downloaded and played |
38 |
Segment Download in Embedded Device |
Use IoT device |
Segment downloaded and played |
39 |
Segment Download in Desktop App |
Use desktop player |
Segment downloaded and played |
40 |
Segment Download in CLI Tool |
Use command-line tool |
Segment downloaded |
41 |
Segment Download in Legacy System |
Use older OS |
Segment downloaded |
42 |
Segment Download in Modern System |
Use latest OS |
Segment downloaded |
43 |
Segment Download with Multiple Audio Tracks |
Download audio segments |
Correct track downloaded |
44 |
Segment Download with Subtitles |
Download subtitle segments |
Subtitles displayed correctly |
45 |
Segment Download with Multiple Languages |
Download language-specific segments |
Correct language played |
46 |
Segment Download with Adaptive Bitrate |
Switch bitrate mid-playback |
Correct segment downloaded |
47 |
Segment Download with MPD Update |
MPD changes during playback |
New segments downloaded |
48 |
Segment Download with Manifest Refresh |
Refresh MPD |
Segment list updated |
49 |
Segment Download with Error Handling |
Simulate segment error |
Player skips or retries |
50 |
Segment Download Logging |
Log segment requests |
Logs show correct segment URLs |
MPD - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
MPD File Availability |
Check if MPD file is accessible via HTTP |
MPD file is downloaded successfully |
2 |
MPD XML Validation |
Validate MPD against DASH schema |
MPD is valid XML |
3 |
MPD Parsing |
Parse MPD file in player |
MPD parsed without errors |
4 |
MPD with Multiple Representations |
MPD includes multiple bitrates |
All representations listed |
5 |
MPD with Multiple Adaptation Sets |
MPD includes video, audio, subtitles |
All adaptation sets parsed |
6 |
MPD with SegmentTemplate |
MPD uses SegmentTemplate |
Segments resolved correctly |
7 |
MPD with SegmentList |
MPD uses SegmentList |
Segments listed and accessible |
8 |
MPD with SegmentBase |
MPD uses SegmentBase |
Initialization and media segments resolved |
9 |
MPD with BaseURL |
MPD includes BaseURL |
Segment URLs resolved correctly |
10 |
MPD with Periods |
MPD includes multiple periods |
Periods parsed and played correctly |
11 |
MPD with Duration Attribute |
MPD includes mediaPresentationDuration |
Duration parsed correctly |
12 |
MPD with minBufferTime |
MPD includes minBufferTime |
Buffering behavior matches value |
13 |
MPD with startNumber |
MPD includes startNumber |
Segment numbering starts correctly |
14 |
MPD with timeShiftBufferDepth |
MPD includes timeShiftBufferDepth |
Live playback window respected |
15 |
MPD with availabilityStartTime |
MPD includes availabilityStartTime |
Live playback starts correctly |
16 |
MPD with profiles Attribute |
MPD includes profiles |
Profile matches DASH standard |
17 |
MPD with ContentProtection |
MPD includes DRM info |
DRM parsed and enforced |
18 |
MPD with Language Attribute |
MPD includes language tags |
Correct language selected |
19 |
MPD with Role Element |
MPD includes role (main, alternate) |
Role parsed correctly |
20 |
MPD with Accessibility Element |
MPD includes accessibility info |
Accessibility features enabled |
21 |
MPD with SupplementalProperty |
MPD includes supplemental metadata |
Metadata parsed correctly |
22 |
MPD with EssentialProperty |
MPD includes essential metadata |
Metadata parsed correctly |
23 |
MPD with InbandEventStream |
MPD includes event stream |
Events triggered during playback |
24 |
MPD with Location Element |
MPD includes alternate MPD URL |
Fallback MPD used if needed |
25 |
MPD with UTC Timing |
MPD includes UTCTiming |
Time synchronization works |
26 |
MPD with Static Type |
MPD type=”static” |
VOD playback works |
27 |
MPD with Dynamic Type |
MPD type=”dynamic” |
Live playback works |
28 |
MPD with SegmentTimeline |
MPD includes SegmentTimeline |
Timeline parsed and segments aligned |
29 |
MPD with Initialization Segment |
MPD includes init segment |
Initialization segment downloaded |
30 |
MPD with Trick Mode |
MPD includes trick mode tracks |
Trick play supported |
31 |
MPD with Multiple Audio Tracks |
MPD includes multiple audio languages |
User can switch audio |
32 |
MPD with Subtitles |
MPD includes subtitle tracks |
Subtitles displayed correctly |
33 |
MPD with Closed Captions |
MPD includes closed captions |
Captions displayed correctly |
34 |
MPD with High Frame Rate |
MPD includes 60fps representation |
High frame rate played correctly |
35 |
MPD with 4K Representation |
MPD includes 4K video |
4K played on supported devices |
36 |
MPD with Low Bitrate |
MPD includes 144p/240p |
Low bitrate selected on poor networks |
37 |
MPD with Audio-Only |
MPD includes audio-only adaptation set |
Audio-only playback works |
38 |
MPD with Video-Only |
MPD includes video-only adaptation set |
Video-only playback works |
39 |
MPD with Multiple Codecs |
MPD includes H.264, VP9, etc. |
Compatible codec selected |
40 |
MPD with Invalid XML |
MPD has malformed XML |
Player throws error |
41 |
MPD with Missing Segment |
MPD references missing segment |
Player retries or skips |
42 |
MPD with Expired Segment |
MPD references expired segment |
Player handles gracefully |
43 |
MPD with Future Availability |
MPD references future segments |
Player waits appropriately |
44 |
MPD with HTTP 404 |
MPD URL returns 404 |
Player shows error |
45 |
MPD with HTTP 500 |
MPD URL returns server error |
Player retries or fails gracefully |
46 |
MPD with Redirect |
MPD URL redirects |
Player follows redirect |
47 |
MPD with Gzip Compression |
MPD served as gzip |
Player decompresses and parses |
48 |
MPD with CORS Headers |
MPD served cross-origin |
Player loads with correct CORS |
49 |
MPD with HTTPS |
MPD served over HTTPS |
Secure connection established |
50 |
MPD with Manifest Refresh |
MPD updates during playback |
Player refreshes and adapts |
Codec Agnostic - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
H.264 Video Support |
Play H.264 encoded video |
Playback successful |
2 |
H.265 (HEVC) Video Support |
Play HEVC encoded video |
Playback successful |
3 |
VP9 Video Support |
Play VP9 encoded video |
Playback successful |
4 |
AV1 Video Support |
Play AV1 encoded video |
Playback successful |
5 |
MPEG-2 Video Support |
Play MPEG-2 encoded video |
Playback successful |
6 |
Theora Video Support |
Play Theora encoded video |
Playback successful |
7 |
AAC Audio Support |
Play AAC encoded audio |
Playback successful |
8 |
MP3 Audio Support |
Play MP3 encoded audio |
Playback successful |
9 |
Opus Audio Support |
Play Opus encoded audio |
Playback successful |
10 |
Vorbis Audio Support |
Play Vorbis encoded audio |
Playback successful |
11 |
AC-3 Audio Support |
Play AC-3 encoded audio |
Playback successful |
12 |
E-AC-3 Audio Support |
Play E-AC-3 encoded audio |
Playback successful |
13 |
Multiple Codecs in MPD |
MPD includes multiple codecs |
Compatible codec selected |
14 |
Codec Switching |
Switch between codecs mid-playback |
Seamless transition |
15 |
Codec Fallback |
Fallback to supported codec |
Playback continues |
16 |
Codec Negotiation |
Client selects supported codec |
Playback successful |
17 |
Codec in Adaptation Set |
Codec specified in adaptation set |
Parsed and used correctly |
18 |
Codec in Representation |
Codec specified in representation |
Parsed and used correctly |
19 |
Codec in ContentProtection |
Codec used with DRM |
Playback successful |
20 |
Codec in Trick Mode |
Trick mode stream uses different codec |
Playback successful |
21 |
Codec in Audio Description |
Audio description uses different codec |
Playback successful |
22 |
Codec in Alternate Language |
Alternate language uses different codec |
Playback successful |
23 |
Codec in Subtitles |
Subtitles encoded separately |
Displayed correctly |
24 |
Codec in Live Stream |
Live stream uses supported codec |
Playback successful |
25 |
Codec in VOD Stream |
VOD stream uses supported codec |
Playback successful |
26 |
Codec in 4K Stream |
4K stream uses HEVC or AV1 |
Playback successful |
27 |
Codec in 1080p Stream |
1080p stream uses H.264 |
Playback successful |
28 |
Codec in 720p Stream |
720p stream uses VP9 |
Playback successful |
29 |
Codec in 360p Stream |
360p stream uses Theora |
Playback successful |
30 |
Codec in Audio-Only Stream |
Audio-only stream uses Opus |
Playback successful |
31 |
Codec in Video-Only Stream |
Video-only stream uses AV1 |
Playback successful |
32 |
Codec in Encrypted Stream |
Encrypted stream uses HEVC |
Playback successful |
33 |
Codec in Unencrypted Stream |
Unencrypted stream uses H.264 |
Playback successful |
34 |
Codec in Multi-Track Audio |
Multiple audio tracks with different codecs |
Correct track selected |
35 |
Codec in Multi-Track Video |
Multiple video tracks with different codecs |
Correct track selected |
36 |
Codec in DASH-IF Profile |
MPD conforms to DASH-IF profile |
Codec compatibility ensured |
37 |
Codec in Custom Profile |
MPD uses custom profile |
Playback successful if supported |
38 |
Codec in Legacy Device |
Use older device with limited codec support |
Fallback codec used |
39 |
Codec in Modern Device |
Use modern device with full codec support |
Optimal codec used |
40 |
Codec in Browser (Chrome) |
Test in Chrome |
Codec supported |
41 |
Codec in Browser (Firefox) |
Test in Firefox |
Codec supported |
42 |
Codec in Browser (Safari) |
Test in Safari |
Codec supported |
43 |
Codec in Browser (Edge) |
Test in Edge |
Codec supported |
44 |
Codec in Android App |
Test in Android app |
Codec supported |
45 |
Codec in iOS App |
Test in iOS app |
Codec supported |
46 |
Codec in Smart TV |
Test on smart TV |
Codec supported |
47 |
Codec in Game Console |
Test on console |
Codec supported |
48 |
Codec in Embedded Device |
Test on IoT device |
Codec supported |
49 |
Codec in Desktop Player |
Test in VLC or similar |
Codec supported |
50 |
Codec in Cloud Streaming |
Stream from cloud server |
Codec compatibility maintained |
DRM Support - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
DRM Initialization |
Load DRM-protected MPD |
DRM system initialized |
2 |
DRM License Acquisition |
Request license from server |
License acquired successfully |
3 |
DRM License Expiry |
Use expired license |
Playback denied |
4 |
DRM License Renewal |
Renew expired license |
Playback resumes |
5 |
DRM License Revocation |
Revoke license mid-playback |
Playback stops |
6 |
DRM Key Rotation |
Rotate encryption keys |
Playback continues seamlessly |
7 |
DRM with Widevine |
Use Widevine DRM |
Playback successful |
8 |
DRM with PlayReady |
Use PlayReady DRM |
Playback successful |
9 |
DRM with FairPlay |
Use FairPlay DRM |
Playback successful |
10 |
DRM with ClearKey |
Use ClearKey DRM |
Playback successful |
11 |
DRM with Multi-DRM |
MPD supports multiple DRM systems |
Compatible DRM selected |
12 |
DRM with Encrypted MPD |
MPD file is encrypted |
MPD decrypted and parsed |
13 |
DRM with Encrypted Segments |
Media segments are encrypted |
Segments decrypted and played |
14 |
DRM with Initialization Segment |
Init segment is encrypted |
Decrypted and used correctly |
15 |
DRM with ContentProtection Element |
MPD includes ContentProtection |
DRM info parsed correctly |
16 |
DRM with License Server URL |
MPD includes license URL |
License request sent successfully |
17 |
DRM with Token Authentication |
License request includes token |
Token validated |
18 |
DRM with Device Binding |
License tied to device |
Playback restricted to device |
19 |
DRM with Offline Playback |
License allows offline playback |
Content plays offline |
20 |
DRM with Streaming Only |
License restricts offline playback |
Offline playback denied |
21 |
DRM with Playback Window |
License includes time window |
Playback allowed within window |
22 |
DRM with Concurrent Stream Limit |
License limits concurrent streams |
Excess streams denied |
23 |
DRM with Resolution Restriction |
License restricts resolution |
Playback limited to allowed resolution |
24 |
DRM with Bitrate Restriction |
License restricts bitrate |
Playback limited to allowed bitrate |
25 |
DRM with Region Restriction |
License restricts region |
Playback denied outside region |
26 |
DRM with Device Type Restriction |
License restricts device type |
Playback denied on unsupported device |
27 |
DRM with Browser Support |
Test in Chrome |
DRM playback successful |
28 |
DRM with Browser Support |
Test in Firefox |
DRM playback successful |
29 |
DRM with Browser Support |
Test in Safari |
DRM playback successful |
30 |
DRM with Browser Support |
Test in Edge |
DRM playback successful |
31 |
DRM with Mobile App |
Test in Android app |
DRM playback successful |
32 |
DRM with Mobile App |
Test in iOS app |
DRM playback successful |
33 |
DRM with Smart TV |
Test on smart TV |
DRM playback successful |
34 |
DRM with Game Console |
Test on console |
DRM playback successful |
35 |
DRM with Desktop Player |
Test in VLC or similar |
DRM playback successful |
36 |
DRM with Embedded Device |
Test on IoT device |
DRM playback successful |
37 |
DRM with Network Latency |
Simulate high latency |
License acquired successfully |
38 |
DRM with Network Failure |
Simulate network drop |
License acquisition fails gracefully |
39 |
DRM with Retry Logic |
Retry license request |
License acquired on retry |
40 |
DRM with Logging |
Log DRM events |
Events logged correctly |
41 |
DRM with Analytics |
Track DRM playback metrics |
Metrics collected accurately |
42 |
DRM with Segment Switching |
Switch encrypted segments |
Seamless playback |
43 |
DRM with MPD Refresh |
Refresh MPD during playback |
DRM info updated correctly |
44 |
DRM with Manifest Redirect |
MPD URL redirects |
DRM info preserved |
45 |
DRM with License Server Redirect |
License server redirects |
License acquired successfully |
46 |
DRM with CORS Headers |
License request includes CORS |
Request succeeds |
47 |
DRM with HTTPS |
License server uses HTTPS |
Secure connection established |
48 |
DRM with Token Expiry |
Token expires mid-playback |
Playback stops or renews |
49 |
DRM with Multi-Track Audio |
Audio tracks encrypted |
Correct track decrypted and played |
50 |
DRM with Subtitles |
Subtitles encrypted |
Displayed correctly after decryption |
Multi Track Support - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Multiple Audio Tracks |
MPD includes multiple audio tracks |
All tracks listed and selectable |
2 |
Multiple Video Tracks |
MPD includes multiple video tracks |
All tracks listed and selectable |
3 |
Multiple Subtitle Tracks |
MPD includes multiple subtitle tracks |
All tracks listed and selectable |
4 |
Audio Language Switching |
Switch between audio languages |
Seamless audio switch |
5 |
Subtitle Language Switching |
Switch between subtitle languages |
Subtitles change correctly |
6 |
Video Angle Switching |
Switch between camera angles |
Video switches correctly |
7 |
Audio Track with Different Codecs |
AAC and Opus audio tracks |
Compatible codec selected |
8 |
Video Track with Different Codecs |
H.264 and VP9 video tracks |
Compatible codec selected |
9 |
Subtitle Format Switching |
Switch between WebVTT and TTML |
Subtitles rendered correctly |
10 |
Audio Track with Different Bitrates |
64kbps and 128kbps audio |
Bitrate switch works |
11 |
Video Track with Different Resolutions |
720p and 1080p video |
Resolution switch works |
12 |
Subtitle Track with Different Styles |
Styled and plain subtitles |
Styles rendered correctly |
13 |
Audio Track with Accessibility Role |
Audio description track |
Played when selected |
14 |
Subtitle Track with Accessibility Role |
Captions for hearing impaired |
Displayed correctly |
15 |
Default Audio Track |
MPD specifies default audio |
Default selected automatically |
16 |
Default Subtitle Track |
MPD specifies default subtitle |
Default selected automatically |
17 |
Forced Subtitle Track |
Forced subtitles enabled |
Displayed automatically |
18 |
Multi-Track in Static MPD |
VOD with multiple tracks |
All tracks available |
19 |
Multi-Track in Dynamic MPD |
Live stream with multiple tracks |
All tracks available |
20 |
Track Switching During Playback |
Switch audio/video mid-playback |
Seamless transition |
21 |
Track Switching with Buffering |
Switch track with buffer |
Playback continues smoothly |
22 |
Track Switching with DRM |
Encrypted tracks |
DRM handled correctly |
23 |
Track Switching with Adaptive Bitrate |
Switch track and bitrate |
Playback adapts correctly |
24 |
Track Switching on Mobile |
Switch tracks on mobile app |
Works correctly |
25 |
Track Switching on Desktop |
Switch tracks on desktop browser |
Works correctly |
26 |
Track Switching on Smart TV |
Switch tracks on smart TV |
Works correctly |
27 |
Track Switching on Console |
Switch tracks on game console |
Works correctly |
28 |
Track Switching in Poor Network |
Switch tracks under low bandwidth |
Playback continues |
29 |
Track Switching in High Latency |
Switch tracks with latency |
Playback continues |
30 |
Track Switching with Caching |
Cached segments reused |
No re-download needed |
31 |
Track Switching with Prefetching |
Prefetch next track segments |
Seamless switch |
32 |
Track Switching with Analytics |
Log track switches |
Events logged correctly |
33 |
Track Switching with User Preferences |
Use preferred language settings |
Correct track auto-selected |
34 |
Track Switching with Keyboard Shortcut |
Use keyboard to switch tracks |
Shortcut works |
35 |
Track Switching with UI Button |
Use UI to switch tracks |
Button works |
36 |
Track Switching with API Call |
Use player API to switch |
API call successful |
37 |
Track Switching with Manifest Update |
MPD updates during playback |
Tracks updated correctly |
38 |
Track Switching with SegmentTemplate |
Use SegmentTemplate for tracks |
Segments resolved correctly |
39 |
Track Switching with SegmentList |
Use SegmentList for tracks |
Segments listed and played |
40 |
Track Switching with SegmentBase |
Use SegmentBase for tracks |
Initialization handled correctly |
41 |
Track Switching with BaseURL |
Use BaseURL for different tracks |
URLs resolved correctly |
42 |
Track Switching with Role Attribute |
Role=”main”/”alternate” used |
Role respected |
43 |
Track Switching with Language Attribute |
Language=”en”/”fr” used |
Language respected |
44 |
Track Switching with Label Attribute |
Label=”English”/”French” used |
Label displayed in UI |
45 |
Track Switching with AdaptationSet ID |
Use ID to identify tracks |
Correct track selected |
46 |
Track Switching with Representation ID |
Use ID to identify bitrate |
Correct bitrate selected |
47 |
Track Switching with Incompatible Codec |
Try unsupported codec |
Fallback or error shown |
48 |
Track Switching with Missing Segment |
Segment not found |
Error handled gracefully |
49 |
Track Switching with CORS |
Cross-origin track segments |
CORS headers respected |
50 |
Track Switching with HTTPS |
Secure track delivery |
Playback secure and successful |
Live and On-Demand Support - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Launch Live Support |
User clicks on “Live Support” |
Live support window opens |
2 |
Launch On-Demand Support |
User clicks on “On-Demand Support” |
On-demand interface loads |
3 |
Invalid Login Attempt |
User enters wrong credentials |
Error message is shown |
4 |
Valid Login Attempt |
User logs in with correct credentials |
User is authenticated |
5 |
Start Live Chat |
User initiates a live chat |
Chat session starts |
6 |
End Live Chat |
User ends the chat session |
Session ends and feedback is prompted |
7 |
Send Message |
User sends a message in chat |
Message is delivered |
8 |
Receive Message |
Agent sends a message |
Message appears in user chat |
9 |
Upload File |
User uploads a file in chat |
File is visible to agent |
10 |
Download File |
User downloads a shared file |
File is downloaded |
11 |
Chat Timeout |
User is inactive for a set time |
Session times out |
12 |
Reconnect Chat |
User reconnects after timeout |
Session resumes or restarts |
13 |
Agent Availability |
System checks for available agents |
Status is shown to user |
14 |
No Agent Available |
No agents are online |
User is queued or redirected |
15 |
Schedule Session |
User schedules a support session |
Confirmation is shown |
16 |
Cancel Session |
User cancels a scheduled session |
Session is removed |
17 |
Reschedule Session |
User changes session time |
New time is saved |
18 |
Join Scheduled Session |
User joins at scheduled time |
Session starts |
19 |
Session Reminder |
Reminder sent before session |
Notification is received |
20 |
Submit Feedback |
User submits post-session feedback |
Feedback is stored |
21 |
View Chat History |
User accesses past chats |
History is displayed |
22 |
Search Chat History |
User searches for keywords |
Relevant chats are shown |
23 |
Export Chat History |
User exports chat logs |
File is downloaded |
24 |
Language Change |
User switches language |
UI updates accordingly |
25 |
Accessibility Check |
Screen reader and keyboard nav |
Features work as expected |
26 |
Mobile View |
Open support on mobile |
Responsive layout loads |
27 |
Browser Compatibility |
Open support in different browsers |
UI works consistently |
28 |
Multiple Sessions |
User opens multiple chats |
Sessions are handled correctly |
29 |
Transfer to Agent |
Chat is transferred to another agent |
Transfer is successful |
30 |
Escalate to Supervisor |
User requests escalation |
Supervisor joins chat |
31 |
Bot to Agent Handoff |
Bot transfers to human agent |
Handoff is smooth |
32 |
Bot Response Accuracy |
Bot answers a query |
Response is relevant |
33 |
Bot Fallback |
Bot can’t answer |
Escalates to human |
34 |
Session Logging |
All interactions are logged |
Logs are stored securely |
35 |
Session Encryption |
Data is encrypted |
Secure transmission confirmed |
36 |
Unauthorized Access |
User tries to access without login |
Access is denied |
37 |
Session Expiry |
Session reaches time limit |
User is notified |
38 |
Reconnect Dropped Session |
User reconnects after disconnect |
Session resumes |
39 |
Typing Indicator (Agent) |
Agent types a message |
Typing indicator is shown |
40 |
Typing Indicator (User) |
User types a message |
Agent sees typing status |
41 |
Minimize Chat |
User minimizes chat window |
Chat is hidden but active |
42 |
Push Notifications |
New message while minimized |
Notification is shown |
43 |
Audio/Video Support |
Start audio/video session |
Media session starts |
44 |
Track Session Duration |
Track how long session lasts |
Duration is displayed |
45 |
Rate Agent |
User rates support agent |
Rating is submitted |
46 |
Email Summary |
User receives session summary |
Email is delivered |
47 |
GDPR Compliance |
User requests data deletion |
Data is removed per policy |
48 |
API Integration |
Test support API endpoints |
APIs return correct data |
49 |
Load Test |
Simulate many users |
System handles load |
50 |
UI Responsiveness |
Resize window or device |
UI adjusts correctly |
HTTP-Based Delivery - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Request MPD file |
Request the MPD manifest file via HTTP |
MPD file is successfully retrieved |
2 |
Invalid MPD URL |
Use an incorrect URL to fetch MPD |
HTTP 404 or error message is returned |
3 |
Validate MPD format |
Check if MPD file follows DASH schema |
MPD is valid and parsable |
4 |
Request init segment |
Request initialization segment via HTTP |
Segment is delivered correctly |
5 |
Request media segment |
Request a media segment via HTTP |
Segment is delivered successfully |
6 |
HTTP/1.1 delivery |
Deliver segment using HTTP/1.1 |
Segment is streamed without error |
7 |
HTTP/2 delivery |
Deliver segment using HTTP/2 |
Segment is streamed using HTTP/2 |
8 |
HTTP/3 delivery |
Deliver segment using HTTP/3 |
Segment is streamed using HTTP/3 |
9 |
Range request |
Request partial segment using HTTP Range |
Partial content is returned |
10 |
Invalid range request |
Use invalid byte range in request |
HTTP 416 error is returned |
11 |
Caching enabled |
Request segment with caching headers |
Segment is served from cache |
12 |
Caching disabled |
Request segment with no-cache headers |
Segment is fetched from origin |
13 |
CDN delivery |
Request segment via CDN |
Segment is delivered from nearest node |
14 |
Expired token |
Request segment with expired token |
HTTP 403 Forbidden is returned |
15 |
Valid token |
Request segment with valid token |
Segment is delivered successfully |
16 |
MPD refresh |
Check MPD update interval |
MPD is refreshed as scheduled |
17 |
Retry on failure |
Simulate segment download failure |
Retry mechanism triggers |
18 |
Timeout handling |
Simulate network timeout |
Timeout is handled gracefully |
19 |
Slow network |
Simulate slow connection |
Lower bitrate segment is selected |
20 |
Fast network |
Simulate fast connection |
Highest quality segment is selected |
21 |
Packet loss |
Simulate packet loss during delivery |
Playback continues with minimal buffering |
22 |
Corrupted segment |
Deliver corrupted segment |
Error is detected and segment is re-requested |
23 |
HTTPS delivery |
Deliver segment over HTTPS |
Secure connection is established |
24 |
Invalid SSL cert |
Use invalid SSL certificate |
Connection is rejected |
25 |
Proxy delivery |
Deliver segment via HTTP proxy |
Segment is delivered through proxy |
26 |
Authenticated request |
Request segment with valid credentials |
Segment is delivered |
27 |
Unauthorized request |
Request segment with invalid credentials |
HTTP 401 Unauthorized is returned |
28 |
Redirection handling |
Segment URL redirects to another |
Redirection is followed correctly |
29 |
Chunked transfer |
Deliver segment using chunked encoding |
Segment is reassembled and played |
30 |
Gzip compression |
Deliver segment with gzip encoding |
Segment is decompressed and played |
31 |
Incorrect MIME type |
Deliver segment with wrong MIME type |
Segment is rejected |
32 |
Correct MIME type |
Deliver segment with correct MIME type |
Segment is accepted and played |
33 |
ETag validation |
Use ETag to validate cached segment |
304 Not Modified is returned if unchanged |
34 |
If-Modified-Since header |
Use header to check for updates |
304 Not Modified is returned if unchanged |
35 |
HTTP pipelining |
Send multiple requests in pipeline |
Responses are received in order |
36 |
Keep-alive connection |
Use persistent HTTP connection |
Connection is reused |
37 |
Connection close |
Use connection: close header |
New connection is established |
38 |
IPv6 delivery |
Deliver segment over IPv6 |
Segment is delivered successfully |
39 |
IPv4 delivery |
Deliver segment over IPv4 |
Segment is delivered successfully |
40 |
DNS failure |
Simulate DNS resolution failure |
Error is logged and retry attempted |
41 |
Server overload |
Simulate high server load |
Graceful degradation or retry occurs |
42 |
Load balancer routing |
Deliver segment via load balancer |
Segment is routed correctly |
43 |
Geo-restriction |
Request from restricted region |
Access is denied |
44 |
User-agent filtering |
Filter requests by user-agent |
Access is allowed/denied accordingly |
45 |
Malformed URL |
Use malformed segment URL |
HTTP 400 Bad Request is returned |
46 |
Valid URL |
Use correct segment URL |
Segment is delivered successfully |
47 |
Concurrent users |
Simulate multiple users requesting segments |
System handles concurrent requests |
48 |
Adaptive bitrate switching |
Simulate bandwidth fluctuation |
Bitrate switches dynamically |
49 |
Buffer underrun |
Simulate slow segment delivery |
Playback stalls and resumes |
50 |
Buffer overrun |
Simulate fast segment delivery |
Excess segments are discarded or paused |
Low-Latency Extensions - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Enable Low-Latency Mode |
Enable low-latency mode in player |
Player switches to low-latency mode |
2 |
Disable Low-Latency Mode |
Disable low-latency mode |
Player reverts to normal latency |
3 |
Fetch MPD with LL attributes |
Request MPD with low-latency attributes |
MPD includes availabilityStartTime, suggestedPresentationDelay, etc. |
4 |
Segment Availability Time |
Verify segment availability time is accurate |
Segment becomes available as expected |
5 |
Chunked Transfer Encoding |
Use chunked transfer for segments |
Segments are delivered in chunks |
6 |
HTTP/1.1 Chunked Support |
Test chunked transfer over HTTP/1.1 |
Segments stream correctly |
7 |
HTTP/2 Chunked Support |
Test chunked transfer over HTTP/2 |
Segments stream correctly |
8 |
Segment Duration Accuracy |
Check segment duration matches MPD |
Duration is consistent |
9 |
Part Duration Accuracy |
Check part duration in low-latency mode |
Part duration is accurate |
10 |
Request Segment Parts |
Request partial segments (parts) |
Parts are delivered correctly |
11 |
Request Early Parts |
Request parts before availability time |
Server returns 404 or waits |
12 |
Request Late Parts |
Request parts after expiration |
Server returns 404 |
13 |
Segment Timeline Sync |
Verify timeline sync with server clock |
Timeline is aligned |
14 |
Use of availabilityTimeOffset |
Validate ATO usage in MPD |
ATO is respected in segment availability |
15 |
Use of availabilityTimeComplete |
Validate ATC flag in MPD |
Player waits for complete segment if false |
16 |
Use of serviceDescription |
Check presence of service description |
Service parameters are parsed |
17 |
Use of latency attribute |
Validate latency hints in MPD |
Player adjusts buffer accordingly |
18 |
Use of minBufferTime |
Validate minimum buffer time |
Player buffers as per MPD |
19 |
Use of suggestedPresentationDelay |
Validate SPD in MPD |
Player delays playback accordingly |
20 |
Segment Fetch Timing |
Measure time to fetch segment |
Segment is fetched within expected time |
21 |
Part Fetch Timing |
Measure time to fetch part |
Part is fetched quickly |
22 |
Playback Start Delay |
Measure delay from request to playback |
Delay is minimal |
23 |
Playback Drift Correction |
Simulate clock drift |
Player corrects drift |
24 |
Segment Expiry Handling |
Request expired segment |
Server returns 404 |
25 |
Segment Prefetching |
Prefetch upcoming segments |
Prefetching improves playback |
26 |
Part Prefetching |
Prefetch upcoming parts |
Playback is smoother |
27 |
Buffer Underrun Recovery |
Simulate buffer underrun |
Player recovers quickly |
28 |
Buffer Overrun Handling |
Simulate buffer overflow |
Player discards excess |
29 |
Adaptive Bitrate Switching |
Switch bitrate during low-latency playback |
Switch is smooth |
30 |
Network Throttling |
Simulate slow network |
Player reduces latency gracefully |
31 |
Network Jitter |
Simulate jitter |
Playback remains stable |
32 |
Segment Loss Recovery |
Drop a segment |
Player retries or skips |
33 |
Part Loss Recovery |
Drop a part |
Player retries or skips |
34 |
Live Edge Detection |
Detect live edge in stream |
Player plays near live edge |
35 |
Latency Measurement |
Measure end-to-end latency |
Latency is within target |
36 |
Segment Numbering |
Validate segment numbering in MPD |
Numbering is sequential |
37 |
Part Numbering |
Validate part numbering |
Numbering is consistent |
38 |
Segment Availability Window |
Check availability window duration |
Window matches MPD settings |
39 |
Part Availability Window |
Check part availability window |
Window is short and accurate |
40 |
Segment Download Retry |
Retry failed segment download |
Retry succeeds |
41 |
Part Download Retry |
Retry failed part download |
Retry succeeds |
42 |
Segment Download Timeout |
Simulate timeout |
Timeout is handled |
43 |
Part Download Timeout |
Simulate timeout |
Timeout is handled |
44 |
Segment Download Overhead |
Measure overhead in low-latency mode |
Overhead is minimal |
45 |
Part Download Overhead |
Measure part overhead |
Overhead is acceptable |
46 |
Player Sync with Server Clock |
Sync player with server time |
Sync is accurate |
47 |
Use of UTC Timing |
Use UTC timing in MPD |
Player syncs using UTC |
48 |
Segment Availability Prediction |
Predict next segment availability |
Prediction is accurate |
49 |
Part Availability Prediction |
Predict next part availability |
Prediction is accurate |
50 |
End-to-End Playback Test |
Full playback in low-latency mode |
Playback is smooth and near real-time |
Interoperability Profiles - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Validate DASH-IF Profile |
Check if MPD conforms to DASH-IF profile |
MPD passes validation |
2 |
Validate HbbTV Profile |
Check if MPD conforms to HbbTV profile |
MPD is accepted by HbbTV player |
3 |
Validate CMAF Profile |
Check if MPD conforms to CMAF profile |
CMAF-compatible playback is successful |
4 |
Validate DVB-DASH Profile |
Check if MPD conforms to DVB-DASH |
DVB-DASH player plays content |
5 |
Profile Declaration in MPD |
Check for correct profile URI in MPD |
Profile URI is present and valid |
6 |
Unsupported Profile Handling |
Load MPD with unsupported profile |
Player shows error or fallback |
7 |
Multiple Profile Declaration |
MPD declares multiple profiles |
Player selects compatible profile |
8 |
Profile-Specific Segment Format |
Use profile-specific segment format |
Segments are parsed correctly |
9 |
Profile-Specific Codec Support |
Use codecs required by profile |
Playback is successful |
10 |
Profile-Specific Encryption |
Use encryption as per profile |
Decryption and playback succeed |
11 |
Profile-Specific Constraints |
Validate constraints (e.g., segment length) |
Constraints are met |
12 |
Profile-Specific Adaptation Sets |
Use adaptation sets per profile rules |
Sets are parsed and used correctly |
13 |
Profile-Specific Switching Rules |
Test switching between representations |
Switching is seamless |
14 |
Profile-Specific Buffering |
Validate buffer behavior per profile |
Buffering is within limits |
15 |
Profile-Specific Latency |
Validate latency requirements |
Latency is within profile limits |
16 |
Profile-Specific DRM Support |
Use DRM as required by profile |
DRM works as expected |
17 |
Profile-Specific Audio Handling |
Use audio formats per profile |
Audio plays correctly |
18 |
Profile-Specific Subtitle Handling |
Use subtitle formats per profile |
Subtitles render correctly |
19 |
Profile-Specific Resolution Support |
Use resolutions allowed by profile |
Video plays at correct resolution |
20 |
Profile-Specific Bitrate Support |
Use bitrates within profile limits |
Bitrate switching works |
21 |
Profile-Specific Segment Alignment |
Check segment alignment rules |
Segments align correctly |
22 |
Profile-Specific Timeline Usage |
Use timeline as per profile |
Timeline is parsed correctly |
23 |
Profile-Specific MPD Updates |
Test MPD updates in live profile |
Updates are handled correctly |
24 |
Profile-Specific Live Edge Handling |
Validate live edge behavior |
Playback stays near live edge |
25 |
Profile-Specific Low Latency |
Use low-latency extensions |
Playback is near real-time |
26 |
Profile-Specific Trick Modes |
Use trick mode streams |
Trick modes function correctly |
27 |
Profile-Specific Ad Insertion |
Insert ads per profile rules |
Ads play correctly |
28 |
Profile-Specific Event Handling |
Use in-band events |
Events are triggered correctly |
29 |
Profile-Specific Accessibility |
Use accessibility features |
Features are supported |
30 |
Profile-Specific Language Switching |
Switch audio/subtitle languages |
Switching is smooth |
31 |
Profile-Specific Segment Encryption |
Use encryption per profile |
Segments decrypt and play |
32 |
Profile-Specific Key Rotation |
Use key rotation |
Keys rotate without playback issues |
33 |
Profile-Specific Manifest Size |
Validate MPD size limits |
MPD is within size constraints |
34 |
Profile-Specific Segment Size |
Validate segment size |
Segments are within limits |
35 |
Profile-Specific Segment Duration |
Validate segment duration |
Duration matches profile rules |
36 |
Profile-Specific Codec Switching |
Switch between codecs |
Switching is seamless |
37 |
Profile-Specific Device Compatibility |
Test on certified devices |
Playback is successful |
38 |
Profile-Specific Player Compatibility |
Test on compliant players |
Playback is successful |
39 |
Profile-Specific Error Handling |
Simulate profile violation |
Error is logged or fallback occurs |
40 |
Profile-Specific Logging |
Enable logging for profile features |
Logs show correct profile usage |
41 |
Profile-Specific Analytics |
Collect playback metrics |
Metrics reflect profile behavior |
42 |
Profile-Specific QoE Monitoring |
Monitor quality of experience |
QoE is within expected range |
43 |
Profile-Specific Startup Time |
Measure startup time |
Startup is within profile limits |
44 |
Profile-Specific Seek Behavior |
Seek within stream |
Seek is accurate and fast |
45 |
Profile-Specific Rebuffering |
Simulate network drop |
Rebuffering is handled gracefully |
46 |
Profile-Specific Bandwidth Adaptation |
Simulate bandwidth changes |
Adaptation is smooth |
47 |
Profile-Specific Manifest Refresh |
Refresh MPD during playback |
Refresh is handled correctly |
48 |
Profile-Specific Segment Expiry |
Handle expired segments |
Player skips or retries |
49 |
Profile-Specific CDN Switching |
Switch CDN mid-playback |
Playback continues without interruption |
50 |
Profile-Specific Failover |
Simulate server failure |
Failover to backup stream works |
Reference links