W3C

Media Fragments URI 1.0 Implementation Report

22 January 2012

This version:
http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-impl/
Editor:
Davy Van Deursen , IBBT Multimedia Lab, University of Ghent

Abstract

This document reports on implementations of the Media Fragments URI 1.0 specification [Media Fragments URI 1.0]. An implementation must be able to parse a media fragment identifier, interpret it according to the processing rules, and visualize the media fragment as recommended by the specification. The main purpose of this document is to show that each feature of the Media Fragments URI 1.0 specification [Media Fragments URI 1.0] has been implemented by demonstrating interoperable implementations of each feature. To evaluate the coverage of an implementation's features, the Media Fragment User Agent Test Cases are used as a point of reference.

Status of this Document

This is an Editor's Draft, hence work in progress. Publication as a Editor's Draft does not imply endorsement by the W3C Membership. As this is a draft document, it may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

The work described herein has been produced by the Media Fragments Working Group, which is part of the W3C Video on the Web Activity.

Please send comments about this document to public-media-fragment@w3.org mailing list (public archive).

Table of Contents

1 Introduction
2 Media Fragment URI 1.0 Implementations
3 Implementation Test Results
    3.1 Implementation Report for Media Fragments Basics
    3.2 Implementation Report for Media Fragments Advanced

Appendices

A References
B Acknowledgements (Non-Normative)


1 Introduction

The goal of this report is to verify if the Media Fragments URI 1.0 specification [Media Fragments URI 1.0] is implementable. Consequently, the report does not attempt to test the conformance of the implementations. To evaluate the coverage of an implementation's features, the [Media Fragments User Agent Test Cases] are used as a point of reference.

The test cases are represented in both HTML and RDF (both Turtle and RDF/XML representations). Thus the approved test cases can be accessed by executing the following query:

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix tc: <http://www.w3.org/2006/03/test-description#>

select * where { 
  ?tc rdf:type tc:TestCase ;
      tc:reviewStatus tc:approved .
}

2 Media Fragment URI 1.0 Implementations

The implementations are usually (manually) evaluated using NinSuna's UA Implementation Report Generator, an HTML form for entering the outcome of the test cases for a given implementation. The individual implementation reports are available as HTML and RDF (using the EARL 1.0 Schema specification).

 

NameContactURI
FirefoxMozillahttp://nightly.mozilla.org/
mediafragments.jsThomas Steinerhttps://github.com/tomayac/Media-Fragments-URI
NinSuna Media Fragments PlayerWim Van Lanckerhttp://ninsuna.elis.ugent.be/MFPlayer/html5
Synote Media Fragment PlayerYunjia Lihttp://synote-server.ecs.soton.ac.uk:8000/media-fragment-player
WebKitApplehttp://www.webkit.org/

 

Note that there is also a showcase portal at http://mediafragments.org/, aiming to reference all existing implementations or applications using the Media Fragments URI specification.

3 Implementation Test Results

The combined results of all individual implementation reports are depicted in the tables below. A link is provided for each implementation to their detailed implementation report. Note that we added an additional outcome value to the values defined by EARL 1.0 Schema: notImplemented, which means that a certain test fails because the feature is not implemented.

The results of the implementation tests are splitted over two sections:

3.1 Implementation Report for Media Fragments Basics

