)]}'
{
  "log": [
    {
      "commit": "c59ad085c9737e8d56328732be6864de302acae9",
      "tree": "b16037bb38c65f41fa3b9e69d1860ecb68103b97",
      "parents": [
        "5441abc147d97f722d35fe71e7fbf41ce48a4944"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Sep 10 14:47:36 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Sep 12 23:21:44 2010 -0400"
      },
      "message": "Media scanner support for tracking files of arbitrary type.\n\nThe native media scanner no longer filters files based on file extension.\nAudio, video, image and playlist files are handled as before, but non-media\nfiles are now inserted into the \"files\" table, which was originally added\nto support MTP.\n\nChange-Id: I9053218fb6d2671a3bb181405c34442b94678afc\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "9783ed8f85af3d7c72030098acfed7e1d6638349",
      "tree": "71456f82bd54f185c4a5d36febe650dc27878527",
      "parents": [
        "cc24f76ca5e8c987920d819c399c3eca11432f17"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 15:45:57 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 18:01:46 2010 -0700"
      },
      "message": "Exposing specific profile levels + hasProfile().\n\n- Exposing the specific resolution profile levels\n  QUALITY_{QCIF,CIF,480P,720P,1080P} and the new time lapse profiles\n  QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,CIF,480P,720P,1080P}\n- Unhiding the hasProfile() function used to test if a given profile exists.\n\nChange-Id: I5d8b9e1ba61718f304235e76d85244e428e68643\n"
    },
    {
      "commit": "1a02fabca518806222212bdc708b36a37a7c3925",
      "tree": "8ea619369c8c1da888189f9cb02c4e47114891ea",
      "parents": [
        "a0d472f114bb6a74005aaf61e91e3569ae061630",
        "8bb5603cc735315c8691dc9b7a81b4ad4d6e253e"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 15:04:17 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 10 15:04:17 2010 -0700"
      },
      "message": "Merge \"Adding hasProfile.\""
    },
    {
      "commit": "a0d472f114bb6a74005aaf61e91e3569ae061630",
      "tree": "49bd6d663b2a375dbd8ca2b280af9a5a902717da",
      "parents": [
        "275c732cd79a40617773636086b287901f8d4485",
        "c0a84782589eececdfa7e723e8aa0e572d0d79f5"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 14:26:45 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 10 14:26:45 2010 -0700"
      },
      "message": "Merge \"Added specific resolution and time lapse profiles.\""
    },
    {
      "commit": "8bb5603cc735315c8691dc9b7a81b4ad4d6e253e",
      "tree": "e1b026cd15a4bf8cba990adee7c12969a4e55bd6",
      "parents": [
        "c0a84782589eececdfa7e723e8aa0e572d0d79f5"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Thu Sep 09 16:25:08 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 14:22:11 2010 -0700"
      },
      "message": "Adding hasProfile.\n\n- Added hasProfile to CamcorderProfile and JNI.\n- Added hasCamcorderProfile to MediaProfiles.\n- using android.hardware.Camera.CAMERA_ID_DEFAULT for default camera\n  in get().\n\nChange-Id: Ib57bb49ae79492d7cbc0ec6c7b6efcbf74f80013\n"
    },
    {
      "commit": "c0a84782589eececdfa7e723e8aa0e572d0d79f5",
      "tree": "e1d1fa10c5696915e536bc603f7071d648f08e42",
      "parents": [
        "155e833a7a5fc3e193691324cf9326da1bc3289a"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Mon Sep 06 15:59:02 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 14:22:08 2010 -0700"
      },
      "message": "Added specific resolution and time lapse profiles.\n\n- Added enums QUALITY_{QCIF,480P,720P,1080P}\n  QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,480P,720P,1080P} in CamcorderProfile\n  and corresponding ones in MediaProfiles.\n- Added functions createDefaultCamcorderTimeLapseLowProfile,\n  createDefaultCamcorderTimeLapseHighProfile to set default values.\n- Moved javadoc for constants to the get() function.\n\nChange-Id: Ib8b3f8d29395dff77a397d1e6b44cfaf8c481d4d\n"
    },
    {
      "commit": "83750eaf5a3f38c243a9e7eb81d4b2421e3a0d88",
      "tree": "3e986eeeff4dd2f5d7cb9ddb3c90a714be495f2e",
      "parents": [
        "9f2d258645826c999a93a4206df157fec2e3b0f2"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 30 16:48:38 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Sep 03 14:32:42 2010 -0700"
      },
      "message": "Add the new Stagefright ANativeWindow OMX codec API.\n\nThis change defines the two OMX_SetParameter calls that enable OMX codecs to\ninteract with ANativeWindows.  It also adds the plumbing to the IOMX, OMX, and\nOMXNodeInstance classes to use these new APIs.\n\nThis is try 2 for this change, after reverting the first one because it broke\nthe build.\n\nChange-Id: I94249b72bdb5d5719360f03d7935fcca4ece5028\n"
    },
    {
      "commit": "9f2d258645826c999a93a4206df157fec2e3b0f2",
      "tree": "02958abbfd19bf49e1235955bd20431cdd3b878e",
      "parents": [
        "9dd4931cca8e4a2fcbcabf4eb7078648e1c029cd"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 14:32:35 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 14:32:35 2010 -0700"
      },
      "message": "Revert \"Merge \"Add the new Stagefright ANativeWindow OMX codec API.\"\"\n\nThis reverts commit 8a643b411e1802977f742709113ce01b06a18e12, reversing\nchanges made to 73ea9beaf8eb3d0027e78cbc0ac5e626c3f8deb4.\n"
    },
    {
      "commit": "9dd4931cca8e4a2fcbcabf4eb7078648e1c029cd",
      "tree": "df6ceb231b59e5ae6bc522863e0701d6f1b1d8e3",
      "parents": [
        "56f2c6e529bc62d55fc8baa7d1b52326307474d4",
        "559dc605bfe2deb73ad718e0d5c5dc55e27c45df"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 14:00:33 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 01 14:00:33 2010 -0700"
      },
      "message": "Merge \"Add the new Stagefright ANativeWindow OMX codec API.\""
    },
    {
      "commit": "559dc605bfe2deb73ad718e0d5c5dc55e27c45df",
      "tree": "c98ca8836231a2cb5332e67f866f38ab9c811f4e",
      "parents": [
        "53bfd693c45278bf71cb5e184ffd3e95d52e04d8"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 30 16:48:38 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 13:07:08 2010 -0700"
      },
      "message": "Add the new Stagefright ANativeWindow OMX codec API.\n\nThis change defines the two OMX_SetParameter calls that enable OMX codecs to\ninteract with ANativeWindows.  It also adds the plumbing to the IOMX, OMX, and\nOMXNodeInstance classes to use these new APIs.\n\nChange-Id: Ibfbf893dc3513db0b3d3221bec5708c77287cddc\n"
    },
    {
      "commit": "5d6aca5d86e86af3f8f597be573d4563d69ceb85",
      "tree": "88eb64d7aa763ab24c7eda54b0817740781d4bea",
      "parents": [
        "9c075bca0b75093ca0514a3c8f74d73c8e9e83fd"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Thu Aug 26 17:20:53 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Aug 31 10:38:49 2010 -0700"
      },
      "message": "Added setAuxiliaryOutputFile to MediaRecorder and JNI\n\nadded setAuxiliaryOutputFile to allow setting of an auxiliary output file.\nAlso added the JNI support.\n\nChange-Id: I8c3335192bd6f7fcbfdfc8552cfd0848f2ad2a5d\n"
    },
    {
      "commit": "6865ddb29fc7e7a14104d73c65b71074502bb6c7",
      "tree": "01097ef8ec82e9cc7fb409d33232b0d9bda568e9",
      "parents": [
        "d0e5b406dd0f86b01b3f550fbb894a7492454da2",
        "eebcf36cf2db2563af8ef479e01747321aa959e8"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 31 10:10:20 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 10:10:20 2010 -0700"
      },
      "message": "am 1577e629: am 12006013: fixedfft: Only includes cpu-features.h when __arm__ is defined.\n\nMerge commit \u00271577e629866b2700e31c9467478e05ebffcc69a1\u0027\n\n* commit \u00271577e629866b2700e31c9467478e05ebffcc69a1\u0027:\n  fixedfft: Only includes cpu-features.h when __arm__ is defined.\n"
    },
    {
      "commit": "eebcf36cf2db2563af8ef479e01747321aa959e8",
      "tree": "dd2134fbd52e09dfce2874cc59505d97fdac150a",
      "parents": [
        "d81ef83a493a27887b795fdf9ece391155779914",
        "5edae619a6ad7337a3d14b53f7665ff17ec3ee84"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Aug 30 22:06:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 30 22:06:39 2010 -0700"
      },
      "message": "am 12006013: fixedfft: Only includes cpu-features.h when __arm__ is defined.\n\nMerge commit \u002712006013cc2cd0a076855ed068f5f782b24631c3\u0027 into gingerbread-plus-aosp\n\n* commit \u002712006013cc2cd0a076855ed068f5f782b24631c3\u0027:\n  fixedfft: Only includes cpu-features.h when __arm__ is defined.\n"
    },
    {
      "commit": "5edae619a6ad7337a3d14b53f7665ff17ec3ee84",
      "tree": "8b798b2d81f41ef82b9c1eb701b0243b48e8e822",
      "parents": [
        "5d5f5dfcc16756fe80a7c46cff0949fce9d54fe9"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 31 12:56:01 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 31 12:56:01 2010 +0800"
      },
      "message": "fixedfft: Only includes cpu-features.h when __arm__ is defined.\n\nChange-Id: Ifb6c03b38eff3c94a507ceb5043fcc48b364c25c\n"
    },
    {
      "commit": "e7c0899a7b7549ea342af67e7ab525f81672cfa5",
      "tree": "cad1c4a45254d4261f17c2ca71faea19b14b4fd9",
      "parents": [
        "17c53d433cd83d6b7d77e80635d6d58e2f6f5b2e",
        "dd8b35d2f7911bb1e12010f143c5b8c1b621f2ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:41:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 25 10:41:55 2010 -0700"
      },
      "message": "am 74ede9e4: am 67b50606: Merge \"Fix the simulator build.\" into gingerbread\n\nMerge commit \u002774ede9e4fd3f5ab3c139abd95a22abf9f33c2d64\u0027\n\n* commit \u002774ede9e4fd3f5ab3c139abd95a22abf9f33c2d64\u0027:\n  Fix the simulator build.\n"
    },
    {
      "commit": "dd8b35d2f7911bb1e12010f143c5b8c1b621f2ed",
      "tree": "e77993106962eabf522259f9a23a0a421b1a5118",
      "parents": [
        "b00a1e3f7e415c72b6ff6d2073b5b78c0d39e0ee",
        "625981ec8417528cbea67c86dcbe32a9e79a79be"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:39:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 25 10:39:21 2010 -0700"
      },
      "message": "am 67b50606: Merge \"Fix the simulator build.\" into gingerbread\n\nMerge commit \u002767b506065e9fe3c56e3d1b47eedfa01170d574f9\u0027 into gingerbread-plus-aosp\n\n* commit \u002767b506065e9fe3c56e3d1b47eedfa01170d574f9\u0027:\n  Fix the simulator build.\n"
    },
    {
      "commit": "625981ec8417528cbea67c86dcbe32a9e79a79be",
      "tree": "1e76d0c94d1a34ebdfe57a6c2921b5a42c28481b",
      "parents": [
        "fce49325d807c278229a594c1cc866e21da0e155"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:00:53 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:00:53 2010 -0700"
      },
      "message": "Fix the simulator build.\n\nFixes the sim build broken by commit 58d3bd08107f44cba79938dd8430e69c0fda4202.\n\nChange-Id: I5a63623363d558783dc5254fdd322080cc2f3525\n"
    },
    {
      "commit": "ef6c8c0324be75dfac3d6a4025ec3b3a7ca23826",
      "tree": "d4eeed32146739c6ca3e03c723a146e13368d0d5",
      "parents": [
        "515c0a56b6fbcca18a08f0daac7be278dede46d0",
        "7be0434ce8d4139e9ca4b1f374153de0c75ac049"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 24 11:19:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 24 11:19:28 2010 -0700"
      },
      "message": "am a102871c: am b80e610b: Merge \"Visualizer: replace the FFT implementation with a faster one.\" into gingerbread\n\nMerge commit \u0027a102871c7cbb74ebddc53231a871145de61351b0\u0027\n\n* commit \u0027a102871c7cbb74ebddc53231a871145de61351b0\u0027:\n  Visualizer: replace the FFT implementation with a faster one.\n"
    },
    {
      "commit": "4b79168835965cf0fc41ebe2a367e22b4cb20d08",
      "tree": "d70a673d243fdc72171ecbcf51094554f947987a",
      "parents": [
        "82252a9a732c7325166c36589c1dfa9f2cb8ac04"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 10 16:37:53 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 14:31:30 2010 -0700"
      },
      "message": "Change the framework to use the new camera preview path.\n\nThis change makes the camera HAL interface take an ANativeWindow interface from\nwhich all the camera preview buffers will be allocated.  The framework code\nrunning in application processes now passes a Surface object rather than an\nISurface to the camera server via Binder when setting the preview surface.  The\ncamera server then forwards that Surface object (which implements the\nANativeWindow interface) to the camera HAL, which uses it to communicate with\nSurfaceFlinger to allocate the camera preview buffers.\n\nChange-Id: Ie438f721559cd7de5e4f848a26d96360dda07b5f\n"
    },
    {
      "commit": "5daeb129a2c2ba3d14ccd94af283b5f561c783ea",
      "tree": "c3e0f59fefcdb20b92e9a2fc5da59a7cf4b1464f",
      "parents": [
        "a0ced19fa96f26a25de708588a34ebfd452f250e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 16 08:49:37 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 23 12:30:24 2010 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 35cc68814a9537c31fde146e171e7b0bbdfe211e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Aug 16 08:48:42 2010 -0700\n\n    Only enable support for yuv to yuv conversion on passion, where it\u0027s available, use the slower yuv-\u003ergb565 path everywhere else.\n\ncommit d8ac5a8814103e60d11d2acf61997fc31a1dc58d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 13:56:44 2010 -0700\n\n    The software renderer takes over all rendering, converting from yuv to yuv if possible and rgb565 otherwise.\n\ncommit 684972074b74318bdcb826ed9b5b0864d2d2e273\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 09:34:35 2010 -0700\n\n    A first shot at supporting the new rendering APIs.\n\nChange-Id: Iea9b32856da46950501f1a700f616b5feac710fd\n"
    },
    {
      "commit": "7be0434ce8d4139e9ca4b1f374153de0c75ac049",
      "tree": "c9d9ff1108ae6f6f6197140add461abbe6d47df7",
      "parents": [
        "36d8ab8fdf183a2a025e93ba78aaed92c55d6586",
        "482482401095d5fc98f89b4a3ce43d41c00fffd7"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sun Aug 22 18:38:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Aug 22 18:38:29 2010 -0700"
      },
      "message": "am b80e610b: Merge \"Visualizer: replace the FFT implementation with a faster one.\" into gingerbread\n\nMerge commit \u0027b80e610b070c2cec98a228a8aec450dc24a5f90a\u0027 into gingerbread-plus-aosp\n\n* commit \u0027b80e610b070c2cec98a228a8aec450dc24a5f90a\u0027:\n  Visualizer: replace the FFT implementation with a faster one.\n"
    },
    {
      "commit": "dbd2b7e4ebfe7a586b1db4459cf6aa032a7f8719",
      "tree": "bc9a06e98f9142ff531a62892b0685f75040f685",
      "parents": [
        "e259531ce59ab1f31de5a23124b22536f6a5a767"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Aug 19 15:34:10 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Aug 19 16:05:32 2010 +0800"
      },
      "message": "Visualizer: replace the FFT implementation with a faster one.\n\nThis implementation uses fixed points instead of floating points. It\nis slightly inaccurate compared to the old one but still perfect for\nvisualization purpose. It runs 40% faster on passion, 5 times faster\non sholes, and of course 14 times faster on sapphire.\n\nChange-Id: I1e868417bcffda091becf106a7b941d02813faec\n"
    },
    {
      "commit": "4a3935898893f955403021fe41cf2bfa3a32dde2",
      "tree": "c5d7fc3e8a6d2962fcc977f1daea834f23b24588",
      "parents": [
        "e246a940426d418b99cf62c547c7a2093811f2fb",
        "f1a97e53a58f47afa17a9b0d3a5cc9abf7e5ed19"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 17 15:24:11 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 17 15:24:11 2010 -0700"
      },
      "message": "resolved conflicts for merge of 0b7bd95d to gingerbread-plus-aosp\n\nChange-Id: I55c1689c7d0737c943efec28d8164d6a5360621c\n"
    },
    {
      "commit": "f1a97e53a58f47afa17a9b0d3a5cc9abf7e5ed19",
      "tree": "3df09313917fb6d83fd44dc02260db9793efa755",
      "parents": [
        "01cff464978aa0f749f42650180b45ea56cb17de"
      ],
      "author": {
        "name": "Rene Bolldorf",
        "email": "xsecute@googlemail.com",
        "time": "Tue Aug 17 23:32:58 2010 +0200"
      },
      "committer": {
        "name": "Rene Bolldorf",
        "email": "xsecute@googlemail.com",
        "time": "Tue Aug 17 23:45:14 2010 +0200"
      },
      "message": "Fix compilation errors in libmedia, libstagefright.\n(invalid conversion from \u0027const char*\u0027 to \u0027char*\u0027)\n\nChange-Id: Idef85606b7cff629b2778ed8134c79c892af54c2\n"
    },
    {
      "commit": "2dac90da3ea5120b52844a6ee38c300301de5756",
      "tree": "e1f63e3ee3b057b935a9be9ebb4aaf985688821a",
      "parents": [
        "047be32ec88dd04a9aca23fa59773fe2eaccb8f8",
        "debd76c4a934c98a88850f0a50a30d3f01394eb7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 12 09:32:18 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 12 09:32:18 2010 -0700"
      },
      "message": "am 0386d04b: am 581581fe: Merge \"Fix all fd leaks in authoring engine\" into gingerbread\n\nMerge commit \u00270386d04b19619b03b6bce830010e11d31d3f8a5c\u0027\n\n* commit \u00270386d04b19619b03b6bce830010e11d31d3f8a5c\u0027:\n  Fix all fd leaks in authoring engine\n"
    },
    {
      "commit": "25d83125cee222993673d3ba261ae1186bcad8c2",
      "tree": "ff9cb1abe9343695635b261a2c24906baba9794f",
      "parents": [
        "eaf0e0786c4c21d6c63d8f1f4515cb2a5311493b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 11 17:12:39 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 11 17:18:30 2010 -0700"
      },
      "message": "Fix all fd leaks in authoring engine\n\nChange-Id: I17798543f9dd41cc8bef6f6086e66932f9f97be8\n"
    },
    {
      "commit": "bc417c0531332635df9525df4683274a08fb987f",
      "tree": "31bd0fa84c97515e46abddc36f2884fc2fd3a338",
      "parents": [
        "2bb8c0e7c4e4093f4161ff5e98cef51c87193859",
        "bcc4fdd9de1b0f6b645c663f98bda838bd41242d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 09 20:00:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 09 20:00:11 2010 -0700"
      },
      "message": "am 1ece7d68: am 2a6b80bc: Fixed several audio effects problems.\n\nMerge commit \u00271ece7d6873027068a3e7b055597045e9387b217c\u0027\n\n* commit \u00271ece7d6873027068a3e7b055597045e9387b217c\u0027:\n  Fixed several audio effects problems.\n"
    },
    {
      "commit": "8569f0d3bf4c6787707e348a7cf73b9c4199cb32",
      "tree": "6e2ce2c28fe5fba3b8cafd9375244bc6f658632d",
      "parents": [
        "8bf59e735760af0b6a85747fd90bf8cf1e5388d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 23:43:43 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 09 05:48:20 2010 -0700"
      },
      "message": "Fixed several audio effects problems.\n\n- Fixed constant inversions in AudioEffect.java\n- Do not return error when enabling an already enabled effect\n- Update cached effect state in native AudioEffect class when effect is enabled/disabled by command() method\n- Remove click when restarting effect during disable sequence\n- Fixed problem in master mute management when volume control is delegated to effect.\n\nChange-Id: I6df4ce9fcc54fdc7345df858f639d20d802d6712\n"
    },
    {
      "commit": "982a93173bc84f005172152d823cbb59dfcbeb12",
      "tree": "2ef94049c4daadc6b4da5a3d6c93c04d99d08d05",
      "parents": [
        "aa68b49a53a874a1813e65752663f19d18149e2c",
        "347d3c1dabd7ae9c998a024c685de2001e0ff369"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 05 11:46:04 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 05 11:46:04 2010 -0700"
      },
      "message": "am 1f513d88: am c17f35dd: Merge \"Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation.\" into gingerbread\n\nMerge commit \u00271f513d8821670a33d6361ea521b6756163a3f9bf\u0027\n\n* commit \u00271f513d8821670a33d6361ea521b6756163a3f9bf\u0027:\n  Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation.\n"
    },
    {
      "commit": "aa68b49a53a874a1813e65752663f19d18149e2c",
      "tree": "b906d41ef13bdcb8ca79b6aee5d7458fcc273e33",
      "parents": [
        "154898f4e6e3f898eacfd699a45f611b0c1b7c9a",
        "b9ad87ca9a18e28436e8634e95d9715b32b07faf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 05 11:43:45 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 05 11:43:45 2010 -0700"
      },
      "message": "am eec3fca6: am 7629e8dd: Merge \"Fix issue 2876124.\" into gingerbread\n\nMerge commit \u0027eec3fca6277296f354ee2b1af0f4b3dceddb3067\u0027\n\n* commit \u0027eec3fca6277296f354ee2b1af0f4b3dceddb3067\u0027:\n  Fix issue 2876124.\n"
    },
    {
      "commit": "39ddf8e0f18766f7ba1e3246b774aa6ebd93eea8",
      "tree": "87f5d0d68c1779f113843e939c41440ff6b00389",
      "parents": [
        "610959a52fe22a88e50d158f5f5f492fee4f1921"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 04 10:14:30 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 04 11:49:24 2010 -0700"
      },
      "message": "Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation.\n\nChange-Id: I95b8dd487061add9bade15749e563b01cd99d9a6\n"
    },
    {
      "commit": "3b26844e60f8487388e7e62709faf0dada86e7e1",
      "tree": "2a6ed3d8b121bfb1dd5bd443ae46e268dfbfd438",
      "parents": [
        "a5740924c0a71871f2697139effd43b137750597"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 03 07:49:49 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 04 05:38:56 2010 -0700"
      },
      "message": "Fix issue 2876124.\n\nAllow calls to MediaPlayer::notify() in idle state to signal errors from JNI.\n\nChange-Id: I1515fe69766f0a926b76e15c4971317da2acd6a0\n"
    },
    {
      "commit": "9da2070b6d6d20550de7da61478c325f0928d020",
      "tree": "f1548891fab33ca03923f70cf25a2ffeab50be82",
      "parents": [
        "3be9523784cc4038f601e510faee595117cdacb3",
        "efe6039f71e9bac2138003b3287e94a7ab7e5c55"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "message": "resolved conflicts for merge of 27eecb70 to gingerbread\n\nChange-Id: If064f2f4950fc1a4ff38e6927fe2120af76b26f1\n"
    },
    {
      "commit": "bc286dce1af6670824fba4167e0750b631168d72",
      "tree": "f6d30ddc5cee2a6562bb510d7bacf20806b9f9bb",
      "parents": [
        "c4e47d1e81c4e4403663cb911e98dbf3ada9942c",
        "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:54:42 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:54:42 2010 -0700"
      },
      "message": "am 0c51c98f: am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00270c51c98fd9edf0bdc8f2c567470fc332b5ae3adf\u0027\n\n* commit \u00270c51c98fd9edf0bdc8f2c567470fc332b5ae3adf\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06",
      "tree": "7c3ae3eecc16c50c794aff141a89b14942117364",
      "parents": [
        "0895d83cb62d269468e64a00e9e89fa7697f2f84",
        "01cff464978aa0f749f42650180b45ea56cb17de"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "message": "am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027 into gingerbread-plus-aosp\n\n* commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "68335fdd6e9c1d622384612605d6952503cb7fd0",
      "tree": "94e9982f93be7339bde4d8b9336f9968f5509efd",
      "parents": [
        "e32283b15bbd60179424bdc740a4e4932da4c61e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:41:35 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "01cff464978aa0f749f42650180b45ea56cb17de",
      "tree": "a31c8e61281d0bbcbec93d0ab05368f73ab85994",
      "parents": [
        "ccaa41429d2afc47f0fb828a0146a1b1936188fe"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "ed0de3c123aaa86147993721d4794648a65aab75",
      "tree": "c60dc3ffbc36f10adfe01d864e22f1d5b87443d4",
      "parents": [
        "da90dff17b6ce79d0a7d8ab2dbe2aa69cd1c11aa",
        "e99819aa8cc397d02255b59b91c6e6850afee3a7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 07:53:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 07:53:24 2010 -0700"
      },
      "message": "am 6fa88882: am 62d83a0c: Merge \"Audio effects: modified command() parameter types.\" into gingerbread\n\nMerge commit \u00276fa8888254deb4961dc64c6ac03dc103c9cd8bcf\u0027\n\n* commit \u00276fa8888254deb4961dc64c6ac03dc103c9cd8bcf\u0027:\n  Audio effects: modified command() parameter types.\n"
    },
    {
      "commit": "25f4395b932fa9859a6e91ba77c5d20d009da64a",
      "tree": "01098a211d6c782708b840c28ebd396a6eb72a7b",
      "parents": [
        "23e1de74359f4bb1763aef0adfebe073122b032c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:40:18 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:49:21 2010 -0700"
      },
      "message": "Audio effects: modified command() parameter types.\n\nThe type of the cmd, cmdSize and *pReplySize parameters of the effect control interface command()\nfunction have been modified from int to uint32_t. This is more consistent with their role.\n\nChange-Id: I84d289fc262d6753747910f06f485597dfee6591\n"
    },
    {
      "commit": "71ff94cb52874e42dede3c6bc4b86757b72cf0b1",
      "tree": "dc47a5d309669d92854762df8fdc948668228ebf",
      "parents": [
        "932e0a11d74d5e236ccef9ee314442385c3d4e9d",
        "552f4053c194770a5c9b37825f222031548dc5a8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 09:52:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 21 09:52:17 2010 -0700"
      },
      "message": "am 34161132: am 7070b365: Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nMerge commit \u002734161132030254bac7dd64c9713832e2f961a061\u0027\n\n* commit \u002734161132030254bac7dd64c9713832e2f961a061\u0027:\n  Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n"
    },
    {
      "commit": "2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1",
      "tree": "ce966d62f6fbb94178763ec53760f6961ffffd58",
      "parents": [
        "3108231d90e8aa324923fd8864ca2477948c5d25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 07:43:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 06:28:01 2010 -0700"
      },
      "message": "Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nAdded methods to AudioTrack and MediaPlayer java classes to enable use of\nauxiliary audio effects. The effect can be attached and detached by specifying its\nID and the send level controlled.\n\nChange-Id: Ie74ff54a453096a742688476f612ce355543b6f3\n"
    },
    {
      "commit": "8184a5734690b30f4de0f6b6c16daf1e089f67df",
      "tree": "e3fbbdace9d5b0193130827d77558ad9db51a536",
      "parents": [
        "7a42770f47225483a885b168d05e81b6a81189c0",
        "45239b5fa6bf75d76bd5e603b443bd68502345f5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 13:37:19 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 13:37:19 2010 -0700"
      },
      "message": "resolved conflicts for merge of dd206093 to master\n\nChange-Id: I21dd2321a4839d034d49092baccbf40986f17dae\n"
    },
    {
      "commit": "de070137f11d346fba77605bd76a44c040a618fc",
      "tree": "ba741240b391a66899514061ccda38254e539013",
      "parents": [
        "f997cabca292d70d078ae828e21c28e6df62995f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 04:45:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 10:31:57 2010 -0700"
      },
      "message": "Audio policy manager changes for audio effects\n\nAdded methods for audio effects management by audio policy manager.\n- control of total CPU load and memory used by effect engines\n- selection of output stream for global effects\n- added audio session id in parameter list for startOutput() and stopOutput().\nthis is not used in default audio policy manager implementation.\n\nModifications of audio effect framework in AudioFlinger to allow moving and reconfiguring\neffect engines from one output mixer thread to another when audio tracks in the same session\nare moved or when requested by audio policy manager.\nAlso fixed mutex deadlock problem with effect chains locks.\n\nChange-Id: Ida43484b06e9b890d6b9e53c13958d042720ebdb\n"
    },
    {
      "commit": "4e2ffa400b82559cab2c5717c8dcdff393d334a9",
      "tree": "87f5e496695e2d9a2f411916b7e4b6b66317067e",
      "parents": [
        "8065e2056073808716db32136d7acfd50eeab924"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 15 14:58:25 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 15 15:02:52 2010 -0400"
      },
      "message": "Fixes for simulator build on lucid\n\nstrchr and strrchr now return const char* instead of char*\n\nChange-Id: I5ca831b8951af7e6306eb9d9d6f78ed2ec13d649\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "66e6c1c85c33194b1a6fc5077bd78b53a5fe9d03",
      "tree": "158c3288b8488031ef0803bd01c6cc998bd31fb6",
      "parents": [
        "31e179a6f1c154f5b8c80c0fb9451703c6839c9c",
        "b2761bde67a46a0375e6b606f3ece1af83834e43"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:34:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 09 12:34:03 2010 -0700"
      },
      "message": "am bd3f8b71: am e7b790f1: Merge \"Fix swap of sessionId and output in audio effect API.\" into gingerbread\n\nMerge commit \u0027bd3f8b711643a172703537e34a0fa7c21c5b953f\u0027\n\n* commit \u0027bd3f8b711643a172703537e34a0fa7c21c5b953f\u0027:\n  Fix swap of sessionId and output in audio effect API.\n"
    },
    {
      "commit": "42a050ff9636b79e4b91297cc41028ffd62240d5",
      "tree": "b21b32fc96b50f197579ee43ec8bee95d1c0bcf4",
      "parents": [
        "6c5c25fae5aa68a52c6fa75649dd559a9ca98932"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:11:49 2010 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:11:49 2010 -0700"
      },
      "message": "Fix swap of sessionId and output in audio effect API.\n\nChange-Id: Idc93415efef92087507401e50cfb235a6f1f7ed7\n"
    },
    {
      "commit": "6506bd2be256cdebc69324714c5b26c767981046",
      "tree": "68a4a39aafbe9aaa9d05d30735651c9a0087d10e",
      "parents": [
        "bf21177ccede8f01c0da0bd53392a289a5a84462",
        "14eb28444b40d76d490a184a27acbc0de95534b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 20:55:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 20:55:40 2010 -0700"
      },
      "message": "am b91881fd: am dacabf97: Merge \"Added Visualizer effect.\" into gingerbread\n\nMerge commit \u0027b91881fdd1608cc922f105ec552b5505da1fecb9\u0027\n\n* commit \u0027b91881fdd1608cc922f105ec552b5505da1fecb9\u0027:\n  Added Visualizer effect.\n"
    },
    {
      "commit": "6c5c25fae5aa68a52c6fa75649dd559a9ca98932",
      "tree": "825ab3a8deb612c3eb8daae783670d1273c64521",
      "parents": [
        "8cafde196d36ab207f35fed89b9c1b9d468abb58",
        "da7581b7b61b84f15e8d671c86fd117c322b009e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "message": "Merge \"Added Visualizer effect.\" into gingerbread"
    },
    {
      "commit": "da7581b7b61b84f15e8d671c86fd117c322b009e",
      "tree": "61fb39ca1eaa0a5b8a71d70683f32d238a8e74e7",
      "parents": [
        "215381ea729086b8359b7f59bdc2bd7cf55a0c45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 02 08:12:41 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 11:00:28 2010 -0700"
      },
      "message": "Added Visualizer effect.\n\nThe visualizer enables application to retrieve part of the currently playing audio for visualization purpose.\nIt is not an audio recording interface and only returns partial and low quality audio content as a waveform or\na frequency representation (FFT).\n\nRemoved temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.\n\nThis commit also includes a change in AudioEffect class:\n - the enable()/disable() methods have been replaced bya more standard setEnabled() method.\n - some fixes in javadoc\n\nChange-Id: Id092a1340e9e38dae68646ade7be054e3a36980e\n"
    },
    {
      "commit": "c143929b9f40112bb75eefbeafd6a56515868c9d",
      "tree": "29c294c04c659a673978b771b42535bdf762c74f",
      "parents": [
        "cff0ef94eccba9ce2f72380a238793f1702474b7",
        "b0c62ef4ca6f30f3332e014f4fa7dc6c273c3e4d"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jul 01 11:55:27 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 01 11:55:27 2010 -0700"
      },
      "message": "am bda93c4c: am 09b90057: Add multiple camera support for in MediaProfiles.\n\nMerge commit \u0027bda93c4cb94b47c86251d22df16e46a514c191ef\u0027\n\n* commit \u0027bda93c4cb94b47c86251d22df16e46a514c191ef\u0027:\n  Add multiple camera support for in MediaProfiles.\n"
    },
    {
      "commit": "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0",
      "tree": "add045741d098b9832bda550cfd9474a758b3db5",
      "parents": [
        "1c8ed2e906576fd8d7fa03f577bdec518cbe13d7"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jun 22 20:50:55 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jul 01 10:57:15 2010 +0800"
      },
      "message": "Add multiple camera support for in MediaProfiles.\n\nChange-Id: Ie89568a0f5f5fd08ede77e33f9a559215d6bed9a\n"
    },
    {
      "commit": "1c645f22ab7e56a04659c09ffa2ca2de20650ddc",
      "tree": "39b3ce1f41b80775e7fcdf27652d95a74d089b95",
      "parents": [
        "1eff1b9a7fcf7044cd076c7d66f05bd1154999b7",
        "5ca9632960ef25374ca2df4c90213c19e5db18b0"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 28 16:28:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 28 16:28:11 2010 -0700"
      },
      "message": "am c2c59f69: am 2a76b316: Merge \"Separate MediaRecorderClient with MediaPlayerClient\" into gingerbread\n\nMerge commit \u0027c2c59f690deafe34c7701b01b612fd777cee8d4b\u0027\n\n* commit \u0027c2c59f690deafe34c7701b01b612fd777cee8d4b\u0027:\n  Separate MediaRecorderClient with MediaPlayerClient\n"
    },
    {
      "commit": "37047fceba836f341d0108beed0991b0f8dfc543",
      "tree": "6b60725c1d6af1ca91a46961bbecff9b996d07c2",
      "parents": [
        "93d6b102a13afa23bfa80d74c399d93d542e6ad6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 17:06:47 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 28 15:32:26 2010 -0700"
      },
      "message": "Separate MediaRecorderClient with MediaPlayerClient\n\n- An alternative would be to define a common base class that\n  both MediaRecorderClient and MediaPlayerClient can derive.\n  But since the common code, onTransact() and notify() uses\n  some Binder code, having a common base class may not gain\n  us too much in terms of code reuse.\n\nChange-Id: Ibc06720278ad173fceacff3d267b7060856c6316\n"
    },
    {
      "commit": "a93b488457b8d7dd17a1d80c82a9accafcdd8bad",
      "tree": "8e258fd14ef2938d71a12b795409800f847d051c",
      "parents": [
        "fd6440c0aca0659ce2c5220ecded707dfd4db1bc",
        "0070c924a2050b6683d6d170602201cc5f83a1a6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 14:22:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 25 14:22:39 2010 -0700"
      },
      "message": "am cdf1357b: am 8e103da1: Merge \"Various fixes and improvements in audio effects implementation\" into gingerbread\n\nMerge commit \u0027cdf1357b6e0152280dcd611b5f096db4887d8126\u0027\n\n* commit \u0027cdf1357b6e0152280dcd611b5f096db4887d8126\u0027:\n  Various fixes and improvements in audio effects implementation\n"
    },
    {
      "commit": "ffe9c25ce85e1af55d58ec025adc6367d70db7e8",
      "tree": "664f0a33a690b4d020417a9ecc81b32f696d0f0e",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 23 17:38:20 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 11:59:35 2010 -0700"
      },
      "message": "Various fixes and improvements in audio effects implementation\n\nEffect API:\n- Use different definitions for audio device, channels, formats... in AudioSystem and EffectApi:\n  Removed media/AudioCommon.h file created for initial version of EffectApi\n- Indicate audio session and output ID to effect library when calling EffectCreate(). Session ID can be useful to optimize\nthe implementation of effect chains in the same audio session. Output ID can be used for effects implemented in audio hardware.\n- Renamed EffectQueryNext() function to EffectQueryEffect() and changed operating mode:\n  now an index is passed for the queried effect instead of implicitly querying the next one.\n- Added CPU load and memory usage indication in effects descriptor\n- Added flags and commands to indicate changes in audio mode (ring tone, in call...) to effect engine\n- Added flag to indicate hardware accelerated effect implementation.\n- Renamed EffectFactoryApi.h to EffectsFactoryApi.h for consistency with EffectsFactory.c/h\n\nEffect libraries:\n- Reflected changes in Effect API\n- Several fixes in reverb implementation\n- Added build option TEST_EFFECT_LIBRARIES in makefile to prepare integration of actual effect library.\n- Replaced pointer by integer identifier for library handle returned by effects factory\n\nAudio effect framework:\n- Added support for audio session -1 in preparation of output stage effects configuration.\n- Reflected changes in Effect API\n- Removed volume ramp up/down when effect is inserted/removed: this has to be taken care of by effect engines.\n- Added some overflow verification on indexes used for deferred parameter updates via shared memory\n- Added hardcoded CPU and memory limit check when creating a new effect instance\n\nChange-Id: I43fee5182ee201384ea3479af6d0acb95092901d\n"
    },
    {
      "commit": "ed914577e770697e23884886787e333588eb4c61",
      "tree": "7c342abf7d3e559394f3870ca5dd300a4b703659",
      "parents": [
        "c08d805c8d7ba0da56988382f7e9b70b98468636",
        "d255a4e04d06796441ae234e8f3a8277578b3446"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 13:23:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 23 13:23:24 2010 -0700"
      },
      "message": "am 03e90f7e: am 58e9402b: Merge \"Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp\" into gingerbread\n\nMerge commit \u002703e90f7eeb032c981fc2952aa33f6ba1fae20d97\u0027\n\n* commit \u002703e90f7eeb032c981fc2952aa33f6ba1fae20d97\u0027:\n  Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp\n"
    },
    {
      "commit": "1a97e853e8f9fa3f4f47304d0e2e9118887e6051",
      "tree": "095ab2ff065d18c11dd4b578ce464e5ab29c3489",
      "parents": [
        "4ae22516962e6d6727fc3e9ce646441708ed60a9",
        "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 23 12:41:23 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 23 12:41:23 2010 -0700"
      },
      "message": "am 845f5414: am 2c2ce8e5: Merge \"Added support for audio sessions in MediaPlayer and AudioTrack.\" into gingerbread\n\nMerge commit \u0027845f541454d1fa9f328c0b0bf79acf2fba363177\u0027\n\n* commit \u0027845f541454d1fa9f328c0b0bf79acf2fba363177\u0027:\n  Added support for audio sessions in MediaPlayer and AudioTrack.\n"
    },
    {
      "commit": "4ae22516962e6d6727fc3e9ce646441708ed60a9",
      "tree": "7736f3e29c9e42603d36c5dc15c977d38ec797c9",
      "parents": [
        "735e25176efebe9cb54e5d426ae3ba02bf9ccd45",
        "41b2d090b23889c56bf0a889a8c9c2fb934015e8"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 23 12:40:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 23 12:40:34 2010 -0700"
      },
      "message": "am da9269af: am 3238302b: Merge \"media: add AudioRecord::getMinFrameCount().\" into gingerbread\n\nMerge commit \u0027da9269af5e94e25c142c519429aa77eb40f68e58\u0027\n\n* commit \u0027da9269af5e94e25c142c519429aa77eb40f68e58\u0027:\n  media: add AudioRecord::getMinFrameCount().\n"
    },
    {
      "commit": "1629399bb578fc176613ccaf134d1be6e3047638",
      "tree": "7542a324f41776cc25f3d9e166ddb73dbb340b37",
      "parents": [
        "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 11:31:17 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 11:33:43 2010 -0700"
      },
      "message": "Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp\n\nChange-Id: I863651619f84b2b66e9a926ce1fef8ce6a53a42d\nrelated-to-bug: 2639116\n"
    },
    {
      "commit": "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5",
      "tree": "44ad049a0b4cc00150f502e296dfb82d257f6913",
      "parents": [
        "41b2d090b23889c56bf0a889a8c9c2fb934015e8",
        "a514bdb58b5de4986679f72b7204b4764f7a2778"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 18:29:57 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 18:29:57 2010 -0700"
      },
      "message": "Merge \"Added support for audio sessions in MediaPlayer and AudioTrack.\" into gingerbread"
    },
    {
      "commit": "a514bdb58b5de4986679f72b7204b4764f7a2778",
      "tree": "84b1ebf0c2b500bfb4995e373f8fee5b63b6c9fd",
      "parents": [
        "58ae9c530247668f8af36e30d228c716c226b3d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 21 09:27:30 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 17:14:04 2010 -0700"
      },
      "message": "Added support for audio sessions in MediaPlayer and AudioTrack.\n\nAudio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.\n\nChange-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640\n"
    },
    {
      "commit": "15304d601cbf83be6519ca53e1a26b97d50d0192",
      "tree": "41885f15dd2e97b841b10e094e8de84ac190c754",
      "parents": [
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jun 22 08:01:13 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 23 08:01:04 2010 +0800"
      },
      "message": "media: add AudioRecord::getMinFrameCount().\n\nChange-Id: I952071ab10aa49aa96b727d157b68470d69fff3d\n"
    },
    {
      "commit": "9e6f25df13d5242d83fda224f8cc0b2bf22a727c",
      "tree": "be6ef99073fe24562e170293052d05d7d3dfd92d",
      "parents": [
        "e40c0333c6c4f7b618f5160bad5cd55aef0ea521",
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 21 10:16:45 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 21 10:16:45 2010 -0700"
      },
      "message": "am d9e9132e: am 2ce999fc: am bd240c27: media: add AudioTrack::getMinFrameCount().\n\nMerge commit \u0027d9e9132eeb2c02feb812f21a5cecb844b5b39d9d\u0027\n\n* commit \u0027d9e9132eeb2c02feb812f21a5cecb844b5b39d9d\u0027:\n  media: add AudioTrack::getMinFrameCount().\n"
    },
    {
      "commit": "33005a932c60a0780fe9b7307d5988df3d9f6c26",
      "tree": "2519156995c4fabaae1dfdaa091e70b973a41547",
      "parents": [
        "1616fa4a567bae928dfd28ebf1ec45cd701f27f1"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 16 06:33:13 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 21 09:51:18 2010 +0800"
      },
      "message": "media: add AudioTrack::getMinFrameCount().\n\nChange-Id: If15162583d1d16d89f59be0793106afe77417f35\n"
    },
    {
      "commit": "ef04e8f230e7ef5dece1cc4e73cd109c69905418",
      "tree": "bf01ceb455b1d0c426de2a11189c5eb4724cec67",
      "parents": [
        "c42aa12f73edf79bc9cb0dbf6b74a7f1af11c683"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jun 14 22:57:22 2010 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jun 14 22:57:22 2010 -0700"
      },
      "message": "MediaScanner: Fix handling of files with dirent.d_type \u003d\u003d DT_UNKNOWN\n\nThe previous code was calling stat() on the parent directory rather than the actual file.\n\nChange-Id: If64552cb37552c77618a81ae4333307a018efe13\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "366c84d307e128a00a5ba0234cad7759a0b3d57c",
      "tree": "1733709be7f4645b1eab8d4d22de223cdd4dd207",
      "parents": [
        "5f7a969ae673c49b78db42f6fcd0d2da4c377540",
        "582c2c3ddabbb3950d19c7ba1124c69856f7eac3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 14 09:10:32 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 14 09:10:32 2010 -0700"
      },
      "message": "am 184a3ff6: am e0219539: am 01f7ac64: Merge \"Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\" into kraken\n\nMerge commit \u0027184a3ff64ba71e7e860b70b9a836c0132b447138\u0027\n\n* commit \u0027184a3ff64ba71e7e860b70b9a836c0132b447138\u0027:\n  Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\n"
    },
    {
      "commit": "801a1186eb1d2ce195b15222701865932e08f3dc",
      "tree": "1a08ae38cebaddbe6992807f124e6d44c47aeea2",
      "parents": [
        "e71d10e7ad55ccbcb0756c007caef1c959090384"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 09 00:17:29 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 11 06:26:31 2010 -0700"
      },
      "message": "Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\n\nAdded AudioEffect C++ class. AudioEffect is the base class for effect specific implementations,\nOpenSL ES effect interfaces and audio effect JNI.\n\nAdded the AudioEffect JNI and AudioEffect JAVA class. AudioEffect is the base class\nto implement more specific JAVA classes to control audio effects from JAVA applications.\n\nChange-Id: If300a1b708f2e6605891261e67bfb4f8330a4624\n"
    },
    {
      "commit": "fc499ca2babff1315d0188ddfbe0268fe5d5e8ae",
      "tree": "03f9ea23475d6d2ab80b1be67e050c129d473c2e",
      "parents": [
        "72b577e1da38b9cd5d6f70a1012db4448395188c",
        "dea96b8d54daf9ef76beb7e72e69c9f1c923c1d8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 04 00:18:07 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 04 00:18:07 2010 -0700"
      },
      "message": "am 030a1553: am 2ea200c5: Merge \"Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\" into kraken\n"
    },
    {
      "commit": "be916aa1267e2e6b1c148f51d11bcbbc79cb864c",
      "tree": "7e2be6182cde7d023ae9afec28463d69d231d7bc",
      "parents": [
        "c282e3eee921453fc9188705b4879d6289b71f9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 01 23:49:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 03 03:21:53 2010 -0700"
      },
      "message": "Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\n\nFirst drop of audio framework modifications for audio effects support.\n\n- AudioTrack/AudioRecord:\nAdded support for auxiliary effects in AudioTrack\nAdded support for audio sessions\nFixed left right channel inversion in setVolume()\n\n- IAudioFlinger:\nAdded interface methods for effect enumeraiton and instantiation\nAdded support for audio sessions.\n\n- IAudioTrack:\nAdded method to attach auxiliary effect.\n\n- AudioFlinger\nCreated new classes to control effect engines in effect library and manage effect connections to tracks or\noutput mix:\n  EffectModule: wrapper object controlling the effect engine implementation in the effect library. There\n\tis one EffectModule per instance of an effect in a given audio session\n  EffectChain: group of effects associated to one audio session. There is one EffectChain per audio session.\n\tEffectChain for session 0 is for output mix effects, other chains are attached to audio tracks\n\twith same session ID. Each chain contains a variable number of EffectModules\n  EffectHandle: implements the IEffect interface. There is one EffectHandle object for each application\n\tcontrolling (or using) an effect module. THe EffectModule maintians a list of EffectHandles.\n\nAdded support for effect modules and effect chains creation in PlaybackThread.\nmodified mixer thread loop to allow track volume control by effect modules and call effect processing.\n\n-AudioMixer\nEach track now specifies its output buffer used by mixer for accumulation\nModified mixer process functions to process tracks by groups of tracks with same buffer\nModified track process functions to support accumulation to auxiliary channel\n\nChange-Id: I26d5f7c9e070a89bdd383e1a659f8b7ca150379c\n"
    },
    {
      "commit": "a47e14e20e2c97955ac116b4f229316fe9c88e53",
      "tree": "5a8e228ab6aed3e40aecc2b6f8efabf7459f89e3",
      "parents": [
        "3415c34b3a3224d042761d646ef0bdd7e8af0a1b",
        "2dadcda205d995f7094b7569b076921872505143"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 26 22:47:50 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 26 22:47:50 2010 -0700"
      },
      "message": "Merge \"Fix issue 2712130: Sholes: problem when playing audio while recording over bluetooth SCO.\""
    },
    {
      "commit": "2dadcda205d995f7094b7569b076921872505143",
      "tree": "311111fe1b237bb14176a395bcbdc9434478af77",
      "parents": [
        "66429841d61504ba173a0b4296ee567a89b64411"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 26 00:55:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 26 01:13:36 2010 -0700"
      },
      "message": "Fix issue 2712130: Sholes: problem when playing audio while recording over bluetooth SCO.\n\nThe problem is that when an input stream is opened for record over bluetooth SCO, the kernel\nmono audio device should be opened in RW mode to allow further use of this same device by an output stream\nalso routed to bluetooth SCO.\nThis does not happen because of a bug in AudioSystem::isBluetoothScoDevice() that does not return true\nwhen the device is DEVICE_IN_BLUETOOTH_SCO_HEADSET (input device for blurtooth SCO).\n\nChange-Id: I9100e972931d8142295c7d64ec06e31304407586\n"
    },
    {
      "commit": "d71a1be83ff31cdb6599c351f9832cefc8d447ba",
      "tree": "e4bd66e6f5f7386067622eafa8c8cea56c6f4797",
      "parents": [
        "9bca89d50d0c51d8e3f3e74d610b7d9a2dc98ed3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 07:47:50 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 24 23:33:42 2010 -0700"
      },
      "message": "Fix issue 2667797: [Audio Effect Framework] new base class and binder interfaces for effect control.\n\nAdded IEffect and IEffectClient binder interfaces to exchange effect module control\nand status information between application and media server processes.\n\nChange-Id: I10e8e894898e52ed9956a765d0ef7075eb2593af\n"
    },
    {
      "commit": "d1b449aad6c087a69f5ec66b7facb2845b73f1cb",
      "tree": "b16f7d28fdac76c90d66be56161116fe09822992",
      "parents": [
        "ae77ffa16bda593fb3751e41d45327d867f3c8e1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 03:26:45 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 17 02:23:47 2010 -0700"
      },
      "message": "Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.\n\nThe problem is due to a too big difference between the buffer size used at the hardware interface and at the A2DP interface.\nWhen no resampling occurs we don\u0027t notice problems but the timing is very tight. As soon as resampling is activated, the AudioTrack underruns.\nThis is because the AudioTrack buffers are not resized when moving the AudioTrack from hardware to A2DP output.\nThe AudioTrack buffers are calculated based on a hardware output buffer size of 3072 bytes. Which is much less than the A2DP output buffer size (10240).\n\nThe solution consists in creating new tracks with new buffers in AudioFlinger when the A2DP output is opened\ninstead of just transfering active tracks from hardware output mixer thread to the new A2DP output mixer thread.\nTo avoid synchronization issues between mixer threads and client processes, this is done by invalidating tracks\nby setting a flag in their control block and having AudioTrack release the handle on this track (IAudioTrack)\nand create a new IAudioTrack when this flag is detected next time obtainBuffer() or start() is executed.\n\nAudioFlinger modifications:\n- invalidate the tracks when setStreamOutput() is called\n- make sure that notifications of output opening/closing and change of stream type to output mapping are sent synchronously to client process.\nThis is necessary so that AudioSystem has the new stream to output mapping when the AudioTrack detects the invalidate flag in the client process.\nPreviously their were sent when the corresponding thread loop was executed.\n\nAudioTrack modifications:\n- move frame count calculation and verification from set() to createTrack() so that is is updated every time a new IAudioTrack is created.\n- detect track invalidate flag in obtainBuffer() and start() and create a new IAudioTrack.\n\nAudioTrackShared modifications\n- group all flags (out, flowControlFlag, forceReady...) into a single bit filed to save space.\n\nChange-Id: I9ac26b6192230627d35084e1449640caaf7d56ee\n"
    },
    {
      "commit": "2e5299988b5f5f9165a76938a66d37e46dd48d6b",
      "tree": "d7212db7df16d22aaf7d5f1ce43f5706ff58ec30",
      "parents": [
        "47acf12ffef0a5db470406b7db788adcc6240786"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 12 16:22:15 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 12 16:29:36 2010 -0700"
      },
      "message": "don\u0027t hardcode \"mSurface\" throughout our source code\n\nthis is used in a few places to get access to the android.view.Surface\nnative surface. use a macro instead. Also rename the field to mNativeSurface.\n\nChange-Id: I1c6dea14abd6b8b1392c7f97b304115999355094\n"
    },
    {
      "commit": "a17a1347ffe281fc70633ba8dc98f6cf49ac06ff",
      "tree": "bbecb38baa1d87f4319624522d34ece1a3df96ec",
      "parents": [
        "71662fe8f5cc0dda0837596e9d44200d302697e8"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Apr 01 18:00:58 2010 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Apr 01 18:08:22 2010 -0700"
      },
      "message": "Use local lock for most MediaMetadataRetriever methods. Bug 2560834.\n\nMediaMetadataRetriever uses a single static lock for all operations.\nThis effectively serializes all metadata retrieval operations in a\nsingle process. This patch uses the object level lock for all normal\noperations and only uses the static lock to serialize calls to\nrelease.\n\nChange-Id: I81c9f234c2f0007a26d18e1398c709b41a4dbbd7\n"
    },
    {
      "commit": "54b1a0550411c2fd2084d82d28934d505c37349a",
      "tree": "f7f3959667145710bfac8c7645405ae0079addb4",
      "parents": [
        "589843b5969aa64a8f9a57fc8176c80b0ddce3c6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 19 16:14:13 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 19 16:16:43 2010 -0700"
      },
      "message": "libutils Condition are now PRIVATE by default\n\nCondition must be initialized with SHARED for the old behavior, where\nthey can be used accross processes.\n\nUpdated the two places android that require SHARED conditions.\n\nPRIVATE conditions (and mutexes) use more efficient syscalls.\n\nChange-Id: I9a281a4b88206e92ac559c66554e886b9c62db3a\n"
    },
    {
      "commit": "d3f93c572e55dc902d01f8eeda1d107a8b9128e2",
      "tree": "d18704a2f9806b9ce36ed67bbb7119efd7b871a4",
      "parents": [
        "72d747da6672c68bc82e05912bf57d4e2bac2c3c",
        "be55a2d66f03e80524a346500ffa9fd046410b28"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 17 09:16:27 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 17 09:16:27 2010 -0700"
      },
      "message": "Merge \"Fix issue 2416481: Support Voice Dialer over BT SCO.\""
    },
    {
      "commit": "be55a2d66f03e80524a346500ffa9fd046410b28",
      "tree": "37b529b55b3b1a18e2b0413e1433e446f919df5b",
      "parents": [
        "746973186764292a84d11856ac315fa4b62957ad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 11 14:47:00 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 16 17:32:18 2010 -0700"
      },
      "message": "Fix issue 2416481: Support Voice Dialer over BT SCO.\n\n- AudioPolicyManager: allow platform specific choice for opening a direct output.\n Also fixed problems in direct output management.\n- AudioFliinger: use shorter standby delay and track inactivity grace period for direct output\nthread to free hardware resources as soon as possible.\n- AudioSystem: do not use cached output selection in getOutput() when a direct output\ncan be selected.\n\nChange-Id: If44b50d29237b8402ffd7a5ba1dc43c56f903e9b\n"
    },
    {
      "commit": "3e42b4491529975f771f8d71f931e24e120a7856",
      "tree": "9a37efbc1808b2b9ff7dd1081aa3308c287d0e2d",
      "parents": [
        "746973186764292a84d11856ac315fa4b62957ad"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 15 21:17:08 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 15 21:17:40 2010 -0700"
      },
      "message": "Fix regression in directory scanning\n\nPrevious range-checking fix removed an inequality check. This change\nrestores it.\n\nOffending change was I5eb310ced58c3c64a7af2d11b80326efe5adbcab\n\nChange-Id: Ic952c3ba5a4f7e5ab2148ec623b6f083cb7495fb\n"
    },
    {
      "commit": "8a6e24135608d1ec6629f381acd20d88369cd940",
      "tree": "382290a88d0e5bdbb189a1bdfb523c8a87aa1f60",
      "parents": [
        "4023493a827bc9751d8e40795516d0d536a53348",
        "b5c3107262fdf82aef4bd5ee8b8c60dd3e4725fe"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 11 14:56:54 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 11 14:56:54 2010 -0800"
      },
      "message": "Merge \"Revert \"Do autodetection even if no locale was specified, and use the\"\""
    },
    {
      "commit": "b5c3107262fdf82aef4bd5ee8b8c60dd3e4725fe",
      "tree": "a758da52b033855a0a05598d6e213935b5fa2dbb",
      "parents": [
        "64fb06f698b39759a7a2ebacd0a175949b7506a5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 11 13:37:46 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 11 13:37:46 2010 -0800"
      },
      "message": "Revert \"Do autodetection even if no locale was specified, and use the\"\n\nThis reverts commit b45b0845a6db32848ad08ac1037ef67a68ec2d39.\n"
    },
    {
      "commit": "4023493a827bc9751d8e40795516d0d536a53348",
      "tree": "468f39da8a380f6d7c01ea3a6fa0d5c91ffa47c4",
      "parents": [
        "6fc13ab8d00819b7420d1b0a500896264e820409"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Wed Mar 10 10:41:04 2010 -0800"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Mar 11 10:07:14 2010 -0800"
      },
      "message": "Allow invoke in all the player states except idle and error.\n\nPreviously invoke would work only after prepare but not\nwhen the player is in play or pause state (for instance).\nThis new change just check that the player has been initialized\nand is not in the error state.\n\nBug:2488931\nChange-Id: I9b9f3679593a3b7697c1a84d993fdcd7e1693a90\n"
    },
    {
      "commit": "64fb06f698b39759a7a2ebacd0a175949b7506a5",
      "tree": "e84270c1d12f3e28a3e26a96deff7ef41ace48b9",
      "parents": [
        "8d20cd5d15bf008abf43cbd00eadf90cd3e4b84e"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Mar 11 08:16:26 2010 -0800"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Mar 11 08:16:26 2010 -0800"
      },
      "message": "Revert \"Allow invoke in all the player states except idle and error.\"\n\nThis reverts commit 88f3b81d065d4bec6f69a25eda99158e254f55b1.\n"
    },
    {
      "commit": "63bacaf543d4faee6dadda08e51556c878b078f5",
      "tree": "3fdfd205e80311af4aa62ded551f0273e1e54f96",
      "parents": [
        "5983dd43811e433d9a6680439ad4df62eef80d6f"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Wed Mar 10 10:41:04 2010 -0800"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Wed Mar 10 16:17:30 2010 -0800"
      },
      "message": "Allow invoke in all the player states except idle and error.\n\nPreviously invoke would work only after prepare but not\nwhen the player is in play or pause state (for instance).\nThis new change just check that the player has been initialized\nand is not in the error state.\n\nBug:2488931\n\nChange-Id: I7a69d1b6e3eec1e5dbdf7378ff2085329062595a\n"
    },
    {
      "commit": "83ff1438d2d1d5dbf39ca5e6f2e4fa1799e7ba80",
      "tree": "4f1398095d0a69f4aa46cf533137c51ada1599fa",
      "parents": [
        "b699c595d78e8cd7f60c2c5102d40db07b18926b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 10 10:53:16 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 10 10:55:09 2010 -0800"
      },
      "message": "MEDIA_PLAYER_STATE_ERROR is not a bitmask\n(b/2502881)\n\nChange-Id: I08e427eb2c36f5d70e40f9aeb8638fa8262de989\n"
    },
    {
      "commit": "88335b1a749fe0157547907a2ce6c9632f4d2592",
      "tree": "f607469abe6fdcd125f9c2399675598a4a483e39",
      "parents": [
        "c0170bc6c6c81f5dfa86a132bf29ee48c01329d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 02 18:38:06 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 05 11:54:23 2010 -0800"
      },
      "message": "Fix issue 2428563: Camera rendered inoperable by voice call interruption.\n\nThe problem is that AudioRecord never exits read() when a timeout occurs while trying\nto get new PCM data from audio hardware input buffer: it just keeps waiting and retrying until stop() is called.\nIn the same time, opencore AndroidAudioInput::audin_thread_func() loop cannot be exited when stuck\nin AudioRecord::read() because the iExitAudioThread flag can only be sampled when AudioRecord::read()\nreturns. We remain stuck with the audio input thread running.\n\nThe fix consists in modifying AudioRecord behavior in case of timeout when getting new PCM samples.\nWe now wait only one timeout period and try to restart audio record, in case the problem is due to a media_server\nprocess crash. If this fails, we exit read() with a number of bytes read equals to 0 so that\nAndroidAudioInput::audin_thread_func() loop can exit.\n\nAlso modified Audioflinger::RecordThread() loop so that we attempt to recover from HAL read errors.\nIn case of read error, the input stream is forced to standby so that next read attempt does a\nreconfiguration and restart of the audio input device.\n"
    },
    {
      "commit": "05bca2fde53bfe3063d2a0a877f2b6bfdd6052cf",
      "tree": "7f99a6ebacbc1f76b561b95a04808636486b48ba",
      "parents": [
        "949c5037a6e019ff575bd481d286908c2eaa1e34"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 26 02:47:27 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 02 08:20:13 2010 -0800"
      },
      "message": "Issue 2071329: audio track is shorter than video track for video capture on sholes\n\nAdd API to retrieve number of frames dropped by audio input kernel driver.\n\nSubmitted on behalf of Masaki Sato \u003cmasaki.sato@motorola.com\u003e\n"
    },
    {
      "commit": "e3d91046072908f5613a21652b6da9b44043f1d5",
      "tree": "7df2c4f76748807e0559accaddccc8e767d848b9",
      "parents": [
        "698f476590bc9e38d4d1d4155da9efdbedd357c4",
        "e284bac7757ad732d0812eb6133125434ba66d5b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 26 18:56:22 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 26 18:56:22 2010 -0800"
      },
      "message": "Merge \"Don\u0027t allow MediaRecorder.setParameter() to be invoked in the following states: error, prepared or recording\""
    },
    {
      "commit": "698f476590bc9e38d4d1d4155da9efdbedd357c4",
      "tree": "75bf577eb1f9cdc93b57b12befca37b01f44e032",
      "parents": [
        "789c27a161f8ab7dba0835e015317ff4843c5cd2"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 26 13:16:23 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 26 13:16:23 2010 -0800"
      },
      "message": "When we\u0027re in the \u0027playback complete\u0027 state, don\u0027t consider pausing\nan error. This makes \u0027playback complete\u0027 essentially equivalent to\nbeing paused at the end, and treats it the same as being paused at\nany other position.\n"
    },
    {
      "commit": "e284bac7757ad732d0812eb6133125434ba66d5b",
      "tree": "ca8bfc576bd53f6b9bfe006a8aaed0a67d5d2b63",
      "parents": [
        "b8b283bd53594ce4bb6da47b3abff12a0a070f04"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 25 18:41:46 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 25 18:41:46 2010 -0800"
      },
      "message": "Don\u0027t allow MediaRecorder.setParameter() to be invoked in the following states:\nerror, prepared or recording\n\nbug - 2362412\n"
    },
    {
      "commit": "f5a8385649204213dc19e1a64f4693931e048d85",
      "tree": "9ffc92fdc9642fb888c8f874259c3f44047167c5",
      "parents": [
        "df49e8926e85088bc7d1dc7905362437c9806b69"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 23 17:21:44 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 24 18:10:12 2010 -0800"
      },
      "message": "Image encoding settings java API through xml configuration file\n\n- I decided to completely remove jpeg decoding related stuff from this change\n  I think that setting is better off if it is specified by the system properties.\n  We don\u0027t have to include MediaProfiles.h header in skia files\n"
    },
    {
      "commit": "df49e8926e85088bc7d1dc7905362437c9806b69",
      "tree": "be9ebdaa43f50e02295a6cf71e1d3b3e43fdead0",
      "parents": [
        "4b2f2c06ea5be0d95da53a3307ab4c1dd940f8dd",
        "eb839f5f05b7d0c4558bf845816fd3fe6201e15e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 11:19:51 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 22 11:19:51 2010 -0800"
      },
      "message": "am 8978547f: am f5fe3949: Fix issue 2459650.\n\nMerge commit \u00278978547f254b6b6ba2e322794aa044803f3edc2a\u0027\n\n* commit \u00278978547f254b6b6ba2e322794aa044803f3edc2a\u0027:\n  Fix issue 2459650.\n"
    },
    {
      "commit": "7c7fa1b51bec497cd7f46c1bdb5bb0adfaa181b2",
      "tree": "804c653cc7dc33feaaf6a4be68f1ca30ae2b6bca",
      "parents": [
        "cac7c56783201754c799c94549b4d96c3f081e59"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 01:37:19 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 01:37:19 2010 -0800"
      },
      "message": "Fix issue 2459650.\n\nThis change fixes a problem where an unwanted tone is generated by audio policy manager when a MT call is answered.\nThis is because of a policy that replaces high visibility system sounds (ringtones, alarms...) by a beep when in call.\nThere is a transitory phase while the call is being answered where the phone state is changed to IN_CALL but the\nringtone is still playing. The audio policy manager then mutes the end of the ringtone and starts playing a beep\nin replacement because the ringtone is categorized as high visibility.\n\nThe fix consists in changing the ringtone stream type from high visibility to low visibility. This is not a problem as\nthe only actual use case where a ringtone would be generated while in call is if another call is received.\nBut in this case, the phone system does not generate a ringtone but a call waiting tone instead.\nIt is therefore not required to handle a ringtone as a high visibiltiy tone that must be somehow signaled to the user\nwhile in call.\n"
    },
    {
      "commit": "eb03f13fd3b5a4b1060cd55881934ff9c918fe8c",
      "tree": "d99c5ddc4313f326d5dffde3ee56710a24450360",
      "parents": [
        "349a733b58c3b4c656c4ddfa8cbbb06c008d3bc5"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:25:49 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:26:47 2010 -0800"
      },
      "message": "Range check in MediaScanner::processDirectory\n\nMake sure we don\u0027t have an empty string before checking if it\u0027s a\ndirectory since this string is tainted.\n\nChange-Id: I5eb310ced58c3c64a7af2d11b80326efe5adbcab\n"
    },
    {
      "commit": "4e92c7efc68b5d7635a32dbd283ab8558ad9bdd6",
      "tree": "6a214e4fd02b792810f73e881d6312685ee1d722",
      "parents": [
        "328901bdc7c00ab361c5ef16d0d69c94a0458e95"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:35:58 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:44:10 2010 -0800"
      },
      "message": "New API on java\u0027s MediaPlayer to suspend/resume a session.\n\nrelated-to-bug: 2231576\n"
    },
    {
      "commit": "3cf613507f1e2f7bd932d921a6e222e426fd3be4",
      "tree": "20c9dd57e2227046ab1d6fc1185f4136c6dac12e",
      "parents": [
        "988e3f0b2c74095deae580157c57935a98573052"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "77f8531a739c46cffe7f7fd1e035de542deccf48",
      "tree": "697c56b8eda89d63e7a8043c56d65dbd557eb781",
      "parents": [
        "316f8352846a1470b0ffd1b94ac1ec535922a9f6"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 10 09:56:05 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 10 10:36:02 2010 -0800"
      },
      "message": "Do autodetection even if no locale was specified, and use the\ndetected encoding if it is unambiguous.\n"
    },
    {
      "commit": "1d7491b19516505e0754c66a3c8cd61811c9b6a6",
      "tree": "f5377efbec2f7f4980f35650506835e837573e22",
      "parents": [
        "036a38099c9d339d77dc4a1a148db2907a618c2e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 19 17:45:38 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 01 22:38:37 2010 -0800"
      },
      "message": "Initial check-in for xml-based encoder capabilities retrieval\n- Changed the Java API as suggested\n- Treat /etc/media_profiles.xml as the default xml configurtion file\n"
    },
    {
      "commit": "867d2f6ce668968e463eb86b856d21525f12fd67",
      "tree": "cc65f1c037d980841d0f075e2625ac37ac338f28",
      "parents": [
        "bbe1ed453aa0407237127fb45a30ba8ffd9e0941"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 25 19:00:00 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 29 14:51:06 2010 -0800"
      },
      "message": "Simplify the MemoryDealer implementation\n\nAt some point the implementation became complicated because of\nSurfaceFlinger\u0027s special needs, since we are now relying on gralloc\nwe can go back to much simpler MemoryDealer.\n\nRemoved HeapInterface and AllocatorInterface, since those don\u0027t need\nto be paramterized anymore. Merged SimpleMemory and Allocation.\nMade SimplisticAllocator non virtual.\n\nRemoved MemoryDealer flags (READ_ONLY, PAGE_ALIGNED)\n\nRemoved a lot of unneeded code.\n"
    },
    {
      "commit": "2db8455d8f4468a637109d31f319ce02d9d743ec",
      "tree": "7f3418b24ec0779af3ab25202eb5063e860610d5",
      "parents": [
        "8566a635aa4bf6d2e908f0bc64d4fb8917025b58"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:19:57 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:52:43 2010 -0800"
      },
      "message": "API Extension: Support for optionally specifying a map of extra request headers when specifying the uri of media data to be played.\n\nrelated-to-bug: 2393577\n\nOriginal change by Andrei Popescu \u003candreip@google.com\u003e\n"
    }
  ],
  "next": "342e9cf388cceb807def720e40e8b0a217f4bcaa"
}
