Initial commit
authorLisa Marie Maginnis <lisam@fsf.org>
Thu, 3 Apr 2014 19:26:19 +0000 (15:26 -0400)
committerLisa Marie Maginnis <lisam@fsf.org>
Thu, 3 Apr 2014 19:26:19 +0000 (15:26 -0400)
COPYING [new file with mode: 0644]
README [new file with mode: 0644]
config.xml [new file with mode: 0644]
libre-streamer.sh [new file with mode: 0755]
net_config_example [new file with mode: 0644]
params.sh [new file with mode: 0644]
stream_2014.sh [new file with mode: 0755]
upload_config.sh [new file with mode: 0755]

diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..538dbaf
--- /dev/null
+++ b/README
@@ -0,0 +1,29 @@
+--- Licenes --
+
+This file is part of Libre-Streamer.
+
+Libre-Streamer is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Libre-Streamer is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Libre-Streamer.  If not, see <http://www.gnu.org/licenses/>.
+
+Copyright (c) 2014 Lisa Marie Maginnis
+
+--- Files ---
+
+COPYING            - Full License
+config.xml         - Example XML Configs for the Elphel NC353L IP camera
+libre-streamer.sh  - The main script, this is what the stream operator should run.
+net_config_example - Example network configuration file for the streaming point and IP camera.
+params.sh          - Example Gstreamer and streaming point configuration file.
+stream_2014.sh     - The main streaming script
+upload_config.sh   - Uploads the XML configuration file to the Elphel IP camera
+
diff --git a/config.xml b/config.xml
new file mode 100644 (file)
index 0000000..a1a44c6
--- /dev/null
@@ -0,0 +1,873 @@
+<?xml version="1.0" standalone="yes"?>
+<!-- This file is generated by  -->
+  <autocampars>
+<!-- File version -->
+    <version>1.36</version>
+<!-- Number of parameter page that will be used as default (i.e. after camera boot) -->
+    <defaultPage>1</defaultPage>
+<!-- Number of parameter page that will be next used to save parameters (if not specified) -->
+    <nextPage>2</nextPage>
+<!-- Descriptions of the parameters -->
+    <descriptions>
+      <comment>init</comment>
+      <timestamp>init</timestamp>
+      <SENSOR>Sensor ID number is determined by driver. Writing 0 to this location will re-start sensor identification</SENSOR>
+      <SENSOR_RUN>Sensor can be stopped (0), acquire a single frame (1) or run continuously (2)</SENSOR_RUN>
+      <SENSOR_SINGLE>Pseudo-register to write SENSOR_RUN_SINGLE here. Same as SENSOR_RUN, just the command will not propagate to the next frames</SENSOR_SINGLE>
+      <ACTUAL_WIDTH>Actual image size (appropriately divided when decimation is used) - readonly</ACTUAL_WIDTH>
+      <ACTUAL_HEIGHT>Actual image height (appropriately divided when decimation is used) - readonly</ACTUAL_HEIGHT>
+      <BAYER>Bayer mosaic shift 0..3 (+1 - swap horisontally,+2 - swap vertically)</BAYER>
+      <PERIOD>Frame period in pixel clock cycles - readonly</PERIOD>
+      <FP1000SLIM>FPS limit as integer number of frames per 1000 seconds</FP1000SLIM>
+      <FRAME>Absolute frame number, counted by the sensor frame sync pulses. Includes the frames that are not compressed and never appeared in the circbuf.</FRAME>
+      <CLK_FPGA>Sensor clock in HZ (so 96MHz is 96000000)</CLK_FPGA>
+      <CLK_SENSOR>FPGA compressor/memory clock in HZ (so 1600Hz is 160000000)</CLK_SENSOR>
+      <FPGA_XTRA>Extra clock cycles compressor needs to compress a frame in addition to the number of compressed pixels (for non-jp4 images each sensor pixel needs 3 FPGA clock cycles, for some of the jp4 modes - 2 clocks/pixel</FPGA_XTRA>
+      <TRIG>Trigger mode. currently 0 - free running, 4 - triggered by external signal or FPGA timing generator.</TRIG>
+      <EXPOS>Exposure time in microseconds. Sensor driver modifies the value of this parameter to be multiple of sensor scan line times (see VEXPOS)</EXPOS>
+      <BGFRAME></BGFRAME>
+      <IMGSZMEM></IMGSZMEM>
+      <PAGE_ACQ></PAGE_ACQ>
+      <PAGE_READ></PAGE_READ>
+      <OVERLAP></OVERLAP>
+      <VIRT_KEEP>Preserve \"virtual window\" size when resizing the window of interest (WOI) if non-zero. That will preserve the same FPS when resizing WOI</VIRT_KEEP>
+      <VIRT_WIDTH>Width of the virtual window defines the time of reading out 1 sensor scan line. Normally this parameter is determined by the driver automatically, but may be manually modified.</VIRT_WIDTH>
+      <VIRT_HEIGHT>Height of the virtual window defines the frame duration in scan lines. Readout period (in free-running, not externally triggered mode) is equal to the product of VIRT_WIDTH * VIRT_HEIGHT. Normally this parameter is determined by the driver automatically, but may be manually modified.</VIRT_HEIGHT>
+      <WOI_LEFT>Window of interest left margin. Should be even number</WOI_LEFT>
+      <WOI_TOP>Window of interest top margin. Should be even number</WOI_TOP>
+      <WOI_WIDTH>Window of interest width. Should be multiple of 16 (divided by decimation if any). This parameter is modified by the driver according to the sensor capabilities, so if you put 10000 this value will be reduced to the full sensor width.</WOI_WIDTH>
+      <WOI_HEIGHT>Window of interest height. Should be multiple of 16 (divided by decimation if any). This parameter is modified by the driver according to the sensor capabilities, so if you put 10000 this value will be reduced to the full sensor width.</WOI_HEIGHT>
+      <FLIPH>Mirroring (flipping) the image horizontally. Driver is aware of the sensor orientation in Elphel cameras so value 0 is used for normal image orientation when captured by the camera (contrary to the previously released software)</FLIPH>
+      <FLIPV>Mirroring (flipping) the image vertically. Driver is aware of the sensor orientation in Elphel cameras so value 0 is used for normal image orientation when captured by the camera (contrary to the previously released software)</FLIPV>
+      <FPSFLAGS>FPS limit mode - bit 0 - limit fps (not higher than), bit 1 - maintain fps (not lower than)</FPSFLAGS>
+      <DCM_HOR>Horizontal decimation of the image (as supported by the sensor). Actual number of pixels read from the senor will is divided (from the WOI size) by this value (0 considered to be the same as 1)</DCM_HOR>
+      <DCM_VERT>Vertical decimation of the image (as supported by the sensor). Actual number of pixels read from the senor will is divided (from the WOI size) by this value (0 considered to be the same as 1)</DCM_VERT>
+      <BIN_HOR>Horizontal binning (adding/averaging) of several adjacent  pixels  of the same color (so odd and even pixels are processed separately) as supported by the sensor.</BIN_HOR>
+      <BIN_VERT>Vertical binning (adding/averaging) of several adjacent  pixels  of the same color (so odd and even pixels are processed separately) as supported by the sensor.</BIN_VERT>
+      <FPGATEST>Replace the image from the sensor with the internally generated test pattern. Currently only two values are supported: 0 - npormal image, 1 horizontal gradient.</FPGATEST>
+      <TESTSENSOR>Sensor internal test modes: 0x10000 - enable, lower bits - test mode value</TESTSENSOR>
+      <COLOR>Compressor modes (only modes 0..2 can be processed with standard libjpeg):`
+               0 - mono6, monochrome (color YCbCr 4:2:0 with zeroed out color componets)`
+               1 - color, YCbCr 4:2:0, 3x3 pixels`
+               2 - jp46 - original jp4, encoded as 4:2:0 with zeroed color components`
+               3 - jp46dc, modified jp46 so each color component uses individual DC diffenential encoding`
+               4 - reserved for color with 5x5 conversion (not yet implemented)`
+               5 - jp4 with ommitted color components (4:0:0)`
+               6 - jp4dc, similar to jp46dc encoded as 4:0:0`
+               7 - jp4diff, differential where (R-G), G, (G2-G) and (B-G) components are encoded as 4:0:0`
+               8 - jp4hdr, (R-G), G, G2,(B-G) are encoded so G2 can be used with high gain`
+               9 - jp4fiff2, (R-G)/2, G,(G2-G)/2, (B-G)/2 to avoid possible overflow in compressed values`
+              10 - jp4hdr2, (R-G)/2, G,G2,(B-G)/2`
+              14 - mono,  monochrome with ommitted color components (4:0:0)</COLOR>
+      <FRAMESYNC_DLY>not used, should be 0</FRAMESYNC_DLY>
+      <PF_HEIGHT>Height of the strip in photofinish mode (not functional)</PF_HEIGHT>
+      <BITS>data width stored from the sensor - can be either 8 or 16. 16 bit mode bypasses gamma-conversion, but it is not supported by the compressor</BITS>
+      <SHIFTL>not used, should be 0</SHIFTL>
+      <FPNS>FPN correction subtract scale - not yet supported by current software</FPNS>
+      <FPNM>FPN correction multiply scale - not yet supported by current software</FPNM>
+      <VEXPOS>Exposure measured in sensor native units - number of scan lines, it can be any integer number, while the EXPOS measured in microseconds is modified by the driver to make it multiple of scan lines. Both VEXPOS and EXPOS can be used to specify exposure.</VEXPOS>
+      <VIRTTRIG>Not used, should be 0</VIRTTRIG>
+      <PERIOD_MIN>Minimal frame period (in pixel clock cycles) calculated by the driver from the user and hardware limitations (readonly)</PERIOD_MIN>
+      <PERIOD_MAX>Maximal frame period (in pixel clock cycles) calculated by the driver from the user and hardware limitations  (readonly)</PERIOD_MAX>
+      <SENSOR_PIXH>Pixels to be read from the sensor, horizontal,incliding margins, excluding embedded timestamps (readonly)</SENSOR_PIXH>
+      <SENSOR_PIXV>Pixels to be read from the sensor, vertical, incliding margins (readonly)</SENSOR_PIXV>
+      <GAINR>Red channel sensor overall (analog and digital) gain multiplied by 0x10000, so 0x10000 corresponds to  x1.0 gain. If ANA_GAIN_ENABLE is enabled this overall gain is split between the sensor analog gain and digital scalining. Digital scaling is needed to fill the gaps in between large analog gain steps.</GAINR>
+      <GAING>Green channel sensor overall (analog and digital) gain multiplied by 0x10000, so 0x10000 corresponds to  x1.0 gain.  If ANA_GAIN_ENABLE is enabled this overall gain is split between the sensor analog gain and digital scalining. Digital scaling is needed to fill the gaps in between large analog gain steps. Green channel is used in automatic exposure adjustment and as reference to differencial color gains. When changing the value of GAING other gains will be changed proportionally if their ratios to green are preserved (see RSCALE, GSCALE, BSCALE</GAING>
+      <GAINGB>Second green (GB - green in blue line) channel sensor overall (analog and digital) gain multiplied by 0x10000, so 0x10000 corresponds to  x1.0 gain. Normally the second green channel is programmed to have the same gain as the first green, but can be used separately for HDR applications. If ANA_GAIN_ENABLE is enabled this overall gain is split between the sensor analog gain and digital scalining. Digital scaling is needed to fill the gaps in between large analog gain steps.</GAINGB>
+      <GAINB>Blue channel sensor overall (analog and digital) gain multiplied by 0x10000, so 0x10000 corresponds to  x1.0 gain.  If ANA_GAIN_ENABLE is enabled this overall gain is split between the sensor analog gain and digital scalining. Digital scaling is needed to fill the gaps in between large analog gain steps.</GAINB>
+      <RSCALE_ALL>Combines RSCALE and RSCALE_CTL data</RSCALE_ALL>
+      <GSCALE_ALL>Combines GSCALE and GSCALE_CTL data</GSCALE_ALL>
+      <BSCALE_ALL>Combines BSCALE and BSCALE_CTL data</BSCALE_ALL>
+      <RSCALE>Ratio of gains in Red and Green (base) colors, multiplied by 0x10000. This value is connected to individual gains: GAINR and GAING, when you change RSCALE it will cause GAINR to be updated also (if RSCALE is not disabled in RSCALE_CTL). When GAINR is changed, this RSCALE value may also change (or not - depending on the RSCALE_CTL)</RSCALE>
+      <GSCALE>Ratio of gains in Green2 and Green (base) colors, multiplied by 0x10000. This value is connected to individual gains: GAINGB and GAING, when you change GSCALE it will cause GAINGB to be updated also (if GSCALE is not disabled in GSCALE_CTL). When GAINGB is changed, this GSCALE value may also change (or not - depending on the GSCALE_CTL). This second green scale should normally have the value 0x10000 (1.0) - it may be different only in some HDR modes.</GSCALE>
+      <BSCALE>Ratio of gains in Blue and Green (base) colors, multiplied by 0x10000. This value is connected to individual gains: GAINB and GAING, when you change BSCALE it will cause GAINB to be updated also (if BSCALE is not disabled in BSCALE_CTL). When GAINB is changed, this BSCALE value may also change (or not - depending on the BSCALE_CTL)</BSCALE>
+      <RSCALE_CTL>A 2-bit RSCALE control. The following constants are defined:`
+        ELPHEL_CONST_CSCALES_CTL_NORMAL -  use RSCALE to update GAINR and be updated when GAINR is changed`
+        ELPHEL_CONST_CSCALES_CTL_RECALC -  recalculate RSCALE from GAINR/GAING once, then driver will modify the RSCALE_CTL value to ELPHEL_CONST_CSCALES_CTL_NORMAL` 
+        ELPHEL_CONST_CSCALES_CTL_FOLLOW -  update RSCALE from GAINR/GAING, but ignore any (external to the driver) changes to RSCALE itself`
+        ELPHEL_CONST_CSCALES_CTL_DISABLE - completely disable RSCALE - do not update it from GAINR and ignore any external changes to RSCALE`</RSCALE_CTL>
+      <GSCALE_CTL>A 2-bit GSCALE control. The following constants are defined:`
+        ELPHEL_CONST_CSCALES_CTL_NORMAL -  use GSCALE to update GAINGB and be updated when GAINGB is changed`
+        ELPHEL_CONST_CSCALES_CTL_RECALC -  recalculate GSCALE from GAINGB/GAING once, then driver will modify the GRSCALE_CTL value to ELPHEL_CONST_CSCALES_CTL_NORMAL` 
+        ELPHEL_CONST_CSCALES_CTL_FOLLOW -  update GSCALE from GAINGB/GAING, but ignore any (external to the driver) changes to GSCALE itself`
+        ELPHEL_CONST_CSCALES_CTL_DISABLE - completely disable GSCALE - do not update it from GAING and ignore any external changes to GSCALE`</GSCALE_CTL>
+      <BSCALE_CTL>A 2-bit BSCALE control. The following constants are defined:`
+        ELPHEL_CONST_CSCALES_CTL_NORMAL -  use BSCALE to update GAINB and be updated when GAINB is changed`
+        ELPHEL_CONST_CSCALES_CTL_RECALC -  recalculate BSCALE from GAINB/GAING once, then driver will modify the BSCALE_CTL value to ELPHEL_CONST_CSCALES_CTL_NORMAL` 
+        ELPHEL_CONST_CSCALES_CTL_FOLLOW -  update BSCALE from GAINB/GAING, but ignore any (external to the driver) changes to BSCALE itself`
+        ELPHEL_CONST_CSCALES_CTL_DISABLE - completely disable BSCALE - do not update it from GAINB and ignore any external changes to BSCALE`</BSCALE_CTL>
+      <FATZERO>not used</FATZERO>
+      <QUALITY>JPEG compression quality in percents. Supports individual setting of the Y and C quantization tables and quality values when the second byte is non-zero. Table zero is used always used for Y components (and all JP4/JP46 ones), table for C components is determined by the bit 15. When this bit is 0 the color quantization table (table 1) is used, when it is one - Y quantization table (table 0). If bits 8..14 are all zero, the same quality is used for both Y and C (with Y and C tables, respectively). Bit 7 determins if the standard JPEG table is used (bit7==0) or transposed one for portrait mode (bit7=1).</QUALITY>
+      <PORTRAIT>JPEG quantization tables are optimezed for human perception when the scan lines are horizontal. If the value of PORTRAIT parameter is odd, these tables are transposed to be optimal for vertical scan lines. 0 - landscape with first line on top,  1 first line oin right, 2 - fierst line on the bottom and 3 - first line on the left. </PORTRAIT>
+      <CORING_INDEX>Combined coring index for Y and C components - MSW - for C, LSW - for Y. Each is in the range 0f 0..99, default is 0x50005 (5/5). Highter values reduce noise (and file size) but can cause compression artifacts. The optimal values depend on compression quality, the higher the quality the larger the coring idexes are needed. Index 10 corresponds to 1.0 in quantized DCT coefficients, coefficients below index/10 are effectively zeroed out.</CORING_INDEX>
+      <FP1000S>Current sensor frame rate measured in frames per 1000 seconds</FP1000S>
+      <SENSOR_WIDTH>Sensor width in pixels (readonly)</SENSOR_WIDTH>
+      <SENSOR_HEIGHT>Sensor height in pixels (readonly)</SENSOR_HEIGHT>
+      <COLOR_SATURATION_BLUE>Saturation of blue color (B-G) in percents. This scale value is used in the Bayer-to-YCbCr converter that feeds the JPEG compressor. Normally the saturation should be more than 100 to compensate the color washout when the gamma correction value is less than 1.0, because the gamma correction (which is applied to the raw Bayer pixel data) decrease relative (divided by the full value) difference between color components</COLOR_SATURATION_BLUE>
+      <COLOR_SATURATION_RED>Saturation of red color (R-G) in percents. This scale value is used in the Bayer-to-YCbCr converter that feeds the JPEG compressor. Normally the saturation should be more than 100 to compensate the color washout when the gamma correction value is less than 1.0, because the gamma correction (which is applied to the raw Bayer pixel data) decrease relative (divided by the full value) difference between color components</COLOR_SATURATION_RED>
+      <VIGNET_AX>AX in AX*X^2+BX*X+AY*Y^2+BY*Y+C</VIGNET_AX>
+      <VIGNET_AY>AY in AX*X^2+BX*X+AY*Y^2+BY*Y+C</VIGNET_AY>
+      <VIGNET_BX>BX in AX*X^2+BX*X+AY*Y^2+BY*Y+C</VIGNET_BX>
+      <VIGNET_BY>BY in AX*X^2+BX*X+AY*Y^2+BY*Y+C</VIGNET_BY>
+      <VIGNET_C>C in AX*X^2+BX*X+AY*Y^2+BY*Y+C</VIGNET_C>
+      <VIGNET_SHL>Additional shift left of the vignetting correction multiplied by digital gain. Default 1</VIGNET_SHL>
+      <SCALE_ZERO_IN>Will be subtracted from the 16-bit unsigned scaled sensor data before multiplying by vignetting correction and color balancing scale. It is a 17-bit signed data</SCALE_ZERO_IN>
+      <SCALE_ZERO_OUT>Will be added to the result of multiplication of the 16-bit sennsor data (with optionally subtracted SCALE_ZERO_IN) by color correction coefficient/vignetting correction coefficient</SCALE_ZERO_OUT>
+      <DGAINR>Digital gain" for the red color channel - 17 bit unsigned value. Default value is 0x8000 fro 1.0, so up to 4X gain boost is available before saturation</DGAINR>
+      <DGAING>Digital gain" for the green color channel - 17 bit unsigned value. Default value is 0x8000 fro 1.0, so up to 4X gain boost is available before saturation</DGAING>
+      <DGAINGB>Digital gain" for second green color channel - 17 bit unsigned value. Default value is 0x8000 fro 1.0, so up to 4X gain boost is available before saturation</DGAINGB>
+      <DGAINB>Digital gain" for the blue color channel - 17 bit unsigned value. Default value is 0x8000 fro 1.0, so up to 4X gain boost is available before saturation</DGAINB>
+      <CORING_PAGE>Number of coring LUT page number. Current software programs only page 0 (of 8) using CORING_INDEX parameter.</CORING_PAGE>
+      <TILES>Number of 16x16 (20x20) tiles in a compressed frame (readonly)</TILES>
+      <SENSOR_PHASE>Sensor phase adjusment, packed, low 16 bit - signed fine phase, bits [18:17] - 90-degrees shift</SENSOR_PHASE>
+      <TEMPERATURE_PERIOD>Period of sesnor temperature measurements, ms</TEMPERATURE_PERIOD>
+      <AUTOEXP_ON>1 - autoexposure enabled when, 0 - autoexpousre disabled. Autoexposure can still be off if the bit responsible for autoexposure daemon in DAEMON_EN is turned off - in the latter case the whole autoexposure daemon will be disabled, including white balancing and hdr mode also.</AUTOEXP_ON>
+      <HISTWND_RWIDTH>Histogram (used for autoexposure, white balancing and just histograms display) window width, relative to the window (WOI) width. It is defined as a fraction of 65536(0x10000), so 0x8000 is 50%</HISTWND_RWIDTH>
+      <HISTWND_RHEIGHT>Histogram (used for autoexposure, white balancing and just histograms display) window height, relative to the window (WOI) height. It is defined as a fraction of 65536(0x10000), so 0x8000 is 50%</HISTWND_RHEIGHT>
+      <HISTWND_RLEFT>Histogram (used for autoexposure, white balancing and just histograms display) window left position, relative to the window (WOI) remaining (after HISTWND_RWIDTH). It is defined as a fraction of 65536(0x10000), so when HISTWND_RLEFT=0x8000 and HISTWND_RWIDTH=0x8000 that will put histogram window in the center 50% leaving 25% from each of the left and right WOI limits</HISTWND_RLEFT>
+      <HISTWND_RTOP>Histogram (used for autoexposure, white balancing and just histograms display) window top position, relative to the window (WOI) remaining (after HISTWND_RHEIGHT). It is defined as a fraction of 65536(0x10000), so when HISTWND_RTOP=0x8000 and HISTWND_RHEIGHT=0x8000 that will put histogram window vertically in the center 50% leaving 25% from each of the top and bottom WOI limits</HISTWND_RTOP>
+      <AUTOEXP_EXP_MAX>Maximal exposure time allowed to autoexposure daemon  (in microseconds)</AUTOEXP_EXP_MAX>
+      <AUTOEXP_OVEREXP_MAX>not used</AUTOEXP_OVEREXP_MAX>
+      <AUTOEXP_S_PERCENT>not used</AUTOEXP_S_PERCENT>
+      <AUTOEXP_S_INDEX>not used</AUTOEXP_S_INDEX>
+      <AUTOEXP_EXP>not used</AUTOEXP_EXP>
+      <AUTOEXP_SKIP_PMIN>not used</AUTOEXP_SKIP_PMIN>
+      <AUTOEXP_SKIP_PMAX>not used</AUTOEXP_SKIP_PMAX>
+      <AUTOEXP_SKIP_T>not used</AUTOEXP_SKIP_T>
+      <HISTWND_WIDTH>Histogram (used for autoexposure, white balancing and just histograms display) window width in pixels (readonly)</HISTWND_WIDTH>
+      <HISTWND_HEIGHT>Histogram (used for autoexposure, white balancing and just histograms display) window height in pixels (readonly)</HISTWND_HEIGHT>
+      <HISTWND_TOP>Histogram (used for autoexposure, white balancing and just histograms display) window top position in pixels (readonly)</HISTWND_TOP>
+      <HISTWND_LEFT>Histogram (used for autoexposure, white balancing and just histograms display) window left position in pixels (readonly)</HISTWND_LEFT>
+      <FOCUS_SHOW>Show focus information instead of/combined with the image: 0 - regular image, 1 - block focus instead of Y DC (AC=0), 2 - image Y DC combined all frame, 3 combined in WOI</FOCUS_SHOW>
+      <FOCUS_SHOW1>Additional parameter that modifies visualization mode. Currently just a single bit (how much to add)</FOCUS_SHOW1>
+      <RFOCUS_LEFT>init</RFOCUS_LEFT>
+      <RFOCUS_WIDTH>init</RFOCUS_WIDTH>
+      <RFOCUS_TOP>init</RFOCUS_TOP>
+      <RFOCUS_HEIGHT>init</RFOCUS_HEIGHT>
+      <FOCUS_LEFT>Focus WOI left margin, in pixels, inclusive (3 LSB will be zeroed as it should be multiple of 8x8 block width)</FOCUS_LEFT>
+      <FOCUS_WIDTH>Focus WOI width (3 LSB will be zeroed as it should be multiple of 8x8 block width)</FOCUS_WIDTH>
+      <FOCUS_TOP>focus WOI top margin, inclusive (3 LSB will be zeroed as it should be multiple of 8x8 block height)</FOCUS_TOP>
+      <FOCUS_HEIGHT>Focus WOI height (3 LSB will be zeroed as it should be multiple of 8x8 block height)</FOCUS_HEIGHT>
+      <FOCUS_TOTWIDTH>Total width of the image frame in pixels (readonly)</FOCUS_TOTWIDTH>
+      <FOCUS_FILTER>Select 8x8 filter used for the focus calculation (same order as quantization coefficients), 0..14</FOCUS_FILTER>
+      <TRIG_CONDITION>FPGA trigger sequencer trigger condition, 0 - internal, else dibits ((use<<1) | level) for each GPIO[11:0] pin). Example:0x200000 - input from external connector (J15 - http://wiki.elphel.com/index.php?title=10369#J15_-_SYNC_.28external.29 ),  0x20000 - input from internal (J13/J14 - http://wiki.elphel.com/index.php?title=10369#J13_-_SYNC_.28internal.2C_slave.29 )</TRIG_CONDITION>
+      <TRIG_DELAY>FPGA trigger sequencer trigger delay, 32 bits in pixel clocks</TRIG_DELAY>
+      <TRIG_OUT>FPGA trigger sequencer trigger output to GPIO, dibits ((use << 1) | level_when_active). Bit 24 - test mode, when GPIO[11:10] are controlled by other internal signals. Example: 0x800000 - output to external (J15 - http://wiki.elphel.com/index.php?title=10369#J15_-_SYNC_.28external.29 ) connector, 0x80000 - to internal (J12 - http://wiki.elphel.com/index.php?title=10369#J12_-_SYNC_.28internal.2C_master.29 )</TRIG_OUT>
+      <TRIG_PERIOD>FPGA trigger sequencer output sync period (32 bits, in pixel clocks). 0- stop. 1 - single, >=256 repetitive with specified period</TRIG_PERIOD>
+      <TRIG_BITLENGTH>Bit length minus 1 (in pixel clock cycles) when transmitting/receiving timestamps, without timestamps the output pulse width is 8*(TRIG_BITLENGTH+1). Legal values 2..255.</TRIG_BITLENGTH>
+      <EXTERN_TIMESTAMP>When 1 camera will use external timestamp (received over inter-camera synchronization cable) if it is available (no action when external syncronization is not connected), when 0 - local timestamp will be used</EXTERN_TIMESTAMP>
+      <XMIT_TIMESTAMP>Specify output signal sent through internal/external connector (defined by TRIG_OUT). 0 - transmit just sync pulse (8*(TRIG_BITLENGTH+1) pixel clock periods long), 1 - pulse+timestamp 64*(TRIG_BITLENGTH+1) pixel clock periods long</XMIT_TIMESTAMP>
+      <SKIP_FRAMES>Changes parameter latencies tables pages for each of the trigger modes separately (0/1), currently should be 0</SKIP_FRAMES>
+      <I2C_QPERIOD>Number of system clock periods in 1/4 of i2c SCL period to the sensor/sensor board, set by the driver</I2C_QPERIOD>
+      <I2C_BYTES>Number of bytes in hardware i2c write (after slave addr) -0/1/2, set by the driver</I2C_BYTES>
+      <IRQ_SMART>IRQ mode (3 bits) to combine interrupts from the sensor frame sync and compressor when it is running: +1 - wait for VACT in early compressor_done, +2 - wait for dma fifo ready. Current software assumes both bits are set (value=3), set up by the driver". Currently bit 2 (+4) needs to be set to 1 when bit 0 is 0 - otherwise the latest frame will not have parameters copied to. So instead of IRQ_SMART=2 it should be IRQ_SMART=6</IRQ_SMART>
+      <OVERSIZE>0 - normal mode, 1 - ignore sensor dimensions, use absolute WOI_LEFT, WOI_TOP - needed to be able to read optically black pixels</OVERSIZE>
+      <GTAB_R>Identifies Gamma-table for the red color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_R can be referenced with composite names like GTAB_R__0824 for black level, GTAB_R__0816 for gamma in percents and GTAB_R__1600 for scale.</GTAB_R>
+      <GTAB_G>Identifies Gamma-table for the green color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_G can be referenced with composite names like GTAB_G__0824 for black level, GTAB_G__0816 for gamma in percents and GTAB_G__1600 for scale.</GTAB_G>
+      <GTAB_GB>Identifies Gamma-table for the second green (in blue line) color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_GB can be referenced with composite names like GTAB_GB__0824 for black level, GTAB_GB__0816 for gamma in percents and GTAB_GB__1600 for scale.</GTAB_GB>
+      <GTAB_B>Identifies Gamma-table for the blue color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_B can be referenced with composite names like GTAB_B__0824 for black level, GTAB_B__0816 for gamma in percents and GTAB_B__1600 for scale.</GTAB_B>
+      <SDRAM_CHN20>Internal value used by the driver (memory controller register 0 channel 2)</SDRAM_CHN20>
+      <SDRAM_CHN21>Internal value used by the driver (memory controller register 1 channel 2)</SDRAM_CHN21>
+      <SDRAM_CHN22>Internal value used by the driver (memory controller register 2 channel 2)</SDRAM_CHN22>
+      <COMPRESSOR_RUN>Compressor state: 0 - stopped, 1 - compress single frame, 2 - run continuously. Some applications (streamer, videorecorder) rely on this register to be set to 2</COMPRESSOR_RUN>
+      <COMPRESSOR_SINGLE>Pseudo-register to write COMPERRSOR_RUN_SINGLE here. Same as COMPRESSOR_RUN, just the command will not propagate to the next frames</COMPRESSOR_SINGLE>
+      <COMPMOD_BYRSH>Additional bayer shift in compressor only (to swap meanings of the colors), 0..3</COMPMOD_BYRSH>
+      <COMPMOD_TILSH>Diagonal shift of the 16x16 pixel block in the 20x20 tile that compressor receives (0 - top left corner is (0,0), ..., 4 - top left corner is (4,4))</COMPMOD_TILSH>
+      <COMPMOD_DCSUB>Subtract average block pixel value before DCT and add it back after</COMPMOD_DCSUB>
+      <COMPMOD_QTAB>Quantization table bank number (set by the driver)</COMPMOD_QTAB>
+      <SENSOR_REGS>Sensor internal registers (sensor-specific). In PHP scripts it is possible to reference individual register/bit fields with composite names, i.e. SENSOR_REGS160__0403 in Micron MT9P031 sensor allows to edit test patter number - bits 3..6 of the sensor register 160 (0xa0). There is additional suffix availble in multi-sesnor cameras. Some parameters may have different values for different sensor, in that case __A (and __a) reference register of sensor 1, __B (__b) and __C (__c) - sensors 2 and 3. Parametes with upper case (__A, __B and __C) will reference the base parameter if individual is not defined, low case suffixes are strict and return error if the parameter does not have individual values for sensors.</SENSOR_REGS>
+      <DAEMON_EN>Controls running daemons (individually turns them on/off by setting/resetting the related bit). It is more convinient to control them as individual bits using defined composite parameters, like DAEMON_EN_AUTOEXPOSURE, DAEMON_EN_STREAMER, etc.</DAEMON_EN>
+      <DAEMON_EN_AUTOEXPOSURE>0 - turns autoexposure daemon off, 1 - on. When off - not just autoexposure, but also white balance and HDR are disabled</DAEMON_EN_AUTOEXPOSURE>
+      <DAEMON_EN_STREAMER>0 - turns the videostreamer off, 1 - on.</DAEMON_EN_STREAMER>
+      <DAEMON_EN_CCAMFTP>0 - turns the FTP uploader off, 1 - on. (not yet implemented)</DAEMON_EN_CCAMFTP>
+      <DAEMON_EN_CAMOGM>0 - turns videorecording  off, 1 - on. (not yet implemented)</DAEMON_EN_CAMOGM>
+      <DAEMON_EN_TEMPERATURE>0 - turns temperature logging  off, 1 - on</DAEMON_EN_TEMPERATURE>
+      <DAEMON_EN_AUTOCAMPARS>when set to 1 autocampars daemon will wake up, launch autocampars.php script (that will actually process the provided command of saving/restoring parameters from the file) and goes back to sleep by clearing this bit by itself.</DAEMON_EN_AUTOCAMPARS>
+      <AEXP_FRACPIX>Fraction of all pixels that should be below P_AEXP_LEVEL (16.16 - 0x10000 - all pixels)</AEXP_FRACPIX>
+      <AEXP_LEVEL>Target output level:  [P_AEXP_FRACPIX]/0x10000 of all pixels should have value below it (also 16.16 - 0x10000 - full output scale)</AEXP_LEVEL>
+      <HDR_DUR>0 - HDR 0ff, >1 - duration of same exposure (currently 1 or 2 - for free running)</HDR_DUR>
+      <HDR_VEXPOS>Second exposure setting in alternating frames HDR mode. if it is less than 0x10000 - number of lines of exposure, >=10000 - relative to "normal" exposure</HDR_VEXPOS>
+      <EXP_AHEAD>How many frames ahead of the current frame write exposure to the sensor</EXP_AHEAD>
+      <AE_THRESH>Autoexposure error (logariphmic difference between calculated and current exposures) is integrated between frame and corrections are scaled when error is below thershold.</AE_THRESH>
+      <WB_THRESH>White balance error (logariphmic difference between calculated and current values) is integrated between frame and corrections are scaled when error is below thershold (not yet implemented)</WB_THRESH>
+      <AE_PERIOD>Autoexposure period (will be increased if below the latency)</AE_PERIOD>
+      <WB_PERIOD>White balance period (will be increased if below the latency)</WB_PERIOD>
+      <WB_CTRL>Combines WB_CTRL and WB_EN fields</WB_CTRL>
+      <WB_MASK>Bitmask - which colors to adjust (1 - adjust, 0 - keepe). Default on is 0xd - all colors but Green1</WB_MASK>
+      <WB_EN>Enable (1) or disable (0) automatic white balance adjustment. When enabled each color is individually controlled by WB_MASK</WB_EN>
+      <WB_WHITELEV>White balance level of white (16.16 - 0x10000 is full scale, 0xfae1 - 98%, default)</WB_WHITELEV>
+      <WB_WHITEFRAC>White balance fraction (16.16) of all pixels that have level above [P_WB_WHITELEV] for the brightest color [P_WB_WHITELEV] will be decreased if needed to satisfy [P_WB_WHITELEV]. default is 1% (0x028f)</WB_WHITEFRAC>
+      <WB_MAXWHITE>Maximal allowed white pixels fraction (16.16) to have level above [WB_WHITELEV] for the darkest color of all. If this limit is exceeded there will be no correction performed (waiting for autoexposure to decrease overall brightness).</WB_MAXWHITE>
+      <WB_SCALE_R>Additional correction for red/green from calulated by white balance.  0x10000 - 1.0 (default)</WB_SCALE_R>
+      <WB_SCALE_GB>Additional correction for green2/green from calulated by white balance.  0x10000 - 1.0 (default). May be used for the color HDR mode</WB_SCALE_GB>
+      <WB_SCALE_B>Additional correction for blue/green from calulated by white balance.  0x10000 - 1.0 (default)</WB_SCALE_B>
+      <HISTRQ>Single histogram calculation request address (used automatically)</HISTRQ>
+      <HISTRQ_Y>Single histogram calculation request for Y (green1) histogram (used automatically)</HISTRQ_Y>
+      <HISTRQ_C>Single histogram calculation request for C (red, green2, blue) histograms (used automatically)</HISTRQ_C>
+      <HISTRQ_YC>Single histogram calculation request for Y and C (red, green, green2, blue) histograms (used automatically)</HISTRQ_YC>
+      <PROFILE>index to access profiles as pastpars (i.e. from PHP ELPHEL_PROFILE1,PHP ELPHEL_PROFILE2)</PROFILE>
+      <GAIN_MIN>Minimal sensor analog gain (0x10000 - 1.0) - used for  white balancing. May be user limited from the hardware capabilities.</GAIN_MIN>
+      <GAIN_MAX>Maximal sensor analog gain (0x10000 - 1.0) - used for  white balancing. May be user limited from the hardware capabilities.</GAIN_MAX>
+      <GAIN_CTRL>Analog gain control for white balance. Combines GAIN_STEP and ANA_GAIN_ENABLE</GAIN_CTRL>
+      <GAIN_STEP>minimal correction to be applied to the analog gain (should be set larger that sensor actual gain step to prevent oscillations (0x100 - 1.0, 0x20 - 1/8)</GAIN_STEP>
+      <ANA_GAIN_ENABLE>Enabling analog gain control in white balancing (it uses scaling in gamma tables for fine adjustments and may additionally adjust analog gains if this value is 1</ANA_GAIN_ENABLE>
+      <AUTOCAMPARS_CTRL>Input patrameter for the autocampars daemon to execute when enabled: bits 0..24 - parameter groups to restore, bits 28..30: 1 - restore, 2 - save, 3 - set default 4 save as default 5 - init. Combines AUTOCAMPARS_GROUPS, AUTOCAMPARS_PAGE and AUTOCAMPARS_CMD</AUTOCAMPARS_CTRL>
+      <AUTOCAMPARS_GROUPS>Input patrameter for the autocampars daemon to execute when enabled: each of the 24 bits enables restoration of the related parameter group</AUTOCAMPARS_GROUPS>
+      <AUTOCAMPARS_PAGE>Input patrameter for the autocampars daemon to execute when enabled - page number to use to save/restore parameters. 0..14 - absolute page number, 15 - default when reading, next after last saved - when writing (15 will be replaced by the particular number by autocampars, so that value can be read back</AUTOCAMPARS_PAGE>
+      <AUTOCAMPARS_CMD>Commands for the autocampars daemon to execute (to use from PHP - add ELPHEL_CONST_ to the name):`
+              1 - AUTOCAMPARS_CMD_RESTORE - restore specified groups of parameters from the specified page`
+              2 - AUTOCAMPARS_CMD_SAVE - save all current parameters to the specified group (page 0 is write-protected)`
+              3 - AUTOCAMPARS_CMD_DFLT - make selected page the default one (used at startup)`
+              4 - AUTOCAMPARS_CMD_SAVEDFLT - save all current parameters to the specified group (page 0 is write-protected) and make it default (used at startup)`
+              5 - AUTOCAMPARS_CMD_INIT - reset sensor/sequencers, restore all parameters from the specified page</AUTOCAMPARS_CMD>
+      <FTP_PERIOD>Desired period of image upload to the remote FTP server (seconds)</FTP_PERIOD>
+      <FTP_TIMEOUT>Maximal waiting time for the image to be uploaded to the remote server</FTP_TIMEOUT>
+      <FTP_UPDATE>Maximal time between updates (camera wil re-read remote configuration file)</FTP_UPDATE>
+      <FTP_NEXT_TIME>Sheduled time of the next FTP upload in seconds from epoch (G_ parameter)</FTP_NEXT_TIME>
+      <MAXAHEAD>Maximal number of frames ahead of current to be programmed to hardware</MAXAHEAD>
+      <THIS_FRAME>Current absolute frame number (G_ parameter, readonly)</THIS_FRAME>
+      <CIRCBUFSIZE>Circular video buffer size in bytes (G_ parameter, readonly)</CIRCBUFSIZE>
+      <FREECIRCBUF>Free space in the circular video buffer in bytes - only make sense when used with the global read pointer CIRCBUFRP (G_ parameter, readonly)</FREECIRCBUF>
+      <CIRCBUFWP>Circular video buffer write pointer - where the next acquired frame will start(G_ parameter, readonly)</CIRCBUFWP>
+      <CIRCBUFRP>Circular video buffer (global) read pointer. Used for synchronization between applications (i.e. reduce the streamer CPU load/fps if video recorder is not keeping up with the incoming data (G_ parameter)</CIRCBUFRP>
+      <FRAME_SIZE>Size of the last compressed frame in bytes (w/o Exif and JFIF headers)</FRAME_SIZE>
+      <SECONDS>Buffer used to read/write FPGA real time timer, seconds from epoch (G_ parameter)</SECONDS>
+      <MICROSECONDS>Buffer used to read/write FPGA real time timer, microseconds (G_ parameter)</MICROSECONDS>
+      <CALLNASAP>Bit mask of the internal tasks that can use FPGA sequencer - can be modified with parseq.php (G_ parameter)</CALLNASAP>
+      <CALLNEXT>Four registers (CALLNEXT1..CALLNEXT4) that specify latencies of the internal tasks - can be modified with parseq.php (G_ parameters)</CALLNEXT>
+      <NEXT_AE_FRAME>Next frame when autoexposure is scheduled (G_ parameter)</NEXT_AE_FRAME>
+      <NEXT_WB_FRAME>Next frame when white balancing is scheduled (G_ parameter)</NEXT_WB_FRAME>
+      <HIST_DIM_01>Zero levels (on 0xffff scale) for red and green1 color components for white balancing and autoexposure (G_ parameter)</HIST_DIM_01>
+      <HIST_DIM_23>Zero levels (on 0xffff scale) for green2 and blue color components for white balancing and autoexposure (G_ parameter)</HIST_DIM_23>
+      <AE_INTEGERR></AE_INTEGERR>
+      <WB_INTEGERR></WB_INTEGERR>
+      <TASKLET_CTL>Tasklet control, parent to HISTMODE_Y, HISTMODE_C and additionally:`
+              bit 0 (TASKLET_CTL_PGM) - disable programming parameters (should not be)`
+              Bit 1 (TASKLET_CTL_IGNPAST) - ignore overdue parameters`
+              Bit 2 (TASKLET_CTL_NOSAME) - do not try to process parameters immediately after being written. If 0, only non-ASAP will be processed`
+              Bit 3 (TASKLET_CTL_ENPROF) - enable profiling (saving timing of the interrupts/tasklets in pastpars) - can be controlled through PROFILING_EN (G_parameter)</TASKLET_CTL>
+      <GFOCUS_VALUE>Sum of all blocks focus values inside focus WOI (G_ parameter,readonly)</GFOCUS_VALUE>
+      <HISTMODE_Y>Controls when the Y (green1) histograms are calcuted:`
+              0 - TASKLET_HIST_ALL - calculate each frame`
+              1 - TASKLET_HIST_HALF calculate each even (0,2,4,6 frame of 8)`
+              2 - TASKLET_HIST_QUATER  - calculate twice per 8 (0, 4)`
+              3 - TASKLET_HIST_ONCE - calculate once  per 8 (0)`
+              4 - TASKLET_HIST_RQONLY -  calculate only when specifically requested`
+              7 - TASKLET_HIST_NEVER - never calculate.`
+              NOTE: It is safer to allow all histograms at least once in 8 frames so applications will not be locked up waiting for the missed histogram (G_ parameter)</HISTMODE_Y>
+      <HISTMODE_C>Controls when the C (red, green2, blue) histograms are calcuted:`
+              0 - TASKLET_HIST_ALL - calculate each frame`
+              1 - TASKLET_HIST_HALF calculate each even (0,2,4,6 frame of 8)`
+              2 - TASKLET_HIST_QUATER  - calculate twice per 8 (0, 4)`
+              3 - TASKLET_HIST_ONCE - calculate once  per 8 (0)`
+              4 - TASKLET_HIST_RQONLY -  calculate only when specifically requested`
+              7 - TASKLET_HIST_NEVER - never calculate.`
+              NOTE: It is safer to allow all histograms at least once in 8 frames so applications will not be locked up waiting for the missed histogram (G_ parameter)</HISTMODE_C>
+      <SKIP_DIFF_FRAME>Maximal number of frames of the different size streamer should skip before giving up - needed to allow acquisition of the full-frame images during streaming lower resolution ones(G_ parameter)</SKIP_DIFF_FRAME>
+      <HIST_LAST_INDEX>Index of the last acquired histograms in the histogram cache (G_ parameter,readonly)</HIST_LAST_INDEX>
+      <HIST_Y_FRAME>Frame number for which last Y (green1) histogram was calculated(G_ parameter,readonly)</HIST_Y_FRAME>
+      <HIST_C_FRAME>Frame number for which last C (red, green2, blue) histogram was calculated(G_ parameter,readonly)</HIST_C_FRAME>
+      <DAEMON_ERR>Bits from up to 32 daemons to report problems or requests (G_ parameter)</DAEMON_ERR>
+      <DAEMON_RETCODE>32 locations - DAEMON_RETCODE0...DAEMON_RETCODE31 to get calues from the running daemons(G_ parameter)</DAEMON_RETCODE>
+      <PROFILING_EN>Enable profiling (saving timing of the interrupts/tasklets in pastpars) - this is a single bit of the TASKLET_CTL parameter.(G_ parameter)</PROFILING_EN>
+      <STROP_MCAST_EN>0 - disable videostreamer multicast, 1 - enable.</STROP_MCAST_EN>
+      <STROP_MCAST_IP>Videostream multicast IP. If == 0 - used addres 232.X.Y.Z, where X.Y.Z is last part of the camera IP</STROP_MCAST_IP>
+      <STROP_MCAST_PORT>Videostream multicast port.</STROP_MCAST_PORT>
+      <STROP_MCAST_TTL>Videostream multicast TTL.</STROP_MCAST_TTL>
+      <STROP_AUDIO_EN>0 - disable videostream audio, 1 - enable.</STROP_AUDIO_EN>
+      <STROP_AUDIO_RATE>Videostream audio rate.</STROP_AUDIO_RATE>
+      <STROP_AUDIO_CHANNEL>Videostream audio channels: 1 - mono, 2 - stereo.</STROP_AUDIO_CHANNEL>
+      <STROP_FRAMES_SKIP>How many frames skip before next output; 0 - outpur each frame, 1 - output/skip = 1/1 for two frames, 2 - output frame and skip next 2 from 3 frames etc.</STROP_FRAMES_SKIP>
+      <AUDIO_CAPTURE_VOLUME>streamer and camogm2 audio capture volume. 0 == 0%, 65535 == 100%.</AUDIO_CAPTURE_VOLUME>
+      <MULTISENS_EN>0 - single sensor, no 10359A, otherwise - bitmask of the sensors enabled (obeys G_SENS_AVAIL that should not be modified at runtime).</MULTISENS_EN>
+      <MULTI_PHASE_SDRAM>Similar to SENSOR_PHASE, contols 10359 SDRAM. Adjusted automatically</MULTI_PHASE_SDRAM>
+      <MULTI_PHASE1>  "Similar to SENSOR_PHASE, but for sensor1, connected to 10359</MULTI_PHASE1>
+      <MULTI_PHASE2>  "Similar to SENSOR_PHASE, but for sensor2, connected to 10359</MULTI_PHASE2>
+      <MULTI_PHASE3>  "Similar to SENSOR_PHASE, but for sensor3, connected to 10359</MULTI_PHASE3>
+      <MULTI_SEQUENCE>Sensor sequence (bits 0,1 - first, 2,3 - second, 4,5 - third). 0 - disable. Will obey SENS_AVAIL and MULTISENS_EN</MULTI_SEQUENCE>
+      <MULTI_FLIPH>  "additional per-sensor horizontal flip to global FLIPH, same bits as in G_SENS_AVAIL</MULTI_FLIPH>
+      <MULTI_FLIPV>  "additional per-sensor vertical flip to global FLIPV, same bits as in G_SENS_AVAIL</MULTI_FLIPV>
+      <MULTI_MODE>   "Mode 0 - single sensor (first in sequence), 1 - composite (only enabled in triggered mode - TRIG=4)</MULTI_MODE>
+      <MULTI_HBLANK> "Horizontal blanking for buffered frames (2,3) - not needed?</MULTI_HBLANK>
+      <MULTI_CWIDTH> "Composite frame width  (stored while in single-sensor mode, copied to WOI_WIDTH)</MULTI_CWIDTH>
+      <MULTI_CHEIGHT>Composite frame height (stored while in single-sensor mode)</MULTI_CHEIGHT>
+      <MULTI_CLEFT>  "Composite frame left margin  (stored while in single-sensor mode, copied to WOI_LEFT)</MULTI_CLEFT>
+      <MULTI_CTOP>   "Composite frame top margin (stored while in single-sensor mode)</MULTI_CTOP>
+      <MULTI_CFLIPH> "Horizontal flip for composite image (stored while in single-sensor mode)</MULTI_CFLIPH>
+      <MULTI_CFLIPV> "Vertical flip for composite image (stored while in single-sensor mode)</MULTI_CFLIPV>
+      <MULTI_VBLANK> "Vertical blanking for buffered frames (2,3) BEFORE FRAME, not after</MULTI_VBLANK>
+      <MULTI_WOI>    "Width of frame 1 (direct)  // Same as next</MULTI_WOI>
+      <MULTI_WIDTH1> "Width of frame 1 (direct) // same as MULTI_WOI !!!!</MULTI_WIDTH1>
+      <MULTI_WIDTH2> "Width of frame 2 (first buffered)</MULTI_WIDTH2>
+      <MULTI_WIDTH3> "Width of frame 3 (second buffered)</MULTI_WIDTH3>
+      <MULTI_HEIGHT1>Height of frame 1 (direct)</MULTI_HEIGHT1>
+      <MULTI_HEIGHT2>Height of frame 2 (first buffered)</MULTI_HEIGHT2>
+      <MULTI_HEIGHT3>Height of frame 3 (second buffered)</MULTI_HEIGHT3>
+      <MULTI_LEFT1>  "Left margin of frame 1 (direct) </MULTI_LEFT1>
+      <MULTI_LEFT2>  "Left margin of frame 2 (first buffered)</MULTI_LEFT2>
+      <MULTI_LEFT3>  "Left margin of frame 3 (second buffered)</MULTI_LEFT3>
+      <MULTI_TOP1>   "Top margin of frame 1 (direct)</MULTI_TOP1>
+      <MULTI_TOP2>   "Top margin of frame 2 (first buffered)</MULTI_TOP2>
+      <MULTI_TOP3>   "Top margin of frame 3 (second buffered)</MULTI_TOP3>
+      <MULTI_TOPSENSOR>Number of sensor channel used in first (direct) frame: 0..2, internal parameter (window->sensorin) - used internally</MULTI_TOPSENSOR>
+      <MULTI_SELECTED>Number of sensor channel (1..3) used when composite mode is disabled</MULTI_SELECTED>
+      <M10359_REGS>10359 board inrternal registers, total of 96. First 64 are 16-bit, next 32 - 32 bit wide (Register definitions in http://elphel.cvs.sourceforge.net/viewvc/elphel/elphel353-8.0/os/linux-2.6-tag--devboard-R2_10-4/arch/cris/arch-v32/drivers/elphel/multisensor.h?view=markup).</M10359_REGS>
+      <SENS_AVAIL>Bitmask of the sensors attached to 10359 (0 if no 10359 brd, multisensor operations disabled). It is automatically set during sensor detection.</SENS_AVAIL>
+      <FPGA_TIM0>FPGA timing parameter 0 - difference between DCLK pad and DCM input, signed (ps). Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</FPGA_TIM0>
+      <FPGA_TIM1>FPGA timing parameter 1. Persistent through initialization.</FPGA_TIM1>
+      <DLY359_OUT>Output delay in 10359 board (clock to out) in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_OUT>
+      <DLY359_P1>Delay in 10359 board sensor port 1 (clock to sensor - clock to DCM) in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_P1>
+      <DLY359_P2>Delay in 10359 board sensor port 2 (clock to sensor - clock to DCM) in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_P2>
+      <DLY359_P3>Ddelay in 10359 board sensor port 3 (clock to sensor - clock to DCM) in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_P3>
+      <DLY359_C1>Cable delay in sensor port 1 in ps, Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_C1>
+      <DLY359_C2>Cable delay in sensor port 2 in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_C2>
+      <DLY359_C3>Cable delay in sensor port 3 in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_C3>
+      <MULTI_CFG>Additional configuration options for 10359 board. Bit 0 - use 10353 system clock, not the local one (as on 10359 rev 0). Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</MULTI_CFG>
+      <DEBUG>Selectively enables debug outputs from differnt parts of the drivers. Can easily lock the system as some output goes from inside the interrupt service code or from the parts of the code where interrups are disabled. To us it safely you need to kill the klog daemon an redirect debug output to file with "printk_mod &" command. After that the output will be available as http://camera_ip/var/klog.txt". The printk_mod also kills restart restart daemon so any normally restarted applications (like lighttpd, php, imgsrv) will not be restarted automatically (G_ parameter, not frame-related)</DEBUG>
+      <TEMPERATURE01>Temperature data from the 10359 board (if available, lower 16 bits) and the first sensor front end (high 16 bits). In each short word bit 12 (0x1000) is set for negative Celsius, lower 12 bits - absolute value of the Celsius, lower bit weight is 1/16 grad. C. This data is provided by the temperature daemon if it is enabled and running, data is embedded in the Exif MakerNote bytes 56-59</TEMPERATURE01>
+      <TEMPERATURE23>Temperature data from the second sensor front end (if available, lower 16 bits) and the third sensor front end (high 16 bits). In each short word bit 12 (0x1000) is set for negative Celsius, lower 12 bits - absolute value of the Celsius, lower bit weight is 1/16 grad. C. This data is provided by the temperature daemon if it is enabled and running, data is embedded in the Exif MakerNote bytes 56-59</TEMPERATURE23>
+    </descriptions>
+<!-- Parameter groups that can be restored from the saved values  -->
+    <groupNames>
+      <init bit="0">Initialization</init>
+      <woi bit="1">Window of Interest (WOI)</woi>
+      <image bit="2">Image color, quality, ...</image>
+      <histWnd bit="3">Histogram Window</histWnd>
+      <autoexposure bit="5">Autoexposure</autoexposure>
+      <whiteBalance bit="6">White Balance</whiteBalance>
+      <streamer bit="7">Streamer</streamer>
+      <camftp bit="8">FTP Upload</camftp>
+      <camogm bit="9">In-camera recording</camogm>
+      <vignet bit="10">Vignetting correction</vignet>
+      <multisensor bit="11">Muti-sensor parameters</multisensor>
+      <trigger bit="12">Camera trigger modes</trigger>
+      <persistent bit="21">Global parameters that survive sensor initializaion</persistent>
+      <unsafe bit="22">Not safe yet</unsafe>
+      <diagn bit="23">Diagnostics, debug</diagn>
+    </groupNames>
+<!-- Parameter groups -->
+    <groups>
+      <comment type="text">"init"</comment>
+      <timestamp type="text">"init"</timestamp>
+      <SENSOR_RUN>"init"</SENSOR_RUN>
+      <BAYER>"init"</BAYER>
+      <FP1000SLIM>"init,streamer"</FP1000SLIM>
+      <CLK_FPGA>"unsafe"</CLK_FPGA>
+      <CLK_SENSOR>"unsafe"</CLK_SENSOR>
+      <FPGA_XTRA>"init"</FPGA_XTRA>
+      <TRIG>"init,multisensor,trigger"</TRIG>
+      <EXPOS>"init,autoexposure"</EXPOS>
+      <VIRT_KEEP>"init,woi"</VIRT_KEEP>
+      <VIRT_WIDTH>"woi"</VIRT_WIDTH>
+      <VIRT_HEIGHT>"woi"</VIRT_HEIGHT>
+      <WOI_LEFT>"init,woi,multisensor"</WOI_LEFT>
+      <WOI_TOP>"init,woi,multisensor"</WOI_TOP>
+      <WOI_WIDTH>"init,woi,multisensor"</WOI_WIDTH>
+      <WOI_HEIGHT>"init,woi,multisensor"</WOI_HEIGHT>
+      <FLIPH>"init,woi,multisensor"</FLIPH>
+      <FLIPV>"init,woi,multisensor"</FLIPV>
+      <FPSFLAGS>"init,streamer"</FPSFLAGS>
+      <DCM_HOR>"init,woi"</DCM_HOR>
+      <DCM_VERT>"init,woi"</DCM_VERT>
+      <BIN_HOR>"init,woi"</BIN_HOR>
+      <BIN_VERT>"init,woi"</BIN_VERT>
+      <FPGATEST>"init,image,diagn"</FPGATEST>
+      <TESTSENSOR>"init,image,diagn"</TESTSENSOR>
+      <COLOR>"init,image"</COLOR>
+      <FRAMESYNC_DLY>"init"</FRAMESYNC_DLY>
+      <PF_HEIGHT>"init"</PF_HEIGHT>
+      <BITS>"init"</BITS>
+      <SHIFTL>"init,image"</SHIFTL>
+      <FPNS>"init,image"</FPNS>
+      <FPNM>"init,image"</FPNM>
+      <VIRTTRIG>"init"</VIRTTRIG>
+      <GAINR>"init,image"</GAINR>
+      <GAING>"init,image"</GAING>
+      <GAINB>"init,image"</GAINB>
+      <GAINGB>"init,image"</GAINGB>
+      <RSCALE_CTL>"init,image"</RSCALE_CTL>
+      <GSCALE_CTL>"init,image"</GSCALE_CTL>
+      <BSCALE_CTL>"init,image"</BSCALE_CTL>
+      <FATZERO>"init"</FATZERO>
+      <QUALITY>"init,image"</QUALITY>
+      <PORTRAIT>"init,image"</PORTRAIT>
+      <CORING_INDEX>"init,image"</CORING_INDEX>
+      <COLOR_SATURATION_BLUE>"init,image"</COLOR_SATURATION_BLUE>
+      <COLOR_SATURATION_RED>"init,image"</COLOR_SATURATION_RED>
+      <VIGNET_AX>"init,vignet"</VIGNET_AX>
+      <VIGNET_AY>"init,vignet"</VIGNET_AY>
+      <VIGNET_BX>"init,vignet"</VIGNET_BX>
+      <VIGNET_BY>"init,vignet"</VIGNET_BY>
+      <VIGNET_C>"init,vignet"</VIGNET_C>
+      <VIGNET_SHL>"init,vignet"</VIGNET_SHL>
+      <SCALE_ZERO_IN>"init,vignet"</SCALE_ZERO_IN>
+      <SCALE_ZERO_OUT>"init,vignet"</SCALE_ZERO_OUT>
+      <DGAINR>"init,vignet"</DGAINR>
+      <DGAING>"init,vignet"</DGAING>
+      <DGAINGB>"init,vignet"</DGAINGB>
+      <DGAINB>"init,vignet"</DGAINB>
+      <CORING_PAGE>"init,image"</CORING_PAGE>
+      <SENSOR_PHASE>"init,unsafe,diagn"</SENSOR_PHASE>
+      <TEMPERATURE_PERIOD>"init,diagn"</TEMPERATURE_PERIOD>
+      <AUTOEXP_ON>"init,autoexposure"</AUTOEXP_ON>
+      <HISTWND_RWIDTH>"init,histWnd"</HISTWND_RWIDTH>
+      <HISTWND_RHEIGHT>"init,histWnd"</HISTWND_RHEIGHT>
+      <HISTWND_RLEFT>"init,histWnd"</HISTWND_RLEFT>
+      <HISTWND_RTOP>"init,histWnd"</HISTWND_RTOP>
+      <AUTOEXP_EXP_MAX>"init,autoexposure"</AUTOEXP_EXP_MAX>
+      <FOCUS_SHOW>"init"</FOCUS_SHOW>
+      <FOCUS_SHOW1>"init"</FOCUS_SHOW1>
+      <RFOCUS_LEFT>"init"</RFOCUS_LEFT>
+      <RFOCUS_WIDTH>"init"</RFOCUS_WIDTH>
+      <RFOCUS_TOP>"init"</RFOCUS_TOP>
+      <RFOCUS_HEIGHT>"init"</RFOCUS_HEIGHT>
+      <FOCUS_FILTER>"init"</FOCUS_FILTER>
+      <TRIG_CONDITION>"init,multisensor,trigger"</TRIG_CONDITION>
+      <TRIG_DELAY>"init,multisensor,trigger"</TRIG_DELAY>
+      <TRIG_OUT>"init,trigger"</TRIG_OUT>
+      <TRIG_PERIOD>"init,multisensor,trigger"</TRIG_PERIOD>
+      <TRIG_BITLENGTH>"init,trigger"</TRIG_BITLENGTH>
+      <EXTERN_TIMESTAMP>"init,multisensor,trigger"</EXTERN_TIMESTAMP>
+      <XMIT_TIMESTAMP>"init,multisensor,trigger"</XMIT_TIMESTAMP>
+      <SKIP_FRAMES>"init"</SKIP_FRAMES>
+      <I2C_QPERIOD>"unsafe"</I2C_QPERIOD>
+      <I2C_BYTES>"unsafe"</I2C_BYTES>
+      <IRQ_SMART>"init,trigger"</IRQ_SMART>
+      <OVERSIZE>"init"</OVERSIZE>
+      <GTAB_R>"init,image,whiteBalance"</GTAB_R>
+      <GTAB_G>"init,image,whiteBalance"</GTAB_G>
+      <GTAB_GB>"init,image,whiteBalance"</GTAB_GB>
+      <GTAB_B>"init,image,whiteBalance"</GTAB_B>
+      <COMPRESSOR_RUN>"init"</COMPRESSOR_RUN>
+      <COMPMOD_BYRSH>"init,image"</COMPMOD_BYRSH>
+      <COMPMOD_TILSH>"init,image"</COMPMOD_TILSH>
+      <COMPMOD_DCSUB>"init,image"</COMPMOD_DCSUB>
+      <DAEMON_EN>"init,diagn"</DAEMON_EN>
+      <DAEMON_EN_AUTOEXPOSURE>"init,diagn"</DAEMON_EN_AUTOEXPOSURE>
+      <DAEMON_EN_STREAMER>"init,streamer,diagn"</DAEMON_EN_STREAMER>
+      <DAEMON_EN_CCAMFTP>"init,camftp,diagn"</DAEMON_EN_CCAMFTP>
+      <DAEMON_EN_CAMOGM>"init,camogm,diagn"</DAEMON_EN_CAMOGM>
+      <DAEMON_EN_AUTOCAMPARS>"diagn"</DAEMON_EN_AUTOCAMPARS>
+      <DAEMON_EN_TEMPERATURE>"init,diagn"</DAEMON_EN_TEMPERATURE>
+      <AEXP_FRACPIX>"init,autoexposure"</AEXP_FRACPIX>
+      <AEXP_LEVEL>"init,autoexposure"</AEXP_LEVEL>
+      <HDR_DUR>"init,autoexposure"</HDR_DUR>
+      <HDR_VEXPOS>"init,autoexposure"</HDR_VEXPOS>
+      <EXP_AHEAD>"init"</EXP_AHEAD>
+      <AE_THRESH>"init,autoexposure"</AE_THRESH>
+      <WB_THRESH>"init,whiteBalance"</WB_THRESH>
+      <AE_PERIOD>"init,autoexposure"</AE_PERIOD>
+      <WB_PERIOD>"init,whiteBalance"</WB_PERIOD>
+      <WB_MASK>"init,whiteBalance"</WB_MASK>
+      <WB_EN>"init,whiteBalance"</WB_EN>
+      <WB_WHITELEV>"init,whiteBalance"</WB_WHITELEV>
+      <WB_WHITEFRAC>"init,whiteBalance"</WB_WHITEFRAC>
+      <WB_MAXWHITE>"init,whiteBalance"</WB_MAXWHITE>
+      <WB_SCALE_R>"init,whiteBalance"</WB_SCALE_R>
+      <WB_SCALE_GB>"init,whiteBalance"</WB_SCALE_GB>
+      <WB_SCALE_B>"init,whiteBalance"</WB_SCALE_B>
+      <GAIN_MIN>"init,whiteBalance"</GAIN_MIN>
+      <GAIN_MAX>"init,whiteBalance"</GAIN_MAX>
+      <GAIN_CTRL>"init,whiteBalance"</GAIN_CTRL>
+      <GAIN_STEP>"init,whiteBalance"</GAIN_STEP>
+      <ANA_GAIN_ENABLE>"init,whiteBalance"</ANA_GAIN_ENABLE>
+      <FTP_PERIOD>"init,camftp"</FTP_PERIOD>
+      <FTP_TIMEOUT>"init,camftp"</FTP_TIMEOUT>
+      <FTP_UPDATE>"init,camftp"</FTP_UPDATE>
+      <MAXAHEAD>"init"</MAXAHEAD>
+      <HIST_DIM_01>"init,autoexposure"</HIST_DIM_01>
+      <HIST_DIM_23>"init,autoexposure"</HIST_DIM_23>
+      <TASKLET_CTL>"init,diagn"</TASKLET_CTL>
+      <HISTMODE_Y>"init,diagn"</HISTMODE_Y>
+      <HISTMODE_C>"init,diagn"</HISTMODE_C>
+      <SKIP_DIFF_FRAME>"init,streamer"</SKIP_DIFF_FRAME>
+      <PROFILING_EN>"init,diagn"</PROFILING_EN>
+      <STROP_MCAST_EN>"init,streamer"</STROP_MCAST_EN>
+      <STROP_MCAST_IP>"init,streamer"</STROP_MCAST_IP>
+      <STROP_MCAST_PORT>"init,streamer"</STROP_MCAST_PORT>
+      <STROP_MCAST_TTL>"init,streamer"</STROP_MCAST_TTL>
+      <STROP_AUDIO_EN>"init,streamer"</STROP_AUDIO_EN>
+      <STROP_AUDIO_RATE>"init,streamer"</STROP_AUDIO_RATE>
+      <STROP_AUDIO_CHANNEL>"init,streamer"</STROP_AUDIO_CHANNEL>
+      <STROP_FRAMES_SKIP>"init,streamer"</STROP_FRAMES_SKIP>
+      <AUDIO_CAPTURE_VOLUME>"init,streamer"</AUDIO_CAPTURE_VOLUME>
+      <MULTI_PHASE_SDRAM>"unsafe,diagn"</MULTI_PHASE_SDRAM>
+      <MULTI_PHASE1>"init,unsafe,diagn"</MULTI_PHASE1>
+      <MULTI_PHASE2>"init,unsafe,diagn"</MULTI_PHASE2>
+      <MULTI_PHASE3>"init,unsafe,diagn"</MULTI_PHASE3>
+      <MULTI_SEQUENCE>"multisensor"</MULTI_SEQUENCE>
+      <MULTI_FLIPH>"init,multisensor"</MULTI_FLIPH>
+      <MULTI_FLIPV>"init,multisensor"</MULTI_FLIPV>
+      <MULTI_MODE>"init,multisensor"</MULTI_MODE>
+      <MULTI_HBLANK>"init,multisensor"</MULTI_HBLANK>
+      <MULTI_CWIDTH>"init"</MULTI_CWIDTH>
+      <MULTI_VBLANK>"init,multisensor"</MULTI_VBLANK>
+      <MULTI_WIDTH1>"init,multisensor"</MULTI_WIDTH1>
+      <MULTI_WIDTH2>"init,multisensor"</MULTI_WIDTH2>
+      <MULTI_WIDTH3>"init,multisensor"</MULTI_WIDTH3>
+      <MULTI_HEIGHT1>"init,multisensor"</MULTI_HEIGHT1>
+      <MULTI_HEIGHT2>"init,multisensor"</MULTI_HEIGHT2>
+      <MULTI_HEIGHT3>"init,multisensor"</MULTI_HEIGHT3>
+      <MULTI_LEFT1>"init,multisensor"</MULTI_LEFT1>
+      <MULTI_LEFT2>"init,multisensor"</MULTI_LEFT2>
+      <MULTI_LEFT3>"init,multisensor"</MULTI_LEFT3>
+      <MULTI_TOP1>"init,multisensor"</MULTI_TOP1>
+      <MULTI_TOP2>"init,multisensor"</MULTI_TOP2>
+      <MULTI_TOP3>"init,multisensor"</MULTI_TOP3>
+      <MULTI_SELECTED>"init,multisensor"</MULTI_SELECTED>
+      <TEMPERATURE01>"diagn"</TEMPERATURE01>
+      <TEMPERATURE23>"diagn"</TEMPERATURE23>
+      <SENS_AVAIL>"diagn"</SENS_AVAIL>
+      <FPGA_TIM0>"persistent"</FPGA_TIM0>
+      <DLY359_OUT>"persistent"</DLY359_OUT>
+      <DLY359_P1>"persistent"</DLY359_P1>
+      <DLY359_P2>"persistent"</DLY359_P2>
+      <DLY359_P3>"persistent"</DLY359_P3>
+      <DLY359_C1>"persistent"</DLY359_C1>
+      <DLY359_C2>"persistent"</DLY359_C2>
+      <DLY359_C3>"persistent"</DLY359_C3>
+      <MULTI_CFG>"persistent"</MULTI_CFG>
+      <DEBUG>"persistent"</DEBUG>
+    </groups>
+<!-- Saved parameter Sets -->
+    <paramSets>
+      <set number="0">
+        <comment>"Default values of parameters (page 0)"</comment>
+        <SENSOR_RUN>"2"</SENSOR_RUN>
+        <BAYER>"0"</BAYER>
+        <FP1000SLIM>"0"</FP1000SLIM>
+        <FPGA_XTRA>"1000"</FPGA_XTRA>
+        <TRIG>"0"</TRIG>
+        <EXPOS>"10000"</EXPOS>
+        <VIRT_KEEP>"0"</VIRT_KEEP>
+        <WOI_LEFT>"0"</WOI_LEFT>
+        <WOI_TOP>"0"</WOI_TOP>
+        <WOI_WIDTH>"10000"</WOI_WIDTH>
+        <WOI_HEIGHT>"10000"</WOI_HEIGHT>
+        <FLIPH>"0"</FLIPH>
+        <FLIPV>"0"</FLIPV>
+        <FPSFLAGS>"0"</FPSFLAGS>
+        <DCM_HOR>"1"</DCM_HOR>
+        <DCM_VERT>"1"</DCM_VERT>
+        <BIN_HOR>"1"</BIN_HOR>
+        <BIN_VERT>"1"</BIN_VERT>
+        <FPGATEST>"0"</FPGATEST>
+        <TESTSENSOR>"0"</TESTSENSOR>
+        <COLOR>"1"</COLOR>
+        <FRAMESYNC_DLY>"0"</FRAMESYNC_DLY>
+        <PF_HEIGHT>"0"</PF_HEIGHT>
+        <BITS>"8"</BITS>
+        <SHIFTL>"0"</SHIFTL>
+        <FPNS>"0"</FPNS>
+        <FPNM>"0"</FPNM>
+        <VIRTTRIG>"0"</VIRTTRIG>
+        <GAINR>"131072"</GAINR>
+        <GAING>"131072"</GAING>
+        <GAINB>"131072"</GAINB>
+        <GAINGB>"131072"</GAINGB>
+        <RSCALE>"65536"</RSCALE>
+        <GSCALE>"65536"</GSCALE>
+        <BSCALE>"65536"</BSCALE>
+        <RSCALE_CTL>"0"</RSCALE_CTL>
+        <GSCALE_CTL>"0"</GSCALE_CTL>
+        <BSCALE_CTL>"0"</BSCALE_CTL>
+        <QUALITY>"80"</QUALITY>
+        <PORTRAIT>"0"</PORTRAIT>
+        <CORING_INDEX>"327685"</CORING_INDEX>
+        <COLOR_SATURATION_BLUE>"200"</COLOR_SATURATION_BLUE>
+        <COLOR_SATURATION_RED>"200"</COLOR_SATURATION_RED>
+        <VIGNET_AX>"0"</VIGNET_AX>
+        <VIGNET_AY>"0"</VIGNET_AY>
+        <VIGNET_BX>"0"</VIGNET_BX>
+        <VIGNET_BY>"0"</VIGNET_BY>
+        <VIGNET_C>"32768"</VIGNET_C>
+        <VIGNET_SHL>"1"</VIGNET_SHL>
+        <SCALE_ZERO_IN>"2560"</SCALE_ZERO_IN>
+        <SCALE_ZERO_OUT>"2560"</SCALE_ZERO_OUT>
+        <DGAINR>"32768"</DGAINR>
+        <DGAING>"32768"</DGAING>
+        <DGAINGB>"32768"</DGAINGB>
+        <DGAINB>"32768"</DGAINB>
+        <CORING_PAGE>"0"</CORING_PAGE>
+        <TEMPERATURE_PERIOD>"2000"</TEMPERATURE_PERIOD>
+        <AUTOEXP_ON>"1"</AUTOEXP_ON>
+        <HISTWND_RWIDTH>"32768"</HISTWND_RWIDTH>
+        <HISTWND_RHEIGHT>"32768"</HISTWND_RHEIGHT>
+        <HISTWND_RLEFT>"32768"</HISTWND_RLEFT>
+        <HISTWND_RTOP>"32768"</HISTWND_RTOP>
+        <AUTOEXP_EXP_MAX>"500000"</AUTOEXP_EXP_MAX>
+        <FOCUS_SHOW>"0"</FOCUS_SHOW>
+        <FOCUS_SHOW1>"0"</FOCUS_SHOW1>
+        <RFOCUS_LEFT>"0x8000"</RFOCUS_LEFT>
+        <RFOCUS_WIDTH>"0x8000"</RFOCUS_WIDTH>
+        <RFOCUS_TOP>"0x8000"</RFOCUS_TOP>
+        <RFOCUS_HEIGHT>"0x8000"</RFOCUS_HEIGHT>
+        <FOCUS_FILTER>"0"</FOCUS_FILTER>
+        <TRIG_CONDITION>"0"</TRIG_CONDITION>
+        <TRIG_DELAY>"0"</TRIG_DELAY>
+        <TRIG_OUT>"0"</TRIG_OUT>
+        <TRIG_PERIOD>"0"</TRIG_PERIOD>
+        <TRIG_BITLENGTH>"31"</TRIG_BITLENGTH>
+        <EXTERN_TIMESTAMP>"1"</EXTERN_TIMESTAMP>
+        <XMIT_TIMESTAMP>"1"</XMIT_TIMESTAMP>
+        <SKIP_FRAMES>"0"</SKIP_FRAMES>
+        <IRQ_SMART>"3"</IRQ_SMART>
+        <OVERSIZE>"0"</OVERSIZE>
+        <GTAB_R>"171508736"</GTAB_R>
+        <GTAB_G>"171508736"</GTAB_G>
+        <GTAB_GB>"171508736"</GTAB_GB>
+        <GTAB_B>"171508736"</GTAB_B>
+        <COMPRESSOR_RUN>"2"</COMPRESSOR_RUN>
+        <COMPMOD_BYRSH>"0"</COMPMOD_BYRSH>
+        <COMPMOD_TILSH>"0"</COMPMOD_TILSH>
+        <COMPMOD_DCSUB>"0"</COMPMOD_DCSUB>
+        <SENSOR_REGS>""</SENSOR_REGS>
+        <DAEMON_EN>"0"</DAEMON_EN>
+        <DAEMON_EN_AUTOEXPOSURE>"1"</DAEMON_EN_AUTOEXPOSURE>
+        <DAEMON_EN_STREAMER>"1"</DAEMON_EN_STREAMER>
+        <DAEMON_EN_CCAMFTP>"0"</DAEMON_EN_CCAMFTP>
+        <DAEMON_EN_CAMOGM>"0"</DAEMON_EN_CAMOGM>
+        <DAEMON_EN_AUTOCAMPARS>"1"</DAEMON_EN_AUTOCAMPARS>
+        <DAEMON_EN_TEMPERATURE>"0"</DAEMON_EN_TEMPERATURE>
+        <AEXP_FRACPIX>"65408"</AEXP_FRACPIX>
+        <AEXP_LEVEL>"63488"</AEXP_LEVEL>
+        <HDR_DUR>"0"</HDR_DUR>
+        <HDR_VEXPOS>"0x40000"</HDR_VEXPOS>
+        <EXP_AHEAD>"3"</EXP_AHEAD>
+        <AE_THRESH>"500"</AE_THRESH>
+        <WB_THRESH>"500"</WB_THRESH>
+        <AE_PERIOD>"4"</AE_PERIOD>
+        <WB_PERIOD>"16"</WB_PERIOD>
+        <WB_MASK>"0xd"</WB_MASK>
+        <WB_EN>"1"</WB_EN>
+        <WB_WHITELEV>"0xfae1"</WB_WHITELEV>
+        <WB_WHITEFRAC>"0x028f"</WB_WHITEFRAC>
+        <WB_MAXWHITE>"0xccc"</WB_MAXWHITE>
+        <WB_SCALE_R>"0x10000"</WB_SCALE_R>
+        <WB_SCALE_GB>"0x10000"</WB_SCALE_GB>
+        <WB_SCALE_B>"0x10000"</WB_SCALE_B>
+        <GAIN_MIN>"0x10000"</GAIN_MIN>
+        <GAIN_MAX>"0xfc000"</GAIN_MAX>
+        <GAIN_STEP>"0x20"</GAIN_STEP>
+        <ANA_GAIN_ENABLE>"1"</ANA_GAIN_ENABLE>
+        <FTP_PERIOD>"180"</FTP_PERIOD>
+        <FTP_TIMEOUT>"360"</FTP_TIMEOUT>
+        <FTP_UPDATE>"600"</FTP_UPDATE>
+        <DEBUG>"0"</DEBUG>
+        <MAXAHEAD>"2"</MAXAHEAD>
+        <HIST_DIM_01>"0x0a000a00"</HIST_DIM_01>
+        <HIST_DIM_23>"0x0a000a00"</HIST_DIM_23>
+        <AE_INTEGERR>""</AE_INTEGERR>
+        <WB_INTEGERR>""</WB_INTEGERR>
+        <TASKLET_CTL>"0"</TASKLET_CTL>
+        <GFOCUS_VALUE>""</GFOCUS_VALUE>
+        <HISTMODE_Y>"ELPHEL_CONST_TASKLET_HIST_ONCE"</HISTMODE_Y>
+        <HISTMODE_C>"ELPHEL_CONST_TASKLET_HIST_ONCE"</HISTMODE_C>
+        <SKIP_DIFF_FRAME>"4"</SKIP_DIFF_FRAME>
+        <PROFILING_EN>"0"</PROFILING_EN>
+        <STROP_MCAST_EN>"0"</STROP_MCAST_EN>
+        <STROP_MCAST_IP>"0"</STROP_MCAST_IP>
+        <STROP_MCAST_PORT>"20020"</STROP_MCAST_PORT>
+        <STROP_MCAST_TTL>"2"</STROP_MCAST_TTL>
+        <STROP_AUDIO_EN>"0"</STROP_AUDIO_EN>
+        <STROP_AUDIO_RATE>"44100"</STROP_AUDIO_RATE>
+        <STROP_AUDIO_CHANNEL>"2"</STROP_AUDIO_CHANNEL>
+        <STROP_FRAMES_SKIP>"0"</STROP_FRAMES_SKIP>
+        <AUDIO_CAPTURE_VOLUME>"58981"</AUDIO_CAPTURE_VOLUME>
+        <MULTI_MODE>"0"</MULTI_MODE>
+        <MULTI_FLIPH>"0"</MULTI_FLIPH>
+        <MULTI_FLIPV>"0"</MULTI_FLIPV>
+        <MULTI_SELECTED>"1"</MULTI_SELECTED>
+        <SENSOR_PHASE>"589793"</SENSOR_PHASE>
+        <MULTI_PHASE1>"0"</MULTI_PHASE1>
+        <MULTI_PHASE2>"0"</MULTI_PHASE2>
+        <MULTI_PHASE3>"0"</MULTI_PHASE3>
+        <TEMPERATURE01>"-1"</TEMPERATURE01>
+        <TEMPERATURE23>"-1"</TEMPERATURE23>
+      </set>
+      <set number="1">
+        <SENSOR_RUN>"2"</SENSOR_RUN>
+        <BAYER>"0"</BAYER>
+        <FP1000SLIM>"0"</FP1000SLIM>
+        <CLK_FPGA>"160000000"</CLK_FPGA>
+        <CLK_SENSOR>"96000000"</CLK_SENSOR>
+        <FPGA_XTRA>"1000"</FPGA_XTRA>
+        <TRIG>"0"</TRIG>
+        <EXPOS>"50791"</EXPOS>
+        <VIRT_KEEP>"0"</VIRT_KEEP>
+        <VIRT_WIDTH>"1544"</VIRT_WIDTH>
+        <VIRT_HEIGHT>"493"</VIRT_HEIGHT>
+        <WOI_LEFT>"0"</WOI_LEFT>
+        <WOI_TOP>"0"</WOI_TOP>
+        <WOI_WIDTH>"2560"</WOI_WIDTH>
+        <WOI_HEIGHT>"1920"</WOI_HEIGHT>
+        <FLIPH>"0"</FLIPH>
+        <FLIPV>"0"</FLIPV>
+        <FPSFLAGS>"0"</FPSFLAGS>
+        <DCM_HOR>"4"</DCM_HOR>
+        <DCM_VERT>"4"</DCM_VERT>
+        <BIN_HOR>"1"</BIN_HOR>
+        <BIN_VERT>"1"</BIN_VERT>
+        <FPGATEST>"0"</FPGATEST>
+        <TESTSENSOR>"0"</TESTSENSOR>
+        <COLOR>"1"</COLOR>
+        <FRAMESYNC_DLY>"0"</FRAMESYNC_DLY>
+        <PF_HEIGHT>"0"</PF_HEIGHT>
+        <BITS>"8"</BITS>
+        <SHIFTL>"0"</SHIFTL>
+        <FPNS>"0"</FPNS>
+        <FPNM>"0"</FPNM>
+        <VIRTTRIG>"0"</VIRTTRIG>
+        <GAINR>"170640"</GAINR>
+        <GAING>"131072"</GAING>
+        <GAINB>"175185"</GAINB>
+        <GAINGB>"127109"</GAINGB>
+        <RSCALE_CTL>"0"</RSCALE_CTL>
+        <GSCALE_CTL>"0"</GSCALE_CTL>
+        <BSCALE_CTL>"0"</BSCALE_CTL>
+        <FATZERO>"0"</FATZERO>
+        <QUALITY>"44"</QUALITY>
+        <PORTRAIT>"0"</PORTRAIT>
+        <CORING_INDEX>"327685"</CORING_INDEX>
+        <COLOR_SATURATION_BLUE>"200"</COLOR_SATURATION_BLUE>
+        <COLOR_SATURATION_RED>"200"</COLOR_SATURATION_RED>
+        <VIGNET_AX>"0"</VIGNET_AX>
+        <VIGNET_AY>"0"</VIGNET_AY>
+        <VIGNET_BX>"0"</VIGNET_BX>
+        <VIGNET_BY>"0"</VIGNET_BY>
+        <VIGNET_C>"32768"</VIGNET_C>
+        <VIGNET_SHL>"1"</VIGNET_SHL>
+        <SCALE_ZERO_IN>"2560"</SCALE_ZERO_IN>
+        <SCALE_ZERO_OUT>"2560"</SCALE_ZERO_OUT>
+        <DGAINR>"34128"</DGAINR>
+        <DGAING>"32768"</DGAING>
+        <DGAINGB>"33895"</DGAINGB>
+        <DGAINB>"33368"</DGAINB>
+        <CORING_PAGE>"0"</CORING_PAGE>
+        <SENSOR_PHASE>"65505"</SENSOR_PHASE>
+        <TEMPERATURE_PERIOD>"2000"</TEMPERATURE_PERIOD>
+        <AUTOEXP_ON>"1"</AUTOEXP_ON>
+        <HISTWND_RWIDTH>"32768"</HISTWND_RWIDTH>
+        <HISTWND_RHEIGHT>"32768"</HISTWND_RHEIGHT>
+        <HISTWND_RLEFT>"32768"</HISTWND_RLEFT>
+        <HISTWND_RTOP>"32768"</HISTWND_RTOP>
+        <AUTOEXP_EXP_MAX>"500000"</AUTOEXP_EXP_MAX>
+        <FOCUS_SHOW>"0"</FOCUS_SHOW>
+        <FOCUS_SHOW1>"0"</FOCUS_SHOW1>
+        <RFOCUS_LEFT>"32768"</RFOCUS_LEFT>
+        <RFOCUS_WIDTH>"32768"</RFOCUS_WIDTH>
+        <RFOCUS_TOP>"32768"</RFOCUS_TOP>
+        <RFOCUS_HEIGHT>"32768"</RFOCUS_HEIGHT>
+        <FOCUS_FILTER>"0"</FOCUS_FILTER>
+        <TRIG_CONDITION>"0"</TRIG_CONDITION>
+        <TRIG_DELAY>"0"</TRIG_DELAY>
+        <TRIG_OUT>"0"</TRIG_OUT>
+        <TRIG_PERIOD>"9033201"</TRIG_PERIOD>
+        <TRIG_BITLENGTH>"31"</TRIG_BITLENGTH>
+        <EXTERN_TIMESTAMP>"1"</EXTERN_TIMESTAMP>
+        <XMIT_TIMESTAMP>"1"</XMIT_TIMESTAMP>
+        <SKIP_FRAMES>"0"</SKIP_FRAMES>
+        <I2C_QPERIOD>"100"</I2C_QPERIOD>
+        <I2C_BYTES>"2"</I2C_BYTES>
+        <IRQ_SMART>"3"</IRQ_SMART>
+        <OVERSIZE>"0"</OVERSIZE>
+        <GTAB_R>"171508736"</GTAB_R>
+        <GTAB_G>"171508736"</GTAB_G>
+        <GTAB_GB>"171508736"</GTAB_GB>
+        <GTAB_B>"171508736"</GTAB_B>
+        <COMPRESSOR_RUN>"2"</COMPRESSOR_RUN>
+        <COMPMOD_BYRSH>"0"</COMPMOD_BYRSH>
+        <COMPMOD_TILSH>"0"</COMPMOD_TILSH>
+        <COMPMOD_DCSUB>"0"</COMPMOD_DCSUB>
+        <DAEMON_EN>"3"</DAEMON_EN>
+        <DAEMON_EN_AUTOEXPOSURE>"1"</DAEMON_EN_AUTOEXPOSURE>
+        <DAEMON_EN_STREAMER>"1"</DAEMON_EN_STREAMER>
+        <DAEMON_EN_CCAMFTP>"0"</DAEMON_EN_CCAMFTP>
+        <DAEMON_EN_CAMOGM>"0"</DAEMON_EN_CAMOGM>
+        <DAEMON_EN_AUTOCAMPARS>"0"</DAEMON_EN_AUTOCAMPARS>
+        <DAEMON_EN_TEMPERATURE>"0"</DAEMON_EN_TEMPERATURE>
+        <AEXP_FRACPIX>"65408"</AEXP_FRACPIX>
+        <AEXP_LEVEL>"63488"</AEXP_LEVEL>
+        <HDR_DUR>"0"</HDR_DUR>
+        <HDR_VEXPOS>"262144"</HDR_VEXPOS>
+        <EXP_AHEAD>"3"</EXP_AHEAD>
+        <AE_THRESH>"500"</AE_THRESH>
+        <WB_THRESH>"500"</WB_THRESH>
+        <AE_PERIOD>"4"</AE_PERIOD>
+        <WB_PERIOD>"16"</WB_PERIOD>
+        <WB_MASK>"13"</WB_MASK>
+        <WB_EN>"1"</WB_EN>
+        <WB_WHITELEV>"64225"</WB_WHITELEV>
+        <WB_WHITEFRAC>"655"</WB_WHITEFRAC>
+        <WB_MAXWHITE>"3276"</WB_MAXWHITE>
+        <WB_SCALE_R>"65536"</WB_SCALE_R>
+        <WB_SCALE_GB>"65536"</WB_SCALE_GB>
+        <WB_SCALE_B>"65536"</WB_SCALE_B>
+        <GAIN_MIN>"65536"</GAIN_MIN>
+        <GAIN_MAX>"1032192"</GAIN_MAX>
+        <GAIN_CTRL>"65568"</GAIN_CTRL>
+        <GAIN_STEP>"32"</GAIN_STEP>
+        <ANA_GAIN_ENABLE>"1"</ANA_GAIN_ENABLE>
+        <FTP_PERIOD>"180"</FTP_PERIOD>
+        <FTP_TIMEOUT>"360"</FTP_TIMEOUT>
+        <FTP_UPDATE>"600"</FTP_UPDATE>
+        <MAXAHEAD>"2"</MAXAHEAD>
+        <HIST_DIM_01>"167774720"</HIST_DIM_01>
+        <HIST_DIM_23>"167774720"</HIST_DIM_23>
+        <TASKLET_CTL>"0"</TASKLET_CTL>
+        <HISTMODE_Y>"0"</HISTMODE_Y>
+        <HISTMODE_C>"0"</HISTMODE_C>
+        <SKIP_DIFF_FRAME>"4"</SKIP_DIFF_FRAME>
+        <PROFILING_EN>"0"</PROFILING_EN>
+        <STROP_MCAST_EN>"0"</STROP_MCAST_EN>
+        <STROP_MCAST_IP>"0"</STROP_MCAST_IP>
+        <STROP_MCAST_PORT>"20020"</STROP_MCAST_PORT>
+        <STROP_MCAST_TTL>"2"</STROP_MCAST_TTL>
+        <STROP_AUDIO_EN>"0"</STROP_AUDIO_EN>
+        <STROP_AUDIO_RATE>"44100"</STROP_AUDIO_RATE>
+        <STROP_AUDIO_CHANNEL>"2"</STROP_AUDIO_CHANNEL>
+        <STROP_FRAMES_SKIP>"0"</STROP_FRAMES_SKIP>
+        <AUDIO_CAPTURE_VOLUME>"58981"</AUDIO_CAPTURE_VOLUME>
+        <MULTI_PHASE_SDRAM>"0"</MULTI_PHASE_SDRAM>
+        <MULTI_PHASE1>"0"</MULTI_PHASE1>
+        <MULTI_PHASE2>"0"</MULTI_PHASE2>
+        <MULTI_PHASE3>"0"</MULTI_PHASE3>
+        <MULTI_SEQUENCE>"0"</MULTI_SEQUENCE>
+        <MULTI_FLIPH>"0"</MULTI_FLIPH>
+        <MULTI_FLIPV>"0"</MULTI_FLIPV>
+        <MULTI_MODE>"0"</MULTI_MODE>
+        <MULTI_HBLANK>"0"</MULTI_HBLANK>
+        <MULTI_CWIDTH>"0"</MULTI_CWIDTH>
+        <MULTI_VBLANK>"0"</MULTI_VBLANK>
+        <MULTI_WIDTH1>"0"</MULTI_WIDTH1>
+        <MULTI_WIDTH2>"0"</MULTI_WIDTH2>
+        <MULTI_WIDTH3>"0"</MULTI_WIDTH3>
+        <MULTI_HEIGHT1>"0"</MULTI_HEIGHT1>
+        <MULTI_HEIGHT2>"0"</MULTI_HEIGHT2>
+        <MULTI_HEIGHT3>"0"</MULTI_HEIGHT3>
+        <MULTI_LEFT1>"0"</MULTI_LEFT1>
+        <MULTI_LEFT2>"0"</MULTI_LEFT2>
+        <MULTI_LEFT3>"0"</MULTI_LEFT3>
+        <MULTI_TOP1>"0"</MULTI_TOP1>
+        <MULTI_TOP2>"0"</MULTI_TOP2>
+        <MULTI_TOP3>"0"</MULTI_TOP3>
+        <MULTI_SELECTED>"1"</MULTI_SELECTED>
+        <TEMPERATURE01>"0"</TEMPERATURE01>
+        <TEMPERATURE23>"0"</TEMPERATURE23>
+        <SENS_AVAIL>"0"</SENS_AVAIL>
+        <FPGA_TIM0>"1160"</FPGA_TIM0>
+        <DLY359_OUT>"0"</DLY359_OUT>
+        <DLY359_P1>"0"</DLY359_P1>
+        <DLY359_P2>"0"</DLY359_P2>
+        <DLY359_P3>"0"</DLY359_P3>
+        <DLY359_C1>"0"</DLY359_C1>
+        <DLY359_C2>"0"</DLY359_C2>
+        <DLY359_C3>"0"</DLY359_C3>
+        <MULTI_CFG>"0"</MULTI_CFG>
+        <DEBUG>"0"</DEBUG>
+        <comment>"Saved on March 20, 2014, 10:12 pm"</comment>
+        <timestamp>"1395353554"</timestamp>
+      </set>
+    </paramSets>
+  </autocampars>
+
diff --git a/libre-streamer.sh b/libre-streamer.sh
new file mode 100755 (executable)
index 0000000..5f06b81
--- /dev/null
@@ -0,0 +1,104 @@
+#!/usr/bin/env bash
+# This file is part of Libre-Streamer.
+#
+# Libre-Streamer is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Libre-Streamer is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Libre-Streamer.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Copyright (c) 2014 Lisa Marie Maginnis
+# Copyright (c) 2014 Nico Cesar
+
+
+# Some fancy texts
+high=`tput smso` highoff=`tput rmso`
+ul=`tput smul` rul=`tput rmul`
+
+. params.sh
+
+function kill_screencasts {
+    killall -9 sshd
+}
+
+function getinfo {
+    interface=$(/sbin/ifconfig -a | egrep 'eth[0-9] ' | cut -f1 -d\ )
+    ipaddress=$(/sbin/ifconfig $interface | sed -n 's/ *inet addr:\([0-9.]*\) .*/\1/p')
+    clients=$(ps -ef | grep sshd:\ libreplanet@pts | grep -v grep | wc -l)
+    screentarget=$(xauth list | tail -n 1 | sed 's/.*unix:\([0-9]*\) .*/localhost:\1/')
+
+
+    
+    if [ $clients -gt 0 ] && [ "$screentarget" != 'localhost:0.0' ] ; then
+       client_status=CONNECTED
+       endx='endx='$(DISPLAY=$screentarget xrandr | awk '/Screen 0/{sub(",", "", $10);x=$8; y=$10;} / connected/{sub(/x.*/, "", $3);secondhead=$3} END{print x-secondhead;}')
+
+    else
+       client_status=NOT\ CONNECTED
+       screentarget=:0.0
+       endx=''
+    fi
+    export screentarget endx
+}
+
+function view_camera {
+    echo osd_show_text 'Press\ [ENTER]\ to\ quit' 100000 | \
+       mplayer -lavdopts threads=2 -slave -fs -zoom rtsp://$IP &>/dev/null &
+}
+
+function start_stream {
+    ./stream_2014.sh
+}
+
+while [[ "$reply" != "q" ]] && [[ "$reply" != "Q" ]]; do
+    getinfo
+    clear
+    echo -n <<EOF "
+ _     _ _                   ____  _                                      
+| |   (_) |__  _ __ ___     / ___|| |_ _ __ ___  __ _ _ __ ___   ___ _ __ 
+| |   | | '_ \| '__/ _ \____\___ \| __| '__/ _ \/ _\` | '_ \` _ \ / _ \ '__|
+| |___| | |_) | | |  __/_____|__) | |_| | |  __/ (_| | | | | | |  __/ |   
+|_____|_|_.__/|_|  \___|    |____/ \__|_|  \___|\__,_|_| |_| |_|\___|_|   
+
+Streaming Point Info:
+General:
+ IP Address: "$high$ipaddress$highoff"
+
+ScreenCast:
+ Remote Client: "$high$client_status$highoff" Target: "$high$screentarget$highoff"
+
+Main Menu:
+ (S)tart Stream 
+ (R)efresh Streaming Point Info
+ (V)iew Camera Output
+ (K)ill screencast clients
+
+ (Q)uit
+
+Selection: "
+EOF
+
+
+read reply
+
+      case $reply in
+      s|S)
+      start_stream
+      ;;
+      k|K)
+      kill_screencasts
+      ;;
+      r|R)
+      ;;
+      v|V)
+      view_camera
+      esac
+
+done
diff --git a/net_config_example b/net_config_example
new file mode 100644 (file)
index 0000000..f1daf4c
--- /dev/null
@@ -0,0 +1,27 @@
+# (C) Copyright 2005-2007, Axis Communications AB, LUND, SWEDEN
+# Modified by Elphel, Inc., USA
+# This file is released under the GPL v2.
+
+# Uncomment the following line to override the generic hardware address
+# (usually the serial number) for this interface only.
+# MAC=00:0E:64:00:00:00
+
+# Valid boot protocols are "dhcp" and "none" (anything other than "dhcp" works).
+BOOTPROTO=none
+DHCP_CLIENT="/sbin/udhcpc -i eth0 -H $(hostname)"
+
+# Valid media types are "auto", "10baseT-HD", "10baseT-FD", "100baseTX-HD",
+# "100baseTX-FD" and "" (nothing).
+MEDIA=auto
+AUTONEG=normal
+
+# If you are using DHCP the following variables will not be used.
+IP=192.168.48.2
+NETMASK=255.255.255.0
+BROADCAST=192.168.48.255
+GATEWAY=192.168.48.1
+
+# MDI/MDIX configuration; "mdi" - for MDI (normal) ; "mdix" - for MDIX (cross); 'auto' - automatic switching
+# most computers and switches now are 'auto', and having 'auto' on both ends sometimes causes problems.
+MDI_MODE=mdi
+
diff --git a/params.sh b/params.sh
new file mode 100644 (file)
index 0000000..f02dd4c
--- /dev/null
+++ b/params.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Gstreamer settings
+BRIGHTNESS=0
+CONTRAST=0.75
+HUE=0
+SATURATION=0.9
+SERVER=18.4.89.36
+PASSWORD=
+BUFFERSIZE=100000
+GST_DEBUG_DUMP_DOT_DIR=/tmp
+WIDTH=480
+HEIGHT=360
+FPS=6
+FPS1=1
+
+# Insure we are all using the same xauthurity files
+export XAUTHORITY=$HOME/.Xauthority
+
+# Common options
+CONFIG_FILE=config.xml
+
+# Autodetect USB soundcard
+SOUND="hw:"$(grep USB-Audio /proc/asound/cards|awk '{ print $1 }')",0"
+
+# Configuration for specific streaming points
+MOUNTPOINT="/example.ogv"
+MOUNTPOINTAUDIO="/example.oga"
+CONFIG_NET=net_config_example
+
+# For multiple streaming points, uncomment and duplcaite the below if 
+# statements. Also you should comment out the above configs.
+# Sorry its so hackish :/
+
+#if [ "$(hostname)" = "host.example.com" ]; then
+#    MOUNTPOINT="/example.ogv"
+#    MOUNTPOINTAUDIO="/example.oga"
+#    CONFIG_NET=net_config_example
+#fi
diff --git a/stream_2014.sh b/stream_2014.sh
new file mode 100755 (executable)
index 0000000..770e8e4
--- /dev/null
@@ -0,0 +1,74 @@
+#!/usr/bin/env bash
+# This file is part of Libre-Streamer.
+#
+# Libre-Streamer is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Libre-Streamer is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Libre-Streamer.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Copyright (C) 2014 Lisa Marie Maginnis
+# Copyright (C) 2014 Nico Cesar
+
+. ./params.sh 
+export DISPLAY=$screentarget.0
+export XAUTHORITY=$HOME/.Xauthority
+
+# omghax (ugly)
+if [ "$DISPLAY" = ":0.0.0" ]; then
+    export DISPLAY=:0.0
+fi
+
+##echo loading configuration...
+##./upload_config.sh $IP $CONFIG_FILE /etc/autocampars.xml
+##RESULT=$?
+##
+##if [ $RESULT -ne 0 ] 
+##then
+##    exit 1
+##fi 
+##./upload_config.sh $IP $CONFIG_NET  /etc/conf.d/net.eth0
+
+if [ $SOUND ]
+then
+gst-launch-0.10 -e rtspsrc location=rtsp://$IP:554 protocols=0x00000001 latency=100 !\
+ rtpjpegdepay ! queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ videorate force-fps=$FPS !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ jpegdec max-errors=-1 idct-method=2 !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ ffmpegcolorspace !\
+ "video/x-raw-yuv, format=(fourcc)I420" !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ videoscale !\
+ "video/x-raw-yuv, width=$WIDTH, height=$HEIGHT" !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ videomixer name=mix !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ theoraenc bitrate=200 speed-level=1 !\
+  queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+  oggmux name=mux alsasrc latency-time=100 device=$SOUND !\
+  audioconvert ! audio/x-raw-float,channels=1 !\
+  queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+  vorbisenc max-bitrate=60000 !\
+  queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+  mux. mux. !\
+  shout2send ip=$SERVER port=80 password=$PASSWORD mount=$MOUNTPOINT  ximagesrc  use-damage=false show-pointer=false remote=true display-name=$screentarget $endx !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ ffmpegcolorspace !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ videoscale !\
+ "video/x-raw-yuv, width=$WIDTH, height=$HEIGHT" !\
+ queue max-size-bytes=$BUFFERSIZE max-size-time=0 !\
+ videobox border-alpha=0 fill=black left=-$WIDTH  !\
+ videorate force-fps=$FPS1 !\
+ mix.
+fi
diff --git a/upload_config.sh b/upload_config.sh
new file mode 100755 (executable)
index 0000000..c5632ae
--- /dev/null
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+# This file is part of Libre-Streamer.
+#
+# Libre-Streamer is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Libre-Streamer is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Libre-Streamer.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Copyright (C) 2014 Nico Cesar
+
+if [ $# -lt 1 ] 
+then
+    echo $#
+    echo "usage: $0 elphel_camera_IP_address [config.xml] [/etc/autocampars.xml]"
+fi
+
+if [ "x$2" = "x" ]
+then
+    config_file=config.xml
+else
+    config_file=$2
+fi
+
+if [ "x$3" = "x" ]
+then
+    dest_file=/etc/autocampars.xml
+else
+    dest_file=$2
+fi
+
+echo -n "pinging $1 ... "
+ping -c2 $1 > /dev/null
+RESULT=$?
+
+if [ $RESULT -ne 0 ]
+then
+    echo cant ping $1
+    exit 1
+fi
+echo OK
+
+#do an url encode of the file
+python -c 'import sys,urllib; print urllib.urlencode([("content",sys.stdin.read())])' < $config_file > /tmp/tmp_file 
+
+#upload  to the camera
+curl  -0  http://$1/admin-bin/editcgi.cgi?file= -d "save_file=/etc/autocampars.xml" -d "mode=0100644" -d "convert_crlf_to_lf=on" -d '@/tmp/tmp_file' | grep "Wrote"
+RESULT=$?
+
+if [ $RESULT -ne 0 ]
+then
+                               echo problems loading the config
+                               exit 1
+fi
+exit 0