Media Transfer Protocol Implementation Details Blake Manders Program Manager Windows Portable Devices Microsoft Corporation Donby Mathieu Program Manager DMD Deployment Microsoft Corporation
Session Outline Session Outline Background Implementation Details What is MTP? MTP Fundamentals Implementation Details Suggested Schedule Hardware Requirements Resources Available Identifying Device Capabilities Using MTP with Windows Media Player Using MTP with Image Acquisition Designing for success - Gotchas Future directions
Background – What is MTP? A protocol for intelligent storage devices Based on and compatible with Picture Transfer Protocol (PTP) Enables: Metadata-based enumeration Object transfer Command & control Eventing Optimized for: Very large storages Multifunction devices High-power initiators, low-power responders A key part of WMDRM10-PD and PlaysForSure
Background – MTP Fundamentals Binary protocol Initiator-responder model Initiator initiates, responder must respond Initiator builds model of responder contents Transport-independent Implemented over USB, IP Multi-session aware Device UI is a session Extensible
Background – MTP Fundamentals (con’t) Device contents exposed as objects Identified by session-based 32-bit object handles Device described by device properties Provide description & control Objects described by object properties Provide description & constraints Device-initiated events Multi-session support
Implementation – Suggested Schedule Phase 1: Installation Install, setup & respond to GetDeviceInfo Phase 2: Browsing Add support for storage(s) Object enumeration using GetObjectInfo Phase 3: Object Transfer SendObject, GetObject DeleteObject Phase 4: Object Properties GetObjectPropDesc, GetObjectPropValue, SetObjectPropValue Phase 5: Round out support Miscellaneous remaining operations Phase 6: Optimize Enable optimized enumeration (GetObjectPropList, SendObjectPropList) Enable transport optimizations
Implementation – Suggested Schedule In parallel: Set up a simulation system: MTP Simulator MTP Monitor DirectMTP Develop device-side metadata store Database recommended Optimize for MTP row retrieval Optimize database use and data transformations Transform on the fly where possible No buffering of responses
Implementation – Hardware Requirements Mass Storage Optimized MTP Compatible not suitable for MTP With MSC, content storage is managed by the PC 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 Device Player CPU With MTP, the Device CPU actively manages content storage Device Storage
Implementation – Available Resources MTP Specification MTP Porting Kit: DirectMTP MTPMon MTP Simulator MTP sample ANSI-C implementation PlaysForSure test kit
Identifying Device Capabilities Basic device format support in DeviceInfo Device playback capabilities exposed indirectly through Object Properties Object Properties are not only descriptive metadata, they are also functional To get device capabilities, call GetObjectPropDesc Property Description dataset contains constraints on allowed property values in FORM section Allowed property values imply encoding parameters Some parameters are interdependent GetInterdependentPropDesc
Using MTP With Windows Media Player There is a Windows Media Player-specified MTP extension Windows Media Player puts an XML file in root directory Windows Media Player arranges content in an Artist -> Album -> Title file path hierarchy Windows Media Player will leverage the device friendly name device property Use MTPMon to profile Windows Media Player interaction with expected device setup (storage size, format support, etc.) and optimize accordingly
Using MTP for Image Acquisition PTP compatibility No MTP-specific USB optimizations Don’t limit functionality to enhanced operations Implement SendObjectInfo as well as SendObjectPropList Implement GetObjectInfo as well as GetObjectPropList Refer to PIMA 15740 for complete specification Support thumbnails For dedicated imaging device, identify as USB PTP camera.
Designing for Success – Gotchas Architect for your system Architect per the MTP specification, using MTP Porting Kit as a reference. Identify high risk performance issues early. Hashing algorithms? Memory management? Minimizing storage access? Run PlaysForSure test kit early and often Even if PlaysForSure isn’t a goal, it provides valuable feedback on performance and MTP conformance. Read the documentation A majority of answers to MTP questions can be found in the documentation In the MTP specification In the “Overview Of Portable Device Design” help file In the “Portable Device Installation Considerations” document
Future direction Support for IP connected devices Support more object types More media types Personal Information Management (PIM) data Property definitions Enhanced abstract object support Additional functions Media playback control Auxiliary display Sync primitives
Community Resources Windows Hardware & Driver Central (WHDC) www.microsoft.com/whdc/default.mspx Technical Communities www.microsoft.com/communities/products/default.mspx Non-Microsoft Community Sites www.microsoft.com/communities/related/default.mspx Microsoft Public Newsgroups www.microsoft.com/communities/newsgroups Technical Chats and Webcasts www.microsoft.com/communities/chats/default.mspx www.microsoft.com/webcasts Microsoft Blogs www.microsoft.com/communities/blogs
Additional Resources MTPInfo @ microsoft.com Web Resources: MTP Specification available at http://download.microsoft.com MTP Porting Kit available at http://download.microsoft.com Plays For Sure test kit available at http://www.microsoft.com/windows/windowsmedia/ consumerelectronics/p4skit/p4s_why.aspx Related Sessions PlaysForSure: A Key Asset for Your Device and Windows PC Cellular Phone connectivity in Longhorn Auxillary Display Platform for Longhorn
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.