)]}'
{
  "log": [
    {
      "commit": "5626b8c75bc13aa3287c18d49e92edc84fa85b2d",
      "tree": "0c913d7ed98ff0f469f305b5042880a270543c20",
      "parents": [
        "de2fb698c6fb1e968a5ed9cc449024f119ad3853"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Fri Aug 26 07:53:53 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Sep 21 10:48:30 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: implement new volatile autocluster scheme\n\nThe problem tackled in this patch is how to handle volatile autoclusters\ncorrectly. A volatile autocluster is a cluster of related controls where one\ncontrol is the control that toggles between manual and auto mode and the other\ncontrols are the values for the manual mode. For example autogain and gain,\nautoexposure and exposure, etc.\n\nIf the hardware lets you read out the automatically calculated manual values\nwhile in automode, then those manual controls should be marked volatile.\n\ngain value as calculated by the autogain circuitry, then you would mark the\ngain control as volatile (i.e. continuously changing).\n\nThe question in such use cases is what to do when switching from the auto\nmode to the manual mode. Should we switch to the last set manual values or\nshould the volatile values be copied and used as the initial manual values.\n\nFor example: suppose the mode is manual gain and gain is set to 5. Then\nautogain is turned on and the gain is set by the hardware to 2. Finally\nthe user switches back to manual gain. What should the gain be? 2 or 5?\n\nAfter a long discussion the decisions was made to keep the last value as\ncalculated by the auto mode (so 2 in the example above).\n\nThe reason is that webcams that do such things will adapt themselves to\nthe current light conditions and when you switch back to manual mode you\nexpect that you keep the same picture. If you would switch back to old\nmanual values, then that would give you a suddenly different picture,\nwhich is jarring for the user.\n\nAdditionally, this would be difficult to implement in applications that\nstore and restore the control values at application exit and start.\n\nIf you want to keep the old manual values when you switch from auto to\nmanual, then there would have to be a way for applications to get hold\nof those old values while in auto mode, but there isn\u0027t.\n\nSo this patch will do all the heavy lifting in v4l2-ctrls.c: if you go\nfrom auto mode to manual mode and the manual controls are volatile, then\ng_volatile_ctrl will be called to get the current values for the manual\ncontrols before switching to manual mode.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nAcked-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "88365105d683187e02a4f75220eaf51fd0c0b6e0",
      "tree": "acbc18b9e8eb7f74630fb7fd709cb35eafd30f54",
      "parents": [
        "74a45790861f659058e8f8b565d98e5a1fdd8440"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Fri Aug 26 07:35:14 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Sep 21 09:52:21 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: replace is_volatile with V4L2_CTRL_FLAG_VOLATILE\n\nWith the new flag there is no need anymore to have a separate is_volatile\nfield. Modify all users to use the new flag.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nAcked-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "3f66f0ed319505555f45ceac04775b23f9279ee6",
      "tree": "27796db307bf941b8297b639b4cb2b9a48ffc689",
      "parents": [
        "e969084030b03f4997d63b3f718ba814290e0705"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Mon Jun 20 11:56:24 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:34 2011 -0300"
      },
      "message": "[media] v4l2-ctrls/v4l2-events: small coding style cleanups\n\nThanks to Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "eb5b16efb26ff5b2d0ba25a114394db69c433f86",
      "tree": "df68e2737553e18218e94247fd6924eeaf09051f",
      "parents": [
        "c12fcfd676e16a82e47ee44fe2d13dc21717063a"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Tue Jun 14 10:04:06 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:31 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: improve discovery of controls of the same cluster\n\nThe implementation of VIDIOC_G/S/TRY_EXT_CTRLS in the control framework has\nto figure out which controls in the control list belong to the same cluster.\nSince controls belonging to the same cluster need to be handled as a unit,\nthis is important information.\n\nIt did that by going over the controls in the list and for each control that\nbelonged to a multi-control cluster it would walk the remainder of the list\nto try and find controls that belong to that same cluster.\n\nThis approach has two disadvantages:\n\n1) it was a potentially quadratic algorithm (although highly unlikely that\nit would ever be that bad in practice).\n2) it took place with the control handler\u0027s lock held.\n\nSince we want to make it possible in the future to change control values\nfrom interrupt context, doing a lot of work while holding a lock is not a\ngood idea.\n\nIn the new code the algorithm is no longer quadratic but linear in the\nnumber of controls in the list. Also, it now can be done beforehand.\n\nAnother change that was made was to so the try and set at the same time.\nBefore when S_TRY_EXT_CTRLS was called it would \u0027try\u0027 the controls first,\nand then it would \u0027set\u0027 them. The idea was that any \u0027try\u0027 errors would\nprevent the \u0027set\u0027 from happening, thus avoiding having partially set\ncontrol lists.\n\nHowever, this caused more problems than it solved because between the \u0027try\u0027\nand the \u0027set\u0027 changes might have happened, so it had to try a second time,\nand since actual controls with a try_ctrl op are very rare (and those that\nwe have just adjust values and do not return an error), I\u0027ve decided to\ndrop that two-stage approach and just combine try and set.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "f1e393de382af9b9bd2462a42bfa16b8c501d81b",
      "tree": "1135a4a27166d3947ebfcf2be171efa2d8cd3228",
      "parents": [
        "77068d36d8b9e9902a89b4bb01011d41926f5420"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Mon Jun 13 19:24:17 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:31 2011 -0300"
      },
      "message": "[media] v4l2-event/ctrls/fh: allocate events per fh and per type instead of just per-fh\n\nThe driver had to decide how many events to allocate when the v4l2_fh struct\nwas created. It was possible to add more events afterwards, but there was no\nway to ensure that you wouldn\u0027t miss important events if the event queue\nwould fill up for that filehandle.\n\nIn addition, once there were no more free events, any new events were simply\ndropped on the floor.\n\nFor the control event in particular this made life very difficult since\ncontrol status/value changes could just be missed if the number of allocated\nevents and the speed at which the application read events was too low to keep\nup with the number of generated events. The application would have no idea\nwhat the latest state was for a control since it could have missed the latest\ncontrol change.\n\nSo this patch makes some major changes in how events are allocated. Instead\nof allocating events per-filehandle they are now allocated when subscribing an\nevent. So for that particular event type N events (determined by the driver)\nare allocated. Those events are reserved for that particular event type.\nThis ensures that you will not miss events for a particular type altogether.\n\nIn addition, if there are N events in use and a new event is raised, then\nthe oldest event is dropped and the new one is added. So the latest event\nis always available.\n\nThis can be further improved by adding the ability to merge the state of\ntwo events together, ensuring that no data is lost at all. This will be\nadded in the next patch.\n\nThis also makes it possible to allow the user to determine the number of\nevents that will be allocated. This is not implemented at the moment, but\nwould be trivial.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "77068d36d8b9e9902a89b4bb01011d41926f5420",
      "tree": "4fde4974ce56e52acac5c7c8d873d300e946adcc",
      "parents": [
        "523f46d6aba9dcb0a2d0fc474ca884e93a7cf198"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Mon Jun 13 18:55:58 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:31 2011 -0300"
      },
      "message": "[media] v4l2-ctrls/event: remove struct v4l2_ctrl_fh, instead use v4l2_subscribed_event\n\nThe v4l2_ctrl_fh struct connected v4l2_ctrl with v4l2_fh so the control\nwould know which filehandles subscribed to it. However, it is much easier\nto use struct v4l2_subscribed_event directly for that and get rid of that\nintermediate struct.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "82a7c049449ec5a2194249da341ec8bde14e968b",
      "tree": "689a71f2988b585608e41e7dee4d096c73c7ca22",
      "parents": [
        "2330fb8242c3efc281ab8a2d3e22686023699955"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Tue Jun 28 10:43:13 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:21 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: make manual_mode_value 8 bits and check against control range\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "ce7275747bd548e0da7425ba0b7edb6f2c7657a2",
      "tree": "5e230670266e64ed7f4317df5f39700bb92d5825",
      "parents": [
        "6e239399e5807132f86f64af6c659411c6a3d1a5"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Fri Jun 10 05:56:39 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:20 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: simplify event subscription\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "6e239399e5807132f86f64af6c659411c6a3d1a5",
      "tree": "eeb564a25341111f1c7d6e92137e910c4e4d37f3",
      "parents": [
        "ab892bac8438c5c2ff09a60d765d9b0c14941ba9"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Tue Jun 07 11:13:44 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:20 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: add control events\n\nWhenever a control changes value or state an event is sent to anyone\nthat subscribed to it.\n\nThis functionality is useful for control panels but also for applications\nthat need to wait for (usually status) controls to change value.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "ab892bac8438c5c2ff09a60d765d9b0c14941ba9",
      "tree": "f0c96b30275086c26b9e17b0092b7587b6f0ac10",
      "parents": [
        "a1c894fba3c306a738576710ca35e70a32b74a6d"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Tue Jun 07 06:47:18 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:19 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: add v4l2_fh pointer to the set control functions\n\nWhen an application changes a control you want to generate an event.\nHowever, you want to avoid sending such an event back to the application\n(file handle) that caused the change.\n\nAdd the filehandle to the various set control functions.\n\nThe filehandle isn\u0027t used yet, but the control event patches will need\nthis.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "72d877cac07c8d996918977c3162dd78b8097ca8",
      "tree": "03b03db2d5c44c6cca946cb7f24d61a1c15cce24",
      "parents": [
        "78866efe8ae2862fef7ff37af36c6972651c2d0b"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Fri Jun 10 05:44:36 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jul 27 17:53:18 2011 -0300"
      },
      "message": "[media] v4l2-ctrls: add v4l2_ctrl_auto_cluster to simplify autogain/gain scenarios\n\nIt is a bit tricky to handle autogain/gain type scenerios correctly. Such\ncontrols need to be clustered and the V4L2_CTRL_FLAG_UPDATE should be set on\nthe autofoo controls. In addition, the manual controls should be marked\ninactive when the automatic mode is on, and active when the manual mode is on.\nThis also requires specialized volatile handling.\n\nThe chances of drivers doing all these things correctly are pretty remote.\nSo a new v4l2_ctrl_auto_cluster function was added that takes care of these\nissues.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "01c40c048b0f3f377e6d27b35fd99f04efcc21dd",
      "tree": "664b3b188965b32887277f950c628bfc1433456d",
      "parents": [
        "bda50bcd0cc21d9d6dd8c82628f763ab108260a6"
      ],
      "author": {
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com",
        "time": "Fri Nov 19 11:20:06 2010 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jan 19 11:52:09 2011 -0200"
      },
      "message": "[media] v4l: Include linux/videodev2.h in media/v4l2-ctrls.h\n\nThe later makes extensive use of structures defined in the former.\n\nSigned-off-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "2a863793beaa0fc9ee7aeb87efe85544a6b129c0",
      "tree": "9316b12b95a707eb5541db2e24d6033d9b0e2805",
      "parents": [
        "45f6f84af3ae9db19f39bc5d0976d626b0ef626e"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Tue Jan 11 14:45:03 2011 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Jan 19 11:45:32 2011 -0200"
      },
      "message": "[media] v4l2-ctrls: v4l2_ctrl_handler_setup must set is_new to 1\n\nRenamed has_new to is_new.\n\nDrivers can use the is_new field to determine if a new value was specified\nfor a control. The v4l2_ctrl_handler_setup() must always set this to 1 since\nthe setup has to force a full update of all controls.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nAcked-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "513521eaee4375a1a0da0b73c7131a165a9fe4d9",
      "tree": "352f8d9053c1dd6d6866f13feed818bb24934f4a",
      "parents": [
        "6d6a48e51fd3bcb40c5b88d0f9690ba960eedfd2"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Wed Dec 29 14:25:52 2010 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Thu Dec 30 08:02:14 2010 -0200"
      },
      "message": "[media] v4l2-ctrls: use const char * const * for the menu arrays\n\nThis prevents checkpatch warnings generated when defining\n\u0027static const char *foo[]\u0027 arrays. It makes sense to use\nconst char * const * anyway since the pointers in the array\nare indeed const.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "0996517cf8eaded69b8502c8f5abeb8cec62b6d4",
      "tree": "672be97933e8028200eb6718bb49f0ef5c1f4013",
      "parents": [
        "03e30ca5f08e0f9c629204e537ff96b789e6e703"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Sun Aug 01 14:32:42 2010 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Sun Aug 08 23:43:03 2010 -0300"
      },
      "message": "V4L/DVB: v4l2: Add new control handling framework\n\nAdd a new framework to handle controls which makes life for driver\ndevelopers much easier.\n\nNote that this patch moves some of the control support that used to be in\nv4l2-common.c to v4l2-ctrls.c. The tables were copied unchanged. The body\nof v4l2_ctrl_query_fill() was copied to a new v4l2_ctrl_fill() function\nin v4l2-ctrls.c. This new function doesn\u0027t use the v4l2_queryctrl\nstruct anymore, which makes it more general.\n\nThe remainder of v4l2-ctrls.c is all new. Highlights include:\n\n- No need to implement VIDIOC_QUERYCTRL, QUERYMENU, S_CTRL, G_CTRL,\n  S_EXT_CTRLS, G_EXT_CTRLS or TRY_EXT_CTRLS in either bridge drivers\n  or subdevs. New wrapper functions are provided that can just be plugged in.\n  Once everything has been converted these wrapper functions can be removed as well.\n\n- When subdevices are added their controls can be automatically merged\n  with the bridge driver\u0027s controls.\n\n- Most drivers just need to implement s_ctrl to set the controls.\n  The framework handles the locking and tries to be as \u0027atomic\u0027 as possible.\n\n- Ready for the subdev device nodes: the same mechanism applies to subdevs\n  and their device nodes as well. Sub-device drivers can make controls\n  local, preventing them from being merged with bridge drivers.\n\n- Takes care of backwards compatibility handling of VIDIOC_S_CTRL and\n  VIDIOC_G_CTRL. Handling of V4L2_CID_PRIVATE_BASE is fully transparent.\n  CTRL_CLASS controls are automatically added.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nReviewed-by: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    }
  ]
}
