)]}'
{
  "log": [
    {
      "commit": "f8fd8d6daab5ced86ce950be68070d27c24d487f",
      "tree": "4ccbca767b6711112f9aacdaf72ca40fa7473e06",
      "parents": [
        "8270e1d13a101fa946848871b9903b31ff11981f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 09 17:00:14 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 09 17:00:14 2014 -0700"
      },
      "message": "audioflinger: fix audio patch release\n\nFix error in PatchPanel:releaseAudioPatch() causing\nthe wrong patch handle to be passed to the audio HAL.\n\nBug: 17368621.\nChange-Id: I037fd2e6273508c830414b5900d07c0178b96dae\n"
    },
    {
      "commit": "874c4287a4e49c59ac88767751dce00fcd3edb73",
      "tree": "2a0e4adc0bd18f26c8488b74d7e3df9751d493df",
      "parents": [
        "0912a5738d6baf2df7cd62e877240e3807b4b21f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 08 15:13:39 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 08 17:07:31 2014 -0700"
      },
      "message": "audio policy: enable more than one sink per audio patch.\n\nAllow creation of audio patches with more than one sink.\nMore than one sink is enabled when:\n- Connecting an input device to output devices on the same audio HW module.\n- Connecting an output mix to output devices on the same audio HA module.\n\nAll other patches are limited to one sink.\n\nBug: 16879363.\nChange-Id: I95be6948ef29df64e51e5b8ace38c2db7f3e89f2\n"
    },
    {
      "commit": "cf2c0210c8afbe7d0661ccbbae3835b5ce73c0bf",
      "tree": "26824707249d553efaabe2003381b4e9159e199d",
      "parents": [
        "97117153a0d681be70bfa9dc9876541375355c47"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 25 16:20:43 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 12:06:00 2014 -0700"
      },
      "message": "AudioFlinger: update openInput() and openOutput()\n\nAdd parameters to openInput() and openOutput(): device address,\ninput source.\nAllow caller to specify a given I/O handle\nGroup parameters in a struct audio_config.\n\nBug: 12378680.\nChange-Id: I7e9af74c0d996561cc13cbee7d9012d2daf33025\n"
    },
    {
      "commit": "83b8808faad1e91690c64d7007348be8d9ebde73",
      "tree": "b541b1172f804e04bd19b29f7878a1becf6205d7",
      "parents": [
        "c15c265676da2226a18a5373812608b19d4719d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 20 18:31:16 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 24 02:56:47 2014 +0000"
      },
      "message": "audio flinger: add patch connection between hw modules\n\nAdd support for audio device connections between different audio\nhw modules.\nThe patch is performed by creating a bridge between the playback\nthread connected to the sink device and the record thread connected\nto the source device using a pair of specialized PlaybackTrack and\nRecordTrack.\n- Added PatchTrack and PatchRecord classes.\n- Added TrackBase type to indicate more clearly the track behavior.\n- A TrackBase can allocate the buffer or reuse an existing one.\n- Factored some code in openOutput() and openInput() for internal use\nby PatchPanel.\n\nBug: 14815883.\n\nChange-Id: Ib9515fcda864610458a4bc81fa8f59096ff4d7db\n"
    },
    {
      "commit": "24478d47fc631ab33208f4dd9d034abb6839c992",
      "tree": "386cecb452110d9959ce43eef557d05c822fea83",
      "parents": [
        "62aaabb3905c61bb7acd6037414c206240a31c32"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 04 20:02:57 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 04 20:02:57 2014 -0700"
      },
      "message": "AudioFlinger: fix PatchPanel debug log.\n\nBug: 14815883.\nChange-Id: I71cf2ef74a96d3cdb27f2beb1b76b8979c738335\n"
    },
    {
      "commit": "62aaabb3905c61bb7acd6037414c206240a31c32",
      "tree": "55b1f59fa16bc0cf762c88a96e5a5f9a5d82d08c",
      "parents": [
        "e1715a465a29db625da9d0ea365edf371e39e201"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 02 10:40:54 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 02 10:40:54 2014 -0700"
      },
      "message": "audio policy: fix unitialized hw module in audio port\n\nThe hw module handle was not initialized when creating\nand audio port configuration from an input stream descriptor.\n\nBug 15376641.\n\nChange-Id: I6c784cded68a5c665fd22c3643765c63f70eb241\n"
    },
    {
      "commit": "e1715a465a29db625da9d0ea365edf371e39e201",
      "tree": "771fdda7b99935e05e7b3c36487abf523930dd34",
      "parents": [
        "1afeecb88bea660b2c10b2096be0fd02433303ce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 20 11:30:42 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 30 17:22:58 2014 -0700"
      },
      "message": "audio policy: add audio port gain control\n\nImplement setAudioPortConfig() API to configure an\naudio port.\nCurrently limited to gain control.\n\nBug: 14815883.\n\nChange-Id: Ic1b268e5ba5c277e9f5b8fa63c81dd7c0b250024\n"
    },
    {
      "commit": "6a94d69dc4f32abb53c466a96f905bb199be6417",
      "tree": "eef3552877f202429801a0b20f2ae31aad7801e7",
      "parents": [
        "32f93b7bedc44b425ba99d69dec998334e759532"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 20 11:18:06 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 29 17:57:55 2014 -0700"
      },
      "message": "audio policy: implement routing control\n\nAdd implementation of audio routing control via AudioSystem APIs.\n\nThe following APIs are implemented:\n- listAudioPorts(): return a list of devices and output/input mixers ports\nthat can be used as sources or sinks for audio patches.\n- createAudioPatch()/releaseAudioPatch(): create/release a connection patch between\ntwo audio ports (e.g. to connect input from an HDMI device to a speaker output device).\nOnly one client application can own a patch from a given source.\nWhen an audio port (device or mix) is part of an application created patch, its routing cannot\nnot be changed by a policy decision.\n- listAudioPatches(): return a list of existing patches.\n\nEach audio port addition/removal and each audio patch creation/release increments a generation count.\nThis generation count is used to ensure consistency betwen calls to\nlistAudioPorts() and listAudioPatches().\n\nBug: 14815883.\n\nChange-Id: I022b638c2f5f0bb41543c7cfca7488fb45cfdd80\n"
    },
    {
      "commit": "951f455566775e5f01e67c5ee26863d7d19209d7",
      "tree": "39fc248f74f7585b7108c0cb00e2d36d22b3e1b7",
      "parents": [
        "1cda6afaf6207a41303e653a6ecd7909d73186eb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 20 10:48:17 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 28 14:29:47 2014 -0700"
      },
      "message": "DO NOT MERGE - audioflinger: first patch panel implementation.\n\nAdded a new PatchPanel subclass to AudioFlinger\nto handle audio ports and audio patches configuration\nand connection.\nThe first implementation does not add new functionnality.\nAudioPolicyManager uses patch panel interface to control\ndevice routing.\nAudioFlinger:\n- Added PatchPanel class. The first implementation does not\nadd new functionnality. PatchPanel handles routing commands\nfor audio HAL after 3.0 or converts to setParameters for audio\nHALs before 3.0.\n- Added config events to ThreadBase to control synchronized\naudio patch connection.\nAudioPolicyManager:\n- Use PatchPanel API to control device selection isntead of setParameters.\n- New base class AudioPort common to audio device descriptors\nand input output stream profiles. This class is RefBase and groups\nattributes common to audio ports.\n- Use same device selection flow for input as for outputs:\n getNewInputDevice -\u003e getDeviceForInptusiource -\u003e setInputDevice\n\nChange-Id: Idaa5a883b19a45816651c58cac697640dc717cd9\n"
    }
  ]
}
