)]}'
{
  "log": [
    {
      "commit": "0e29fbafa80b6c7283564b12bdb33d90d514ff73",
      "tree": "f47fdea56b897cf9966449bd0b641940b97957f8",
      "parents": [
        "b4e48f1c6d8d7efd7191081e7594880102bc236a"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Feb 07 15:47:54 2019 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Feb 07 15:49:36 2019 -0800"
      },
      "message": "Mark functions in IMtpDatabase as pure virtual\n\nBug: http://b/116873221\n\nMark beginCopyObject() and endCopyObject() as pure virtual.  If not,\nClang assumes that the TU which defines this function will contain the\nvtable for the class as well.  Since there\u0027s no out-of-line definition\nof this funciton, no TU ends up with the vtable.\n\nThis causes a problem with coverage builds, which are built with -O0,\nwhere calls don\u0027t get inlined, thereby requiring a definition of the\nvtable.  For non -O0 builds, the vtable is not required since the\nvirtual calls get inlined/optimized-out.\n\nTest: Build with and without -O0.\nChange-Id: I5e8dcf583a75af51af1e9dd31a6635aa2f9d4413\n"
    },
    {
      "commit": "bc1d4b41f4df1b6dd04801ea5a526d23f5321340",
      "tree": "9c40c27d4c306658b10f622f5a32f111e2623c68",
      "parents": [
        "e1d2f7dd9b8f153fc581144ab4d4a77c6241918a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Mar 27 15:25:03 2018 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Mar 27 17:32:27 2018 -0700"
      },
      "message": "Fix Unicode string handling\n\nLinux uses UTF8 but java and MTP both\nuse UTF16. In a few places, this results\nin the top byte of a UTF16 string being\ntruncated on conversion to UTF8.\n\nAlso, the hardcoded UTF to byte serialization\nin MtpStringBuffer is incorrect.\nReplace it with conversions from std, and\nreplace usages of MtpString with MtpStringBuffer.\n\nRemove any remaining usages of libutils\nand replace them with corresponding std\nlibraries.\n\nBug: 70546563\nTest: Mtp works, tests pass\nTest: file/folder names containing emoji can be transferred to/from\nwindows\nChange-Id: Idbcb73f1beac17ce8a90843fa254e759dd1a6369\n"
    },
    {
      "commit": "e5aa05d12a48f7c5766a80d5bd2dc8cd068c1bcd",
      "tree": "7dd4c8dfd8429a55c5aa56bc8d55a3e7139bacee",
      "parents": [
        "e5b50aeedba87b11b278105cc42343691a5b9e2f"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Oct 13 12:14:42 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Dec 15 00:08:44 2017 +0000"
      },
      "message": "MtpServer changes for MtpStorageManager\n\nMoveObject and DeleteObject require\nbegin() and end() methods in order to\nmaintain database consistency. delete() now\nhas to return errors.\n\nAllow sendObject after sendObjectInfo since\nthe spec allows this.\n\nTest: See tests for main MtpStorageManager change\nBug: 63143623\nChange-Id: Ied105e884cafd36e861521dcc59740e23b330f5f\n"
    },
    {
      "commit": "6de16604f3fbf8d955caacc722b71b8d210d7a7a",
      "tree": "f362768f16b044259ce5074acb80baca50c0c81f",
      "parents": [
        "289cce603494363f9d0f6d42b16289b632205f77"
      ],
      "author": {
        "name": "kyle_tso",
        "email": "kyle_tso@htc.com",
        "time": "Wed Nov 22 18:14:51 2017 +0800"
      },
      "committer": {
        "name": "kyle_tso",
        "email": "kyle_tso@htc.com",
        "time": "Wed Nov 22 20:51:50 2017 +0800"
      },
      "message": "Add support of directory copy\n\nWhen copying directories, files and sub-directories should be\nrecursively copied. And we have to update the database by scanning\nthe entire directory.\n\nTest: Copy directories with sub-directories and files inside to\nanother location. All directories and files are successfully\ncopied.\n\nChange-Id: Iea9603b51bd0a944c87dedd962804d18d11984c4\nSigned-off-by: kyle_tso \u003ckyle_tso@htc.com\u003e\n"
    },
    {
      "commit": "e242f12c0f33518e0760fabfdad8cb93a1c8a2fb",
      "tree": "c12c22ff3550202df1af4a0816f6ee3c489f3938",
      "parents": [
        "49d0502f1a227a510df65ec74f14eef91185dc6a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 16 14:54:08 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Oct 19 17:55:26 2017 +0000"
      },
      "message": "Account for folders in copy and move.\n\nCopy and move will use mkdir() if target\nis a folder, and copyFile() if target is a file.\n\nMove will recursively copy contents if moving\nbetween different storages. Move will also\nchange the storageId.\n\nBug: 67028892\nTest: Copy and move folders on win 10\nChange-Id: If114ef74b9d8668cf66d45953d9ea8b17bc11ae8\n"
    },
    {
      "commit": "708b3e0b72189d2d2e932459bd0391f98c9ff9a2",
      "tree": "fc7856849cca6731143755c464df310e817d78f7",
      "parents": [
        "0d51135defebfe9bf0d790216ee4668c96041224"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Sep 26 17:53:39 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 02 11:56:25 2017 -0700"
      },
      "message": "Add implementations for move and copy operations.\n\nPreviously, we didn\u0027t have these implemented so the\nhost OS would emulate them by pulling the object\nand pushing it to a new location. This can result\nin data being lost and it is slow.\n\nWith the operations implemented, moving objects\non the same storage is instantaneous since the data\ndoesn\u0027t need to move. Moving objects between storages\nand copying objects are both much faster since no\ndata has to be moved through USB.\n\nBug: 66679910\nTest: Move and copy objects, verify they are correct\nChange-Id: I38c69eee41d883af46fa2f1b9e091193b2847e8c\n"
    },
    {
      "commit": "64000788211f4c7e78c80a4a155390d1316e1176",
      "tree": "5cd67cc35f9df8ffcef27438430c6a087adfa69c",
      "parents": [
        "c0502468a29aa2f2b3457e0e08c4a5650a70488d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Apr 24 18:40:17 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 17:40:33 2011 -0700"
      },
      "message": "MTP: Implement GetThumb command\n\nThis allows the PC to access thumbnails in JPEG files over MTP/PTP\n\nBug: 3219495\n\nChange-Id: I4964f8b4826dffb7f0f77464ec91bd2e97a2f007\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "7d77dcfadd7fb637ed2c3aef5bb3990dd0a67dc0",
      "tree": "ca352d0fe548618385cef862a764ad33c4d0c1db",
      "parents": [
        "88a90ab588f11d1ffaf08e178232359c6d8d03eb"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Apr 21 17:05:55 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Apr 22 07:11:20 2011 -0700"
      },
      "message": "MTP: Add extended operations to support in-place editing of files\n\nMTP does not support partial writes of files (the entire file must be transferred at once).\nThis makes it impossible to implement a FUSE file system for MTP\nwith acceptable performance.\nTo fix this problem, this change adds extended MTP operations to allow\npartial writes to files:\n\nSendPartialObject - allows writing a subset of a file, or appending to the end of a file\n\nTruncateObject - allows changing the size of a file\n\nBeginEditObject - must be called before using SendPartialObject and TruncateObject\n\nEndEditObject - commits changes to a file after it has been edited with SendPartialObject or TruncateObject\n\nWe also add GetPartialObject64, which is the same as GetPartialObject\nbut has a 64 bit offset rather than 32.\n\nChange-Id: I4b110748b97ae05cdc8aab02ecdbbbeb263f7840\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "aa95240d9096f97aa2e2022fae8764a4386c8951",
      "tree": "ee23a4189c0152e2d5528887d5861566ef5ada6f",
      "parents": [
        "ccb3506ed1845121b94f4e27244e61a46eb19815"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 18 11:06:19 2011 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 18 11:07:11 2011 -0800"
      },
      "message": "MTP: Fix problems with modification dates for folders and non-media files\n\nAlso removed an unnecessary parameter to MtpDatabase.endSendobject()\n\nBUG: 3352142\n\nChange-Id: I6fd812dcba4814956bc8bc1cbd6bd5c868197790\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "fd34626771a63d3a835863e1b4bf71dcb26e28d8",
      "tree": "7b6ae8f839589577830cd73f42449b32ca88a5a7",
      "parents": [
        "e52fda6714a209fa2117d970919324b56573f90f"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Dec 08 16:08:01 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Dec 08 16:09:37 2010 -0800"
      },
      "message": "MTP: Improve argument checking in SendObjectInfo\n\nIn particular, make sure the parent is a folder and make sure file\ndoes not already exist.\n\nChange-Id: Ifa870faba3285f03a92025d9e82f93fed78a761c\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "40ce1f262cc4edbc8b7c470830325466263acaec",
      "tree": "2dee6e562eb0cc55a9be497b94e2e0b7be849622",
      "parents": [
        "4070a15be31dd309446cdd400342628a8f0b1328"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Dec 01 18:46:23 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Dec 02 08:16:12 2010 -0500"
      },
      "message": "MTP: Add support for multiple properties in GetObjectPropList command\n\nChange-Id: Ib469a6c8141937aaa3e811345056195117abb4b2\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "e1b8cf1cafb75ce1339b67eb1764e224a257c579",
      "tree": "3881a3df3eb3e1d6dd6eb37ae446cb76bf33cf18",
      "parents": [
        "d0e9487cd8b2b4ef63583ebedfdce30b3d098f15"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Nov 16 17:38:43 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Nov 17 16:43:24 2010 -0500"
      },
      "message": "MTP: Fixes to allow file transfers \u003e 4 gigabytes\n\nBUG: 3198248\n\nChange-Id: I6f11c79a19d7bdd63718a7370939124b1262d221\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b6da06e9dfb916da4b88e09e8a83e22ddae445b5",
      "tree": "304c854e47b34e5a22fa885627b4d3597a9d7550",
      "parents": [
        "2d71233de5450f1b128c8149fdbdf39b937f3cb8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Oct 14 18:03:25 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Nov 15 11:46:51 2010 -0500"
      },
      "message": "MTP: Partial implementation of the GetObjectPropList command\n\nIn this initial implementation we only support fetching one property at a time.\nSupport depth \u003d 0 (single object) or depth \u003d 1 (all objects in a directory)\nReimplemented GetObjectPropValue on top of GetObjectPropList, since the former\nis a special case of the latter.\n\nChange-Id: Ia76ee61741d6ee3902b5c5d9fc094cf86dfaf650\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "6b3a9d15c8a2282c03f1df7d72a55b6800d4ecec",
      "tree": "18b3d54b2cfc9ef13e7c0d0adadb9b9c7e8e56b5",
      "parents": [
        "6865ddb29fc7e7a14104d73c65b71074502bb6c7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 31 16:25:12 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 31 16:25:12 2010 -0400"
      },
      "message": "MTP: Send an Intent after an MTP session that resulted in media database modifications\n\nChange-Id: Ib2796e9155350c67769502935a73cf98d6ae9c08\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "8277cec96ffa55082962591bca1c55abbeec8c26",
      "tree": "660b89fc58bc6971d848b80be47fc9fa374d1aec",
      "parents": [
        "17c53d433cd83d6b7d77e80635d6d58e2f6f5b2e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 10 15:20:35 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Aug 25 18:42:22 2010 -0400"
      },
      "message": "MTP: work in progress on expanded property support\n\nGetObjectPropValue and SetObjectPropValue are disabled until I figure out\nwhy Windows doesn\u0027t like what I have done.\n\nChange-Id: I74e945ef3ea031f6d46f4ebaa8df815da0a5c3ed\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "782aef17c9921a3bf401a0432878df5031f2328b",
      "tree": "16990996aabf410d011704657f11bf3ec5cedd54",
      "parents": [
        "d7943b4cd2fa597581d1e29325adccc62dbf2939"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 10 07:37:50 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 10 09:00:30 2010 -0400"
      },
      "message": "MTP: Push queries for supported formats and properties up to Java.\n\nChange-Id: I4f117090340e3916afda3d194521a6092a672ddc\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "438344fba74ddd6b931ac733fa48643f27b63de3",
      "tree": "3dd0ed5763a0c332506d9f6684a2f0eefe38cc08",
      "parents": [
        "fd150a8e03cdd8462eafd68f4a4231aa52f0e5a1"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 03 15:30:09 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 03 15:36:22 2010 -0400"
      },
      "message": "MTP: Add support for syncing MTP playlists\n\nMTP playlists now correspond to playlists in the media provider\n(like those created by the Music app).\n\nChange-Id: I085cb3cff003037ad62f0e297fb0cfd3047cb3a2\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "343af4ef512869695456a91519e73ed3c3d82101",
      "tree": "5545225fc812b6f6ad0aee784238a80f0a80667b",
      "parents": [
        "9c04c4cc038f924d9cb98798e1c07fe6017e85d0"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 02 10:52:20 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 02 10:52:20 2010 -0400"
      },
      "message": "MTP: Implement GetNumObjects\n\nChange-Id: Iccc3a445f9a1eab7bb76eddd567c6a3a8f155b2b\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "9c04c4cc038f924d9cb98798e1c07fe6017e85d0",
      "tree": "9cf6d88d73c6c16ca7712820c5586a77de1c1d17",
      "parents": [
        "99b4de92430fe42f9d1493c8a4c3d27de89d3549"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 02 10:37:41 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 02 10:37:41 2010 -0400"
      },
      "message": "Clean up MtpDatabase API.\n\nReturn MTP response codes instead of booleans for success or failure.\nRemove some unused code.\n\nChange-Id: I82ce80a4d7779233264e3caf139ebd0cece12f5c\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "4714b0766ecf48f09f39b4781a5c4deafc092d49",
      "tree": "c9d8f729e7b71a08b1d55cf1b167e0babe0a2acd",
      "parents": [
        "66e6c1c85c33194b1a6fc5077bd78b53a5fe9d03"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 12 08:49:01 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 12 14:01:22 2010 -0400"
      },
      "message": "Integrate host to device file transfer with the media provider.\n\nMTP file transfers happen in two stages.  The SendObjectInfo command sends\nsome information about the file and reserves an ObjectHandle for the new file.\nThe file transfer is then performed using the SendObject command.\n\nTo support this in the media provider, MtpDatabase.beginSendObject receives\nthe information from SendObjectInfo and creates an row for it in the MTP objects\ntable for the new file.  After the file transfer has completed, then\nMtpDatabase.endSendObject is called.  In endSendObject, we run the media scanner\non the new file, which will add a row to the images, audio, video\nor audio playlist table.\n\nTo avoid the media scanner creating a second row for the file in the MTP objects\ntable, we pass the ObjectHandle created in beginSendObject to the media scanner,\nwhich then passes it to the media provider via the content values when it\nperforms its insert.\n\nChange-Id: I1ebcc63d6bd4404b0d3a93c703a9d3c097381d3a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "7f53a190463274096155704276f3002c1620a364",
      "tree": "074ae70636a0169c5b07e15d1c8d64b99e564eba",
      "parents": [
        "723a540125f48aaf8a00b0cc5ed98fbbc01e5f14"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 09 10:45:22 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 09 11:07:55 2010 -0400"
      },
      "message": "Remove some scafolding and test code that is no longer worth maintaining.\n\nChange-Id: I9ee62d2463d8df1246a84774e8ac7e674778279a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "dda7e2b7378755637f188cca7c5ae854427a28f7",
      "tree": "52ccd14a2d8531bc1137d2ef1c8b38dce8622cfb",
      "parents": [
        "6506bd2be256cdebc69324714c5b26c767981046"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sat Jul 03 14:40:05 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 08 16:02:16 2010 -0400"
      },
      "message": "MTP: remove separate audio table from prototype MTP database\n\nChange-Id: I5e4b49b741a0a3c6ddf5afcbb20a0d7c9515c8ce\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "0250361b110267a139cc0865ff7d2f13b4d63bdf",
      "tree": "a2a5f01424d963c2b24d2fca8e2c59095ce404f8",
      "parents": [
        "fc20aab463f527ab3b0664986f0381a86b375884"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 02 14:03:31 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 02 14:14:06 2010 -0400"
      },
      "message": "MTP: Make MtpDatabase class abstract so we can have multiple implementations\n\nRename existing test database to MtpSqliteDatabase\nThis is the first step in transitioning to using the media provider database\n\nChange-Id: I5f36c854c6e76a79137c267b000a52ced803776c\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "335dd2be955607f2632eabc25045857f2cc8b674",
      "tree": "59ad1930089fecf0bd70a8a9dc03db151b5d0028",
      "parents": [
        "fceef46513db3507b413f604cea89e3c7f352663"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "mike@spruce.(none)",
        "time": "Wed May 19 10:33:39 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed May 19 12:38:03 2010 -0400"
      },
      "message": "More work on PTP host support.\n\nChange-Id: Ifbd5bd5efa3cdb750ae1a2aae38181457554d34d\nSigned-off-by: Mike Lockwood \u003cmike@spruce.(none)\u003e\n"
    },
    {
      "commit": "fceef46513db3507b413f604cea89e3c7f352663",
      "tree": "3155d044d58c5af47cd59663ae7dbc242e5d3102",
      "parents": [
        "15727818edf0c9bd88303656ccb43fccd2515007"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 14 15:35:17 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue May 18 16:12:38 2010 -0400"
      },
      "message": "MTP: More prototyping work:\n\nNew media scanner test program\nMedia scanner now cleans up after files that no longer exist\nSeparate database table for audio files\nExtract metadata from audio files with libstagefright\n\nChange-Id: I2bd0fe877836c741658e72fcfeb89c11be0d9b41\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "7850ef999740f214a1990a9c090d3f3865d435aa",
      "tree": "2320628e762e31b799c21f3a2d8177c271e47656",
      "parents": [
        "3c6d0f4c956494241c0c243b079f42049d832d7d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 14 10:10:36 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 14 10:10:36 2010 -0400"
      },
      "message": "Move MTP code to the android namespace\n\nChange-Id: I5da48038fd5e4cdeefaeba42cdc74eb588b3448d\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "16864bae0f51c32c456da2c43adf7a057c0c4882",
      "tree": "87eb11d62168084c9e63cdd2bf5fd5d35a573df7",
      "parents": [
        "328523627293790cbf485fa6095b38a5fdb2118e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue May 11 17:16:59 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 13 15:36:47 2010 -0400"
      },
      "message": "Checkpoint work on MTP and PTP investigation.\n\nThis change includes work in progress on a C++ library for both host and device\nMTP and PTP support.\nCurrently the makefile builds two test programs:\n\nmtptest - a command line test program that implements a small subset of device side MTP.\nRequires a kernel driver that has not been checked in yet.\n\nptptest - a host tool to test USB host support for detecting and communicating with\ndigital cameras over PTP.  Runs on Linux host.\n\nLater this will be reformulated as a native library that will be used in the media process.\n\nChange-Id: I81aab279975b600b59d99013ab97f9adf0b58da7\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    }
  ]
}