TCInputPurposeFirefoxmediafragments.jsNinSuna Media Fragments PlayerSynote Media Fragment PlayerWebKit
TC0001-UAt=,Syntax error, not allowed according to the ABNF. The media fragment is ignored.passedpassedpassedpassedpassed
TC0002-UAt=3,3Invalid semantics: start must be smaller than end. The media fragment is ignored.passedpassedpassedpassedpassed
TC0003-UAt=7,3Invalid semantics: the requested interval's start is beyond its end. The media fragment is ignored.passedpassedpassedpassedpassed
TC0004-UAt=0,9.97The media is requested from 0 to e.passedpassedpassedpassedpassed
TC0005-UAt=3,7The media is requested from a to b.passedpassedpassedpassedpassed
TC0006-UAt=3,15The media is requested from a to e.passedpassedpassedpassedpassed
TC0009-UAt=15,20The request lies beyond the end of the resource. If the UA knows the duration of the resource, it seeks to the end of the media resource. Otherwise, the UA will send an (out-of-range) HTTP request with an 'include-setup' in order to setup its decoding pipeline.passedpassedpassedpassedpassed
TC0011-UAt=3Equivalent to #t=a,e. The media is requested from a to e.passedpassedpassedpassedpassed
TC0012-UAt=3,Invalid syntax, hence the temporal fragment is ignored.passedpassedpassedpassedpassed
TC0014-UAt=15The request lies beyond the end of the resource. If the UA knows the duration of the resource, it seeks to the end of the media resource. Otherwise, the UA will send an (out-of-range) HTTP request with an 'include-setup' in order to setup its decoding pipeline.passedpassedpassedpassedpassed
TC0015-UAt=,7Equivalent to #t=0,b. The media is requested from 0 to b.passedpassedpassedpassedpassed
TC0017-UAt=,15Equivalent to #t=0,e. The media is requested from 0 to e.passedpassedpassedpassedpassed
TC0024-UAt=npt:3,7equivalent to #t=3,7passedpassedpassedpassedpassed
TC0027-UAt=bananaUA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0028-UAt=3,bananaUA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0029-UAt=banana,7UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0030-UAt='3'UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0031-UAt=3-7UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0032-UAt=3:7UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0033-UAt=3,7,9UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0034-UAt%3D3UA does not identify this as a media fragment, so it will play the entire media resource. Note: %3D is equivalent to =.passedpassedpassedpassedpassed
TC0035-UA%74=3The media is requested from 3 seconds to the end. Note: %74 is equivalent to t.passedpassedpassedpassedpassed
TC0036-UAt=%33The media is requested from 3 seconds to the end. Note: %33 is equivalent to 3.passedpassedpassedpassedpassed
TC0037-UAt=3%2C7The media is requested from 3 to 7 seconds. Note: %2C is equivalent to ,.passedpassedpassedpassedpassed
TC0038-UAt=%6Ept:3The media is requested from 3 seconds to the end. %6E is equivalent to n.passedpassedpassedpassedpassed
TC0039-UAt=npt%3A3The media is requested from 3 seconds to the end. Note: %3A is equivalent to :.passedpassedpassedpassedpassed
TC0044-UAt=-1,3Invalid syntax: a '-' character is not allowed at this position according to the ABNF. The UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0045-UAxywh=200,100,200,200The full media resource is requested. Subsequently, the media is cropped within the rectangular (200,100,200,200) during playback.notImplementedpassedpassednotImplementednotImplemented
TC0046-UAxywh=pixel:200,100,200,200The full media resource is requested. Subsequently, the media is cropped within the rectangular (200,100,200,200) during playback.notImplementedpassedpassednotImplementednotImplemented
TC0047-UAxywh=percent:0,0,50,50The full media resource is requested. Subsequently, the media is cropped within the rectangular (0,0,640,360) during playback, since the video's full resolution is 1280x720pxnotImplementedpassedpassednotImplementednotImplemented
TC0048-UAxywh=200,100,0,0Invalid semantics: width and height of cropped region must be larger than 0. The media fragment is ignored and the full media resource is requested.passedpassedpassednotImplementednotImplemented
TC0049-UAxywh=-200,100,200,200Invalid syntax: the '-' character is not allowed at that position according to the ABNF. Hence, the full media resource is requested.notImplementedpassedpassednotImplementednotImplemented
TC0050-UAxywh=percent:0,0,150,50Invalid semantics: width and height percentages of a cropped region must be smaller or equal to 100. The media fragment is ignored and the full media resource is requested.notImplementedpassedpassednotImplementednotImplemented
TC0051-UAt=3&After processing name-value pairs, this appears to be equivalent to #t=3.passedpassedpassedpassedpassed
TC0052-UAu=12&t=3After processing name-value pairs, this appears to be equivalent to #t=3.passedpassedpassedpassedpassed
TC0053-UAt=foo:7&t=npt:3After processing name-value pairs, this appears to be equivalent to #t=3.passedpassedpassedpassedpassed
TC0054-UA&&=&=tom&jerry=&t=3&t=meow:0#After processing name-value pairs, this appears to be equivalent to #t=3.passedpassedpassedpassedpassed
TC0055-UAt=7&t=3When a fragment dimensions occurs multiple times, only the last occurrence of that dimension is interpreted.passedpassedpassedpassedpassed
TC0058-UAT=3,7UA does not identify this as a media fragment. The entire media resource is played.passedpassedpassedpassedpassed
TC0061-UAt=UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0062-UAt=.UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0063-UAt=.0UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0064-UAt=0sUA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0065-UAt=,0sUA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0066-UAt=0s,0sUA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0067-UAt=00:00:00sUA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0068-UAt=sUA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0069-UAt=npt:UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0070-UAt=1e-1UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0071-UAt=00:00:01.1e-1UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0072-UAt=3.Equivalent to #t=a,e. The media is requested from a to e.passedpassedpassedpassedpassed
TC0073-UAt=0:0:0UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0074-UAt=0:00:60UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0075-UAt=0:01:60UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0076-UAt=0:60:00UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0077-UAt=0:000:000UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0078-UAt=00:00:03,00:00:07The media is requested from a to b.passedpassedpassedpassedpassed
TC0079-UAt=3,00:00:07The media is requested from a to b.passedpassedpassedpassedpassed
TC0080-UAt=00:00.A valid media fragment, starting at 0 seconds. Thus, the UA will play the entire media resource.passedpassedpassedpassedpassed
TC0081-UAt=0:00:00.A valid media fragment, starting at 0 seconds. Thus, the UA will play the entire media resource.passedpassedpassedpassedpassed
TC0082-UAt=0:00:10e-1UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0083-UAt=0:00:60.000UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0084-UAt=0:60:00.000UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0085-UAt=3,7&t=fooThe media is requested from a to b.passedpassedpassedpassedpassed
TC0086-UAfoo&t=3,7Rubbish before & is ignored.passedpassedpassedpassedpassed
TC0087-UAt=3,7&fooRubbish after & is ignored.passedpassedpassedpassedpassed
TC0088-UAt=3,7&&Sprinkling & is OK.passedpassedpassedpassedpassed
TC0089-UA&t=3,7Sprinkling & is OK.passedpassedpassedpassedpassed
TC0090-UA&&t=3,7Sprinkling & is OK.passedpassedpassedpassedpassed
TC0091-UA&t=3,7&Sprinkling & is OK.passedpassedpassedpassedpassed
TC0092-UAt%3d10UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0093-UAt=10%26UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0094-UAt=3,7,UA knows that this is an invalid media fragment, so it will play the entire media resource.passedpassedpassedpassedpassed
TC0095-UAxywh=200,100,2000,200The full media resource is requested. Subsequently, the media is cropped within the rectangular (200,100,520,200) during playback (since the media's resolution is 1280x720px).notImplementedpassedpassednotImplementednotImplemented
TC0097-UAxywh=20,20,5,5Spatial fragments cannot be applied to audio resources and are thus ignored by the UA.passedpassedpassednotImplementednotImplemented
TC0098-UAxywh=2000,100,200,200The full media resource is requested. Since the spatial fragment is outside the source media (its resolution is 1280x720px), it is ignored by the UA.notImplementedpassedpassednotImplementednotImplemented

3.2 Implementation Report for Media Fragments Advanced

TCInputPurposeFirefoxmediafragments.jsNinSuna Media Fragments PlayerSynote Media Fragment PlayerWebKit
TC0018-UAt=smpte:0:00:03,0:00:07SMPTE time code unitnotImplementednotImplementednotImplementedpassednotImplemented
TC0019-UAt=smpte:0:00:03:15.00,0:00:07SMPTE time code unitnotImplementednotImplementednotImplementedpassednotImplemented
TC0020-UAt=smpte-25:0:00:03,0:00:07SMPTE time code unitnotImplementednotImplementednotImplementedpassednotImplemented
TC0021-UAt=smpte-25:0:00:03,0:00:07A smpte temporal fragment using the wrong frame rate is ignored if the UA is aware of the frame rate. Otherwise, a (non-understandable) Range header is sent.notImplementednotImplementednotImplementedfailednotImplemented
TC0022-UAt=smpte-30:0:00:03,0:00:07SMPTE time code unitnotImplementednotImplementednotImplementedpassednotImplemented
TC0023-UAt=smpte-30-drop:0:00:03,0:00:07SMPTE time code unitnotImplementednotImplementednotImplementedpassednotImplemented
TC0025-UAt=clock:2010-10-22T07:33:56ZGiven the creation time of the media resource, find the corresponding temporal fragmentnotImplementednotImplementednotImplementednotImplementednotImplemented
TC0026-UAt=clock:2010-10-22T07:33:56+00:20Given the creation time of the media resource, find the corresponding temporal fragmentnotImplementednotImplementednotImplementedfailednotImplemented
TC0056-UAtrack=4The full media resource is requested, only track 4 will be played.notImplementednotImplementednotImplementednotImplementednotImplemented
TC0057-UAtrack=fooThe track 'foo' is a non-existent track, hence the track fragment will be ignored. The entire media resource will be played.notImplementednotImplementednotImplementednotImplementednotImplemented
TC0059-UAt=smpte:00:00:01&t=npt:3When a fragment dimensions occurs multiple times, only the last occurrence of that dimension is interpreted.notImplementednotImplementednotImplementedpassedpassed
TC0060-UAtrack=n%40m3%20%26%3DThe full media resource is requested. Only to track 'n@m3 &=' is played.notImplementednotImplementednotImplementednotImplementednotImplemented
TC0096-UAtrack=4&track=5The full media resource is requested. Only tracks 4 and 5 are played.notImplementednotImplementednotImplementednotImplementednotImplemented
TC0099-UAt=smpte-30:0:00:03,0:00:07SMPTE encoded media resources having smpte time codes starting at non-zero. The first frame of the media resource is marked with timecode 0:00:02 in smpte-30.notImplementednotImplementednotImplementednotImplementednotImplemented
TC0100-UAt=smpte-30:0:00:00,0:00:01SMPTE encoded media resources having smpte time codes starting at non-zero. The first frame of the media resource is marked with timecode 0:00:02 in smpte-30.notImplementednotImplementednotImplementednotImplementednotImplemented
TC0101-UAid=DougThe bytes corresponding to the id fragment are requested.notImplementednotImplementednotImplementednotImplementednotImplemented
TC0102-UAid=fooThe requested id fragment does not exist within the media resource.notImplementednotImplementednotImplementednotImplementednotImplemented

A References

[Media Fragments URI 1.0]
Media Fragments URI 1.0. W3C Candidate Recommendation 1 December 2011: http://www.w3.org/TR/2011/CR-media-frags-20111201/. Latest version available at http://www.w3.org/TR/media-frags/.
[Media Fragments User Agent Test Cases]
Media Fragments User Agent Test Cases, Davy Van Deursen, 2 November 2011 http://www.w3.org/2008/WebVideo/Fragments/TC/ua-test-cases.
[Media Fragments Server Test Cases]
Media Fragments Server Test Cases, Davy Van Deursen, 2 November 2011 http://www.w3.org/2008/WebVideo/Fragments/TC/server-test-cases.
[EARL 1.0 Schema]
Evaluation and Report Language (EARL) 1.0 Schema. W3C Working Draft 10 May 2011: http://www.w3.org/TR/EARL10/.

B Acknowledgements (Non-Normative)

This document is the work of the W3C Media Fragments Working Group. The editors want to thank all the implementors, not only for the implementation itself but also for taking the time in creating an implementation report.