290 likes | 503 Views
Media Transfer Protocol supported . Session Outline. Overview Why use a class protocol? Core scenarios & functionality Non-goals Origins Technical details Fundamentals Objects, properties, enumeration, references Implementation details USB optimizations & design considerations
E N D
Session Outline • Overview • Why use a class protocol? • Core scenarios & functionality • Non-goals • Origins • Technical details • Fundamentals • Objects, properties, enumeration, references • Implementation details • USB optimizations & design considerations • Implementation example • Development resources • Direct MTP • MTP Monitor • MTP Simulator • Summary • Additional resources • Questions & Answers
Why Use A Class Protocol? • No driver required • No driver development, installation or support costs • Match communication paradigm to API • MTP mirrors current and future device connectivity API • Better user experience • “Just works” • Interoperability • Future-compatible • Device ecosystem development
Core Scenarios • Plug and Play experience • Self-describing protocol • Device content synchronization • Send and retrieve media on portable players • Synchronize contacts/messages/schedules on PIMs • Acquire images from a digital still camera • Device control and management • Set device clock, volume, display options • Play, pause, rewind media player • Remote content browsing • Identify objects by metadata • View representative samples of objects • Metadata-defined abstract objects
Core Functionality • Rich object enumeration • Does not require a standard acceleration file • Retrieve metadata separately from data • Representative samples • Generic object transfer • Abstract, opaque and combination objects • Device description • Device capabilities • Device metadata
Non-Goals • Streaming • Requires and ensures bit-correctness • Has no quality of service guarantees • Playback from device requires buffering • Device discovery, pairing • Relies on underlying transport • DRM • Enables, but does not define, DRM
Origins • Origins in Picture Transfer Protocol • Dominant protocol for digital still cameras • Used in PictBridge • MTP = PTP and Extensions • Bi-directionally compatible • MTP devices can work with PTP devices • PTP devices will work with MTP devices • MTP Enhanced and Basic • Devices designed for Windows should implement MTP Enhanced • MTP Basic is an OS-neutral subset, proposed for standardization
Connection Walk-Through Connect, identifies as using MTP Request device information Device capability Request list of contents Array of handles to content Request metadata describing content Send metadata Object exchange
Fundamentals • Binary • Actions • Operation Response • Events • Device roles: Initiator-Responder • Initiator can send Operations • Responder responds, fires events • Device content represented by objects • Device represented by device properties • File system, file structure and transport neutral • Device UI can remain active
Objects • All data is represented by objects • Audio, Video, Image, File, Album, etc. • Objects can be binary, abstract or both • Abstract objects have no binary data, such as albums and playlists • Objects are identified by 32-bit handles • Objects are described by properties • Device-constrained values • Interdependent properties enabled • Data, Properties and References are sent and retrieved independently
Object Components Array of Object References that refer to other related objects on the device. Set of Object Properties, which define metadata and properties. These values are understood by and restricted by the device. Static and overview set of fundamental information about this object, included for PTP compatibility. Binary Object contents
Object References • File system neutral → objects identified by 32-bit object handles • References used to associate objects • Playlists, Albums, etc. • Unidirectional • Meaning derived from context • Reference maintenance performedby device
Object enumeration • Quickly enumerate interesting content • Select by • Object format • Desired properties • Folder hierarchy • Example return sets • All properties for all objects • Title, Artist and Duration for all WMA files • Optimized for • Full (or sub-range) enumerations • High bandwidth • High transaction cost • Processing power imbalance
Object Enumeration – One At A Time Handle Format Title Artist Duration FileName 180000 Song1.wma Artist1 0x00000001 WMA Title1 0x00000002 MP3 Title2 Artist2 200000 Song2.mp3 WMA 0x00000003 Title3 Artist3 137000 Song3.wma WMA Artist2 257000 Song4.wma 0x00000004 Title4 0x00000005 MP3 Title5 Artist4 171000 Song5.mp3 0x00000006 WMA Title6 Artist3 148000 Song6.wma 0x00000007 WMV Title7 Artist1 3600000 Vid1.wmv 0x00000008 WPL Title8 Favorites 0x00000009 WMA Title9 Artist5 Song7.wma 37000 WMV Vid2.wmv 0x0000000A Title10 Artist2 130000 0x0000000B MP3 Title11 Artist4 550000 Song8.mp3 0x0000000C WinHec.ppt Unknown Title12 WMA Title13 Artist6 110000 0x0000000D Song9.wma
Object Enumeration – Prop By Prop By Format 180000 Song1.wma Artist1 0x00000001 WMA Title1 MP3 Title2 200000 0x00000002 Artist2 Song2.mp3 WMA 0x00000003 Title3 Artist3 137000 Song3.wma WMA Artist2 257000 Song4.wma 0x00000004 Title4 0x00000005 MP3 Title5 Artist4 171000 Song5.mp3 0x00000006 WMA Title6 Artist3 148000 Song6.wma 0x00000007 WMV Title7 Artist1 3600000 Vid1.wmv 0x00000008 WPL Title8 Favorites 0x00000009 WMA Title9 Artist5 Song7.wma 37000 WMV Vid2.wmv 0x0000000A Title10 Artist2 130000 0x0000000B MP3 Title11 Artist4 550000 Song8.mp3 0x0000000C WinHec.ppt Unknown Title12 WMA Title13 Artist6 110000 0x0000000D Song9.wma
Object Enumeration – All By Format 180000 Song1.wma Artist1 0x00000001 WMA Title1 MP3 Title2 200000 0x00000002 Artist2 Song2.mp3 WMA 0x00000003 Title3 Artist3 137000 Song3.wma WMA Artist2 257000 Song4.wma 0x00000004 Title4 0x00000005 MP3 Title5 Artist4 171000 Song5.mp3 0x00000006 WMA Title6 Artist3 148000 Song6.wma 0x00000007 WMV Title7 Artist1 3600000 Vid1.wmv 0x00000008 WPL Title8 Favorites 0x00000009 WMA Title9 Artist5 Song7.wma 37000 WMV Vid2.wmv 0x0000000A Title10 Artist2 130000 0x0000000B MP3 Title11 Artist4 550000 Song8.mp3 0x0000000C WinHec.ppt Unknown Title12 WMA Title13 Artist6 110000 0x0000000D Song9.wma
Object Enumeration – All By Property 180000 Song1.wma Artist1 0x00000001 WMA Title1 MP3 Title2 200000 0x00000002 Artist2 Song2.mp3 WMA 0x00000003 Title3 Artist3 137000 Song3.wma WMA Artist2 257000 Song4.wma 0x00000004 Title4 0x00000005 MP3 Title5 Artist4 171000 Song5.mp3 0x00000006 WMA Title6 Artist3 148000 Song6.wma 0x00000007 WMV Title7 Artist1 3600000 Vid1.wmv 0x00000008 WPL Title8 Favorites 0x00000009 WMA Title9 Artist5 Song7.wma 37000 WMV Vid2.wmv 0x0000000A Title10 Artist2 130000 0x0000000B MP3 Title11 Artist4 550000 Song8.mp3 0x0000000C WinHec.ppt Unknown Title12 WMA Title13 Artist6 110000 0x0000000D Song9.wma
Object Enumeration – All By Group 180000 Song1.wma Artist1 0x00000001 WMA Title1 MP3 Title2 200000 0x00000002 Artist2 Song2.mp3 WMA 0x00000003 Title3 Artist3 137000 Song3.wma WMA Artist2 257000 Song4.wma 0x00000004 Title4 0x00000005 MP3 Title5 Artist4 171000 Song5.mp3 0x00000006 WMA Title6 Artist3 148000 Song6.wma 0x00000007 WMV Title7 Artist1 3600000 Vid1.wmv 0x00000008 WPL Title8 Favourites 0x00000009 WMA Title9 Artist5 Song7.wma 37000 WMV Vid2.wmv 0x0000000A Title10 Artist2 130000 0x0000000B MP3 Title11 Artist4 550000 Song8.mp3 0x0000000C WinHec.ppt Unknown Title12 WMA Title13 Artist6 110000 0x0000000D Song9.wma
Object Enumeration – All 180000 Song1.wma Artist1 0x00000001 WMA Title1 MP3 Title2 200000 0x00000002 Artist2 Song2.mp3 WMA 0x00000003 Title3 Artist3 137000 Song3.wma WMA Artist2 257000 Song4.wma 0x00000004 Title4 0x00000005 MP3 Title5 Artist4 171000 Song5.mp3 0x00000006 WMA Title6 Artist3 148000 Song6.wma 0x00000007 WMV Title7 Artist1 3600000 Vid1.wmv 0x00000008 WPL Title8 Favourites 0x00000009 WMA Title9 Artist5 Song7.wma 37000 WMV Vid2.wmv 0x0000000A Title10 Artist2 130000 0x0000000B MP3 Title11 Artist4 550000 Song8.mp3 0x0000000C WinHec.ppt Unknown Title12 WMA Title13 Artist6 110000 0x0000000D Song9.wma
Optimizations • Data aligned with packet boundaries • No object size limit • Property datasets are unordered • Property datasets may be pipedwithout pre-compilation • Datasets designed to avoidback-referencing
Implementation Details – Hardware Considerations MTP Compatible Mass Storage Optimized not suitable for MTP Driver Framework Driver Framework MTP MSC USBScan USBStor PC Device USB controller USB / ATAPI Bridge File Transfer using DMA Automatic Switch Device CPU Device Storage Portable Media Player CPU Device Storage
Development Resources • Direct MTP • Useful for sending MTP operations to the device • All operation parameters can be fully specified • Device responses are displayed in the UI • MTP Monitor • Monitors & logs USB bus traffic for MTP exchanges • Parses and interprets MTP operations/responses/events • MTP Simulator • Software MTP device • Requires simulator board to expose as device to the PC • Provides a protocol reference • Useful for debugging device behavior with the MTP driver
Simple bus analyzer Displays and parses MTP traffic Very useful for debugging device implementations Development Resources – MTP Monitor
Summary • A class protocol for portable media devices • Digital Cameras, Portable Media Players, Cellular Phones, etc • Enable hybrid devices, generic firmware • Based on Picture Transfer Protocol (PTP) • Widely used standard for digital still cameras • MTP enables • Generic object transfer between devices • Rich object description • Device management and control • File system, transport, file structure neutral
Call To Action • Use MTP as a connectivity protocol for portable media players • Support shipping in the next Windows Media Player (codenamed Crescent) • Consider MTP as an upgrade path for Digital Still Cameras • PTP will continue to be fully supported and endorsed • Consider MTP as an object transfer & control protocol any intelligent portable device with storage • Cellular handsets, hybrid devices • Supported in Vista
Community Resources • Community Sites • http://www.microsoft.com/communities/default.mspx • List of Newsgroups • http://communities2.microsoft.com/communities/newsgroups/en-us/default.aspx • Attend a free chat or webcast • http://www.microsoft.com/communities/chats/default.mspx • http://www.microsoft.com/seminar/events/webcasts/default.mspx • Locate a local user group(s) • http://www.microsoft.com/communities/usergroups/default.mspx • Non-Microsoft Community Sites • http://www.microsoft.com/communities/related/default.mspx