remove old sources vdr-plugin-xvdr
authormango <mango@mail.com>
Mon, 20 Aug 2018 17:42:28 +0000 (19:42 +0200)
committermango <mango@mail.com>
Mon, 20 Aug 2018 17:42:28 +0000 (19:42 +0200)
103 files changed:
v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.quilt_patches [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.quilt_series [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.version [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/applied-patches [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/extend_allowed_hosts.conf/.timestamp [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/extend_allowed_hosts.conf/xvdr/allowed_hosts.conf [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/COPYING [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/HISTORY [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/Makefile [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/README [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/changelog [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/compat [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/control [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/copyright [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/docs [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/install [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/links [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/00list [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/90_APIVERSION.dpatch [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/Makefile [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/extend_allowed_hosts.conf [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/series [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/vdr-2.1.x-compat.diff [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/xvdr-config [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/xvdr.conf [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/plugin.xvdr.conf [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/postinst [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/resume.data [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/rules [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/debian/source/format [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/README [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/ChangeLog [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/Manifest [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/vdr-xvdr-9999.ebuild [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/po/.gitignore [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/po/de_AT.po [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/po/de_DE.po [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/config/config.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/config/config.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/aaccommon.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/ac3common.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_AC3.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_AC3.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_ADTS.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_ADTS.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_EAC3.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_EAC3.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_H264.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_H264.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_LATM.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_LATM.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGAudio.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGAudio.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGVideo.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGVideo.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_PES.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_PES.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_Subtitle.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_Subtitle.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/parser.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/parser.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/pes.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/streaminfo.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/streaminfo.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/channelcache.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/channelcache.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livepatfilter.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livepatfilter.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livequeue.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livequeue.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livestreamer.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livestreamer.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/msgpacket.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/msgpacket.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/os-config.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/os-config.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recordingscache.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recordingscache.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recplayer.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recplayer.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan_services.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/tools/hash.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/tools/hash.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/timerconflicts.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/timerconflicts.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdr.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdr.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrchannels.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrchannels.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrclient.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrclient.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrcommand.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrserver.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrserver.h [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/tools/Makefile [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/tools/serviceref.c [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/xvdr/allowed_hosts.conf [deleted file]
v/vdr-plugin-xvdr-0.9.9.git20150814/xvdr/xvdr.conf [deleted file]
v/vdr-plugin-xvdr_0.9.9.git20150814.orig.tar.xz [deleted file]

diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.quilt_patches b/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.quilt_patches
deleted file mode 100644 (file)
index 6857a8d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-debian/patches
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.quilt_series b/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.quilt_series
deleted file mode 100644 (file)
index c206706..0000000
+++ /dev/null
@@ -1 +0,0 @@
-series
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.version b/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/.version
deleted file mode 100644 (file)
index 0cfbf08..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/applied-patches b/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/applied-patches
deleted file mode 100644 (file)
index 538b69f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-extend_allowed_hosts.conf
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/extend_allowed_hosts.conf/.timestamp b/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/extend_allowed_hosts.conf/.timestamp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/extend_allowed_hosts.conf/xvdr/allowed_hosts.conf b/v/vdr-plugin-xvdr-0.9.9.git20150814/.pc/extend_allowed_hosts.conf/xvdr/allowed_hosts.conf
deleted file mode 100644 (file)
index c1983ad..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# allowed_hosts.conf  This file describes a number of host addresses that
-#                     are allowed to connect to the streamdev server running 
-#                     with the Video Disk Recorder (VDR) on this system.
-# Syntax:
-#
-# IP-Address[/Netmask]
-#
-
-127.0.0.1             # always accept localhost
-192.168.0.0/16        # any host on the local net
-#204.152.189.113      # a specific host
-#0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/COPYING b/v/vdr-plugin-xvdr-0.9.9.git20150814/COPYING
deleted file mode 100644 (file)
index f90922e..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  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
-this service 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 make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  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.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-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
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the 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 a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE 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.
-
-                    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
-convey 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 2 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, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision 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, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This 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.
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/HISTORY b/v/vdr-plugin-xvdr-0.9.9.git20150814/HISTORY
deleted file mode 100644 (file)
index 153d832..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-VDR Plugin 'xvdr' Revision History
-
-----------------------------------------
-
-2011-08-24: Version 0.0.1
-
-- Initial revision.
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/Makefile b/v/vdr-plugin-xvdr-0.9.9.git20150814/Makefile
deleted file mode 100644 (file)
index da54323..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-#
-# Makefile for the XVDR plugin
-#
-
-
-# The official name of this plugin.
-# This name will be used in the '-P...' option of VDR to load the plugin.
-# By default the main source file also carries this name.
-#
-PLUGIN = xvdr
-
-### The version number of this plugin (taken from the main source file):
-
-VERSION = $(shell grep 'static const char \*VERSION *=' src/xvdr/xvdr.h | awk '{ print $$6 }' | sed -e 's/[";]//g')
-
-### The directory environment:
-
-# Use package data if installed...otherwise assume we're under the VDR source directory:
-PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
-LIBDIR = $(call PKGCFG,libdir)
-LOCDIR = $(call PKGCFG,locdir)
-PLGCFG = $(call PKGCFG,plgcfg)
-CFGDIR  = $(call PKGCFG,configdir)/plugins/$(PLUGIN)
-#
-TMPDIR ?= /tmp
-
-### The compiler options:
-
-export CFLAGS   = $(call PKGCFG,cflags)
-export CXXFLAGS = $(call PKGCFG,cxxflags)
-
-### The version number of VDR's plugin API:
-
-APIVERSION = $(call PKGCFG,apiversion)
-
-### Allow user defined options to overwrite defaults:
-
--include $(PLGCFG)
-
-### The name of the distribution archive:
-
-ARCHIVE = $(PLUGIN)-$(VERSION)
-PACKAGE = vdr-$(ARCHIVE)
-
-### The name of the shared object file:
-
-SOFILE = libvdr-$(PLUGIN).so
-
-### Includes and Defines (add further entries here):
-
-INCLUDES += -I./src -I./src/vdr
-
-ifdef DEBUG
-INCLUDES += -DDEBUG
-endif
-
-DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -DXVDR_VERSION='"$(VERSION)"'
-
-### The object files (add further files here):
-
-OBJS = \
-       src/config/config.o \
-       src/demuxer/demuxer.o \
-       src/demuxer/demuxer_ADTS.o \
-       src/demuxer/demuxer_LATM.o \
-       src/demuxer/demuxer_AC3.o \
-       src/demuxer/demuxer_EAC3.o \
-       src/demuxer/demuxer_H264.o \
-       src/demuxer/demuxer_MPEGAudio.o \
-       src/demuxer/demuxer_MPEGVideo.o \
-       src/demuxer/demuxer_PES.o \
-       src/demuxer/demuxer_Subtitle.o \
-       src/demuxer/parser.o \
-       src/demuxer/streaminfo.o \
-       src/live/channelcache.o \
-       src/live/livepatfilter.o \
-       src/live/livequeue.o \
-       src/live/livestreamer.o \
-       src/net/msgpacket.o \
-       src/net/os-config.o \
-       src/recordings/recordingscache.o \
-       src/recordings/recplayer.o \
-       src/scanner/wirbelscan.o \
-       src/tools/hash.o \
-       src/xvdr/timerconflicts.o \
-       src/xvdr/xvdr.o \
-       src/xvdr/xvdrclient.o \
-       src/xvdr/xvdrserver.o \
-       src/xvdr/xvdrchannels.o
-
-### The main target:
-
-all: $(SOFILE) i18n
-
-### Implicit rules:
-
-%.o: %.c
-       $(CXX) $(CXXFLAGS) -fPIC -c $(DEFINES) $(INCLUDES) -o $@ $<
-
-### Dependencies:
-
-MAKEDEP = $(CXX) -MM -MG
-DEPFILE = .dependencies
-$(DEPFILE): Makefile
-       @$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
-
--include $(DEPFILE)
-
-### Internationalization (I18N):
-
-PODIR     = po
-I18Npo    = $(wildcard $(PODIR)/*.po)
-I18Nmo    = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Nmsgs  = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
-I18Npot   = $(PODIR)/$(PLUGIN).pot
-
-%.mo: %.po
-       msgfmt -c -o $@ $<
-
-$(I18Npot): $(wildcard src/*/*.c)
-       xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `find ./src -name *.c`
-
-%.po: $(I18Npot)
-       msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
-       @touch $@
-
-$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
-       install -D -m644 $< $@
-
-.PHONY: i18n
-i18n: $(I18Nmo) $(I18Npot)
-
-install-i18n: $(I18Nmsgs)
-
-### Targets:
-
-$(SOFILE): $(OBJS)
-       $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
-
-install-lib: $(SOFILE)
-       install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
-
-install-conf:
-       install -Dm644 $(PLUGIN)/allowed_hosts.conf $(DESTDIR)$(CFGDIR)/allowed_hosts.conf
-       install -Dm644 $(PLUGIN)/$(PLUGIN).conf $(DESTDIR)$(CFGDIR)/$(PLUGIN).conf
-
-install: install-lib install-i18n
-
-dist: $(I18Npo) clean
-       @-rm -rf $(TMPDIR)/$(ARCHIVE)
-       @mkdir $(TMPDIR)/$(ARCHIVE)
-       @cp -a * $(TMPDIR)/$(ARCHIVE)
-       @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE)
-       @-rm -rf $(TMPDIR)/$(ARCHIVE)
-       @echo Distribution package created as $(PACKAGE).tgz
-
-clean:
-       @-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
-       @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/README b/v/vdr-plugin-xvdr-0.9.9.git20150814/README
deleted file mode 100644 (file)
index 05ae498..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-XVDR Plugin for the Video Disk Recorder (VDR).
-
-Written by:                  Alexander Pipelka, Alwin Esch
-
-Project's homepage:          https://github.com/pipelka/vdr-plugin-xvdr
-
-Latest version available at: https://github.com/pipelka/vdr-plugin-xvdr
-
-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 2 of the License, or
-(at your option) any later version.
-See the file COPYING for more information.
-
-
-Description:
-------------
-
-VDR plugin to handle XBMC clients.
-The vdr-plugin-xvdr is able to handle serveral XBMC clients connecting via the XVDR addon.
-
-Requirements:
--------------
-
-For channel scanning you need to install the "wirbelscan" plugin:
-http://wirbel.htpc-forum.de/wirbelscan/index2.html
-
-For older VDR versions (< 1.7.34):
-----------------------------------
-
-Please checkout the "master-pre-vdr-1.7.34" branch. Only this branch compiles cleanly
-on older VDR versions. The main branch "master" only works for current VDR versions.
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/changelog b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/changelog
deleted file mode 100644 (file)
index f5d4e4c..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-vdr-plugin-xvdr (1:0.9.9.git20150814-1easyVDR3~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Sat, 15 Oct 2016 23:55:43 +0200
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-1easyVDR2~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Sat, 09 Apr 2016 01:05:21 +0200
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-1easyVDR1~trusty) trusty; urgency=high
-
-  * remove auto allowed_hosts.conf
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Fri, 11 Mar 2016 20:10:54 +0100
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-1easyVDR0~trusty) trusty; urgency=high
-
-  * fix postinst
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Fri, 04 Mar 2016 19:16:51 +0100
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-0easyVDR4~trusty) trusty; urgency=high
-
-  * added new postinst
-  * added new extend_allowed_hosts.conf patch
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Tue, 01 Mar 2016 22:46:01 +0100
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-0easyVDR3~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Mon, 01 Feb 2016 14:52:57 +0100
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-0easyVDR2~trusty) trusty; urgency=high
-
-  * remove depends pvr addon
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Mon, 04 Jan 2016 23:22:59 +0100
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-0easyVDR1~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- Wolfgang Mangold <vdr@gmx.de>  Fri, 25 Dec 2015 15:58:03 +0100
-
-vdr-plugin-xvdr (1:0.9.9.git20150814-0easyVDR0~trusty) trusty; urgency=high
-
-  * new upstream snapshot
-  * added depends kodi-addon-xvdr
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Wed, 02 Dec 2015 20:10:16 +0100
-
-vdr-plugin-xvdr (1:0.9.9.git20150812-2easyVDR0~trusty) trusty; urgency=high
-
-  * rebuild for easyVDR
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Sun, 29 Nov 2015 20:53:20 +0100
-
-vdr-plugin-xvdr (0.9.9.git20150812-1easyVDR0~trusty) trusty; urgency=high
-
-  * rebuild for easyVDR
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Mon, 23 Nov 2015 00:28:50 +0100
-
-vdr-plugin-xvdr (0.9.9.git20150812-0mangoVDR2~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- Wolfgang Mangold <vdr@gmx.de>  Tue, 25 Aug 2015 21:35:03 +0200
-
-vdr-plugin-xvdr (0.9.9.git20150812-0mangoVDR1~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- Wolfgang Mangold <vdr@gmx.de>  Thu, 20 Aug 2015 22:26:53 +0200
-
-vdr-plugin-xvdr (0.9.9.git20150812-0mangoVDR0~trusty) trusty; urgency=high
-
-  * new upstream snapshot
-
- -- Wolfgang Mangold <vdr@gmx.de>  Thu, 13 Aug 2015 21:57:24 +0200 
-
-vdr-plugin-xvdr (0.9.9.git+20150106-0easyVDR3~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Thu, 02 Apr 2015 01:34:18 +0200
-
-vdr-plugin-xvdr (0.9.9.git+20150106-0easyVDR2~trusty) trusty; urgency=high
-
-  * remove depends xbmc-addon-xvdr
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Tue, 24 Mar 2015 15:03:19 +0100
-
-vdr-plugin-xvdr (0.9.9.git+20150106-0easyVDR1~trusty) trusty; urgency=high
-
-  * automatic rebuild for 2.2-vdr-testing PPA
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Tue, 24 Mar 2015 04:46:16 +0100
-
-vdr-plugin-xvdr (0.9.9.git+20150106-0easyVDR0~trusty) trusty; urgency=high
-
-  * new upstream snapshot
-
- -- Wolfgang Mangold <vdr@gmx.de>  Tue, 24 Mar 2015 01:31:42 +0100
-
-vdr-plugin-xvdr (0.9.9.git+20140522-1easyVDR3~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Tue, 18 Nov 2014 02:52:19 +0100
-
-vdr-plugin-xvdr (0.9.9.git+20140522-1easyVDR2~trusty) trusty; urgency=high
-
-  * add resume.data
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Sun, 19 Oct 2014 00:47:28 +0200
-
-vdr-plugin-xvdr (0.9.9.git+20140522-1easyVDR1~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Tue, 26 Aug 2014 23:24:53 +0200
-
-vdr-plugin-xvdr (0.9.9.git+20140522-1easyVDR0~trusty) trusty; urgency=high
-
-  * add depends xbmc-addon-xvdr
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Sun, 08 Jun 2014 00:29:58 +0200
-
-vdr-plugin-xvdr (0.9.9.git+20140522-0easyVDR0~trusty) trusty; urgency=high
-
-  * new upstream snapshot
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Tue, 27 May 2014 21:17:18 +0200
-
-vdr-plugin-xvdr (0.9.9.giti20140521-0easyVDR0~trusty) trusty; urgency=high
-
-  * new upstream snapshot
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Tue, 27 May 2014 16:44:47 +0200
-
-vdr-plugin-xvdr (0.9.9.git20140301-0easyVDR1~trusty) trusty; urgency=high
-
-  * automatic rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Thu, 24 Apr 2014 21:43:42 +0200
-
-vdr-plugin-xvdr (0.9.9.git20140301-0easyVDR0~trusty) trusty; urgency=high
-
-  * new upstream snapshot
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Sun, 09 Mar 2014 22:24:20 +0100
-
-vdr-plugin-xvdr (0.9.9~git20130927-0easyVDR1~trusty) trusty; urgency=high
-
-  * rebuild
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Wed, 15 Jan 2014 01:21:19 +0100
-
-vdr-plugin-xvdr (0.9.9~git20130927-0easyVDR0~trusty) trusty; urgency=high
-
-  * rebuild trusty
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Mon, 28 Oct 2013 06:22:19 +0100
-
-vdr-plugin-xvdr (0.9.9~git20130927-0easyVDR0~saucy) saucy; urgency=high
-
-  * new upstream snapshot
-
- -- easyVDR-Developer <easyvdr-dev@easy-vdr.de>  Sat, 28 Sep 2013 23:43:29 +0200
-
-vdr-plugin-xvdr (0.9.5-1) unstable; urgency=low
-
-  * version 0.9.5
-
- -- Alexander Pipelka <pipelka@shuttle>  Mon, 31 Oct 2011 22:11:07 +0100
-
-vdr-plugin-xvdr (0.0.1-1) unstable; urgency=low
-
-  * debianized
-
- -- Alexander Pipelka <alexander.pipelka@gmail.com>  Wed, 16 Mar 2011 09:23:00 +0200
\ No newline at end of file
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/compat b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/control b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/control
deleted file mode 100644 (file)
index 24dc2f1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Source: vdr-plugin-xvdr
-Section: misc
-Priority: extra
-Maintainer: Alexander Pipelka <alexander.pipelka@gmail.com>
-Uploaders: Wolfgang Mangold <vdr@gmx.de>
-Build-Depends: debhelper (>= 5), cdbs, dpatch, vdr-dev (>= 1.6.0), zlib1g-dev, pkg-config
-Standards-Version: 3.8.0
-
-Package: vdr-plugin-xvdr
-Architecture: any
-Depends: ${shlibs:Depends}, ${vdr:Depends}, kodi-addon-xvdr
-Description: XBMC XVDR plugin for VDR
- This plugin for VDR allows XBMC clients to connect.
-
-Package: vdr-plugin-xvdr-dbg
-Architecture: any
-Section: debug
-Priority: extra
-Depends: vdr-plugin-xvdr (= ${binary:Version}), ${misc:Depends}, kodi-addon-xvdr
-Description: debugging symbols for vdr-plugin-xvdr
- .
- This package contains only the debugging symbols for vdr-plugin-xvdr 
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/copyright b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/copyright
deleted file mode 100644 (file)
index f558d25..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Copyright:
-
-It may be redistributed under the terms of the GNU GPL, Version 2
-found on Debian systems in the file /usr/share/common-licenses/GPL .
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/docs b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/docs
deleted file mode 100644 (file)
index e845566..0000000
+++ /dev/null
@@ -1 +0,0 @@
-README
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/install b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/install
deleted file mode 100644 (file)
index ce1bf81..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#libvdr-xvdr.so.*         usr/lib/vdr/plugins/
-debian/plugin.xvdr.conf  etc/vdr/plugins/
-xvdr/*.conf              etc/vdr/plugins/xvdr/
-tools/serviceref         usr/lib/xvdr
-debian/resume.data       etc/vdr/plugins/xvdr/
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/links b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/links
deleted file mode 100644 (file)
index 7d1c74b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-etc/vdr/plugins/xvdr/allowed_hosts.conf   var/lib/vdr/plugins/xvdr/allowed_hosts.conf
-etc/vdr/plugins/xvdr/xvdr.conf            var/lib/vdr/plugins/xvdr/xvdr.conf
-etc/vdr/plugins/xvdr/resume.data          var/lib/vdr/plugins/xvdr/resume.data
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/00list b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/00list
deleted file mode 100644 (file)
index b0a1a7c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-90_APIVERSION
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/90_APIVERSION.dpatch b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/90_APIVERSION.dpatch
deleted file mode 100644 (file)
index 2a60f84..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#! /bin/sh -e
-## 90_APIVERSION.dpatch by Thomas Günther <tom@toms-cafe.de>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Support for the APIVERSION define as introduced in VDR-1.3.47.
-
-case "$1" in
-    -patch)
-        sed -i -e s/VDRVERSION/APIVERSION/g Makefile
-        ;;
-    -unpatch)
-        sed -i -e s/APIVERSION/VDRVERSION/g Makefile
-        ;;
-     *)
-        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-        exit 1
-        ;;
-esac
-
-exit 0
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/Makefile b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/Makefile
deleted file mode 100644 (file)
index 9e272cb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-Index: vdr-plugin-xvdr/Makefile
-===================================================================
---- vdr-plugin-xvdr.orig/Makefile      2012-11-12 12:47:28.837231118 +0100
-+++ vdr-plugin-xvdr/Makefile   2012-11-12 15:51:58.092902560 +0100
-@@ -24,6 +24,7 @@
- VDRDIR = ../../..
- LIBDIR = ../../lib
- TMPDIR = /tmp
-+MANDIR = ../../man
- ### Allow user defined options to overwrite defaults:
-@@ -123,5 +124,5 @@
-       @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
- install:
--      @install -d ../../man
--      @install README ../../man/$(PLUGIN).man
-+      @install -d $(MANDIR)
-+      @install README $(MANDIR)/$(PLUGIN).man
-Index: vdr-plugin-xvdr/debian/rules
-===================================================================
---- vdr-plugin-xvdr.orig/debian/rules  2012-11-12 12:47:28.837231118 +0100
-+++ vdr-plugin-xvdr/debian/rules       2012-11-12 16:51:27.116461112 +0100
-@@ -3,7 +3,7 @@
- # Uncomment this to turn on verbose mode.
- #export DH_VERBOSE=1
--MAKE_OPTIONS = VDRDIR=/usr/include/vdr LIBDIR=. LOCALEDIR=locale
-+MAKE_OPTIONS = VDRDIR=/usr/include/vdr LIBDIR=. LOCALEDIR=locale MANDIR=/usr/share/man
- %:
-       dh $@
-@@ -18,5 +18,4 @@
- override_dh_gencontrol:
-       sh /usr/share/vdr-dev/dependencies.sh
-       dh_gencontrol
--
--
-+override_dh_auto_install:
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/extend_allowed_hosts.conf b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/extend_allowed_hosts.conf
deleted file mode 100644 (file)
index 51bb04f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: vdr-plugin-xvdr-0.9.9.git20150814/xvdr/allowed_hosts.conf
-===================================================================
---- vdr-plugin-xvdr-0.9.9.git20150814.orig/xvdr/allowed_hosts.conf     2015-07-05 00:58:03.000000000 +0200
-+++ vdr-plugin-xvdr-0.9.9.git20150814/xvdr/allowed_hosts.conf  2016-03-02 23:01:24.337150760 +0100
-@@ -8,6 +8,6 @@
- #
- 127.0.0.1             # always accept localhost
--192.168.0.0/16        # any host on the local net
-+192.168.0.0/24     # any host on the local net
- #204.152.189.113      # a specific host
- #0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/series b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/series
deleted file mode 100644 (file)
index 6a18818..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#Makefile
-#xvdr.conf
-#vdr-2.1.x-compat.diff
-extend_allowed_hosts.conf
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/vdr-2.1.x-compat.diff b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/vdr-2.1.x-compat.diff
deleted file mode 100644 (file)
index 5bbd5f1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---- a/src/xvdr/xvdrclient.c
-+++ b/src/xvdr/xvdrclient.c
-@@ -277,7 +277,7 @@
-   }
- }
--void cXVDRClient::ChannelChange()
-+void cXVDRClient::ChannelsChange()
- {
-   cMutexLock lock(&m_msgLock);
---- a/src/xvdr/xvdrclient.h
-+++ b/src/xvdr/xvdrclient.h
-@@ -94,7 +94,7 @@
-   cXVDRClient(int fd, unsigned int id);
-   virtual ~cXVDRClient();
--  void ChannelChange();
-+  void ChannelsChange();
-   void RecordingsChange();
-   void TimerChange();
---- a/src/xvdr/xvdrserver.c
-+++ b/src/xvdr/xvdrserver.c
-@@ -295,7 +295,7 @@
-         {
-           INFOLOG("Checking for channel updates ...");
-           for (ClientList::iterator i = m_clients.begin(); i != m_clients.end(); i++)
--            (*i)->ChannelChange();
-+            (*i)->ChannelsChange();
-           channelReloadTrigger = false;
-           INFOLOG("Done.");
-         }
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/xvdr-config b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/xvdr-config
deleted file mode 100644 (file)
index b667357..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: vdr-plugin-xvdr/xvdr/allowed_hosts.conf
-===================================================================
---- vdr-plugin-xvdr.orig/xvdr/allowed_hosts.conf       2012-11-12 12:47:28.845235119 +0100
-+++ vdr-plugin-xvdr/xvdr/allowed_hosts.conf    2012-11-12 16:47:31.286609170 +0100
-@@ -8,6 +8,6 @@
- #
- 127.0.0.1             # always accept localhost
--192.168.0.0/24        # any host on the local net
-+192.168.0.0/16        # any host on the local net
- #204.152.189.113      # a specific host
- #0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/xvdr.conf b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/patches/xvdr.conf
deleted file mode 100644 (file)
index 3688273..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: vdr-plugin-xvdr-c2a7e7f29dfef498c5c5d01f349b06264443ee31/xvdr/xvdr.conf
-===================================================================
---- vdr-plugin-xvdr-c2a7e7f29dfef498c5c5d01f349b06264443ee31.orig/xvdr/xvdr.conf       2013-09-20 11:37:14.000000000 +0200
-+++ vdr-plugin-xvdr-c2a7e7f29dfef498c5c5d01f349b06264443ee31/xvdr/xvdr.conf    2013-10-12 19:36:40.870162969 +0200
-@@ -9,7 +9,7 @@
- # Path to timeshift storage
- # default: VDR video directory
--#TimeShiftDir = /video 
-+#TimeShiftDir = /srv/vdr/video.00
- # Maximum size of timeshift file per user
- # default: 1000000000
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/plugin.xvdr.conf b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/plugin.xvdr.conf
deleted file mode 100644 (file)
index f942799..0000000
+++ /dev/null
@@ -1 +0,0 @@
--t 10
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/postinst b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/postinst
deleted file mode 100644 (file)
index 0e0fbd1..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-# postinst script for vdr-plugin-xvdr
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postinst> `configure' <most-recently-configured-version>
-#        * <old-postinst> `abort-upgrade' <new version>
-#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-#          <new-version>
-#        * <postinst> `abort-remove'
-#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-#          <failed-install-package> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    configure)
-        chown -R vdr:vdr /var/lib/vdr/plugins/xvdr
-    ;;
-
-    abort-upgrade|abort-remove|abort-deconfigure)
-    ;;
-
-    *)
-        echo "postinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/resume.data b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/resume.data
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/rules b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/rules
deleted file mode 100755 (executable)
index 8762b1d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/make -f
-
-#DH_VERBOSE=1
-
-.PHONY: override_dh_strip override_dh_auto_install
-
-override_dh_auto_build:
-       dh_auto_build
-       make -C tools
-
-override_dh_strip:
-       dh_strip --dbg-package=vdr-plugin-xvdr-dbg
-
-override_dh_auto_install:
-       dh_auto_install --destdir=debian/vdr-plugin-xvdr
-
-override_dh_auto_clean:
-       dh_auto_clean
-       make -C tools clean
-
-override_dh_gencontrol:
-       sh /usr/share/vdr-dev/dependencies.sh
-       dh_gencontrol
-
-%:
-       dh $@
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/source/format b/v/vdr-plugin-xvdr-0.9.9.git20150814/debian/source/format
deleted file mode 100644 (file)
index 163aaf8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/README b/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/README
deleted file mode 100644 (file)
index 201a431..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-1. install ebuild
-$ ebuild media-plugins/vdr-plugin-xvdr/vdr-plugin-xvdr-9999.ebuild merge
-
-2. enable xvdr plugin
-$ eselect vdr-plugin enable xvdr
-
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/ChangeLog b/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/ChangeLog
deleted file mode 100644 (file)
index a575d82..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# ChangeLog for media-plugins/vdr-xvdr
-# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: $
-
-  29 Mar 2013; Torsten Kurbad <gentoo@tk-webart.de> vdr-xvdr-9999.ebuild:
-  Added debug use flag; Added tools use flag for optional installation of
-  serviceref tool
-
-  16 Jan 2013; Joerg Bornkessel <hd_brummy@gentoo.org> vdr-xvdr-9999.ebuild:
-  eapi-5, fixed libsi includes #451522
-
-  01 May 2012; Joerg Bornkessel <hd_brummy@gentoo.org> vdr-xvdr-9999.ebuild:
-  eapi=4; vdr-plugin-2.eclass
-
-  18 Sep 2011; Diego E. Pettenò <flameeyes@gentoo.org> vdr-xvdr-9999.ebuild:
-  QA: do not keyword live ebuild.
-
-  17 Sep 2011; Joerg Bornkessel <hd_brummy@gentoo.org> vdr-xvdr-9999.ebuild:
-  minor fixes
-
-  17 Sep 2011; Joerg Bornkessel <hd_brummy@gentoo.org> vdr-xvdr-9999.ebuild:
-  removed useless strict restrict
-
-*vdr-xvdr-9999 (17 Sep 2011)
-
-  17 Sep 2011; Joerg Bornkessel <hd_brummy@gentoo.org> +vdr-xvdr-9999.ebuild,
-  +metadata.xml:
-  initial ebuild, pmasked
-
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/Manifest b/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/Manifest
deleted file mode 100644 (file)
index c4c2a6d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-EBUILD vdr-xvdr-9999.ebuild 1165 SHA256 4d1455818585f113ebe56475dde0b76321c7eefc71371d07a2a597fdf0f9af65 SHA512 028452c92988c77de5a4bf5001d2f585cdf9aeed34356d420fb1f73ef4b7a8cac210e559248569a44be646e7cf52247c101a4e9c4a32bbec5ce3fce4ec70a672 WHIRLPOOL a281ffb3998bd68a8ced091dbd9dc3ea61d6e3ed5fec6113e8086b713518db3e818f9d29a9a6eccb925a39e5cd7ade66b6a213213adbf1e652e43b6d0d2e3e4a
-MISC ChangeLog 984 SHA256 f54055b09168e596256465bdbb43a7c1fcdaa7384ff7d9695d283171d3cb69a5 SHA512 241f33cebb6f3b3b5e5b08ec63b4679bc67d44aead59c33f850270d5692c69f5624e73086824aea153aeac6595d4453a93c2e43d51aa42878da6b1a8d95e2e4d WHIRLPOOL 47ed6e717b1848e67fa675d810612d8d37d293331055e1c8c1e559473163efd9d6a788395013bf4ed205c02d530b81301d97ef5d3128ee2f63b10d62ec116de6
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/vdr-xvdr-9999.ebuild b/v/vdr-plugin-xvdr-0.9.9.git20150814/gentoo/media-plugins/vdr-xvdr/vdr-xvdr-9999.ebuild
deleted file mode 100644 (file)
index 2576fa5..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI="5"
-
-inherit vdr-plugin-2 git-2 flag-o-matic
-
-EGIT_REPO_URI="git://github.com/pipelka/vdr-plugin-xvdr.git"
-
-DESCRIPTION="VDR plugin: XVDR Streamserver Plugin"
-HOMEPAGE="https://github.com/pipelka/vdr-plugin-xvdr"
-SRC_URI=""
-KEYWORDS=""
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="debug tools"
-
-DEPEND=">=media-video/vdr-1.6"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/${PN}-plugin"
-
-src_prepare() {
-       vdr-plugin-2_src_prepare
-
-       fix_vdr_libsi_include "${S}"/src/live/livepatfilter.h
-}
-
-src_compile() {
-       if use debug; then
-               BUILD_PARAMS="DEBUG=1"
-               append-flags -g
-       fi
-
-       vdr-plugin-2_src_compile
-
-       if use tools ; then
-               cd "${S}/tools"
-               emake || die "emake failed for tools"
-       fi
-}
-
-src_install() {
-       vdr-plugin-2_src_install
-
-       insinto /etc/vdr/plugins/xvdr
-       doins xvdr/*.conf
-       diropts -gvdr -ovdr
-
-       if use tools ; then
-               exeinto /usr/bin
-               newexe "${S}/tools/serviceref" xvdr-serviceref
-       fi
-}
-
-pkg_postinst() {
-       vdr-plugin-2_pkg_postinst
-
-       if use tools ; then
-               elog
-               elog "The 'serviceref' tool has been installed as"
-               elog "\t/usr/bin/xvdr-serviceref"
-       fi
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/po/.gitignore b/v/vdr-plugin-xvdr-0.9.9.git20150814/po/.gitignore
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/po/de_AT.po b/v/vdr-plugin-xvdr-0.9.9.git20150814/po/de_AT.po
deleted file mode 100644 (file)
index 8d19217..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# Alexander Pipelka <alexander.pipelka@gmail.com>, 2014.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: vdr-xvdr 0.9.9\n"
-"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2014-02-10 21:02+0100\n"
-"PO-Revision-Date: 2014-02-10 21:02+0100\n"
-"Last-Translator: Alexander Pipelka <alexander.pipelka@gmail.com>\n"
-"Language-Team: Deutsch <>\n"
-"Language: de\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-msgid "Unable to decrypt channel"
-msgstr "Kanal verschlüsselt"
-
-msgid "All tuners busy"
-msgstr "Alle Empfänger belegt"
-
-msgid "Blocked by active recording"
-msgstr "Durch Aufnahme blockiert"
-
-msgid "Failed to switch"
-msgstr "Fehler beim Umschalten"
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/po/de_DE.po b/v/vdr-plugin-xvdr-0.9.9.git20150814/po/de_DE.po
deleted file mode 100644 (file)
index 8d19217..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# Alexander Pipelka <alexander.pipelka@gmail.com>, 2014.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: vdr-xvdr 0.9.9\n"
-"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2014-02-10 21:02+0100\n"
-"PO-Revision-Date: 2014-02-10 21:02+0100\n"
-"Last-Translator: Alexander Pipelka <alexander.pipelka@gmail.com>\n"
-"Language-Team: Deutsch <>\n"
-"Language: de\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-msgid "Unable to decrypt channel"
-msgstr "Kanal verschlüsselt"
-
-msgid "All tuners busy"
-msgstr "Alle Empfänger belegt"
-
-msgid "Blocked by active recording"
-msgstr "Durch Aufnahme blockiert"
-
-msgid "Failed to switch"
-msgstr "Fehler beim Umschalten"
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/config/config.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/config/config.c
deleted file mode 100644 (file)
index 7df4892..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <vdr/plugin.h>
-#include <vdr/tools.h>
-#include <vdr/videodir.h>
-
-#include "config.h"
-#include "live/channelcache.h"
-#include "live/livequeue.h"
-#include "recordings/recordingscache.h"
-
-cXVDRServerConfig::cXVDRServerConfig()
-{
-  listen_port         = LISTEN_PORT;
-  ConfigDirectory     = NULL;
-  stream_timeout      = 3;
-  ReorderCmd          = NULL;
-}
-
-void cXVDRServerConfig::Load() {
-#if VDRVERSNUM >= 20102
-  cLiveQueue::SetTimeShiftDir(cVideoDirectory::Name());
-#else
-  cLiveQueue::SetTimeShiftDir(VideoDirectory);
-#endif
-  cRecordingsCache::GetInstance().LoadResumeData();
-
-  if(!cConfig<cSetupLine>::Load(AddDirectory(ConfigDirectory, GENERAL_CONFIG_FILE), true, false))
-    return;
-
-  for (cSetupLine* l = First(); l; l = Next(l))
-  {
-    if(!Parse(l->Name(), l->Value()))
-      ERRORLOG("Unknown config parameter %s = %s in %s", l->Name(), l->Value(), GENERAL_CONFIG_FILE);
-  }
-
-  cLiveQueue::RemoveTimeShiftFiles();
-  cChannelCache::LoadChannelCacheData();
-}
-
-bool cXVDRServerConfig::Parse(const char* Name, const char* Value)
-{
-  if     (!strcasecmp(Name, "TimeShiftDir")) cLiveQueue::SetTimeShiftDir(Value);
-  else if(!strcasecmp(Name, "MaxTimeShiftSize")) cLiveQueue::SetBufferSize(strtoull(Value, NULL, 10));
-  else if(!strcasecmp(Name, "PiconsURL")) PiconsURL = Value;
-  else if(!strcasecmp(Name, "ReorderCmd")) ReorderCmd = Value;
-  else return false;
-
-  return true;
-}
-
-/* Global instance */
-cXVDRServerConfig XVDRServerConfig;
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/config/config.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/config/config.h
deleted file mode 100644 (file)
index faa51ca..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_CONFIG_H
-#define XVDR_CONFIG_H
-
-#include <string.h>
-#include <stdint.h>
-
-#include <vdr/config.h>
-
-// log output configuration
-
-#ifdef CONSOLEDEBUG
-#define DEBUGLOG(x...) printf("XVDR: "x)
-#elif defined  DEBUG
-#define DEBUGLOG(x...) dsyslog("XVDR: "x)
-#else
-#define DEBUGLOG(x...)
-#endif
-
-#ifdef CONSOLEDEBUG
-#define INFOLOG(x...) printf("XVDR: "x)
-#define ERRORLOG(x...) printf("XVDR-Error: "x)
-#else
-#define INFOLOG(x...) isyslog("XVDR: "x)
-#define ERRORLOG(x...) esyslog("XVDR-Error: "x)
-#endif
-
-// default settings
-
-#define ALLOWED_HOSTS_FILE  "allowed_hosts.conf"
-#define FRONTEND_DEVICE     "/dev/dvb/adapter%d/frontend%d"
-#define GENERAL_CONFIG_FILE "xvdr.conf"
-#define RESUME_DATA_FILE    "resume.data"
-#define CHANNEL_CACHE_FILE  "channelcache.data"
-
-#define LISTEN_PORT       34891
-#define LISTEN_PORT_S    "34891"
-#define DISCOVERY_PORT    34891
-
-// backward compatibility
-
-#if APIVERSNUM < 10701
-#define FOLDERDELIMCHAR '~'
-#endif
-
-
-class cXVDRServerConfig : public cConfig<cSetupLine>
-{
-public:
-  cXVDRServerConfig();
-
-  void Load();
-
-protected:
-
-  bool Parse(const char* Name, const char* Value);
-
-public:
-
-  // Remote server settings
-  cString ConfigDirectory;      // config directory path
-  cString CacheDirectory;       // cache directory path
-  uint16_t listen_port;         // Port of remote server
-  uint16_t stream_timeout;      // timeout in seconds for stream data
-  cString PiconsURL;
-  cString ReorderCmd;
-};
-
-// Global instance
-extern cXVDRServerConfig XVDRServerConfig;
-
-#endif // XVDR_CONFIG_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/aaccommon.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/aaccommon.h
deleted file mode 100644 (file)
index ce41014..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_AAC_COMMON
-#define XVDR_AAC_COMMON
-
-static const int aac_channels[8] =
-{
-  0, 1, 2, 3, 4, 5, 6, 8
-};
-
-static const int aac_samplerates[16] =
-{
-  96000, 88200, 64000, 48000, 44100, 32000,
-  24000, 22050, 16000, 12000, 11025, 8000, 7350
-};
-
-#endif // XVDR_AAC_COMMON
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/ac3common.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/ac3common.h
deleted file mode 100644 (file)
index e05b195..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_AC3_COMMON_H
-#define XVDR_AC3_COMMON_H
-
-#define AC3_HEADER_SIZE 7
-
-// Channel mode (audio coding mode)
-typedef enum
-{
-  AC3_CHMODE_DUALMONO = 0,
-  AC3_CHMODE_MONO,
-  AC3_CHMODE_STEREO,
-  AC3_CHMODE_3F,
-  AC3_CHMODE_2F1R,
-  AC3_CHMODE_3F1R,
-  AC3_CHMODE_2F2R,
-  AC3_CHMODE_3F2R
-} AC3ChannelMode;
-
-// possible frequencies
-static const uint16_t AC3SampleRateTable[3] = { 48000, 44100, 32000 };
-
-// possible bitrates
-static const uint16_t AC3BitrateTable[19] = {
-    32, 40, 48, 56, 64, 80, 96, 112, 128,
-    160, 192, 224, 256, 320, 384, 448, 512, 576, 640
-};
-
-// channel table
-static const uint8_t AC3ChannelsTable[8] = {
-    2, 1, 2, 3, 3, 4, 4, 5
-};
-
-// frame sizes
-static const uint16_t AC3FrameSizeTable[38][3] = {
-    { 64,   69,   96   },
-    { 64,   70,   96   },
-    { 80,   87,   120  },
-    { 80,   88,   120  },
-    { 96,   104,  144  },
-    { 96,   105,  144  },
-    { 112,  121,  168  },
-    { 112,  122,  168  },
-    { 128,  139,  192  },
-    { 128,  140,  192  },
-    { 160,  174,  240  },
-    { 160,  175,  240  },
-    { 192,  208,  288  },
-    { 192,  209,  288  },
-    { 224,  243,  336  },
-    { 224,  244,  336  },
-    { 256,  278,  384  },
-    { 256,  279,  384  },
-    { 320,  348,  480  },
-    { 320,  349,  480  },
-    { 384,  417,  576  },
-    { 384,  418,  576  },
-    { 448,  487,  672  },
-    { 448,  488,  672  },
-    { 512,  557,  768  },
-    { 512,  558,  768  },
-    { 640,  696,  960  },
-    { 640,  697,  960  },
-    { 768,  835,  1152 },
-    { 768,  836,  1152 },
-    { 896,  975,  1344 },
-    { 896,  976,  1344 },
-    { 1024, 1114, 1536 },
-    { 1024, 1115, 1536 },
-    { 1152, 1253, 1728 },
-    { 1152, 1254, 1728 },
-    { 1280, 1393, 1920 },
-    { 1280, 1394, 1920 },
-};
-
-#endif // XVDR_AC3_COMMON_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer.c
deleted file mode 100644 (file)
index 0b010cb..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <vdr/remux.h>
-
-#include "config/config.h"
-#include "live/livestreamer.h"
-#include "demuxer.h"
-#include "parser.h"
-#include "pes.h"
-#include "demuxer_LATM.h"
-#include "demuxer_ADTS.h"
-#include "demuxer_AC3.h"
-#include "demuxer_EAC3.h"
-#include "demuxer_H264.h"
-#include "demuxer_MPEGAudio.h"
-#include "demuxer_MPEGVideo.h"
-#include "demuxer_PES.h"
-#include "demuxer_Subtitle.h"
-
-#define DVD_TIME_BASE 1000000
-
-cTSDemuxer::cTSDemuxer(cLiveStreamer *streamer, const cStreamInfo& info) : cStreamInfo(info), m_Streamer(streamer) {
-  m_pesParser = CreateParser(m_type);
-  SetContent();
-}
-
-cTSDemuxer::cTSDemuxer(cLiveStreamer *streamer, cStreamInfo::Type type, int pid) : cStreamInfo(pid, type), m_Streamer(streamer) {
-  m_pesParser = CreateParser(m_type);
-}
-
-cParser* cTSDemuxer::CreateParser(cStreamInfo::Type type) {
-  switch(type)
-  {
-    case stMPEG2VIDEO:
-      return new cParserMPEG2Video(this);
-    case stH264:
-      return new cParserH264(this);
-    case stMPEG2AUDIO:
-      return new cParserMPEG2Audio(this);
-    case stAAC:
-      return new cParserADTS(this);
-    case stLATM:
-      return new cParserLATM(this);
-    case stAC3:
-      return new cParserAC3(this);
-    case stEAC3:
-      return new cParserEAC3(this);
-    case stTELETEXT:
-      m_parsed = true;
-      return new cParserPES(this);
-    case stDVBSUB:
-      return new cParserSubtitle(this);
-    default:
-      ERRORLOG("Unrecognized type %i", m_type);
-      m_content = scNONE;
-      m_type = stNONE;
-      break;
-  }
-
-  return NULL;
-}
-
-cTSDemuxer::~cTSDemuxer()
-{
-  delete m_pesParser;
-}
-
-int64_t cTSDemuxer::Rescale(int64_t a)
-{
-  uint64_t b = DVD_TIME_BASE;
-  uint64_t c = 90000;
-  uint64_t r = c/2;
-
-  if (a<=INT_MAX)
-    return (a * b + r)/c;
-
-  return a/c*b + (a%c*b + r)/c;
-}
-
-void cTSDemuxer::SendPacket(sStreamPacket *pkt)
-{
-  int64_t dts = (pkt->dts == DVD_NOPTS_VALUE) ? pkt->dts : Rescale(pkt->dts);
-  int64_t pts = (pkt->pts == DVD_NOPTS_VALUE) ? pkt->pts : Rescale(pkt->pts);
-
-  // Rescale
-  pkt->type     = m_type;
-  pkt->content  = m_content;
-  pkt->pid      = GetPID();
-  pkt->dts      = dts;
-  pkt->pts      = pts;
-  pkt->duration = Rescale(pkt->duration);
-
-  m_Streamer->sendStreamPacket(pkt);
-}
-
-bool cTSDemuxer::ProcessTSPacket(unsigned char *data)
-{
-  if (data == NULL)
-    return false;
-
-  bool pusi  = TsPayloadStart(data);
-
-  int bytes = TS_SIZE - TsPayloadOffset(data);
-
-  if(bytes < 0 || bytes >= TS_SIZE)
-    return false;
-
-  if (TsIsScrambled(data)) {
-    return false;
-  }
-
-  if (TsError(data))
-  {
-    ERRORLOG("transport error");
-    return false;
-  }
-
-  if (!TsHasPayload(data))
-  {
-    DEBUGLOG("no payload, size %d", bytes);
-    return true;
-  }
-
-  // strip ts header
-  data += TS_SIZE - bytes;
-
-  // valid packet ?
-  if (pusi && !PesIsHeader(data))
-    return false;
-
-  /* Parse the data */
-  if (m_pesParser)
-    m_pesParser->Parse(data, bytes, pusi);
-
-  return true;
-}
-
-void cTSDemuxer::SetLanguageDescriptor(const char *language, uint8_t atype)
-{
-  m_language[0] = language[0];
-  m_language[1] = language[1];
-  m_language[2] = language[2];
-  m_language[3] = 0;
-  m_audiotype = atype;
-}
-
-void cTSDemuxer::SetVideoInformation(int FpsScale, int FpsRate, int Height, int Width, float Aspect, int num, int den)
-{
-  // check for sane picture information
-  if(Width < 320 || Height < 240 || num <= 0 || den <= 0 || Aspect < 0)
-    return;
-
-  // only register changed video information
-  if(Width == m_width && Height == m_height && Aspect == m_aspect && FpsScale == m_fpsscale && FpsRate == m_fpsrate)
-    return;
-
-  INFOLOG("--------------------------------------");
-  INFOLOG("NEW PICTURE INFORMATION:");
-  INFOLOG("Picture Width: %i", Width);
-  INFOLOG("Picture Height: %i", Height);
-
-  if(num != 1 || den != 1)
-    INFOLOG("Pixel Aspect: %i:%i", num, den);
-
-  if(Aspect == 0)
-    INFOLOG("Unknown Display Aspect Ratio");
-  else 
-    INFOLOG("Display Aspect Ratio: %.2f", Aspect);
-
-  if(FpsScale != 0 && FpsRate != 0) {
-    INFOLOG("Frames per second: %.2lf", (double)FpsRate / (double)FpsScale);
-  }
-
-  INFOLOG("--------------------------------------");
-
-  m_fpsscale = FpsScale;
-  m_fpsrate  = FpsRate;
-  m_height   = Height;
-  m_width    = Width;
-  m_aspect   = Aspect;
-  m_parsed   = true;
-
-  m_Streamer->RequestStreamChange();
-}
-
-void cTSDemuxer::SetAudioInformation(int Channels, int SampleRate, int BitRate, int BitsPerSample, int BlockAlign)
-{
-  // only register changed audio information
-  if(Channels == m_channels && SampleRate == m_samplerate && BitRate == m_bitrate)
-    return;
-
-  INFOLOG("--------------------------------------");
-  INFOLOG("NEW AUDIO INFORMATION:");
-  INFOLOG("Channels: %i", Channels);
-  INFOLOG("Samplerate: %i Hz", SampleRate);
-  if(BitRate > 0)
-    INFOLOG("Bitrate: %i bps", BitRate);
-  INFOLOG("--------------------------------------");
-
-  m_channels      = Channels;
-  m_samplerate    = SampleRate;
-  m_blockalign    = BlockAlign;
-  m_bitrate       = BitRate;
-  m_bitspersample = BitsPerSample;
-  m_parsed        = true;
-
-  m_Streamer->RequestStreamChange();
-}
-
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer.h
deleted file mode 100644 (file)
index 295b2f8..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_H
-#define XVDR_DEMUXER_H
-
-#include <stdint.h>
-#include "streaminfo.h"
-
-class cLiveStreamer;
-class cParser;
-
-#define DVD_NOPTS_VALUE    (-1LL<<52) // should be possible to represent in both double and __int64
-
-struct sStreamPacket
-{
-  sStreamPacket() {
-    type = cStreamInfo::stNONE;
-    content = cStreamInfo::scNONE;
-    frametype = cStreamInfo::ftUNKNOWN;
-  }
-
-  cStreamInfo::FrameType frametype;
-  cStreamInfo::Type type;
-  cStreamInfo::Content content;
-
-  int64_t   pid;
-  int64_t   dts;
-  int64_t   pts;
-  int       duration;
-
-  uint8_t  *data;
-  int       size;
-};
-
-class cTSDemuxer : public cStreamInfo
-{
-private:
-
-  cLiveStreamer* m_Streamer;
-  cParser* m_pesParser;
-
-  int64_t Rescale(int64_t a);
-
-public:
-  cTSDemuxer(cLiveStreamer *streamer, cStreamInfo::Type type, int pid);
-  cTSDemuxer(cLiveStreamer *streamer, const cStreamInfo& info);
-  virtual ~cTSDemuxer();
-
-  bool ProcessTSPacket(unsigned char *data);
-  void SendPacket(sStreamPacket *pkt);
-
-  void SetLanguageDescriptor(const char *language, uint8_t atype);
-  const char *GetLanguage() { return m_language; }
-  uint8_t GetAudioType() { return m_audiotype; }
-  bool IsParsed() const { return m_parsed; }
-
-  /* Video Stream Information */
-  void SetVideoInformation(int FpsScale, int FpsRate, int Height, int Width, float Aspect, int num, int den);
-  uint32_t GetFpsScale() const { return m_fpsscale; }
-  uint32_t GetFpsRate() const { return m_fpsrate; }
-  uint32_t GetHeight() const { return m_height; }
-  uint32_t GetWidth() const { return m_width; }
-  double GetAspect() const { return m_aspect; }
-
-  /* Audio Stream Information */
-  void SetAudioInformation(int Channels, int SampleRate, int BitRate, int BitsPerSample, int BlockAlign);
-  uint32_t GetChannels() const { return m_channels; }
-  uint32_t GetSampleRate() const { return m_samplerate; }
-  uint32_t GetBlockAlign() const { return m_blockalign; }
-  uint32_t GetBitRate() const { return m_bitrate; }
-  uint32_t GetBitsPerSample() const { return m_bitspersample; }
-
-  /* Subtitle related stream information */
-  unsigned char SubtitlingType() const { return m_subtitlingtype; }
-  uint16_t CompositionPageId() const { return m_compositionpageid; }
-  uint16_t AncillaryPageId() const { return m_ancillarypageid; }
-
-private:
-
-  cParser* CreateParser(cStreamInfo::Type type);
-
-};
-
-#endif // XVDR_DEMUXER_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_AC3.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_AC3.c
deleted file mode 100644 (file)
index 3a4e0cb..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_AC3.h"
-#include "vdr/tools.h"
-#include "ac3common.h"
-
-cParserAC3::cParserAC3(cTSDemuxer *demuxer) : cParser(demuxer, 64 * 1024, 4096)
-{
-  m_headersize = AC3_HEADER_SIZE;
-}
-
-bool cParserAC3::CheckAlignmentHeader(unsigned char* buffer, int& framesize) {
-  cBitStream bs(buffer, AC3_HEADER_SIZE * 8);
-
-  if (bs.GetBits(16) != 0x0B77)
-    return false;
-
-  bs.SkipBits(16);                // CRC
-  int fscod = bs.GetBits(2);     // fscod
-  int frmsizcod = bs.GetBits(6); // frmsizcod
-
-  if (fscod == 3 || frmsizcod > 37)
-    return false;
-
-  int bsid = bs.GetBits(5); // bsid
-
-  if(bsid > 8)
-    return false;
-
-  framesize = AC3FrameSizeTable[frmsizcod][fscod] * 2;
-  return true;
-}
-
-void cParserAC3::ParsePayload(unsigned char* payload, int length) {
-  cBitStream bs(payload, AC3_HEADER_SIZE * 8);
-
-  if (bs.GetBits(16) != 0x0B77)
-    return;
-
-  bs.SkipBits(16); // CRC
-  int fscod = bs.GetBits(2);
-  int frmsizecod = bs.GetBits(6);
-  int bsid = bs.GetBits(5); // bsid
-
-  if(bsid > 8)
-    return;
-
-  bs.SkipBits(3); // bitstream mode
-  int acmod = bs.GetBits(3);
-
-  if (fscod == 3 || frmsizecod > 37)
-    return;
-
-  if (acmod == AC3_CHMODE_STEREO)
-  {
-    bs.SkipBits(2); // skip dsurmod
-  }
-  else
-  {
-    if ((acmod & 1) && acmod != AC3_CHMODE_MONO)
-      bs.SkipBits(2);
-    if (acmod & 4)
-      bs.SkipBits(2);
-  }
-  int lfeon = bs.GetBits(1);
-
-  m_samplerate = AC3SampleRateTable[fscod];
-  m_bitrate    = (AC3BitrateTable[frmsizecod>>1] * 1000);
-  m_channels   = AC3ChannelsTable[acmod] + lfeon;
-
-  int framesize = AC3FrameSizeTable[frmsizecod][fscod] * 2;
-
-  m_duration = (framesize * 8 * 1000 * 90) / m_bitrate;
-
-  m_demuxer->SetAudioInformation(m_channels, m_samplerate, m_bitrate, 0, 0);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_AC3.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_AC3.h
deleted file mode 100644 (file)
index 0514d06..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_AC3_H
-#define XVDR_DEMUXER_AC3_H
-
-#include "parser.h"
-
-class cParserAC3 : public cParser
-{
-public:
-
-  cParserAC3(cTSDemuxer *demuxer);
-
-protected:
-
-  void ParsePayload(unsigned char* payload, int length);
-
-  bool CheckAlignmentHeader(unsigned char* buffer, int& framesize);
-
-};
-
-#endif // XVDR_DEMUXER_AC3_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_ADTS.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_ADTS.c
deleted file mode 100644 (file)
index 8fb387e..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_ADTS.h"
-#include "vdr/tools.h"
-#include "aaccommon.h"
-
-cParserADTS::cParserADTS(cTSDemuxer *demuxer) : cParser(demuxer, 64 * 1024, 8192)
-{
-  m_headersize = 9; // header is 9 bytes long (with CRC)
-}
-
-bool cParserADTS::ParseAudioHeader(uint8_t* buffer, int& channels, int& samplerate, int& framesize)
-{
-  cBitStream bs(buffer, m_headersize * 8);
-
-  // sync
-  if(bs.GetBits(12) != 0xFFF)
-    return false;
-
-  bs.SkipBits(1); // MPEG Version (0 = MPEG4 / 1 = MPEG2)
-
-  // layer if always 0
-  if(bs.GetBits(2) != 0)
-    return false;
-
-  bs.SkipBits(1); // Protection absent
-  bs.SkipBits(2); // AOT
-  int samplerateindex = bs.GetBits(4); // sample rate index
-  if(samplerateindex == 15)
-    return false;
-
-  bs.SkipBits(1);      // Private bit
-
-  int channelindex = bs.GetBits(3); // channel index
-  if(channelindex > 7)
-    return false;
-
-  bs.SkipBits(4); // original, copy, copyright, ...
-
-  framesize = bs.GetBits(13);
-
-  m_samplerate = aac_samplerates[samplerateindex];
-  m_channels = aac_channels[channelindex];
-  m_duration = 1024 * 90000 / m_samplerate;
-
-  return true;
-}
-
-bool cParserADTS::CheckAlignmentHeader(unsigned char* buffer, int& framesize) {
-  int channels, samplerate;
-  return ParseAudioHeader(buffer, channels, samplerate, framesize);
-}
-
-void cParserADTS::ParsePayload(unsigned char* payload, int length) {
-  int framesize = 0;
-
-  if(!ParseAudioHeader(payload, m_channels, m_samplerate, framesize))
-    return;
-
-  m_demuxer->SetAudioInformation(m_channels, m_samplerate, 0, 0, 0);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_ADTS.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_ADTS.h
deleted file mode 100644 (file)
index ad0aee6..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_ADTS_H
-#define XVDR_DEMUXER_ADTS_H
-
-#include "parser.h"
-
-class cParserADTS : public cParser
-{
-public:
-
-  cParserADTS(cTSDemuxer *demuxer);
-
-protected:
-
-  void ParsePayload(unsigned char* payload, int length);
-
-  bool CheckAlignmentHeader(unsigned char* buffer, int& framesize);
-
-private:
-
-  bool ParseAudioHeader(uint8_t* buffer, int& channels, int& samplerate, int& framesize);
-
-};
-
-#endif // XVDR_DEMUXER_ADTS_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_EAC3.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_EAC3.c
deleted file mode 100644 (file)
index 63953ec..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_EAC3.h"
-#include "vdr/tools.h"
-#include "ac3common.h"
-
-static const uint8_t EAC3Blocks[4] = {
-  1, 2, 3, 6
-};
-
-typedef enum {
-  EAC3_FRAME_TYPE_INDEPENDENT = 0,
-  EAC3_FRAME_TYPE_DEPENDENT,
-  EAC3_FRAME_TYPE_AC3_CONVERT,
-  EAC3_FRAME_TYPE_RESERVED
-} EAC3FrameType;
-
-cParserEAC3::cParserEAC3(cTSDemuxer *demuxer) : cParser(demuxer, 64 * 1024, 4096)
-{
-  m_headersize = AC3_HEADER_SIZE;
-}
-
-bool cParserEAC3::CheckAlignmentHeader(unsigned char* buffer, int& framesize) {
-  cBitStream bs(buffer, AC3_HEADER_SIZE * 8);
-
-  if (bs.GetBits(16) != 0x0B77)
-    return false;
-
-  bs.SkipBits(2);  // frametype
-  bs.SkipBits(3);  // substream id
-
-  framesize = (bs.GetBits(11) + 1) << 1;
-  return true;
-}
-
-void cParserEAC3::ParsePayload(unsigned char* payload, int length) {
-  cBitStream bs(payload, AC3_HEADER_SIZE * 8);
-
-  if (bs.GetBits(16) != 0x0B77)
-    return;
-
-  int frametype = bs.GetBits(2);
-  if (frametype == EAC3_FRAME_TYPE_RESERVED)
-    return;
-
-  bs.SkipBits(3);
-
-  int framesize = (bs.GetBits(11) + 1) << 1;
-  if (framesize < AC3_HEADER_SIZE)
-   return;
-
-  int numBlocks = 6;
-  int sr_code = bs.GetBits(2);
-  if (sr_code == 3)
-  {
-    int sr_code2 = bs.GetBits(2);
-    if (sr_code2 == 3)
-      return;
-
-    m_samplerate = AC3SampleRateTable[sr_code2] / 2;
-  }
-  else
-  {
-    numBlocks = EAC3Blocks[bs.GetBits(2)];
-    m_samplerate = AC3SampleRateTable[sr_code];
-  }
-
-  int channelMode = bs.GetBits(3);
-  int lfeon = bs.GetBits(1);
-
-  m_bitrate  = (uint32_t)(8.0 * framesize * m_samplerate / (numBlocks * 256.0));
-  m_channels = AC3ChannelsTable[channelMode] + lfeon;
-
-  m_duration = (framesize * 8 * 1000 * 90) / m_bitrate;
-
-  m_demuxer->SetAudioInformation(m_channels, m_samplerate, m_bitrate, 0, 0);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_EAC3.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_EAC3.h
deleted file mode 100644 (file)
index 65c7052..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_EAC3_H
-#define XVDR_DEMUXER_EAC3_H
-
-#include "parser.h"
-
-class cParserEAC3 : public cParser
-{
-public:
-
-  cParserEAC3(cTSDemuxer *demuxer);
-
-protected:
-
-  void ParsePayload(unsigned char* payload, int length);
-
-  bool CheckAlignmentHeader(unsigned char* buffer, int& framesize);
-
-};
-
-#endif // XVDR_DEMUXER_EAC3_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_H264.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_H264.c
deleted file mode 100644 (file)
index 584d21f..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "config/config.h"
-#include "vdr/tools.h"
-#include "demuxer_H264.h"
-
-// pixel aspect ratios
-const struct cParserH264::pixel_aspect_t cParserH264::m_aspect_ratios[] = {
-  {0, 1}, { 1,  1}, {12, 11}, {10, 11}, {16, 11}, { 40, 33}, {24, 11}, {20, 11}, {32, 11},
-  {80, 33}, {18, 11}, {15, 11}, {64, 33}, {160, 99}, { 4,  3}, { 3,  2}, { 2,  1}
-};
-
-// H264 profiles
-#define PROFILE_BASELINE  66
-#define PROFILE_MAIN      77
-#define PROFILE_EXTENDED  88
-#define PROFILE_HP        100
-#define PROFILE_HI10P     110
-#define PROFILE_HI422     122
-#define PROFILE_HI444     244
-#define PROFILE_CAVLC444   44
-
-// NAL SPS ID
-#define NAL_SLH 0x01
-#define NAL_SPS 0x07
-
-// golomb decoding
-uint32_t read_golomb_ue(cBitStream* bs)
-{
-  int leadingZeroBits = -1;
-
-  for (uint32_t b = 0; !b; ++leadingZeroBits)
-    b = bs->GetBits(1);
-
-  return ((1 << leadingZeroBits) - 1) + bs->GetBits(leadingZeroBits);
-}
-
-int32_t read_golomb_se(cBitStream* bs)
-{
-  int32_t v = read_golomb_ue(bs);
-  if(v == 0)
-    return 0;
-
-  int32_t neg = !(v & 1);
-  v = (v + 1) >> 1;
-
-  return neg ? -v : v;
-}
-
-
-cParserH264::cParserH264(cTSDemuxer *demuxer) : cParserPES(demuxer, 512 * 1024)
-{
-  m_scale = 0;
-  m_rate = 0;
-}
-
-uint8_t* cParserH264::ExtractNAL(uint8_t* packet, int length, int nal_offset, int& nal_len) {
-  int e = FindStartCode(packet, length, nal_offset, 0x00000001);
-  if (e == -1) {
-    e = length;
-  }
-
-  int l = e - nal_offset;
-
-  if(l <= 0) {
-    return NULL;
-  }
-
-  uint8_t* nal_data = new uint8_t[l];
-  nal_len = nalUnescape(nal_data, packet + nal_offset, l);
-
-  if(nal_len + nal_offset > length) {
-    ERRORLOG("nal overrun: nal len: %i, offset: %i, packet length: %i", nal_len, nal_offset, length);
-  }
-
-  return nal_data;
-}
-
-void cParserH264::ParsePayload(unsigned char* data, int length) {
-  int o = 0;
-  int sps_start = -1;
-  int nal_len = 0;
-
-  if(length < 4) {
-    return;
-  }
-
-  // iterate through all NAL units
-  while((o = FindStartCode(data, length, o, 0x00000001)) >= 0) {
-    o += 4;
-    if(o >= length)
-      return;
-
-    // NAL_SLH
-    if((data[o] & 0x1F) == NAL_SLH && length - o > 1) {
-      o++;
-      uint8_t* nal_data = ExtractNAL(data, length, o, nal_len);
-
-      if(nal_data != NULL) {
-        Parse_SLH(nal_data, nal_len);
-        delete[] nal_data;
-      }
-    }
-
-    // NAL_SPS
-    else if((data[o] & 0x1F) == NAL_SPS && length - o > 1) {
-      o++;
-      sps_start = o;
-    }
-  }
-
-  if(sps_start == -1)
-    return;
-
-  uint8_t* nal_data = ExtractNAL(data, length, sps_start, nal_len);
-
-  if(nal_data == NULL) {
-    return;
-  }
-
-  int width = 0;
-  int height = 0;
-  struct pixel_aspect_t pixelaspect = { 1, 1 };
-
-  bool rc = Parse_SPS(nal_data, nal_len, pixelaspect, width, height);
-  delete[] nal_data;
-
-  if(!rc)
-    return;
-
-  double PAR = (double)pixelaspect.num/(double)pixelaspect.den;
-  double DAR = (PAR * width) / height;
-
-  m_demuxer->SetVideoInformation(m_scale, m_rate, height, width, DAR, pixelaspect.num, pixelaspect.den);
-}
-
-int cParserH264::nalUnescape(uint8_t *dst, const uint8_t *src, int len)
-{
-  int s = 0, d = 0;
-
-  while (s < len) {
-    if(s >= 2 && s < len - 1) {
-      // hit 00 00 03 ?
-      if(src[s - 2] == 0 && src[s - 1] == 0 && src[s] == 3) {
-        s++; // skip 03
-      }
-    }
-
-    dst[d++] = src[s++];
-  }
-
-  return d;
-}
-
-void cParserH264::Parse_SLH(uint8_t *buf, int len) {
-  cBitStream bs(buf, len*8);
-
-  read_golomb_ue(&bs); // first_mb_in_slice
-  int type = read_golomb_ue(&bs);;
-
-  if(type > 4) {
-    type -= 5;
-  }
-
-  switch(type) {
-    case 0:
-      m_frametype = cStreamInfo::ftPFRAME;
-      break;
-    case 1:
-      m_frametype = cStreamInfo::ftBFRAME;
-      break;
-    case 2:
-      m_frametype = cStreamInfo::ftIFRAME;
-      break;
-    default:
-      m_frametype = cStreamInfo::ftUNKNOWN;
-      break;
-  }
-
-  return;
-}
-
-bool cParserH264::Parse_SPS(uint8_t *buf, int len, struct pixel_aspect_t& pixelaspect, int& width, int& height)
-{
-  bool seq_scaling_matrix_present = false;
-  cBitStream bs(buf, len * 8);
-
-  int profile_idc = bs.GetBits(8); // profile idc
-
-  // check for valid profile
-  if( profile_idc != PROFILE_BASELINE &&
-      profile_idc != PROFILE_MAIN &&
-      profile_idc != PROFILE_EXTENDED &&
-      profile_idc != PROFILE_HP &&
-      profile_idc != PROFILE_HI10P &&
-      profile_idc != PROFILE_HI422 &&
-      profile_idc != PROFILE_HI444 &&
-      profile_idc != PROFILE_CAVLC444)
-  {
-    ERRORLOG("H264: invalid profile idc: %i", profile_idc);
-    return false;
-  }
-
-  bs.SkipBits(8); // constraint set flag 0-4, 4 bits reserved
-
-  bs.SkipBits(8); // level idc
-  read_golomb_ue(&bs); // sequence parameter set id
-
-  // high profile ?
-  if (profile_idc == PROFILE_HP ||
-      profile_idc == PROFILE_HI10P ||
-      profile_idc == PROFILE_HI422 ||
-      profile_idc == PROFILE_HI444 ||
-      profile_idc == PROFILE_CAVLC444)
-  {
-    int chroma_format_idc = read_golomb_ue(&bs);
-    if(chroma_format_idc == 3) // chroma_format_idc
-      bs.SkipBits(1); // residual_colour_transform_flag
-
-    read_golomb_ue(&bs); // bit_depth_luma - 8
-    read_golomb_ue(&bs); // bit_depth_chroma - 8
-    bs.SkipBits(1); // transform_bypass
-
-    seq_scaling_matrix_present = bs.GetBit();
-
-    if (seq_scaling_matrix_present) // seq_scaling_matrix_present
-    {
-      for (int i = 0; i < 8; i++)
-      {
-        if (bs.GetBit()) // seq_scaling_list_present
-        {
-          int last = 8, next = 8, size = (i<6) ? 16 : 64;
-          for (int j = 0; j < size; j++) {
-            if (next) {
-              next = (last + read_golomb_se(&bs)) & 0xff;
-            }
-            last = next ?: last;
-          }
-        }
-      }
-    }
-  }
-
-  read_golomb_ue(&bs); // log2_max_frame_num - 4
-  int pic_order_cnt_type = read_golomb_ue(&bs);
-
-  if (pic_order_cnt_type == 0)
-    read_golomb_ue(&bs); // log2_max_poc_lsb - 4
-  else if (pic_order_cnt_type == 1)
-  {
-    bs.SkipBits(1); // delta_pic_order_always_zero
-    read_golomb_se(&bs); // offset_for_non_ref_pic
-    read_golomb_se(&bs); // offset_for_top_to_bottom_field
-
-    unsigned int tmp = read_golomb_ue(&bs); // num_ref_frames_in_pic_order_cnt_cycle
-    for (unsigned int i = 0; i < tmp; i++)
-      read_golomb_se(&bs); // offset_for_ref_frame
-  }
-  else if(pic_order_cnt_type != 2)
-  {
-    ERRORLOG("pic_order_cnt_type = %i", pic_order_cnt_type);
-    return false;
-  }
-
-  read_golomb_ue(&bs); // ref_frames
-  bs.SkipBits(1); // gaps_in_frame_num_allowed
-
-  width = read_golomb_ue(&bs) + 1;
-  height = read_golomb_ue(&bs) + 1;
-  unsigned int frame_mbs_only = bs.GetBit();
-
-  width  *= 16;
-  height *= 16 * (2 - frame_mbs_only);
-
-  if (!frame_mbs_only)
-    bs.SkipBits(1); // mb_adaptive_frame_field_flag
-
-  bs.SkipBits(1); // direct_8x8_inference_flag
-
-  // frame_cropping_flag
-  if (bs.GetBit())
-  {
-    uint32_t crop_left = read_golomb_ue(&bs);
-    uint32_t crop_right = read_golomb_ue(&bs);
-    uint32_t crop_top = read_golomb_ue(&bs);
-    uint32_t crop_bottom = read_golomb_ue(&bs);
-
-    width -= 2*(crop_left + crop_right);
-
-    if (frame_mbs_only)
-      height -= 2*(crop_top + crop_bottom);
-    else
-      height -= 4*(crop_top + crop_bottom);
-  }
-
-  // VUI parameters
-  pixelaspect.num = 0;
-  if (bs.GetBit()) // vui_parameters_present flag
-  {
-    if (bs.GetBit()) // aspect_ratio_info_present
-    {
-      uint32_t aspect_ratio_idc = bs.GetBits(8);
-
-      // Extended_SAR
-      if (aspect_ratio_idc == 255) {
-        pixelaspect.num = bs.GetBits(16); // sar width
-        pixelaspect.den = bs.GetBits(16); // sar height
-      }
-      else if (aspect_ratio_idc < sizeof(m_aspect_ratios)/sizeof(struct pixel_aspect_t))
-          pixelaspect = m_aspect_ratios[aspect_ratio_idc];
-    }
-    // overscan info
-    if(bs.GetBit()) {
-      bs.SkipBits(1); // overscan appropriate flag
-    }
-    // video signal type present
-    if(bs.GetBit()) {
-      bs.SkipBits(3); // video format
-      bs.SkipBits(1); // video full range flag
-      // color description present
-      if(bs.GetBit()) {
-        bs.SkipBits(8); // color primaries
-        bs.SkipBits(8); // transfer characteristics
-        bs.SkipBits(8); // matrix coefficients
-      }
-    }
-    // chroma loc info present
-    if(bs.GetBit()) {
-      read_golomb_ue(&bs); // type top field
-      read_golomb_ue(&bs); // type bottom field
-    }
-    // timing info present
-    if(bs.GetBit()) {
-      // get timing
-
-      uint32_t num_units_in_tick = bs.GetBits(32);
-      uint32_t time_scale = bs.GetBits(32);
-
-      // fixed frame rate flag
-      if(bs.GetBit()) {
-        num_units_in_tick *= 2;
-        m_duration = (90000 * num_units_in_tick) / time_scale;
-        m_rate = time_scale;
-        m_scale = num_units_in_tick;
-      }
-    }
-  }
-
-  return true;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_H264.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_H264.h
deleted file mode 100644 (file)
index 391516a..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_H264_H
-#define XVDR_DEMUXER_H264_H
-
-#include "demuxer_PES.h"
-
-class cParserH264 : public cParserPES
-{
-public:
-
-  cParserH264(cTSDemuxer *demuxer);
-
-  void ParsePayload(unsigned char *data, int length);
-
-private:
-
-  struct pixel_aspect_t {
-    int num;
-    int den;
-  };
-
-  static const struct pixel_aspect_t m_aspect_ratios[];
-
-  uint8_t* ExtractNAL(uint8_t* packet, int length, int nal_offset, int& nal_len);
-
-  bool Parse_SPS(uint8_t *buf, int len, struct pixel_aspect_t& pixel_aspect, int& width, int& height);
-
-  void Parse_SLH(uint8_t *buf, int len);
-
-  int nalUnescape(uint8_t *dst, const uint8_t *src, int len);
-
-  int m_scale;
-
-  int m_rate;
-};
-
-
-#endif // XVDR_DEMUXER_H264_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_LATM.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_LATM.c
deleted file mode 100644 (file)
index 5ea8234..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_LATM.h"
-#include "vdr/tools.h"
-#include "aaccommon.h"
-
-static uint32_t LATMGetValue(cBitStream *bs) {
-  return bs->GetBits(bs->GetBits(2) * 8);
-}
-
-static void putBits(uint8_t* buffer, int &offset, int val, int num) {
-  while(num > 0) {
-    num--;
-
-    if(val & (1 << num))
-      buffer[offset / 8] |= 1 << (7 - (offset & 7));
-    else
-      buffer[offset / 8] &= ~(1 << (7 - (offset & 7)));
-
-    offset++;
-  }
-}
-
-cParserLATM::cParserLATM(cTSDemuxer *demuxer) : cParser(demuxer, 64 * 1024, 8192)//, m_framelength(0)
-{
-}
-
-bool cParserLATM::CheckAlignmentHeader(unsigned char* buffer, int& framesize) {
-  cBitStream bs(buffer, 24 * 8);
-
-  // read sync
-  if(bs.GetBits(11) != 0x2B7) {
-    return false;
-  }
-
-  // read frame size
-  framesize = bs.GetBits(13);
-  framesize += 3; // add header size
-
-  return true;
-}
-
-// dummy - handled in ParsePayload
-void cParserLATM::SendPayload(unsigned char* payload, int length) {
-}
-
-void cParserLATM::ParsePayload(unsigned char* data, int len) {
-  cBitStream bs(data, len * 8);
-
-  bs.SkipBits(24); // skip header
-
-  if (!bs.GetBit())
-    ReadStreamMuxConfig(&bs);
-
-  int tmp;
-  unsigned int slotLen = 0;
-  do
-  {
-    tmp = bs.GetBits(8);
-    slotLen += tmp;
-  } while (tmp == 255);
-
-  if (slotLen * 8 > (bs.Length() - (unsigned)bs.Index()))
-    return;
-
-  if (m_curDTS == DVD_NOPTS_VALUE)
-    return;
-
-  // buffer for converted payload data
-  int payloadlength = slotLen + 7;
-  uint8_t* payload = (uint8_t*)malloc(payloadlength);
-
-  // 7 bytes of ADTS header
-  int offset = 0;
-  putBits(payload, offset, 0xfff, 12); // Sync marker
-  putBits(payload, offset, 0, 1);      // ID 0 = MPEG 4
-  putBits(payload, offset, 0, 2);      // Layer
-  putBits(payload, offset, 1, 1);      // Protection absent
-  putBits(payload, offset, 2, 2);      // AOT
-  putBits(payload, offset, m_samplerateindex, 4);
-  putBits(payload, offset, 1, 1);      // Private bit
-  putBits(payload, offset, m_channels, 3);
-  putBits(payload, offset, 1, 1);      // Original
-  putBits(payload, offset, 1, 1);      // Copy
-  putBits(payload, offset, 1, 1);      // Copyright identification bit
-  putBits(payload, offset, 1, 1);      // Copyright identification start
-  putBits(payload, offset, slotLen, 13);
-  putBits(payload, offset, 0, 11);     // Buffer fullness
-  putBits(payload, offset, 0, 2);      // RDB in frame
-
-  // copy AAC data
-  uint8_t *buf = payload + 7;
-  for (unsigned int i = 0; i < slotLen; i++)
-    *buf++ = bs.GetBits(8);
-
-  // send converted payload packet
-  cParser::SendPayload(payload, payloadlength);
-
-  // free payload buffer
-  free(payload);
-
-  return;
-}
-
-void cParserLATM::ReadStreamMuxConfig(cBitStream *bs) {
-  int AudioMuxVersion = bs->GetBits(1);
-  int AudioMuxVersion_A = 0;
-  if (AudioMuxVersion)                       // audioMuxVersion
-    AudioMuxVersion_A = bs->GetBits(1);
-
-  if(AudioMuxVersion_A)
-    return;
-
-  if (AudioMuxVersion)
-    LATMGetValue(bs);                  // taraFullness
-
-  bs->SkipBits(1);                         // allStreamSameTimeFraming = 1
-  bs->SkipBits(6);                         // numSubFrames = 0
-  bs->SkipBits(4);                         // numPrograms = 0
-
-  // for each program (which there is only on in DVB)
-  bs->SkipBits(3);                         // numLayer = 0
-
-  // for each layer (which there is only on in DVB)
-  if (!AudioMuxVersion)
-    ReadAudioSpecificConfig(bs);
-  else
-    return;
-
-  // these are not needed... perhaps
-  int framelength = bs->GetBits(3);
-  switch (framelength)
-  {
-    case 0:
-      bs->GetBits(8);
-      break;
-    case 1:
-      bs->GetBits(9);
-      break;
-    case 3:
-    case 4:
-    case 5:
-      bs->GetBits(6);                 // celp_table_index
-      break;
-    case 6:
-    case 7:
-      bs->GetBits(1);                 // hvxc_table_index
-      break;
-  }
-
-  if (bs->GetBits(1))
-  {                   // other data?
-    if (AudioMuxVersion)
-    {
-      LATMGetValue(bs);              // other_data_bits
-    }
-    else
-    {
-      int esc;
-      do
-      {
-        esc = bs->GetBits(1);
-        bs->SkipBits(8);
-      } while (esc);
-    }
-  }
-
-  if (bs->GetBits(1))                   // crc present?
-    bs->SkipBits(8);                     // config_crc
-}
-
-void cParserLATM::ReadAudioSpecificConfig(cBitStream *bs) {
-  bs->GetBits(5); // audio object type
-
-  m_samplerateindex = bs->GetBits(4);
-
-  if (m_samplerateindex == 0xf)
-    return;
-
-  m_samplerate = aac_samplerates[m_samplerateindex];
-  m_duration = 1024 * 90000 / m_samplerate;
-
-  int channelindex = bs->GetBits(4);
-  if(channelindex > 7) channelindex = 0;
-  m_channels = aac_channels[channelindex];
-
-  bs->SkipBits(1);      //framelen_flag
-  if (bs->GetBit())  // depends_on_coder
-    bs->SkipBits(14);
-
-  if (bs->GetBits(1))  // ext_flag
-    bs->SkipBits(1);    // ext3_flag
-
-  m_demuxer->SetAudioInformation(m_channels, m_samplerate, 0, 0, 0);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_LATM.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_LATM.h
deleted file mode 100644 (file)
index 6c4090f..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Aleaxander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_LATM_H
-#define XVDR_DEMUXER_LATM_H
-
-#include "parser.h"
-
-class cBitStream;
-
-class cParserLATM : public cParser
-{
-public:
-
-  cParserLATM(cTSDemuxer *demuxer);
-
-protected:
-
-  void ParsePayload(unsigned char* data, int len);
-
-  void SendPayload(unsigned char* payload, int length);
-
-  bool CheckAlignmentHeader(unsigned char* buffer, int& framesize);
-
-  void ReadStreamMuxConfig(cBitStream *bs);
-
-  void ReadAudioSpecificConfig(cBitStream *bs);
-
-private:
-
-  int m_samplerateindex;
-
-};
-
-#endif // XVDR_DEMUXER_LATM_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGAudio.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGAudio.c
deleted file mode 100644 (file)
index 1a911be..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_MPEGAudio.h"
-#include "config/config.h"
-
-#define MPA_MONO 3
-
-static const uint16_t FrequencyTable[3] = { 44100, 48000, 32000 };
-
-static const uint16_t BitrateTable[2][3][15] = {
-  {
-    {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 },
-    {0, 32, 48, 56, 64,  80,  96,  112, 128, 160, 192, 224, 256, 320, 384 },
-    {0, 32, 40, 48, 56,  64,  80,  96,  112, 128, 160, 192, 224, 256, 320 }
-  },
-  {
-    {0, 32, 48, 56, 64,  80,  96,  112, 128, 144, 160, 176, 192, 224, 256},
-    {0, 8,  16, 24, 32,  40,  48,  56,  64,  80,  96,  112, 128, 144, 160},
-    {0, 8,  16, 24, 32,  40,  48,  56,  64,  80,  96,  112, 128, 144, 160}
-  }
-};
-
-static const int Coefficients[2][3] = {
-  { 12, 144, 144 },
-  { 12, 144, 72 }
-};
-
-const int SlotSizes[3] = { 4, 1, 1 };
-
-
-cParserMPEG2Audio::cParserMPEG2Audio(cTSDemuxer *demuxer) : cParser(demuxer, 64 * 1024, 2048)
-{
-  m_headersize = 4;
-}
-
-bool cParserMPEG2Audio::ParseAudioHeader(uint8_t* buffer, int& channels, int& samplerate, int &bitrate, int& framesize)
-{
-  uint32_t header = ((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] <<  8) | buffer[3]);
-
-  // syncword FFE
-  if ((header & 0xffe00000) != 0xffe00000)
-    return false;
-
-  int lsf = 0;
-  int mpeg25 = 0;
-
-  // MPEG 2.5 ?
-  if (header & (1<<20))
-  {
-    lsf = (header & (1<<19)) ? 0 : 1;
-    mpeg25 = 0;
-  }
-  else
-  {
-    lsf = 1;
-    mpeg25 = 1;
-  }
-
-  // get header properties
-  int layer             = 4 - ((header >> 17) & 3);
-  int sample_rate_index = (header >> 10) & 3;
-  bool padding          = (header >> 9) & 1;
-  samplerate            = FrequencyTable[sample_rate_index] >> (lsf + mpeg25);
-  int bitrate_index     = (header >> 12) & 0xf;
-  int mode              = (header >> 6) & 3;
-
-  // valid layer ?
-  if (layer == 0 || layer == 4)
-    return false;
-
-  // number of channels
-  channels = 2 - (mode == MPA_MONO);
-
-  // valid bit rate ?
-  if (bitrate_index >= 15)
-    return false;
-
-  bitrate = BitrateTable[lsf][layer - 1][bitrate_index] * 1000;
-
-  if(bitrate == 0 || samplerate == 0)
-    return false;
-
-  // frame size in bytes
-  framesize = ((Coefficients[lsf][layer - 1] * bitrate) / samplerate + padding) * SlotSizes[layer - 1];
-
-  return true;
-}
-
-bool cParserMPEG2Audio::CheckAlignmentHeader(unsigned char* buffer, int& framesize) {
-  int channels, samplerate, bitrate;
-  return ParseAudioHeader(buffer, channels, samplerate, bitrate, framesize);
-}
-
-void cParserMPEG2Audio::ParsePayload(unsigned char* payload, int length) {
-  int framesize = 0;
-
-  if(!ParseAudioHeader(payload, m_channels, m_samplerate, m_bitrate, framesize))
-    return;
-
-  m_duration = (framesize * 8 * 1000 * 90) / m_bitrate;
-
-  m_demuxer->SetAudioInformation(m_channels, m_samplerate, m_bitrate, 0, 0);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGAudio.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGAudio.h
deleted file mode 100644 (file)
index b052923..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_MPEGAUDIO_H
-#define XVDR_DEMUXER_MPEGAUDIO_H
-
-#include "parser.h"
-
-// --- cParserMPEG2Audio -------------------------------------------------
-
-class cParserMPEG2Audio : public cParser
-{
-public:
-
-  cParserMPEG2Audio(cTSDemuxer *demuxer);
-
-protected:
-
-  void ParsePayload(unsigned char* payload, int length);
-
-  bool CheckAlignmentHeader(unsigned char* buffer, int& framesize);
-
-private:
-
-  bool ParseAudioHeader(uint8_t* buffer, int& channels, int& samplerate, int &bitrate, int& framesize);
-
-};
-
-#endif // XVDR_DEMUXER_MPEGAUDIO_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGVideo.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGVideo.c
deleted file mode 100644 (file)
index 50621f2..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 20120 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_MPEGVideo.h"
-#include "vdr/tools.h"
-#include "pes.h"
-
-#define MPEG2_SEQUENCE_START 0x000001B3
-#define MPEG2_PICTURE_START  0x00000100
-
-// frame durations
-static const unsigned int framedurations[16] = {
-  0, 3753, 3750, 3600, 3003, 3000, 1800, 1501, 1500, 0, 0, 0, 0, 0, 0, 0
-};
-
-// frame rates
-static const unsigned int framerates[16][2] = {
-  {0, 0}, {24000, 1001}, {24, 1}, {25, 1}, {30000, 1001}, {30, 1}, {50, 1}, {60000, 1001}, {60, 1},
-  {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
-};
-
-// aspect ratios
-static const double aspectratios[16] = {
-  0, 1.0, 1.333333333, 1.777777778, 2.21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static int GetFrameType(unsigned char* data, int length) {
-  cBitStream bs(data, length * 8);
-  bs.SkipBits(32); // skip picture start code
-  bs.SkipBits(10); // skip temporal reference
-
-  return bs.GetBits(3);
-}
-
-static cStreamInfo::FrameType ConvertFrameType(int frametype) {
-  switch (frametype) {
-    case 1:
-      return cStreamInfo::ftIFRAME;
-    case 2:
-      return cStreamInfo::ftPFRAME;
-    case 3:
-      return cStreamInfo::ftBFRAME;
-    case 4:
-      return cStreamInfo::ftDFRAME;
-    default:
-      break;
-  }
-
-  return cStreamInfo::ftUNKNOWN;
-}
-
-cParserMPEG2Video::cParserMPEG2Video(cTSDemuxer *demuxer) : cParserPES(demuxer, 512* 1024), m_pdiff(0), m_lastDTS(DVD_NOPTS_VALUE) {
-}
-
-cStreamInfo::FrameType cParserMPEG2Video::ParsePicture(unsigned char* data, int length) {
-  int frametype = GetFrameType(data, length);
-
-  // get I,P frames distance
-  if(frametype < 3 && m_curDTS != DVD_NOPTS_VALUE && m_curPTS != DVD_NOPTS_VALUE) {
-    m_pdiff = m_curPTS - m_curDTS;
-    m_lastDTS = m_curDTS;
-    return ConvertFrameType(frametype);
-  }
-
-  // extrapolate DTS
-  if(m_curDTS == DVD_NOPTS_VALUE && m_duration != 0) {
-    m_curDTS = PtsAdd(m_lastDTS, m_duration);
-    m_lastDTS = m_curDTS;
-  }
-
-  // B frames have DTS = PTS
-  if(frametype == 3 && m_curPTS == DVD_NOPTS_VALUE)
-    m_curPTS = m_curDTS;
-
-  // extrapolate PTS of I/P frame
-  if(frametype < 3 && m_curPTS == DVD_NOPTS_VALUE)
-    m_curPTS = PtsAdd(m_curDTS, m_pdiff);
-
-  return ConvertFrameType(frametype);
-}
-
-void cParserMPEG2Video::ParsePayload(unsigned char* data, int length) {
-  // lookup sequence start code
-  int o = FindStartCode(data, length, 0, MPEG2_SEQUENCE_START);
-  if (o >= 0) {
-    // skip sequence start code
-    o += 4;
-
-    // parse picture sequence (width, height, aspect, duration)
-    ParseSequenceStart(data + o, length - 4);
-  }
-
-  // just to be sure, exit if there's isn't any duration
-  if(m_duration == 0)
-    return;
-
-  // check for picture start codes
-  int s = FindStartCode(data, length, 0, MPEG2_PICTURE_START);
-
-  // abort if there isn't any picture information
-  if(s == -1) {
-    return;
-  }
-
-  int e = FindStartCode(data, length, s + 4, MPEG2_PICTURE_START);
-  o = s;
-  s = 0;
-
-  // divide this packet into frames
-  while(e != -1) {
-
-    // parse and send payload data
-    m_frametype = ParsePicture(data + o, e - o);
-    cParser::SendPayload(data + s, e - s);
-
-    // get next picture offsets
-    s = e;
-    o = s;
-    e = FindStartCode(data, length, s + 4, MPEG2_PICTURE_START);
-
-    // increment timestamps
-    m_curPTS = DVD_NOPTS_VALUE;
-    m_curDTS = PtsAdd(m_curDTS, m_duration);
-  }
-
-  // append last part
-  m_frametype = ParsePicture(data + o, length - o);
-  cParser::SendPayload(data + s, length - s);
-}
-
-void cParserMPEG2Video::SendPayload(unsigned char* payload, int length) {
-}
-
-void cParserMPEG2Video::ParseSequenceStart(unsigned char* data, int length) {
-  cBitStream bs(data, length * 8);
-
-  if (bs.Length() < 32)
-    return;
-
-  int width  = bs.GetBits(12);
-  int height = bs.GetBits(12);
-
-  // display aspect ratio
-  double DAR = aspectratios[bs.GetBits(4)];
-
-  // frame rate / duration
-  int index = bs.GetBits(4);
-  m_duration = framedurations[index];
-
-  m_demuxer->SetVideoInformation(framerates[index][1], framerates[index][0], height, width, DAR, 1, 1);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGVideo.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_MPEGVideo.h
deleted file mode 100644 (file)
index 5a34af5..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_MPEGVIDEO_H
-#define XVDR_DEMUXER_MPEGVIDEO_H
-
-#include "demuxer_PES.h"
-#include "streaminfo.h"
-#include <map>
-
-class cParserMPEG2Video : public cParserPES
-{
-public:
-
-  cParserMPEG2Video(cTSDemuxer *demuxer);
-
-protected:
-
-  void ParsePayload(unsigned char *data, int length);
-
-  void SendPayload(unsigned char* payload, int length);
-
-private:
-
-  void ParseSequenceStart(unsigned char* data, int length);
-
-  cStreamInfo::FrameType ParsePicture(unsigned char* data, int length);
-
-  int64_t m_pdiff;
-
-  int64_t m_lastDTS;
-};
-
-#endif // XVDR_DEMUXER_MPEGVIDEO_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_PES.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_PES.c
deleted file mode 100644 (file)
index 49b1eef..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_PES.h"
-#include "vdr/remux.h"
-
-cParserPES::cParserPES(cTSDemuxer *demuxer, int buffersize) : cParser(demuxer, buffersize, 0), m_length(0) {
-  m_startup = true;
-}
-
-void cParserPES::Parse(unsigned char *data, int size, bool pusi) {
-
-  // packet completely assembled ?
-  if(!m_startup) {
-    int length = 0;
-    uint8_t* buffer = Get(length);
-
-    if(((length >= m_length && m_length != 0) || (m_length == 0 && pusi)) && buffer != NULL) {
-      // get buffer size for packets with undefined length
-      if(m_length == 0)
-        m_length = Available();
-
-      // parse payload
-      ParsePayload(buffer, m_length);
-
-      // send payload data
-      SendPayload(buffer, m_length);
-    }
-  }
-
-  // new packet
-  if(pusi) {
-    // get packet payload length
-    if(PesHasLength(data))
-      m_length = PesLength(data) - PesPayloadOffset(data);
-    else
-      m_length = 0;
-
-    // strip PES header
-    int offset = ParsePESHeader(data, size);
-    data += offset;
-    size -= offset;
-    m_startup = false;
-
-    // reset buffer
-    Clear();
-  }
-
-  // we start with the beginning of a packet
-  if(!m_startup)
-    Put(data, size);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_PES.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_PES.h
deleted file mode 100644 (file)
index ea6b8ff..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_PES_H
-#define XVDR_DEMUXER_PES_H
-
-#include "parser.h"
-
-class cParserPES : public cParser
-{
-public:
-
-  cParserPES(cTSDemuxer *demuxer, int buffersize = 4096);
-
-  void Parse(unsigned char *data, int size, bool pusi);
-
-protected:
-
-  int m_length;
-
-};
-
-#endif // XVDR_DEMUXER_PES_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_Subtitle.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_Subtitle.c
deleted file mode 100644 (file)
index 480f263..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "demuxer_Subtitle.h"
-
-cParserSubtitle::cParserSubtitle(cTSDemuxer *demuxer) : cParserPES(demuxer, 64 * 1024) {
-}
-
-void cParserSubtitle::SendPayload(unsigned char* payload, int length) {
-
-  if (length < 3 || payload[0] != 0x20 || payload[1] != 0x00)
-    return;
-
-  payload += 2;
-  length -= 3;
-
-  if (payload[length] != 0xff)
-    return;
-
-  cParser::SendPayload(payload, length);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_Subtitle.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/demuxer_Subtitle.h
deleted file mode 100644 (file)
index 611f388..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_SUBTITLE_H
-#define XVDR_DEMUXER_SUBTITLE_H
-
-#include "demuxer_PES.h"
-
-class cParserSubtitle : public cParserPES
-{
-public:
-
-  cParserSubtitle(cTSDemuxer *demuxer);
-
-protected:
-
-  void SendPayload(unsigned char* payload, int length);
-
-};
-
-
-#endif // XVDR_DEMUXER_SUBTITLE_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/parser.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/parser.c
deleted file mode 100644 (file)
index 2a4609e..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "parser.h"
-#include "config/config.h"
-#include "vdr/tools.h"
-#include "pes.h"
-
-cParser::cParser(cTSDemuxer *demuxer, int buffersize, int packetsize) : cRingBufferLinear(buffersize, packetsize), m_demuxer(demuxer), m_startup(true)
-{
-  m_samplerate = 0;
-  m_bitrate = 0;
-  m_channels = 0;
-  m_duration = 0;
-  m_headersize = 0;
-  m_frametype = cStreamInfo::ftUNKNOWN;
-
-  m_curPTS = DVD_NOPTS_VALUE;
-  m_curDTS = DVD_NOPTS_VALUE;
-}
-
-cParser::~cParser()
-{
-}
-
-int cParser::ParsePESHeader(uint8_t *buf, size_t len)
-{
-  // parse PES header
-  unsigned int hdr_len = PesPayloadOffset(buf);
-
-  // PTS / DTS
-  int64_t pts = PesHasPts(buf) ? PesGetPts(buf) : DVD_NOPTS_VALUE;
-  int64_t dts = PesHasDts(buf) ? PesGetDts(buf) : DVD_NOPTS_VALUE;
-
-  if (dts == DVD_NOPTS_VALUE)
-   dts = pts;
-
-  if(pts != 0) m_curDTS = dts;
-  if(dts != 0) m_curPTS = pts;
-
-  return hdr_len;
-}
-
-void cParser::SendPayload(unsigned char* payload, int length)
-{
-  sStreamPacket pkt;
-  pkt.data      = payload;
-  pkt.size      = length;
-  pkt.duration  = m_duration;
-  pkt.dts       = m_curDTS;
-  pkt.pts       = m_curPTS;
-  pkt.frametype = m_frametype;
-
-  m_demuxer->SendPacket(&pkt);
-}
-
-void cParser::PutData(unsigned char* data, int length, bool pusi)
-{
-  // get PTS / DTS on PES start
-  if (pusi)
-  {
-    int64_t pts = m_curPTS;
-    int64_t dts = m_curDTS;
-
-    int offset = ParsePESHeader(data, length);
-    data += offset;
-    length -= offset;
-
-    if(pts > m_curPTS) m_curPTS = pts;
-    if(dts > m_curDTS) m_curDTS = dts;
-
-    m_startup = false;
-  }
-
-  // put data
-  if(!m_startup && length > 0 && data != NULL)
-  {
-    int put = Put(data, length);
-    // reset buffer on overflow
-    if(put < length)
-    {
-      ERRORLOG("Parser buffer overflow - resetting");
-      Clear();
-    }
-  }
-}
-
-void cParser::Parse(unsigned char *data, int datasize, bool pusi)
-{
-  // get available data
-  int length = 0;
-  uint8_t* buffer = Get(length);
-
-  // do we have a sync ?
-  int framesize = 0;
-  if(length > m_headersize && buffer != NULL && CheckAlignmentHeader(buffer, framesize))
-  {
-    if(framesize > 0 && length >= framesize)
-    {
-      ParsePayload(buffer, framesize);
-      SendPayload(buffer, framesize);
-
-      m_curPTS = PtsAdd(m_curPTS, m_duration);
-      m_curDTS = PtsAdd(m_curDTS, m_duration);
-
-      Del(framesize);
-    }
-
-    PutData(data, datasize, pusi);
-    return;
-  }
-
-  // try to find sync
-  int offset = FindAlignmentOffset(buffer, length, 0, framesize);
-  if(offset != -1)
-  {
-    INFOLOG("sync found at offset %i (streamtype: %s / %i bytes in buffer / framesize: %i bytes)", offset, m_demuxer->TypeName(), Available(), framesize);
-    Del(offset);
-  }
-
-  PutData(data, datasize, pusi);
-}
-
-void cParser::ParsePayload(unsigned char* payload, int length)
-{
-}
-
-int cParser::FindAlignmentOffset(unsigned char* buffer, int buffersize, int o, int& framesize) {
-  framesize = 0;
-
-  // seek sync
-  while(o < (buffersize - m_headersize) && !CheckAlignmentHeader(buffer + o, framesize))
-    o++;
-
-  // not found
-  if(o >= buffersize - m_headersize || framesize <= 0)
-    return -1;
-
-  return o;
-}
-
-bool cParser::CheckAlignmentHeader(unsigned char* buffer, int& framesize) {
-  framesize = 0;
-  return true;
-}
-
-int cParser::FindStartCode(unsigned char* buffer, int buffersize, int offset, uint32_t startcode, uint32_t mask) {
-  uint32_t sc = 0xFFFFFFFF;
-
-  while(offset < buffersize) {
-
-    sc = (sc << 8) | buffer[offset++];
-
-    if(sc == startcode)
-      return offset - 4;
-  }
-
-  return -1;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/parser.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/parser.h
deleted file mode 100644 (file)
index bd450a7..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_DEMUXER_BASE_H
-#define XVDR_DEMUXER_BASE_H
-
-#include "demuxer.h"
-#include "vdr/ringbuffer.h"
-
-class cParser : public cRingBufferLinear
-{
-public:
-
-  cParser(cTSDemuxer *demuxer, int buffersize = 64 * 1024, int packetsize = 4096);
-
-  virtual ~cParser();
-
-  virtual void Parse(unsigned char *data, int size, bool pusi);
-
-protected:
-
-  int ParsePESHeader(uint8_t *buf, size_t len);
-
-  virtual void SendPayload(unsigned char* payload, int length);
-
-  virtual void ParsePayload(unsigned char* payload, int length);
-
-  virtual bool CheckAlignmentHeader(unsigned char* buffer, int& framesize);
-
-  int FindStartCode(unsigned char* buffer, int buffersize, int offset, uint32_t startcode, uint32_t mask = 0xFFFFFFFF);
-
-  cTSDemuxer* m_demuxer;
-
-  int64_t m_curPTS;
-  int64_t m_curDTS;
-
-  int m_samplerate;
-  int m_bitrate;
-  int m_channels;
-  int m_duration;
-  int m_headersize;
-  cStreamInfo::FrameType m_frametype;
-
-  bool m_startup;
-
-private:
-
-  void PutData(unsigned char *data, int size, bool pusi);
-
-  int FindAlignmentOffset(unsigned char* buffer, int buffersize, int startoffset, int& framesize);
-
-};
-
-#endif // XVDR_DEMUXER_BASE_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/pes.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/pes.h
deleted file mode 100644 (file)
index d69d22b..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_PES_H
-#define XVDR_PES_H
-
-#include "vdr/remux.h"
-
-// PES PIDs
-
-#define PRIVATE_STREAM1   0xBD
-#define PADDING_STREAM    0xBE
-#define PRIVATE_STREAM2   0xBF
-#define PRIVATE_STREAM3   0xFD
-#define AUDIO_STREAM_S    0xC0  /* 1100 0000 */
-#define AUDIO_STREAM_E    0xDF  /* 1101 1111 */
-#define VIDEO_STREAM_S    0xE0  /* 1110 0000 */
-#define VIDEO_STREAM_E    0xEF  /* 1110 1111 */
-
-#define AUDIO_STREAM_MASK 0x1F  /* 0001 1111 */
-#define VIDEO_STREAM_MASK 0x0F  /* 0000 1111 */
-#define AUDIO_STREAM      0xC0  /* 1100 0000 */
-#define VIDEO_STREAM      0xE0  /* 1110 0000 */
-
-#define ECM_STREAM        0xF0
-#define EMM_STREAM        0xF1
-#define DSM_CC_STREAM     0xF2
-#define ISO13522_STREAM   0xF3
-#define PROG_STREAM_DIR   0xFF
-
-// PES helper functions
-
-inline bool PesIsHeader(const uchar *p)
-{
-  return !(p)[0] && !(p)[1] && (p)[2] == 1;
-}
-
-#if VDRVERSNUM < 10732 // VDR VERSION < 1.7.32
-
-#define MAX33BIT  0x00000001FFFFFFFFLL // max. possible value with 33 bit
-
-inline bool PesHasDts(const uchar *p)
-{
-  return (p[7] & 0x40) && p[8] >= 10;
-}
-
-inline int64_t PesGetDts(const uchar *p)
-{
-  return ((((int64_t)p[14]) & 0x0E) << 29) |
-         (( (int64_t)p[15])         << 22) |
-         ((((int64_t)p[16]) & 0xFE) << 14) |
-         (( (int64_t)p[17])         <<  7) |
-         ((((int64_t)p[18]) & 0xFE) >>  1);
-}
-
-inline int64_t PtsAdd(int64_t Pts1, int64_t Pts2) { return (Pts1 + Pts2) & MAX33BIT; }
-
-#endif // VERSION 1.7.32
-
-#endif // XVDR_PES_H
-
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/streaminfo.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/streaminfo.c
deleted file mode 100644 (file)
index 91ab5dd..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "streaminfo.h"
-#include "config/config.h"
-#include <string.h>
-
-static const char* contentnames[] = {
-  "NONE", "VIDEO", "AUDIO", "SUBTITLE", "TELETEXT"
-};
-
-static const char* typenames[] = {
-  "NONE", "MPEG2AUDIO", "AC3", "EAC3", "AAC", "AAC", "MPEG2VIDEO", "H264", "DVBSUB", "TELETEXT"
-};
-
-
-cStreamInfo::cStreamInfo() {
-  Initialize();
-}
-
-cStreamInfo::cStreamInfo(int pid, Type type, const char* lang) {
-  Initialize();
-
-  m_pid = pid;
-  m_type = type;
-  m_parsed = false;
-
-  if(lang != NULL)
-    strncpy(m_language, lang, 4);
-
-  SetContent();
-}
-
-void cStreamInfo::Initialize() {
-  m_language[0]       = 0;
-  m_audiotype         = 0;
-  m_fpsscale          = 0;
-  m_fpsrate           = 0;
-  m_height            = 0;
-  m_width             = 0;
-  m_aspect            = 0.0f;
-  m_channels          = 0;
-  m_samplerate        = 0;
-  m_bitrate           = 0;
-  m_bitspersample     = 0;
-  m_blockalign        = 0;
-  m_subtitlingtype    = 0;
-  m_compositionpageid = 0;
-  m_ancillarypageid   = 0;
-  m_pid               = 0;
-  m_type              = stNONE;
-  m_content           = scNONE;
-  m_parsed            = false;
-}
-
-bool cStreamInfo::operator ==(const cStreamInfo& rhs) const {
-  // general comparison
-  if(!ismetaof(rhs)) {
-    return false;
-  }
-
-  switch(m_content) {
-    case scNONE:
-      return false;
-    case scAUDIO:
-      return
-        (strcmp(m_language, rhs.m_language) == 0) &&
-        (m_audiotype == rhs.m_audiotype) &&
-        (m_channels == rhs.m_channels) &&
-        (m_samplerate == rhs.m_samplerate);
-    case scVIDEO:
-      return
-        (m_width == rhs.m_width) &&
-        (m_height == rhs.m_height) &&
-        (m_aspect == rhs.m_aspect) &&
-        (m_fpsscale == rhs.m_fpsscale) &&
-        (m_fpsrate == rhs.m_fpsrate);
-    case scSUBTITLE:
-      return
-        (strcmp(m_language, rhs.m_language) == 0) &&
-        (m_subtitlingtype == rhs.m_subtitlingtype) &&
-        (m_compositionpageid == rhs.m_compositionpageid) &&
-        (m_ancillarypageid == rhs.m_ancillarypageid);
-    case scTELETEXT:
-      return true;
-  }
-  return false;
-}
-
-bool cStreamInfo::ismetaof(const cStreamInfo& rhs) const {
-  if(m_content != rhs.m_content) {
-    return false;
-  }
-
-  if(m_type != rhs.m_type && (m_type != stAC3 && rhs.m_type != stEAC3)) {
-    return false;
-  }
-
-  return (m_pid == rhs.m_pid);
-}
-
-bool cStreamInfo::operator !=(const cStreamInfo& rhs) const {
-  return !((*this) == rhs);
-}
-
-void cStreamInfo::SetContent() {
-  m_content = GetContent(m_type);
-}
-
-const cStreamInfo::Content cStreamInfo::GetContent(Type type) {
-  if(type == stMPEG2AUDIO || type == stAC3 || type == stEAC3  || type == stAAC || type == stLATM) {
-    return scAUDIO;
-  }
-  else if(type == stMPEG2VIDEO || type == stH264) {
-    return scVIDEO;
-  }
-  else if(type == stDVBSUB) {
-    return scSUBTITLE;
-  }
-  else if(type == stTELETEXT) {
-    return scTELETEXT;
-  }
-
-  return scNONE;
-}
-
-const char* cStreamInfo::TypeName() {
-  return TypeName(m_type);
-}
-
-const char* cStreamInfo::TypeName(const cStreamInfo::Type& type) {
-  return typenames[type];
-}
-
-const char* cStreamInfo::ContentName(const cStreamInfo::Content& content) {
-  return contentnames[content];
-}
-
-void cStreamInfo::info() const {
-  char buffer[100];
-  buffer[0] = 0;
-
-  int scale = m_fpsscale;
-  if(scale == 0) {
-    scale = 1;
-  }
-
-  if(m_content == scAUDIO) snprintf(buffer, sizeof(buffer), "%i Hz, %i channels, Lang: %s", m_samplerate, m_channels, m_language);
-  else if (m_content == scVIDEO) snprintf(buffer, sizeof(buffer), "%ix%i DAR: %.2f FPS: %.3f", m_width, m_height , m_aspect, (double)m_fpsrate / (double)scale);
-  else if (m_content == scSUBTITLE) snprintf(buffer, sizeof(buffer), "Lang: %s", m_language);
-  else if (m_content == scTELETEXT) snprintf(buffer, sizeof(buffer), "TXT");
-  else if (m_content == scNONE) snprintf(buffer, sizeof(buffer), "None");
-  else snprintf(buffer, sizeof(buffer), "Unknown");
-
-  INFOLOG("Stream: %s PID: %i %s (parsed: %s)", TypeName(m_type), m_pid, buffer, (m_parsed ? "yes" : "no"));
-}
-
-void cStreamInfo::SetSubtitlingDescriptor(unsigned char SubtitlingType, uint16_t CompositionPageId, uint16_t AncillaryPageId)
-{
-  m_subtitlingtype    = SubtitlingType;
-  m_compositionpageid = CompositionPageId;
-  m_ancillarypageid   = AncillaryPageId;
-  m_parsed            = true;
-}
-
-MsgPacket& operator<< (MsgPacket& lhs, const cStreamInfo& rhs) {
-  // write item sync
-  lhs.put_U32(0xFEFEFEFE);
-
-  // write general data
-  lhs.put_U8(rhs.m_type);
-  lhs.put_U8(rhs.m_content);
-  lhs.put_U16(rhs.m_pid);
-  lhs.put_U8(rhs.m_parsed);
-
-  const char* lang = (rhs.m_language[0] == 0 ? "XXX" : rhs.m_language);
-
-  // write specific data
-  switch(rhs.m_content) {
-    case cStreamInfo::scAUDIO:
-      lhs.put_String(lang);
-      lhs.put_U8(rhs.m_audiotype);
-      lhs.put_U8(rhs.m_channels);
-      lhs.put_U32(rhs.m_samplerate);
-      lhs.put_U32(rhs.m_bitrate);
-      lhs.put_U8(rhs.m_bitspersample);
-      lhs.put_U32(rhs.m_blockalign);
-      break;
-    case cStreamInfo::scVIDEO:
-      lhs.put_U32(rhs.m_fpsscale);
-      lhs.put_U32(rhs.m_fpsrate);
-      lhs.put_U16(rhs.m_height);
-      lhs.put_U16(rhs.m_width);
-      lhs.put_U64((unsigned long long)(rhs.m_aspect * 1000000000));
-      break;
-    case cStreamInfo::scSUBTITLE:
-      lhs.put_String(lang);
-      lhs.put_U8(rhs.m_subtitlingtype);
-      lhs.put_U16(rhs.m_compositionpageid);
-      lhs.put_U16(rhs.m_ancillarypageid);
-      break;
-    case cStreamInfo::scTELETEXT:
-      break;
-    default:
-      break;
-  }
-
-  return lhs;
-}
-
-MsgPacket& operator>> (MsgPacket& lhs, cStreamInfo& rhs) {
-  unsigned int check = 0;
-  check = lhs.get_U32();
-
-  if(check != 0xFEFEFEFE)
-    return lhs;
-
-  rhs.Initialize();
-
-  // read general data
-  rhs.m_type = static_cast<cStreamInfo::Type>(lhs.get_U8());
-  rhs.m_content = static_cast<cStreamInfo::Content>(lhs.get_U8());
-  rhs.m_pid = lhs.get_U16();
-  rhs.m_parsed = lhs.get_U8();
-
-  // read specific data
-  int at = 0;
-  std::string lang;
-
-  switch(rhs.m_content) {
-    case cStreamInfo::scAUDIO:
-      lang = lhs.get_String();
-      rhs.m_audiotype = lhs.get_U8();
-      rhs.m_channels = lhs.get_U8();
-      rhs.m_samplerate = lhs.get_U32();
-      rhs.m_bitrate = lhs.get_U32();
-      rhs.m_bitspersample = lhs.get_U8();
-      rhs.m_blockalign = lhs.get_U32();
-      break;
-    case cStreamInfo::scVIDEO:
-      rhs.m_fpsscale = lhs.get_U32();
-      rhs.m_fpsrate = lhs.get_U32();
-      rhs.m_height = lhs.get_U16();
-      rhs.m_width = lhs.get_U16();
-      rhs.m_aspect = (double)lhs.get_U64() / 1000000000.0;
-      break;
-    case cStreamInfo::scSUBTITLE:
-      lang = lhs.get_String();
-      rhs.m_subtitlingtype = lhs.get_U8();
-      rhs.m_compositionpageid = lhs.get_U16();
-      rhs.m_ancillarypageid = lhs.get_U16();
-      break;
-    case cStreamInfo::scTELETEXT:
-      break;
-    default:
-      break;
-  }
-
-  strncpy(rhs.m_language, lang.c_str(), sizeof(rhs.m_language));
-
-  return lhs;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/streaminfo.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/demuxer/streaminfo.h
deleted file mode 100644 (file)
index 77a1476..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_STREAMINFO_H
-#define XVDR_STREAMINFO_H
-
-#include <stdint.h>
-#include <fstream>
-#include <string>
-
-#include "net/msgpacket.h"
-
-class cStreamInfo {
-public:
-
-  enum Content
-  {
-    scNONE,
-    scVIDEO,
-    scAUDIO,
-    scSUBTITLE,
-    scTELETEXT,
-    scSTREAMINFO
-  };
-
-  enum Type
-  {
-    stNONE,
-    stMPEG2AUDIO,
-    stAC3,
-    stEAC3,
-    stAAC,
-    stLATM,
-    stMPEG2VIDEO,
-    stH264,
-    stDVBSUB,
-    stTELETEXT,
-  };
-
-  enum FrameType{
-    ftUNKNOWN,
-    ftIFRAME,
-    ftPFRAME,
-    ftBFRAME,
-    ftDFRAME
-  };
-
-public:
-
-  cStreamInfo();
-
-  cStreamInfo(int pid, Type type, const char* lang = NULL);
-
-  bool operator ==(const cStreamInfo& rhs) const;
-
-  bool ismetaof(const cStreamInfo& rhs) const;
-
-  bool operator !=(const cStreamInfo& rhs) const;
-
-  const int GetPID() const { return m_pid; }
-
-  void SetContent();
-
-  static const Content GetContent(Type type);
-
-  const Content GetContent() const { return m_content; }
-
-  const Type GetType() const { return m_type; }
-
-  const char* TypeName();
-
-  static const char* TypeName(const cStreamInfo::Type& type);
-
-  static const char* ContentName(const cStreamInfo::Content& content);
-
-  void info() const;
-
-  inline bool IsParsed() { return m_parsed; }
-
-  void SetSubtitlingDescriptor(unsigned char SubtitlingType, uint16_t CompositionPageId, uint16_t AncillaryPageId);
-
-protected:
-
-  Content m_content;   // stream content (e.g. scVIDEO)
-  Type m_type;         // stream type (e.g. stAC3)
-  int m_pid;           // transport stream pid
-
-  char m_language[4];  // ISO 639 3-letter language code (empty string if undefined)
-  uint8_t m_audiotype; // ISO 639 audio type
-
-  int m_fpsscale;      // scale of 1000 and a rate of 29970 will result in 29.97 fps
-  int m_fpsrate;
-  int m_height;        // height of the stream reported by the demuxer
-  int m_width;         // width of the stream reported by the demuxer
-  float m_aspect;      // display aspect of stream
-
-  int m_channels;      // number of audio channels (e.g. 6 for 5.1)
-  int m_samplerate;    // number of audio samples per second (e.g. 48000)
-  int m_bitrate;       // audio bitrate (e.g. 160000)
-  int m_bitspersample; // number of bits per audio sample (e.g. 16)
-  int m_blockalign;    // number of bytes per audio block
-
-  bool m_parsed;       // stream parsed flag (if all stream data is known)
-
-  unsigned char m_subtitlingtype; // subtitling type
-  uint16_t m_compositionpageid;   // composition page id
-  uint16_t m_ancillarypageid;     // ancillary page id
-
-  friend class cLivePatFilter;
-
-  friend MsgPacket& operator<< (MsgPacket& lhs, const cStreamInfo& rhs);
-  friend MsgPacket& operator>> (MsgPacket& lhs, cStreamInfo& rhs);
-
-private:
-
-  void Initialize();
-
-};
-
-MsgPacket& operator>> (MsgPacket& lhs, cStreamInfo& rhs);
-MsgPacket& operator<< (MsgPacket& lhs, const cStreamInfo& rhs);
-
-#endif // XVDR_STREAMINFO_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/channelcache.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/channelcache.c
deleted file mode 100644 (file)
index 79ed333..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include "config/config.h"
-#include "xvdr/xvdrchannels.h"
-#include "tools/hash.h"
-#include "channelcache.h"
-#include "livestreamer.h"
-
-cMutex cChannelCache::m_access;
-std::map<uint32_t, cChannelCache> cChannelCache::m_cache;
-
-cChannelCache::cChannelCache() : m_bChanged(false) {
-}
-
-void cChannelCache::AddStream(const cStreamInfo& s) {
-  if(s.GetPID() == 0 || s.GetType() == cStreamInfo::stNONE)
-    return;
-
-  // allow only one video stream
-  if(s.GetContent() == cStreamInfo::scVIDEO) {
-    for(iterator i = begin(); i != end(); i++) {
-      if(i->second.GetContent() == cStreamInfo::scVIDEO && i->second.GetPID() != s.GetPID()) {
-        return;
-      }
-    }
-  }
-
-  cStreamInfo old = (*this)[s.GetPID()];
-  (*this)[s.GetPID()] = s;
-
-  m_bChanged = (old != s);
-}
-
-bool cChannelCache::IsParsed() {
-  if(empty())
-    return false;
-
-  for (iterator i = begin(); i != end(); i++)
-    if(!i->second.IsParsed())
-      return false;
-
- return true;
-}
-
-
-void cChannelCache::CreateDemuxers(cLiveStreamer* streamer) {
-  cChannelCache old;
-
-  // remove old demuxers
-  for (std::list<cTSDemuxer*>::iterator i = streamer->m_Demuxers.begin(); i != streamer->m_Demuxers.end(); i++) {
-    old.AddStream(*(*i));
-    delete *i;
-  }
-
-  streamer->m_Demuxers.clear();
-  streamer->SetPids(NULL);
-
-  // create new stream demuxers
-  for (iterator i = begin(); i != end(); i++)
-  {
-    cStreamInfo& infonew = i->second;
-    cStreamInfo& infoold = old[i->first];
-
-    // reuse previous stream information
-    if(infonew.GetPID() == infoold.GetPID() && infonew.GetType() == infoold.GetType()) {
-      infonew = infoold;
-    }
-
-    cTSDemuxer* dmx = new cTSDemuxer(streamer, infonew);
-    if (dmx != NULL)
-    {
-      dmx->info();
-      streamer->m_Demuxers.push_back(dmx);
-      streamer->AddPid(infonew.GetPID());
-    }
-  }
-}
-
-bool cChannelCache::operator ==(const cChannelCache& c) const {
-  if (size() != c.size())
-    return false;
-
-  for(const_iterator i = begin(); i != end(); i++)
-    if(!c.contains(i->second))
-      return false;
-
-  return true;
-}
-
-bool cChannelCache::ismetaof(const cChannelCache& c) const {
-  if (size() != c.size())
-    return false;
-
-  for(const_iterator i = begin(); i != end(); i++) {
-    const_iterator it = c.find(i->second.GetPID());
-    if(it == c.end())
-      return false;
-
-    if(!i->second.ismetaof(it->second))
-      return false;
-  }
-
-  return true;
-}
-
-bool cChannelCache::contains(const cStreamInfo& s) const {
-  const_iterator i = find(s.GetPID());
-
-  if (i == end())
-    return false;
-
-  return (i->second == s);
-}
-
-void cChannelCache::AddToCache(uint32_t channeluid, const cChannelCache& channel) {
-  Lock();
-
-  if(channeluid != 0)
-    m_cache[channeluid] = channel;
-
-  Unlock();
-}
-
-cChannelCache cChannelCache::ItemFromChannel(const cChannel* channel) {
-  cChannelCache item;
-
-  // add video stream
-  int vpid = channel->Vpid();
-  int vtype = channel->Vtype();
-
-  item.AddStream(cStreamInfo(vpid, vtype == 0x02 ? cStreamInfo::stMPEG2VIDEO : vtype == 0x1b ? cStreamInfo::stH264 : cStreamInfo::stNONE));
-
-  // add AC3 streams
-  for(int i=0; channel->Dpid(i) != 0; i++) {
-    item.AddStream(cStreamInfo(channel->Dpid(i), cStreamInfo::stAC3, channel->Dlang(i)));
-  }
-
-  // add audio streams
-  for(int i=0; channel->Apid(i) != 0; i++) {
-    int atype = channel->Atype(i);
-    item.AddStream(cStreamInfo(channel->Apid(i), 
-      atype == 0x04 ? cStreamInfo::stMPEG2AUDIO :
-      atype == 0x03 ? cStreamInfo::stMPEG2AUDIO :
-      atype == 0x0f ? cStreamInfo::stAAC :
-      atype == 0x11 ? cStreamInfo::stLATM :
-      cStreamInfo::stNONE,
-      channel->Alang(i)));
-  }
-
-  // add teletext stream
-  if(channel->Tpid() != 0) {
-    item.AddStream(cStreamInfo(channel->Tpid(), cStreamInfo::stTELETEXT));
-  }
-
-  // add subtitle streams
-  for(int i=0; channel->Spid(i) != 0; i++) {
-   cStreamInfo stream(channel->Spid(i), cStreamInfo::stDVBSUB, channel->Slang(i));
-
-   stream.SetSubtitlingDescriptor(
-     channel->SubtitlingType(i),
-     channel->CompositionPageId(i),
-     channel->AncillaryPageId(i));
-
-   item.AddStream(stream);
-  }
-
-  return item;
-}
-
-
-void cChannelCache::AddToCache(const cChannel* channel) {
-  cMutexLock lock(&m_access);
-
-  uint32_t uid = CreateChannelUID(channel);
-
-  // ignore invalid channels
-  if(uid == 0)
-    return;
-
-  std::map<uint32_t, cChannelCache>::iterator i = m_cache.find(uid);
-
-  // valid channel already in cache
-  if(i != m_cache.end()) {
-    if(i->second.size() != 0) {
-      return;
-    }
-  }
-
-  // create new cache item
-  cChannelCache item = ItemFromChannel(channel);
-
-  AddToCache(uid, item);
-}
-
-cChannelCache cChannelCache::GetFromCache(uint32_t channeluid) {
-  static cChannelCache empty;
-
-  Lock();
-
-  std::map<uint32_t, cChannelCache>::iterator i = m_cache.find(channeluid);
-  if(i == m_cache.end()) {
-    Unlock();
-    return empty;
-  }
-
-  cChannelCache result = m_cache[channeluid];
-  Unlock();
-
-  return result;
-}
-
-void cChannelCache::SaveChannelCacheData() {
-  cString filename = AddDirectory(XVDRServerConfig.CacheDirectory, CHANNEL_CACHE_FILE".bak");
-
-  int fd = open(*filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
-  if(fd == -1) {
-    ERRORLOG("Unable to open channel cache data file (%s) !", (const char*)filename);
-    return;
-  }
-
-  Lock();
-
-  MsgPacket* p = new MsgPacket;
-  p->put_String("V2");
-  p->put_U32(m_cache.size());
-
-  for(std::map<uint32_t, cChannelCache>::iterator i = m_cache.begin(); i != m_cache.end(); i++) {
-    p->put_U32(i->first);
-    *p << i->second;
-  }
-
-  Unlock();
-
-  p->write(fd, 1000);
-  delete p;
-  close(fd);
-
-  cString filenamenew = AddDirectory(XVDRServerConfig.CacheDirectory, CHANNEL_CACHE_FILE);
-
-  rename(filename, filenamenew);
-}
-
-void cChannelCache::gc() {
-  cMutexLock lock(&m_access);
-  std::map<uint32_t, cChannelCache> m_newcache;
-
-  INFOLOG("channel cache garbage collection ...");
-  INFOLOG("before: %zu channels in cache", m_cache.size());
-
-  // remove orphaned cache entries
-  XVDRChannels.Lock(false);
-  cChannels *channels = XVDRChannels.Get();
-
-  for (cChannel *channel = channels->First(); channel; channel = channels->Next(channel)) {
-    uint32_t uid = CreateChannelUID(channel);
-
-    // ignore invalid channels
-    if(uid == 0)
-      continue;
-
-    // lookup channel in current cache
-    std::map<uint32_t, cChannelCache>::iterator i = m_cache.find(uid);
-    if(i == m_cache.end())
-      continue;
-
-    // add to new cache if it exists
-    m_newcache[uid] = i->second;
-  }
-  XVDRChannels.Unlock();
-
-  // regenerate cache
-  m_cache.clear();
-  std::map<uint32_t, cChannelCache>::iterator i;
-
-  for(i = m_newcache.begin(); i != m_newcache.end(); i++) {
-    m_cache[i->first] = i->second;
-  }
-
-  INFOLOG("after: %zu channels in cache", m_cache.size());
-}
-
-void cChannelCache::LoadChannelCacheData() {
-  m_cache.clear();
-
-  // load cache
-  cString filename = AddDirectory(XVDRServerConfig.CacheDirectory, CHANNEL_CACHE_FILE);
-
-  int fd = open(*filename, O_RDONLY);
-  if(fd == -1) {
-    ERRORLOG("Unable to open channel cache data file (%s) !", (const char*)filename);
-    return;
-  }
-
-  MsgPacket* p = MsgPacket::read(fd, 1000);
-  if(p == NULL) {
-    ERRORLOG("Unable to load channel cache data file (%s) !", (const char*)filename);
-    close(fd);
-    return;
-  }
-
-  std::string version = p->get_String();
-  if(version != "V2") {
-    INFOLOG("old channel cache detected - skipped");
-    return;
-  }
-
-  uint32_t c = p->get_U32();
-
-  // sanity check
-  if(c > 10000) {
-    delete p;
-    close(fd);
-    return;
-  }
-
-  INFOLOG("Loading %u channels from cache", c);
-
-  for(uint32_t i = 0; i < c; i++) {
-    uint32_t uid = p->get_U32();
-
-    cChannelCache cache;
-    *p >> cache;
-
-    if(uid != 0)
-      m_cache[uid] = cache;
-  }
-
-  delete p;
-  close(fd);
-
-  gc();
-}
-
-MsgPacket& operator<< (MsgPacket& lhs, const cChannelCache& rhs) {
-  lhs.put_U32((int)rhs.size());
-
-  for(cChannelCache::const_iterator i = rhs.begin(); i != rhs.end(); i++) {
-    lhs << i->second;
-  }
-
-  return lhs;
-}
-
-MsgPacket& operator>> (MsgPacket& lhs, cChannelCache& rhs) {
-  rhs.clear();
-  uint32_t c = lhs.get_U32();
-
-  for(uint32_t i = 0; i < c; i++) {
-    cStreamInfo s;
-    lhs >> s;
-    rhs.AddStream(s);
-  }
-  return lhs;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/channelcache.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/channelcache.h
deleted file mode 100644 (file)
index c5d7edf..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_CHANNELCACHEITEM_H
-#define XVDR_CHANNELCACHEITEM_H
-
-#include <vdr/thread.h>
-#include <vdr/channels.h>
-
-#include "demuxer/demuxer.h"
-
-#include <list>
-#include <map>
-#include <fstream>
-#include <string.h>
-
-class cLiveStreamer;
-
-class cChannelCache : public std::map<int, cStreamInfo> {
-public:
-
-  cChannelCache();
-
-  void AddStream(const cStreamInfo& s);
-
-  void CreateDemuxers(cLiveStreamer* streamer);
-
-  bool operator ==(const cChannelCache& c) const;
-
-  bool ismetaof(const cChannelCache& c) const;
-
-  bool contains(const cStreamInfo& s) const;
-
-  bool changed() const { return m_bChanged; }
-
-  bool IsParsed();
-
-  static void LoadChannelCacheData();
-
-  static void SaveChannelCacheData();
-
-  static void AddToCache(uint32_t channeluid, const cChannelCache& channel);
-
-  static void AddToCache(const cChannel* channel);
-
-  static cChannelCache GetFromCache(uint32_t channeluid);
-
-  static cChannelCache ItemFromChannel(const cChannel* channel);
-
-  static void gc();
-
-private:
-
-  static void Lock() { m_access.Lock(); }
-
-  static void Unlock() { m_access.Unlock(); }
-
-  static std::map<uint32_t, cChannelCache> m_cache;
-
-  static cMutex m_access;
-
-  bool m_bChanged;
-};
-
-MsgPacket& operator<< (MsgPacket& lhs, const cChannelCache& rhs);
-MsgPacket& operator>> (MsgPacket& lhs, cChannelCache& rhs);
-
-#endif // XVDR_CHANNELCACHEITEM_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livepatfilter.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livepatfilter.c
deleted file mode 100644 (file)
index bc5049c..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <unistd.h>
-
-#include "vdr/config.h"
-#include "config/config.h"
-#include "tools/hash.h"
-#include "xvdr/xvdrchannels.h"
-
-#include "livepatfilter.h"
-#include "livestreamer.h"
-
-static const char * const psStreamTypes[] = {
-        "UNKNOWN",
-        "ISO/IEC 11172 Video",
-        "ISO/IEC 13818-2 Video",
-        "ISO/IEC 11172 Audio",
-        "ISO/IEC 13818-3 Audio",
-        "ISO/IEC 13818-1 Privete sections",
-        "ISO/IEC 13818-1 Private PES data",
-        "ISO/IEC 13512 MHEG",
-        "ISO/IEC 13818-1 Annex A DSM CC",
-        "0x09",
-        "ISO/IEC 13818-6 Multiprotocol encapsulation",
-        "ISO/IEC 13818-6 DSM-CC U-N Messages",
-        "ISO/IEC 13818-6 Stream Descriptors",
-        "ISO/IEC 13818-6 Sections (any type, including private data)",
-        "ISO/IEC 13818-1 auxiliary",
-        "ISO/IEC 13818-7 Audio with ADTS transport sytax",
-        "ISO/IEC 14496-2 Visual (MPEG-4)",
-        "ISO/IEC 14496-3 Audio with LATM transport syntax",
-        "0x12", "0x13", "0x14", "0x15", "0x16", "0x17", "0x18", "0x19", "0x1a",
-        "ISO/IEC 14496-10 Video (MPEG-4 part 10/AVC, aka H.264)",
-        "",
-};
-
-cLivePatFilter::cLivePatFilter(cLiveStreamer *Streamer)
-{
-  DEBUGLOG("cStreamdevPatFilter(\"%s\")", Channel->Name());
-  m_Channel     = NULL;
-  m_Streamer    = Streamer;
-  m_pmtPid      = 0;
-  m_pmtSid      = 0;
-  m_pmtVersion  = -1;
-  Set(0x00, 0x00);  // PAT
-
-}
-
-void cLivePatFilter::SetChannel(const cChannel *Channel) {
-  cMutexLock lock(&m_Mutex);
-  m_Channel = Channel;
-}
-
-void cLivePatFilter::GetLanguage(SI::PMT::Stream& stream, char *langs, uint8_t& type)
-{
-  SI::Descriptor *d;
-  for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); )
-  {
-    switch (d->getDescriptorTag())
-    {
-      case SI::ISO639LanguageDescriptorTag:
-      {
-        SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
-        strn0cpy(langs, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1);
-        SI::Loop::Iterator it;
-        SI::ISO639LanguageDescriptor::Language first;
-        type = 0;
-        if (ld->languageLoop.getNext(first, it)) {
-          type = first.getAudioType();
-        }
-        break;
-      }
-      default: ;
-    }
-    delete d;
-  }
-}
-
-bool cLivePatFilter::GetStreamInfo(SI::PMT::Stream& stream, cStreamInfo& info)
-{
-  SI::Descriptor *d;
-
-  info.m_pid = stream.getPid();
-
-  if (!info.m_pid)
-    return false;
-
-  switch (stream.getStreamType())
-  {
-    case 0x01: // ISO/IEC 11172 Video
-    case 0x02: // ISO/IEC 13818-2 Video
-    case 0x80: // ATSC Video MPEG2 (ATSC DigiCipher QAM)
-      DEBUGLOG("PMT scanner adding PID %d (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()]);
-      info.m_type = cStreamInfo::stMPEG2VIDEO;
-      return true;
-
-    case 0x03: // ISO/IEC 11172 Audio
-    case 0x04: // ISO/IEC 13818-3 Audio
-      info.m_type = cStreamInfo::stMPEG2AUDIO;
-      GetLanguage(stream, info.m_language, info.m_audiotype);
-      DEBUGLOG("PMT scanner adding PID %d (%s) (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], info.m_language);
-      return true;
-
-    case 0x0f: // ISO/IEC 13818-7 Audio with ADTS transport syntax
-      info.m_type = cStreamInfo::stAAC;
-      GetLanguage(stream, info.m_language, info.m_audiotype);
-      DEBUGLOG("PMT scanner: adding PID %d (%s) %s (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "AAC", info.m_language);
-      return true;
-
-    case 0x11: // ISO/IEC 14496-3 Audio with LATM transport syntax
-      info.m_type = cStreamInfo::stLATM;
-      GetLanguage(stream, info.m_language, info.m_audiotype);
-      DEBUGLOG("PMT scanner: adding PID %d (%s) %s (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "LATM", info.m_language);
-      return true;
-
-#if 1
-    case 0x07: // ISO/IEC 13512 MHEG
-    case 0x08: // ISO/IEC 13818-1 Annex A  DSM CC
-    case 0x0a: // ISO/IEC 13818-6 Multiprotocol encapsulation
-    case 0x0b: // ISO/IEC 13818-6 DSM-CC U-N Messages
-    case 0x0c: // ISO/IEC 13818-6 Stream Descriptors
-    case 0x0d: // ISO/IEC 13818-6 Sections (any type, including private data)
-    case 0x0e: // ISO/IEC 13818-1 auxiliary
-#endif
-    case 0x10: // ISO/IEC 14496-2 Visual (MPEG-4)
-      DEBUGLOG("PMT scanner: Not adding PID %d (%s) (skipped)\n", stream.getPid(), psStreamTypes[stream.getStreamType()]);
-      break;
-
-    case 0x1b: // ISO/IEC 14496-10 Video (MPEG-4 part 10/AVC, aka H.264)
-      DEBUGLOG("PMT scanner adding PID %d (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()]);
-      info.m_type = cStreamInfo::stH264;
-      return true;
-
-    case 0x05: // ISO/IEC 13818-1 private sections
-    case 0x06: // ISO/IEC 13818-1 PES packets containing private data
-      for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); )
-      {
-        switch (d->getDescriptorTag())
-        {
-          case SI::AC3DescriptorTag:
-            info.m_type = cStreamInfo::stAC3;
-            GetLanguage(stream, info.m_language, info.m_audiotype);
-            DEBUGLOG("PMT scanner: adding PID %d (%s) %s (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "AC3", info.m_language);
-            delete d;
-            return true;
-
-          case SI::EnhancedAC3DescriptorTag:
-            info.m_type = cStreamInfo::stEAC3;
-            GetLanguage(stream, info.m_language, info.m_audiotype);
-            DEBUGLOG("PMT scanner: adding PID %d (%s) %s (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "EAC3", info.m_language);
-            delete d;
-            return true;
-
-          /*case SI::DTSDescriptorTag:
-            info.m_type = cStreamInfo::stDTS;
-            GetLanguage(stream, info.m_language, info.m_audiotype);
-            DEBUGLOG("PMT scanner: adding PID %d (%s) %s (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "DTS", info.m_language);
-            delete d;
-            return true;*/
-
-          case SI::AACDescriptorTag:
-            info.m_type = cStreamInfo::stAAC;
-            GetLanguage(stream, info.m_language, info.m_audiotype);
-            DEBUGLOG("PMT scanner: adding PID %d (%s) %s (%s)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "AAC", info.m_language);
-            delete d;
-            return true;
-
-          case SI::TeletextDescriptorTag:
-            info.m_type = cStreamInfo::stTELETEXT;
-            DEBUGLOG("PMT scanner: adding PID %d (%s) %s\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "Teletext");
-            delete d;
-            return true;
-
-          case SI::SubtitlingDescriptorTag:
-          {
-            info.m_type = cStreamInfo::stDVBSUB;
-            info.m_subtitlingtype = 0;
-            info.m_compositionpageid = 0;
-            info.m_ancillarypageid   = 0;
-            SI::SubtitlingDescriptor *sd = (SI::SubtitlingDescriptor *)d;
-            SI::SubtitlingDescriptor::Subtitling sub;
-            char *s = info.m_language;
-            int n = 0;
-            for (SI::Loop::Iterator it; sd->subtitlingLoop.getNext(sub, it); )
-            {
-              if (sub.languageCode[0])
-              {
-                info.m_subtitlingtype = sub.getSubtitlingType();
-                info.m_compositionpageid = sub.getCompositionPageId();
-                info.m_ancillarypageid = sub.getAncillaryPageId();
-                if (n > 0)
-                  *s++ = '+';
-                strn0cpy(s, I18nNormalizeLanguageCode(sub.languageCode), MAXLANGCODE1);
-                s += strlen(s);
-                if (n++ > 1)
-                  break;
-              }
-              info.m_parsed = true;
-            }
-            delete d;
-            DEBUGLOG("PMT scanner: adding PID %d (%s) %s\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "DVBSUB");
-            return true;
-
-          }
-          default:
-            DEBUGLOG("PMT scanner: NOT adding PID %d (%s) %s (%i)\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "UNKNOWN", d->getDescriptorTag());
-            break;
-        }
-        delete d;
-      }
-      break;
-
-    default:
-#if VDRVERSNUM >= 10728
-      // ATSC A/53 AUDIO
-      if (stream.getStreamType() == 0x81 && Setup.StandardCompliance == STANDARD_ANSISCTE) {
-        info.m_type = cStreamInfo::stAC3;
-        GetLanguage(stream, info.m_language, info.m_audiotype);
-        DEBUGLOG("PMT scanner: adding PID %d %s (%s)\n", stream.getPid(), "AC3", info.m_language);
-        return true;
-      }
-      else
-#endif
-      /* This following section handles all the cases where the audio track
-       * info is stored in PMT user info with stream id >= 0x81
-       * we check the registration format identifier to see if it
-       * holds "AC-3"
-       */
-      if (stream.getStreamType() >= 0x81) {
-        bool found = false;
-        for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); )
-        {
-          switch (d->getDescriptorTag())
-          {
-            case SI::RegistrationDescriptorTag:
-            /* unfortunately libsi does not implement RegistrationDescriptor */
-            if (d->getLength() >= 4)
-            {
-              found = true;
-              SI::CharArray rawdata = d->getData();
-              if (/*rawdata[0] == 5 && rawdata[1] >= 4 && */
-                  rawdata[2] == 'A' && rawdata[3] == 'C' &&
-                  rawdata[4] == '-' && rawdata[5] == '3')
-              {
-                DEBUGLOG("PMT scanner: Adding pid %d (type 0x%x) RegDesc len %d (%c%c%c%c)\n",
-                            stream.getPid(), stream.getStreamType(), d->getLength(), rawdata[2], rawdata[3], rawdata[4], rawdata[5]);
-                info.m_type = cStreamInfo::stAC3;
-                delete d;
-                return true;
-              }
-            }
-            break;
-            default:
-            break;
-          }
-          delete d;
-        }
-        if (!found)
-        {
-          DEBUGLOG("NOT adding PID %d (type 0x%x) RegDesc not found -> UNKNOWN\n", stream.getPid(), stream.getStreamType());
-        }
-      }
-      DEBUGLOG("PMT scanner: NOT adding PID %d (%s) %s\n", stream.getPid(), psStreamTypes[stream.getStreamType()<0x1c?stream.getStreamType():0], "UNKNOWN");
-      break;
-  }
-
-  info.m_type = cStreamInfo::stNONE;
-  return false;
-}
-
-void cLivePatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length)
-{
-  {
-    cMutexLock lock(&m_Mutex);
-    if(m_Channel == NULL) {
-      return;
-    }
-  }
-
-  if (Pid == 0x00 && Tid == 0x00)
-  {
-    SI::PAT pat(Data, false);
-    if (!pat.CheckCRCAndParse())
-      return;
-
-    SI::PAT::Association assoc;
-    for (SI::Loop::Iterator it; pat.associationLoop.getNext(assoc, it); )
-    {
-      if (!assoc.isNITPid())
-      {
-        cMutexLock lock(&m_Mutex);
-         XVDRChannels.Lock(false);
-        const cChannel *Channel =  XVDRChannels.Get()->GetByServiceID(Source(), Transponder(), assoc.getServiceId());
-
-        if (Channel && (Channel == m_Channel))
-        {
-          int prevPmtPid = m_pmtPid;
-          if (0 != (m_pmtPid = assoc.getPid()))
-          {
-            m_pmtSid = assoc.getServiceId();
-            if (m_pmtPid != prevPmtPid)
-            {
-              Add(m_pmtPid, 0x02);
-              m_pmtVersion = -1;
-            }
-            XVDRChannels.Unlock();
-            return;
-          }
-        }
-
-        XVDRChannels.Unlock();
-      }
-    }
-  }
-  else if (Pid == m_pmtPid && Tid == SI::TableIdPMT && Source() && Transponder())
-  {
-    SI::PMT pmt(Data, false);
-    if (!pmt.CheckCRCAndParse() || pmt.getServiceId() != m_pmtSid)
-      return;
-
-    if (m_pmtVersion != -1)
-    {
-      if (m_pmtVersion != pmt.getVersionNumber())
-      {
-        cFilter::Del(m_pmtPid, 0x02);
-        m_pmtPid = 0; // this triggers PAT scan
-      }
-      return;
-    }
-    m_pmtVersion = pmt.getVersionNumber();
-
-    // get cached channel data
-    if(m_ChannelCache.size() == 0) {
-      cMutexLock lock(&m_Mutex);
-      m_ChannelCache = cChannelCache::GetFromCache(CreateChannelUID(m_Channel));
-    }
-
-    // get all streams and check if there are new (currently unknown) streams
-    SI::PMT::Stream stream;
-    cChannelCache cache;
-    for (SI::Loop::Iterator it; pmt.streamLoop.getNext(stream, it); )
-    {
-      cStreamInfo info;
-      if (GetStreamInfo(stream, info) && cache.size() < MAXRECEIVEPIDS) {
-        info.SetContent();
-        cache.AddStream(info);
-      }
-    }
-
-    // no new streams found -> exit
-    if (m_ChannelCache.ismetaof(cache))
-      return;
-
-    m_Streamer->m_FilterMutex.Lock();
-
-    // do not restart the receiver (detach / attach) for VDR >= 2.1.6
-    // VDR's ChannelChange notification will trigger the detach / attach procedure
-    // and also recreate the demuxers
-
-#if VDRVERSNUM < 20106 // VDR VERSION < 2.1.6
-    if(m_Streamer->IsAttached()) {
-      m_Streamer->Detach();
-    }
-
-    // create new stream demuxers
-    cache.CreateDemuxers(m_Streamer);
-#endif
-
-    m_Streamer->m_ready = false;
-    INFOLOG("Currently unknown new streams found, requesting stream change");
-
-    m_Streamer->RequestStreamChange();
-
-    // write changed data back to the cache
-    m_ChannelCache = cache;
-    {
-      cMutexLock lock(&m_Mutex);
-      cChannelCache::AddToCache(CreateChannelUID(m_Channel), m_ChannelCache);
-    }
-
-#if VDRVERSNUM < 20106 // VDR VERSION < 2.1.6
-    m_Streamer->Attach();
-#endif
-
-    m_Streamer->m_FilterMutex.Unlock();
-  }
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livepatfilter.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livepatfilter.h
deleted file mode 100644 (file)
index 97f9ec1..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_LIVEPATFILTER_H
-#define XVDR_LIVEPATFILTER_H
-
-#include <vdr/filter.h>
-#include <libsi/section.h>
-#include <libsi/descriptor.h>
-
-#include "demuxer/demuxer.h"
-#include "channelcache.h"
-
-class cLiveStreamer;
-
-class cLivePatFilter : public cFilter
-{
-private:
-  int             m_pmtPid;
-  int             m_pmtSid;
-  int             m_pmtVersion;
-  const cChannel *m_Channel;
-  cLiveStreamer  *m_Streamer;
-  cChannelCache   m_ChannelCache;
-  cMutex          m_Mutex;
-
-  bool GetStreamInfo(SI::PMT::Stream& stream, cStreamInfo& info);
-  void GetLanguage(SI::PMT::Stream& stream, char *langs, uint8_t& type);
-  virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
-
-public:
-  cLivePatFilter(cLiveStreamer *Streamer);
-  void SetChannel(const cChannel *Channel);
-};
-
-#endif // XVDR_LIVEPATFILTER_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livequeue.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livequeue.c
deleted file mode 100644 (file)
index bf27125..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <sys/types.h>
-#include <dirent.h>
-#include <unistd.h>
-
-#include "config/config.h"
-#include "net/msgpacket.h"
-#include "livequeue.h"
-
-cString cLiveQueue::TimeShiftDir = "/video";
-uint64_t cLiveQueue::BufferSize = 1024*1024*1024;
-
-cLiveQueue::cLiveQueue(int sock) : m_socket(sock), m_readfd(-1), m_writefd(-1), m_queuesize(400)
-{
-  m_pause = false;
-}
-
-cLiveQueue::~cLiveQueue()
-{
-  DEBUGLOG("Deleting LiveQueue");
-  m_cond.Signal();
-  Cancel(3);
-  Cleanup();
-  CloseTimeShift();
-}
-
-void cLiveQueue::Cleanup()
-{
-  cMutexLock lock(&m_lock);
-  while(!empty())
-  {
-    delete front();
-    pop();
-  }
-}
-
-void cLiveQueue::Request()
-{
-  cMutexLock lock(&m_lock);
-
-  // read packet from storage
-  MsgPacket* p = MsgPacket::read(m_readfd, 1000);
-
-  // check for buffer overrun
-  if(p == NULL)
-  {
-    // ring-buffer overrun ?
-    off_t pos = lseek(m_readfd, 0, SEEK_CUR);
-    if(pos < (off_t)BufferSize)
-      return;
-
-    lseek(m_readfd, 0, SEEK_SET);
-    p = MsgPacket::read(m_readfd, 1000);
-  }
-
-  // no packet
-  if(p == NULL)
-    return;
-
-  // put packet into queue
-  push(p);
-
-  m_cond.Signal();
-}
-
-bool cLiveQueue::IsPaused()
-{
-  cMutexLock lock(&m_lock);
-  return m_pause;
-}
-
-bool cLiveQueue::TimeShiftMode()
-{
-  cMutexLock lock(&m_lock);
-  return (m_pause || (!m_pause && m_writefd != -1));
-}
-
-bool cLiveQueue::Add(MsgPacket* p, cStreamInfo::Content content)
-{
-  cMutexLock lock(&m_lock);
-
-  // in timeshift mode ?
-  if(m_pause || (!m_pause && m_writefd != -1))
-  {
-    // write packet
-    if(!p->write(m_writefd, 1000))
-    {
-      ERRORLOG("Unable to write packet into timeshift ringbuffer !");
-      delete p;
-      return false;
-    }
-
-    // ring-buffer overrun ?
-    off_t length = lseek(m_writefd, 0, SEEK_CUR);
-    if(length >= (off_t)BufferSize)
-    {
-      // truncate to current position
-      if(ftruncate(m_writefd, length) == 0)
-        lseek(m_writefd, 0, SEEK_SET);
-    }
-    delete p;
-    return true;
-  }
-
-  // discard teletext / signalinfo packets if the buffer fills up, ...
-  if(size() > (m_queuesize / 2)) {
-    if(content == cStreamInfo::scTELETEXT || content == cStreamInfo::scNONE) {
-      delete p;
-      m_cond.Signal();
-      return true;
-    }
-  }
-
-  // add packet to queue
-  push(p);
-
-  // queue too long ?
-  while (size() > m_queuesize) {
-    p = front();
-    pop();
-  }
-
-  m_cond.Signal();
-
-  return true;
-}
-
-void cLiveQueue::Action()
-{
-  INFOLOG("LiveQueue started");
-
-  // wait for first packet
-  m_cond.Wait(0);
-
-  while(Running())
-  {
-    MsgPacket* p = NULL;
-
-    m_lock.Lock();
-
-    // just wait if we are paused
-    if(m_pause)
-    {
-      m_lock.Unlock();
-      m_cond.Wait(0);
-      m_lock.Lock();
-    }
-
-    // check packet queue
-    if(size() > 0)
-    {
-      p = front();
-      pop();
-    }
-
-    m_lock.Unlock();
-
-    // no packets to send
-    if(p == NULL)
-    {
-      m_cond.Wait(3000);
-      continue;
-    }
-    // send packet
-    else {
-      p->write(m_socket, 500);
-      delete p;
-    }
-
-  }
-
-  INFOLOG("LiveQueue stopped");
-}
-
-void cLiveQueue::CloseTimeShift()
-{
-  close(m_readfd);
-  m_readfd = -1;
-  close(m_writefd);
-  m_writefd = -1;
-
-  if(*m_storage) {
-    unlink(m_storage);
-  }
-}
-
-bool cLiveQueue::Pause(bool on)
-{
-  cMutexLock lock(&m_lock);
-
-  // deactivate timeshift
-  if(!on)
-  {
-    m_pause = false;
-    m_cond.Signal();
-    return true;
-  }
-
-  if(m_pause)
-    return false;
-
-  // create offline storage
-  if(m_readfd == -1)
-  {
-    m_storage = cString::sprintf("%s/xvdr-ringbuffer-%05i.data", (const char*)TimeShiftDir, m_socket);
-    DEBUGLOG("FILE: %s", (const char*)m_storage);
-
-    m_readfd = open(m_storage, O_CREAT | O_RDONLY, 0644);
-    m_writefd = open(m_storage, O_CREAT | O_WRONLY, 0644);
-    lseek(m_readfd, 0, SEEK_SET);
-    lseek(m_writefd, 0, SEEK_SET);
-
-    if(m_readfd == -1) {
-      ERRORLOG("Failed to create timeshift ringbuffer !");
-    }
-  }
-
-  m_pause = true;
-
-  // push all packets from the queue to the offline storage
-  DEBUGLOG("Writing %i packets into timeshift buffer", size());
-
-  while(!empty())
-  {
-    MsgPacket* p = front();
-
-    p->write(m_writefd, 1000);
-    delete p;
-
-    pop();
-  }
-
-  return true;
-}
-
-void cLiveQueue::SetTimeShiftDir(const cString& dir)
-{
-  TimeShiftDir = dir;
-  DEBUGLOG("TIMESHIFTDIR: %s", (const char*)TimeShiftDir);
-}
-
-void cLiveQueue::SetBufferSize(uint64_t s)
-{
-  BufferSize = s;
-  DEBUGLOG("BUFFSERIZE: %llu bytes", BufferSize);
-}
-
-void cLiveQueue::RemoveTimeShiftFiles()
-{
-  DIR* dir = opendir((const char*)TimeShiftDir);
-
-  if(dir == NULL)
-    return;
-
-  struct dirent* entry = NULL;
-
-  while((entry = readdir(dir)) != NULL)
-  {
-    if(strncmp(entry->d_name, "xvdr-ringbuffer-", 16) == 0)
-    {
-      INFOLOG("Removing old time-shift storage: %s", entry->d_name);
-      unlink(AddDirectory(TimeShiftDir, entry->d_name));
-    }
-  }
-
-  closedir(dir);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livequeue.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livequeue.h
deleted file mode 100644 (file)
index 804d845..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2012 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_LIVEQUEUE_H
-#define XVDR_LIVEQUEUE_H
-
-#include <queue>
-#include <vdr/thread.h>
-#include "demuxer/streaminfo.h"
-
-class MsgPacket;
-
-class cLiveQueue : public cThread, protected std::queue<MsgPacket*>
-{
-public:
-
-  cLiveQueue(int s);
-
-  virtual ~cLiveQueue();
-
-  bool Add(MsgPacket* p, cStreamInfo::Content content);
-
-  void Request();
-
-  bool Pause(bool on = true);
-
-  bool IsPaused();
-
-  bool TimeShiftMode();
-
-  static void SetTimeShiftDir(const cString& dir);
-
-  static void SetBufferSize(uint64_t s);
-
-  static void RemoveTimeShiftFiles();
-
-  void Cleanup();
-
-protected:
-
-  void Action();
-
-  void CloseTimeShift();
-
-  int m_socket;
-
-  int m_readfd;
-
-  int m_writefd;
-
-  bool m_pause;
-
-  cMutex m_lock;
-
-  cCondWait m_cond;
-
-  cString m_storage;
-
-  int m_queuesize;
-
-  static cString TimeShiftDir;
-
-  static uint64_t BufferSize;
-};
-
-#endif // XVDR_LIVEQUEUE_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livestreamer.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livestreamer.c
deleted file mode 100644 (file)
index b92b8be..0000000
+++ /dev/null
@@ -1,810 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <time.h>
-#include <string.h>
-#include <map>
-#include <vdr/i18n.h>
-#include <vdr/remux.h>
-#include <vdr/channels.h>
-#include <vdr/timers.h>
-
-#ifdef __FreeBSD__
-#include <sys/endian.h>
-#else
-#include <endian.h>
-#endif
-
-#include "config/config.h"
-#include "net/msgpacket.h"
-#include "xvdr/xvdrcommand.h"
-#include "xvdr/xvdrclient.h"
-#include "tools/hash.h"
-
-#include "livestreamer.h"
-#include "livepatfilter.h"
-#include "livequeue.h"
-#include "channelcache.h"
-
-cLiveStreamer::cLiveStreamer(cXVDRClient* parent, const cChannel *channel, int priority)
- : cThread("cLiveStreamer stream processor")
- , cRingBufferLinear(MEGABYTE(10), TS_SIZE * 2, true)
- , cReceiver(NULL, priority)
- , m_scanTimeout(10)
- , m_parent(parent)
-{
-  m_Device          = NULL;
-  m_Queue           = NULL;
-  m_startup         = true;
-  m_SignalLost      = false;
-  m_LangStreamType  = cStreamInfo::stMPEG2AUDIO;
-  m_LanguageIndex   = -1;
-  m_uid             = CreateChannelUID(channel);
-  m_ready           = false;
-  m_protocolVersion = XVDR_PROTOCOLVERSION;
-  m_waitforiframe   = false;
-  m_PatFilter       = NULL;
-
-
-  m_requestStreamChange = false;
-
-  if(m_scanTimeout == 0)
-    m_scanTimeout = XVDRServerConfig.stream_timeout;
-
-  // create send queue
-  m_Queue = new cLiveQueue(m_parent->GetSocket());
-  m_Queue->Start();
-
-  SetTimeouts(0, 10);
-  Start();
-}
-
-cLiveStreamer::~cLiveStreamer()
-{
-  DEBUGLOG("Started to delete live streamer");
-
-  cTimeMs t;
-
-  DEBUGLOG("Stopping streamer thread ...");
-  Cancel(5);
-  DEBUGLOG("Done.");
-
-  cMutexLock lock(&m_FilterMutex);
-
-  DEBUGLOG("Detaching");
-
-  if(m_PatFilter != NULL && m_Device != NULL) {
-    m_Device->Detach(m_PatFilter);
-    delete m_PatFilter;
-    m_PatFilter = NULL;
-  }
-
-  if (IsAttached()) {
-    Detach();
-  }
-
-  for (std::list<cTSDemuxer*>::iterator i = m_Demuxers.begin(); i != m_Demuxers.end(); i++) {
-    if ((*i) != NULL) {
-      DEBUGLOG("Deleting stream demuxer for pid=%i and type=%i", (*i)->GetPID(), (*i)->GetType());
-      delete (*i);
-    }
-  }
-  m_Demuxers.clear();
-
-  delete m_Queue;
-
-  m_uid = 0;
-
-  {
-    cMutexLock lock(&m_DeviceMutex);
-    m_Device = NULL;
-  }
-
-  DEBUGLOG("Finished to delete live streamer (took %llu ms)", t.Elapsed());
-}
-
-void cLiveStreamer::SetTimeout(uint32_t timeout) {
-  m_scanTimeout = timeout;
-}
-
-void cLiveStreamer::SetProtocolVersion(uint32_t protocolVersion) {
-  m_protocolVersion = protocolVersion;
-}
-
-void cLiveStreamer::SetWaitForIFrame(bool waitforiframe) {
-  m_waitforiframe = waitforiframe;
-}
-
-void cLiveStreamer::RequestStreamChange()
-{
-  m_requestStreamChange = true;
-}
-
-void cLiveStreamer::TryChannelSwitch() {
-  // find channel from uid
-  const cChannel* channel = FindChannelByUID(m_uid);
-
-  // try to switch channel
-  int rc = SwitchChannel(channel);
-
-  // succeeded -> exit
-  if(rc == XVDR_RET_OK) {
-    return;
-  }
-
-  // time limit not exceeded -> relax & exit
-  if(m_last_tick.Elapsed() < (uint64_t)(m_scanTimeout*1000)) {
-    cCondWait::SleepMs(10);
-    return;
-  }
-
-  // push notification after timeout
-  switch(rc) {
-    case XVDR_RET_ENCRYPTED:
-      ERRORLOG("Unable to decrypt channel %i - %s", channel->Number(), channel->Name());
-      m_parent->StatusMessage(tr("Unable to decrypt channel"));
-      break;
-    case XVDR_RET_DATALOCKED:
-      ERRORLOG("Can't get device for channel %i - %s", channel->Number(), channel->Name());
-      m_parent->StatusMessage(tr("All tuners busy"));
-      break;
-    case XVDR_RET_RECRUNNING:
-      ERRORLOG("Active recording blocking channel %i - %s", channel->Number(), channel->Name());
-      m_parent->StatusMessage(tr("Blocked by active recording"));
-      break;
-    case XVDR_RET_ERROR:
-      ERRORLOG("Error switching to channel %i - %s", channel->Number(), channel->Name());
-      m_parent->StatusMessage(tr("Failed to switch"));
-      break;
-  }
-
-  m_last_tick.Set(0);
-}
-
-void cLiveStreamer::Action(void)
-{
-  int size = 0;
-  unsigned char *buf = NULL;
-  m_startup = true;
-
-  // reset timer
-  m_last_tick.Set(0);
-
-  INFOLOG("streamer thread started.");
-
-  while (Running())
-  {
-    size = 0;
-    buf = Get(size);
-
-    // try to switch channel if we aren't attached yet
-    {
-      cMutexLock lock(&m_FilterMutex);
-      if (!IsAttached()) {
-        TryChannelSwitch();
-      }
-    }
-
-    if(!IsStarting() && (m_last_tick.Elapsed() > (uint64_t)(m_scanTimeout*1000)) && !m_SignalLost)
-    {
-      INFOLOG("timeout. signal lost!");
-      sendStatus(XVDR_STREAM_STATUS_SIGNALLOST);
-      m_SignalLost = true;
-
-      // retune to restore
-      cMutexLock lock(&m_FilterMutex);
-      if(m_PatFilter != NULL && m_Device != NULL) {
-        m_Device->Detach(m_PatFilter);
-        delete m_PatFilter;
-        m_PatFilter = NULL;
-      }
-
-      if(IsAttached()) {
-        Detach();
-      }
-    }
-
-    // no data
-    if (buf == NULL || size <= TS_SIZE)
-      continue;
-
-    // Sync to TS packet
-    int used = 0;
-    while (size > TS_SIZE)
-    {
-      if (buf[0] == TS_SYNC_BYTE && buf[TS_SIZE] == TS_SYNC_BYTE)
-        break;
-      used++;
-      buf++;
-      size--;
-    }
-    Del(used);
-
-    while (size >= TS_SIZE)
-    {
-      if(!Running())
-        break;
-
-      // TS packet sync not found !
-      if (buf[0] != TS_SYNC_BYTE)
-        break;
-
-      unsigned int ts_pid = TsPid(buf);
-
-      {
-        cMutexLock lock(&m_FilterMutex);
-        cTSDemuxer *demuxer = FindStreamDemuxer(ts_pid);
-
-        if (demuxer)
-          demuxer->ProcessTSPacket(buf);
-      }
-
-      buf += TS_SIZE;
-      size -= TS_SIZE;
-      Del(TS_SIZE);
-    }
-  }
-
-  INFOLOG("streamer thread ended.");
-}
-
-int cLiveStreamer::SwitchChannel(const cChannel *channel)
-{
-  if (channel == NULL) {
-    return XVDR_RET_ERROR;
-  }
-
-  if(m_PatFilter != NULL && m_Device != NULL) {
-    m_Device->Detach(m_PatFilter);
-    delete m_PatFilter;
-    m_PatFilter = NULL;
-  }
-
-  if(IsAttached()) {
-    Detach();
-  }
-
-  // check if any device is able to decrypt the channel - code taken from VDR
-  int NumUsableSlots = 0;
-
-  if (channel->Ca() >= CA_ENCRYPTED_MIN) {
-    for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) {
-      if (CamSlot->ModuleStatus() == msReady) {
-        if (CamSlot->ProvidesCa(channel->Caids())) {
-          if (!ChannelCamRelations.CamChecked(channel->GetChannelID(), CamSlot->SlotNumber())) {
-            NumUsableSlots++;
-          }
-       }
-      }
-    }
-    if (!NumUsableSlots) {
-      return XVDR_RET_ENCRYPTED;
-    }
-  }
-
-  // get device for this channel
-  {
-    cMutexLock lock(&m_DeviceMutex);
-    m_Device = cDevice::GetDevice(channel, LIVEPRIORITY, false);
-  }
-
-  if (m_Device == NULL)
-  {
-    // return status "recording running" if there is an active timer
-    time_t now = time(NULL);
-
-    for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) {
-      if (ti->Recording() && ti->Matches(now)) {
-        return XVDR_RET_RECRUNNING;
-      }
-    }
-
-    return XVDR_RET_DATALOCKED;
-  }
-
-  INFOLOG("Found available device %d", m_Device->DeviceNumber() + 1);
-
-  if (!m_Device->SwitchChannel(channel, false))
-  {
-    ERRORLOG("Can't switch to channel %i - %s", channel->Number(), channel->Name());
-    return XVDR_RET_ERROR;
-  }
-
-  // get cached demuxer data
-  cChannelCache cache = cChannelCache::GetFromCache(m_uid);
-
-  // channel already in cache
-  if(cache.size() != 0) {
-    INFOLOG("Channel information found in cache");
-  }
-  // channel not found in cache -> add it from vdr
-  else {
-    INFOLOG("adding channel to cache");
-    cChannelCache::AddToCache(channel);
-    cache = cChannelCache::GetFromCache(m_uid);
-  }
-
-  // recheck cache item
-  cChannelCache currentitem = cChannelCache::ItemFromChannel(channel);
-  if(!currentitem.ismetaof(cache)) {
-    INFOLOG("current channel differs from cache item - updating");
-    cache = currentitem;
-    cChannelCache::AddToCache(m_uid, cache);
-  }
-
-  if(cache.size() != 0) {
-    INFOLOG("Creating demuxers");
-    cache.CreateDemuxers(this);
-  }
-
-  RequestStreamChange();
-
-  INFOLOG("Successfully switched to channel %i - %s", channel->Number(), channel->Name());
-
-  if(m_waitforiframe) {
-    INFOLOG("Will wait for first I-Frame ...");
-  }
-
-  // clear cached data
-  Clear();
-  m_Queue->Cleanup();
-
-  m_uid = CreateChannelUID(channel);
-
-  if(!Attach()) {
-    INFOLOG("Unable to attach receiver !");
-    return XVDR_RET_DATALOCKED;
-  }
-
-  INFOLOG("Starting PAT scanner");
-  m_PatFilter = new cLivePatFilter(this);
-  m_PatFilter->SetChannel(channel);
-  m_Device->AttachFilter(m_PatFilter);
-
-  INFOLOG("done switching.");
-  return XVDR_RET_OK;
-}
-
-cTSDemuxer *cLiveStreamer::FindStreamDemuxer(int Pid)
-{
-  for (std::list<cTSDemuxer*>::iterator i = m_Demuxers.begin(); i != m_Demuxers.end(); i++)
-    if ((*i) != NULL && (*i)->GetPID() == Pid)
-      return (*i);
-
-  return NULL;
-}
-
-bool cLiveStreamer::Attach(void)
-{
-  if (m_Device == NULL) {
-    return false;
-  }
-
-  return m_Device->AttachReceiver(this);
-}
-
-void cLiveStreamer::Detach(void)
-{
-  if (m_Device) {
-    m_Device->Detach(this);
-  }
-}
-
-void cLiveStreamer::sendStreamPacket(sStreamPacket *pkt)
-{
-  bool bReady = IsReady();
-
-  if(!bReady || pkt == NULL || pkt->size == 0)
-    return;
-
-  // Send stream information as the first packet on startup
-  if (IsStarting() && bReady)
-  {
-    // wait for AV frames (we start with an audio or video packet)
-    if(!(pkt->content == cStreamInfo::scAUDIO || pkt->content == cStreamInfo::scVIDEO)) {
-      return;
-    }
-
-    INFOLOG("streaming of channel started");
-    m_last_tick.Set(0);
-    m_requestStreamChange = true;
-    m_startup = false;
-  }
-
-  // send stream change on demand
-  if(m_requestStreamChange)
-    sendStreamChange();
-
-  // wait for first I-Frame (if enabled)
-  if(m_waitforiframe && pkt->frametype != cStreamInfo::ftIFRAME) {
-    return;
-  }
-
-  m_waitforiframe = false;
-
-  // if a audio or video packet was sent, the signal is restored
-  if(m_SignalLost && (pkt->content == cStreamInfo::scVIDEO || pkt->content == cStreamInfo::scAUDIO)) {
-    INFOLOG("signal restored");
-    sendStatus(XVDR_STREAM_STATUS_SIGNALRESTORED);
-    m_SignalLost = false;
-    m_requestStreamChange = true;
-    m_last_tick.Set(0);
-    return;
-  }
-
-  if(m_SignalLost)
-    return;
-
-  // initialise stream packet
-  MsgPacket* packet = new MsgPacket(XVDR_STREAM_MUXPKT, XVDR_CHANNEL_STREAM);
-  packet->disablePayloadCheckSum();
-
-  // write stream data
-  packet->put_U16(pkt->pid);
-  packet->put_S64(pkt->pts);
-  packet->put_S64(pkt->dts);
-  if(m_protocolVersion >= 5) {
-    packet->put_U32(pkt->duration);
-  }
-
-  // write frame type into unused header field clientid
-  packet->setClientID((uint16_t)pkt->frametype);
-
-  // write payload into stream packet
-  packet->put_U32(pkt->size);
-  packet->put_Blob(pkt->data, pkt->size);
-
-  m_Queue->Add(packet, pkt->content);
-  m_last_tick.Set(0);
-}
-
-void cLiveStreamer::sendDetach() {
-  INFOLOG("sending detach message");
-  MsgPacket* resp = new MsgPacket(XVDR_STREAM_DETACH, XVDR_CHANNEL_STREAM);
-  m_parent->QueueMessage(resp);
-}
-
-void cLiveStreamer::sendStreamChange()
-{
-  MsgPacket* resp = new MsgPacket(XVDR_STREAM_CHANGE, XVDR_CHANNEL_STREAM);
-
-  DEBUGLOG("sendStreamChange");
-
-  cChannelCache cache;
-  INFOLOG("Stored channel information in cache:");
-  for (std::list<cTSDemuxer*>::iterator i = m_Demuxers.begin(); i != m_Demuxers.end(); i++) {
-    cache.AddStream(*(*i));
-    (*i)->info();
-  }
-  cChannelCache::AddToCache(m_uid, cache);
-
-  m_FilterMutex.Lock();
-
-  // reorder streams as preferred
-  reorderStreams(m_LanguageIndex, m_LangStreamType);
-
-  for (std::list<cTSDemuxer*>::iterator idx = m_Demuxers.begin(); idx != m_Demuxers.end(); idx++)
-  {
-    cTSDemuxer* stream = (*idx);
-
-    if (stream == NULL)
-      continue;
-
-    int streamid = stream->GetPID();
-    resp->put_U32(streamid);
-
-    switch(stream->GetContent())
-    {
-      case cStreamInfo::scAUDIO:
-        resp->put_String(stream->TypeName());
-        resp->put_String(stream->GetLanguage());
-        if(m_protocolVersion >= 5) {
-          resp->put_U32(stream->GetChannels());
-          resp->put_U32(stream->GetSampleRate());
-          resp->put_U32(stream->GetBlockAlign());
-          resp->put_U32(stream->GetBitRate());
-          resp->put_U32(stream->GetBitsPerSample());
-        }
-        break;
-
-      case cStreamInfo::scVIDEO:
-        resp->put_String(stream->TypeName());
-        resp->put_U32(stream->GetFpsScale());
-        resp->put_U32(stream->GetFpsRate());
-        resp->put_U32(stream->GetHeight());
-        resp->put_U32(stream->GetWidth());
-        resp->put_S64(stream->GetAspect() * 10000.0);
-        break;
-
-      case cStreamInfo::scSUBTITLE:
-        resp->put_String(stream->TypeName());
-        resp->put_String(stream->GetLanguage());
-        resp->put_U32(stream->CompositionPageId());
-        resp->put_U32(stream->AncillaryPageId());
-        break;
-
-      case cStreamInfo::scTELETEXT:
-        resp->put_String(stream->TypeName());
-        break;
-
-      default:
-        break;
-    }
-  }
-
-  m_FilterMutex.Unlock();
-
-  m_Queue->Add(resp, cStreamInfo::scSTREAMINFO);
-  m_requestStreamChange = false;
-}
-
-void cLiveStreamer::sendStatus(int status)
-{
-  MsgPacket* packet = new MsgPacket(XVDR_STREAM_STATUS, XVDR_CHANNEL_STREAM);
-  packet->put_U32(status);
-  m_parent->QueueMessage(packet);
-}
-
-void cLiveStreamer::RequestSignalInfo()
-{
-  cMutexLock lock(&m_DeviceMutex);
-
-  if(!Running() || m_Device == NULL) {
-    return;
-  }
-
-  // do not send (and pollute the client with) signal information
-  // if we are paused
-  if(IsPaused())
-    return;
-
-  MsgPacket* resp = new MsgPacket(XVDR_STREAM_SIGNALINFO, XVDR_CHANNEL_STREAM);
-
-  int DeviceNumber = m_Device->DeviceNumber() + 1;
-  int Strength = 0;
-  int Quality = 0;
-
-  if(!TimeShiftMode()) {
-    Strength = m_Device->SignalStrength();
-    Quality = m_Device->SignalQuality();
-  }
-
-  resp->put_String(*cString::sprintf("%s #%d - %s", 
-#if VDRVERSNUM < 10728
-#warning "VDR versions < 1.7.28 do not support all features"
-                       "Unknown",
-                       DeviceNumber,
-                       "Unknown"));
-#else
-                       (const char*)m_Device->DeviceType(),
-                       DeviceNumber,
-                       (const char*)m_Device->DeviceName()));
-#endif
-
-  // Quality:
-  // 4 - NO LOCK
-  // 3 - NO SYNC
-  // 2 - NO VITERBI
-  // 1 - NO CARRIER
-  // 0 - NO SIGNAL
-
-  if(TimeShiftMode())
-  {
-    resp->put_String("TIMESHIFT");
-  }
-  else if(Quality == -1)
-  {
-    resp->put_String("UNKNOWN (Incompatible device)");
-    Quality = 0;
-  }
-  else
-    resp->put_String(*cString::sprintf("%s:%s:%s:%s:%s", 
-                       (Quality > 4) ? "LOCKED" : "-",
-                       (Quality > 0) ? "SIGNAL" : "-",
-                       (Quality > 1) ? "CARRIER" : "-",
-                       (Quality > 2) ? "VITERBI" : "-",
-                       (Quality > 3) ? "SYNC" : "-"));
-
-  resp->put_U32((Strength << 16 ) / 100);
-  resp->put_U32((Quality << 16 ) / 100);
-  resp->put_U32(0);
-  resp->put_U32(0);
-
-  // get provider & service information
-  const cChannel* channel = FindChannelByUID(m_uid);
-  if(channel != NULL) {
-    // put in provider name
-    resp->put_String(channel->Provider());
-
-    // what the heck should be the service name ?
-    // using PortalName for now
-    resp->put_String(channel->PortalName());
-  }
-  else {
-    resp->put_String("");
-    resp->put_String("");
-  }
-
-  DEBUGLOG("RequestSignalInfo");
-  m_Queue->Add(resp, cStreamInfo::scNONE);
-}
-
-void cLiveStreamer::reorderStreams(int lang, cStreamInfo::Type type)
-{
-  std::map<uint32_t, cTSDemuxer*> weight;
-
-  // compute weights
-  int i = 0;
-  for (std::list<cTSDemuxer*>::iterator idx = m_Demuxers.begin(); idx != m_Demuxers.end(); idx++, i++)
-  {
-    cTSDemuxer* stream = (*idx);
-    if (stream == NULL)
-      continue;
-
-    // 32bit weight:
-    // V0000000ASLTXXXXPPPPPPPPPPPPPPPP
-    //
-    // VIDEO (V):      0x80000000
-    // AUDIO (A):      0x00800000
-    // SUBTITLE (S):   0x00400000
-    // LANGUAGE (L):   0x00200000
-    // STREAMTYPE (T): 0x00100000 (only audio)
-    // AUDIOTYPE (X):  0x000F0000 (only audio)
-    // PID (P):        0x0000FFFF
-
-#define VIDEO_MASK      0x80000000
-#define AUDIO_MASK      0x00800000
-#define SUBTITLE_MASK   0x00400000
-#define LANGUAGE_MASK   0x00200000
-#define STREAMTYPE_MASK 0x00100000
-#define AUDIOTYPE_MASK  0x000F0000
-#define PID_MASK        0x0000FFFF
-
-    // last resort ordering, the PID
-    uint32_t w = 0xFFFF - (stream->GetPID() & PID_MASK);
-
-    // stream type weights
-    switch(stream->GetContent()) {
-      case cStreamInfo::scVIDEO:
-        w |= VIDEO_MASK;
-        break;
-
-      case cStreamInfo::scAUDIO:
-        w |= AUDIO_MASK;
-
-        // weight of audio stream type
-        w |= (stream->GetType() == type) ? STREAMTYPE_MASK : 0;
-
-        // weight of audio type
-        w |= ((4 - stream->GetAudioType()) << 16) & AUDIOTYPE_MASK;
-        break;
-
-      case cStreamInfo::scSUBTITLE:
-        w |= SUBTITLE_MASK;
-        break;
-
-      default:
-        break;
-    }
-
-    // weight of language
-    int streamLangIndex = I18nLanguageIndex(stream->GetLanguage());
-    w |= (streamLangIndex == lang) ? LANGUAGE_MASK : 0;
-
-    // summed weight
-    weight[w] = stream;
-  }
-
-  // reorder streams on weight
-  int idx = 0;
-  m_Demuxers.clear();
-  for(std::map<uint32_t, cTSDemuxer*>::reverse_iterator i = weight.rbegin(); i != weight.rend(); i++, idx++)
-  {
-    cTSDemuxer* stream = i->second;
-    DEBUGLOG("Stream : Type %s / %s Weight: %08X", stream->TypeName(), stream->GetLanguage(), i->first);
-    m_Demuxers.push_back(stream);
-  }
-}
-
-void cLiveStreamer::SetLanguage(int lang, cStreamInfo::Type streamtype)
-{
-  if(lang == -1)
-    return;
-
-  m_LanguageIndex = lang;
-  m_LangStreamType = streamtype;
-}
-
-bool cLiveStreamer::IsReady()
-{
-  if(m_ready)
-    return true;
-
-  cMutexLock lock(&m_FilterMutex);
-
-  for (std::list<cTSDemuxer*>::iterator i = m_Demuxers.begin(); i != m_Demuxers.end(); i++)
-  {
-    if (!(*i)->IsParsed()) {
-      DEBUGLOG("Stream with PID %i not parsed", (*i)->GetPID());
-      return false;
-    }
-  }
-
-  m_ready = true;
-  return true;
-}
-
-bool cLiveStreamer::IsPaused()
-{
-  if(m_Queue == NULL)
-    return false;
-
-  return m_Queue->IsPaused();
-}
-
-bool cLiveStreamer::TimeShiftMode()
-{
-  if(m_Queue == NULL)
-    return false;
-
-  return m_Queue->TimeShiftMode();
-}
-
-void cLiveStreamer::Pause(bool on) {
-  if(m_Queue == NULL)
-    return;
-
-  m_Queue->Pause(on);
-}
-
-void cLiveStreamer::RequestPacket()
-{
-  if(m_Queue == NULL)
-    return;
-
-  m_Queue->Request();
-}
-
-void cLiveStreamer::Receive(uchar *Data, int Length)
-{
-  int p = Put(Data, Length);
-
-  if (p != Length)
-    ReportOverflow(Length - p);
-}
-
-void cLiveStreamer::ChannelChange(const cChannel* channel) {
-  cMutexLock lock(&m_FilterMutex);
-
-  if(CreateChannelUID(channel) != m_uid || !Running()) {
-    return;
-  }
-
-  INFOLOG("ChannelChange()");
-
-  SwitchChannel(channel);
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livestreamer.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/live/livestreamer.h
deleted file mode 100644 (file)
index efdf021..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_RECEIVER_H
-#define XVDR_RECEIVER_H
-
-#include <vdr/channels.h>
-#include <vdr/device.h>
-#include <vdr/receiver.h>
-#include <vdr/thread.h>
-#include <vdr/ringbuffer.h>
-
-#include "demuxer/demuxer.h"
-#include "xvdr/xvdrcommand.h"
-
-#include <list>
-
-class cChannel;
-class cTSDemuxer;
-class MsgPacket;
-class cLivePatFilter;
-class cLiveQueue;
-class cXVDRClient;
-
-class cLiveStreamer : public cThread
-                    , public cRingBufferLinear
-                    , public cReceiver
-{
-private:
-  friend class cTSDemuxer;
-  friend class cLivePatFilter;
-  friend class cChannelCache;
-
-  void Detach(void);
-  bool Attach(void);
-  cTSDemuxer *FindStreamDemuxer(int Pid);
-
-  void reorderStreams(int lang, cStreamInfo::Type type);
-
-  void sendStreamPacket(sStreamPacket *pkt);
-  void sendStreamChange();
-  void sendStatus(int status);
-  void sendDetach();
-
-  cDevice          *m_Device;                       /*!> The receiving device the channel depents to */
-  cLivePatFilter   *m_PatFilter;                    /*!> Filter processor to get changed pid's */
-  std::list<cTSDemuxer*> m_Demuxers;
-  bool              m_startup;
-  bool              m_requestStreamChange;
-  uint32_t          m_scanTimeout;                  /*!> Channel scanning timeout (in seconds) */
-  cTimeMs           m_last_tick;
-  bool              m_SignalLost;
-  cMutex            m_FilterMutex;
-  cMutex            m_DeviceMutex;
-  int               m_LanguageIndex;
-  cStreamInfo::Type m_LangStreamType;
-  cLiveQueue*       m_Queue;
-  uint32_t          m_uid;
-  bool              m_ready;
-  uint32_t          m_protocolVersion;
-  bool              m_waitforiframe;
-  cXVDRClient*      m_parent;
-
-protected:
-  void Action(void);
-  void Receive(uchar *Data, int Length);
-
-  void RequestStreamChange();
-
-  int SwitchChannel(const cChannel *channel);
-
-private:
-
-  void TryChannelSwitch();
-
-public:
-  cLiveStreamer(cXVDRClient* parent, const cChannel *channel, int priority);
-  virtual ~cLiveStreamer();
-
-  bool IsReady();
-  bool IsStarting() { return m_startup; }
-  bool IsPaused();
-  bool TimeShiftMode();
-
-  void SetLanguage(int lang, cStreamInfo::Type streamtype = cStreamInfo::stAC3);
-  void SetTimeout(uint32_t timeout);
-  void SetProtocolVersion(uint32_t protocolVersion);
-  void SetWaitForIFrame(bool waitforiframe);
-
-  void Pause(bool on);
-  void RequestPacket();
-  void RequestSignalInfo();
-
-  void ChannelChange(const cChannel* Channel);
-};
-
-#endif  // XVDR_RECEIVER_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/msgpacket.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/msgpacket.c
deleted file mode 100644 (file)
index 061203e..0000000
+++ /dev/null
@@ -1,707 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef HAVE_ZLIB
-#include <zlib.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <iostream>
-#include <unistd.h>
-
-#include "os-config.h"
-#include "msgpacket.h"
-
-#define get_impl(T, f) \
-       if((m_readposition + sizeof(T)) > m_usage) { \
-               return 0; \
-       } \
-       T ul = f(readPacket<T>(m_readposition)); \
-       m_readposition += sizeof(T); \
-       return ul
-
-#define put_impl(T, f, v) \
-       if(!checkPacketSize(sizeof(T))) { \
-               return false; \
-       } \
-       writePacket<T>(m_usage, f(v)); \
-       m_usage += sizeof(T); \
-       return true
-
-pthread_mutex_t MsgPacket::uidmutex = PTHREAD_MUTEX_INITIALIZER;
-
-uint32_t MsgPacket::globalUID = 1;
-
-uint32_t MsgPacket::crc32_tab[] = {
-       0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
-       0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
-       0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
-       0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-       0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
-       0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
-       0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
-       0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-       0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
-       0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-       0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
-       0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-       0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
-       0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
-       0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
-       0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-       0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
-       0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
-       0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
-       0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-       0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
-       0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
-       0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
-       0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-       0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
-       0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
-       0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
-       0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-       0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
-       0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-       0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
-       0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-       0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
-       0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
-       0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
-       0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-       0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
-       0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
-       0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
-       0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-       0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
-       0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
-       0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
-};
-
-
-MsgPacket::MsgPacket() : m_packet(NULL), m_size(InitialPacketSize), m_usage(HeaderLength), m_readposition(HeaderLength), m_freezed(false), m_payloadchecksum(true) {
-       Init(0, 0, 0);
-}
-
-MsgPacket::MsgPacket(uint16_t msgid, uint16_t type, uint32_t uid) : m_packet(NULL), m_size(InitialPacketSize), m_usage(HeaderLength), m_readposition(HeaderLength), m_freezed(false), m_payloadchecksum(true) {
-       Init(msgid, type, uid);
-}
-
-MsgPacket::~MsgPacket() {
-       free(m_packet);
-}
-
-void MsgPacket::Init(uint16_t msgid, uint16_t type, uint32_t uid) {
-       m_packet = (uint8_t*)malloc(m_size);
-
-       if(m_packet == NULL) {
-               return;
-       }
-
-       pthread_mutex_lock(&uidmutex);
-
-       if(uid <= 0) {
-               uid = globalUID++;
-       }
-       else if(uid > globalUID) {
-               globalUID = uid + 1;
-       }
-
-       pthread_mutex_unlock(&uidmutex);
-
-       memset(m_packet, 0, HeaderLength);
-
-       writePacket<uint32_t>(SyncPos, htobe32(0xAAAAAA));              // sync
-       setUID(uid);                                                                                    // packet serial number
-       setMsgID(msgid);                                                                                // message id
-       setType(type);                                                                                  // message type
-}
-
-void MsgPacket::setClientID(uint16_t oid) {
-       writePacket<uint16_t>(ClientIDPos, htobe16(oid));
-}
-
-uint16_t MsgPacket::getClientID() {
-       return be16toh(readPacket<uint16_t>(ClientIDPos));
-}
-
-uint32_t MsgPacket::getCheckSum() {
-       return be32toh(readPacket<uint32_t>(CheckSumPos));
-}
-
-uint32_t MsgPacket::getPayloadCheckSum() {
-       return be32toh(readPacket<uint32_t>(PayloadCheckSumPos));
-}
-
-void MsgPacket::disablePayloadCheckSum() {
-       m_payloadchecksum = false;
-}
-
-bool MsgPacket::put_String(const char* string) {
-       uint32_t len = strlen(string) + 1;
-
-       if(!checkPacketSize(len)) {
-               return false;
-       }
-
-       memcpy(m_packet + m_usage, string, len);
-       m_usage += len;
-
-       return true;
-}
-
-bool MsgPacket::put_U8(uint8_t c) {
-       put_impl(uint8_t, , c);
-}
-
-bool MsgPacket::put_U16(uint16_t us) {
-       put_impl(uint16_t, htobe16, us);
-}
-
-bool MsgPacket::put_S16(int16_t s) {
-       put_impl(int16_t, htobe16, s);
-}
-
-bool MsgPacket::put_U32(uint32_t ul) {
-       put_impl(uint32_t, htobe32, ul);
-}
-
-bool MsgPacket::put_S32(int32_t l) {
-       put_impl(int32_t, htobe32, l);
-}
-
-bool MsgPacket::put_U64(uint64_t ull) {
-       put_impl(uint64_t, htobe64, ull);
-}
-
-bool MsgPacket::put_S64(int64_t ll) {
-       put_impl(int64_t, htobe64, ll);
-}
-
-bool MsgPacket::put_Blob(uint8_t source[], uint32_t length) {
-       uint8_t* p = reserve(length);
-
-       if(p == NULL) {
-               return false;
-       }
-
-       memcpy(p, source, length);
-       return true;
-}
-
-void MsgPacket::clear() {
-       m_usage = HeaderLength;
-       m_readposition = HeaderLength;
-}
-
-void MsgPacket::rewind() {
-       m_readposition = HeaderLength;
-}
-
-uint8_t* MsgPacket::reserve(uint32_t length, bool fill, unsigned char c) {
-       if(!checkPacketSize(length)) {
-               return NULL;
-       }
-
-       uint8_t* p = m_packet + m_usage;
-       m_usage += length;
-
-       if(fill) {
-               memset(p, c, length);
-       }
-
-       return p;
-}
-
-void MsgPacket::unreserve(uint32_t length) {
-       if(m_usage < length) {
-               return;
-       }
-
-       m_usage -= length;
-}
-
-uint8_t* MsgPacket::consume(uint32_t length) {
-       if(m_size < m_readposition + length) {
-               return NULL;
-       }
-
-       uint8_t* p = m_packet + m_readposition;
-       m_readposition += length;
-
-       return p;
-}
-
-const char* MsgPacket::get_String() {
-       int length = strlen((char*)&m_packet[m_readposition]);
-
-       if((m_readposition + length) > m_usage) {
-               return "";
-       }
-
-       const char* value = (char*)&m_packet[m_readposition];
-
-       m_readposition += length + 1;
-
-       return value;
-}
-
-uint8_t MsgPacket::get_U8() {
-       get_impl(uint8_t,);
-}
-
-uint16_t MsgPacket::get_U16() {
-       get_impl(uint16_t, be16toh);
-}
-
-int16_t MsgPacket::get_S16() {
-       get_impl(int16_t, be16toh);
-}
-
-uint32_t MsgPacket::get_U32() {
-       get_impl(uint32_t, be32toh);
-}
-
-int32_t MsgPacket::get_S32() {
-       get_impl(int32_t, be32toh);
-}
-
-uint64_t MsgPacket::get_U64() {
-       get_impl(uint64_t, be64toh);
-}
-
-int64_t MsgPacket::get_S64() {
-       get_impl(int64_t, be64toh);
-}
-
-bool MsgPacket::get_Blob(uint8_t dest[], uint32_t length) {
-       if((m_readposition + length) > m_usage) {
-               return false;
-       }
-
-       memcpy(dest, m_packet + m_readposition, length);
-       m_readposition += length;
-
-       return true;
-}
-
-uint8_t* MsgPacket::getPacket() {
-       return m_packet;
-}
-
-uint32_t MsgPacket::getPacketLength() {
-       return m_usage;
-}
-
-uint8_t* MsgPacket::getPayload() {
-       return m_packet + HeaderLength;
-}
-
-uint32_t MsgPacket::getPayloadLength() {
-       return m_usage - HeaderLength;
-}
-
-uint32_t MsgPacket::getUID() {
-       return be32toh(readPacket<uint32_t>(UIDPos));
-}
-
-void MsgPacket::setUID(uint32_t uid) {
-       writePacket<uint32_t>(UIDPos, htobe32(uid));
-}
-
-uint16_t MsgPacket::getMsgID() {
-       return be16toh(readPacket<uint16_t>(MsgIDPos));
-}
-
-void MsgPacket::setMsgID(uint16_t msgid) {
-       writePacket<uint16_t>(MsgIDPos, htobe16(msgid));
-}
-
-uint16_t MsgPacket::getType() {
-       return be16toh(readPacket<uint16_t>(TypePos));
-}
-
-void MsgPacket::setType(uint16_t type) {
-       writePacket<uint16_t>(TypePos, htobe16(type));
-}
-
-uint16_t MsgPacket::getProtocolVersion() {
-       return be16toh(readPacket<uint16_t>(ProtocolVersionPos));
-}
-
-void MsgPacket::setProtocolVersion(uint16_t version) {
-       writePacket<uint16_t>(ProtocolVersionPos, htobe16(version));
-}
-
-bool MsgPacket::eop() {
-       return (m_readposition >= m_usage);
-}
-
-void MsgPacket::freeze() {
-       if(m_freezed) {
-               return;
-       }
-
-       uint32_t payloadCheckSum = 0;
-
-       if(getPayloadLength() > 0 && m_payloadchecksum) {
-               payloadCheckSum = crc32(m_packet + HeaderLength, m_usage - HeaderLength);
-       }
-
-       writePacket<uint32_t>(PayloadCheckSumPos, htobe32(payloadCheckSum));
-       writePacket<uint32_t>(PayloadLengthPos, htobe32(m_usage - HeaderLength));
-       writePacket<uint32_t>(CheckSumPos, htobe32(crc32(m_packet, CheckSumPos)));
-
-       m_freezed = true;
-}
-
-bool MsgPacket::checkPacketSize(uint32_t bytes) {
-       if(bytes == 0) {
-               return false;
-       }
-
-       if((m_usage + bytes) <= m_size) {
-               return true;
-       }
-
-       if(bytes < IncrementPacketSize) {
-               bytes = IncrementPacketSize;
-       }
-
-       uint8_t* buffer = (uint8_t*)realloc((void*)m_packet, m_usage + bytes);
-
-       if(buffer == NULL) {
-               buffer = (uint8_t*)malloc(m_usage + bytes);
-
-               if(buffer == NULL) {
-                       return false;
-               }
-
-               memcpy(buffer, m_packet, m_usage);
-               free(m_packet);
-       }
-
-       m_packet = buffer;
-       m_size = m_usage + bytes;
-       return true;
-}
-
-uint32_t MsgPacket::crc32(const uint8_t* buf, int size) {
-       uint32_t crc = 0xFFFFFFFF;
-       const uint8_t* p = buf;
-
-       while(size--) {
-               crc = crc32_tab[(crc ^ *p++) & 0xFF] ^(crc >> 8);
-       }
-
-       return (crc ^ ~0U);
-}
-
-bool MsgPacket::write(int fd, int timeout_ms) {
-       freeze();
-
-       uint32_t written = 0;
-
-       while(written < m_usage) {
-               if(pollfd(fd, timeout_ms, false) == 0) {
-                       return false;
-               }
-
-               int rc = send(fd, (sendval_t*)(m_packet + written), m_usage - written, MSG_DONTWAIT | MSG_NOSIGNAL);
-
-               if(rc == -1 && sockerror() == ENOTSOCK) {
-                       rc = ::write(fd, m_packet + written, m_usage - written);
-               }
-
-               if(rc == -1 || rc == 0) {
-                       if(sockerror() == SEWOULDBLOCK) {
-                               continue;
-                       }
-
-                       return false;
-               }
-
-               written += rc;
-       }
-
-       return true;
-}
-
-MsgPacket* MsgPacket::read(int fd, int timeout_ms) {
-       bool bClosed;
-       return read(fd, bClosed, timeout_ms);
-}
-
-MsgPacket* MsgPacket::read(int fd, bool& closed, int timeout_ms) {
-       if(pollfd(fd, timeout_ms, true) <= 0) {
-               return NULL;
-       }
-
-       MsgPacket* p = new MsgPacket(0, 0, 1);
-
-       if(p == NULL) {
-               return NULL;
-       }
-
-       uint8_t* header = p->getPacket();
-
-       if(header == NULL) {
-               return NULL;
-       }
-
-       // try to find sync
-       int rc = 0;
-
-       while((rc = socketread(fd, header, sizeof(uint32_t), timeout_ms)) == 0) {
-               uint32_t sync = be32toh(p->readPacket<uint32_t>(0));
-
-               if(sync == 0xAAAAAA) {
-                       break;
-               }
-       }
-
-       // not found / timeout
-       if(rc != 0) {
-               closed = (rc == ECONNRESET);
-               delete p;
-               return NULL;
-       }
-
-       // read remaining header bytes
-       uint8_t* data = header + sizeof(uint32_t);
-       uint32_t datalen = HeaderLength - sizeof(uint32_t);
-
-       if(socketread(fd, data, datalen, timeout_ms) != 0) {
-               delete p;
-               return NULL;
-       }
-
-       // header validation
-       uint32_t checksum = p->getCheckSum();
-       datalen = be32toh(p->readPacket<uint32_t>(PayloadLengthPos));
-       uint32_t test = crc32(header, CheckSumPos);
-
-       if(checksum != test) {
-               std::cerr << "checksum failed !" << std::endl;
-               std::cerr << "PACKET CHECKSUM  : " << std::hex << checksum << std::endl;
-               std::cerr << "COMPUTED CHECKSUM: " << std::hex << test << std::endl;
-               delete p;
-               return NULL;
-       }
-
-       // no payload ?
-       if(datalen == 0) {
-               return p;
-       }
-
-       // read payload
-       data = p->reserve(datalen);
-
-       if(data == NULL) {
-               delete p;
-               return NULL;
-       }
-
-       if(socketread(fd, data, datalen, timeout_ms) != 0) {
-               delete p;
-               return NULL;
-       }
-
-       // payload checksum validation
-       uint32_t plcs = p->getPayloadCheckSum();
-       p->m_payloadchecksum = (plcs != 0);
-
-       if(p->m_payloadchecksum && p->getPayloadCheckSum() != crc32(data, datalen)) {
-               std::cerr << "wrong payload checksum !" << std::endl;
-               delete p;
-               return NULL;
-       }
-
-       return p;
-}
-
-bool MsgPacket::readstream(std::istream& in, MsgPacket& p) {
-       uint8_t* header = p.getPacket();
-
-       if(header == NULL) {
-               return NULL;
-       }
-
-       // try to find sync
-       bool rc = false;
-
-       while(!rc) {
-               in.read((char*)header, sizeof(uint32_t));
-               rc = in.good();
-
-               uint32_t sync = be32toh(p.readPacket<uint32_t>(0));
-
-               if(sync == 0xAAAAAA) {
-                       break;
-               }
-       }
-
-       // not found / timeout
-       if(!rc) {
-               return false;
-       }
-
-       // read remaining header bytes
-       uint8_t* data = header + sizeof(uint32_t);
-       uint32_t datalen = HeaderLength - sizeof(uint32_t);
-
-       in.read((char*)data, datalen);
-
-       if(!in.good()) {
-               return false;
-       }
-
-       // header validation
-       uint32_t checksum = p.getCheckSum();
-       datalen = be32toh(p.readPacket<uint32_t>(PayloadLengthPos));
-       uint32_t test = crc32(header, CheckSumPos);
-
-       if(checksum != test) {
-               syslog(LOG_ERR, "checksum failed !");
-               std::cerr << "PACKET CHECKSUM  : " << std::hex << checksum << std::endl;
-               std::cerr << "COMPUTED CHECKSUM: " << std::hex << test << std::endl;
-               return false;
-       }
-
-       // no payload ?
-       if(datalen == 0) {
-               return false;
-       }
-
-       // read payload
-       data = p.reserve(datalen);
-
-       if(data == NULL) {
-               return false;
-       }
-
-       in.read((char*)data, datalen);
-
-       if(!in.good()) {
-               return false;
-       }
-
-       // payload checksum validation
-       uint32_t plcs = p.getPayloadCheckSum();
-       p.m_payloadchecksum = (plcs != 0);
-
-       if(p.m_payloadchecksum && p.getPayloadCheckSum() != crc32(data, datalen)) {
-               syslog(LOG_ERR, "wrong payload checksum !");
-               return false;
-       }
-
-       return true;
-}
-
-bool MsgPacket::compress(int level) {
-#ifndef HAVE_ZLIB
-       return false;
-#else
-
-       if(level <= 0 || level > 9 || m_freezed) {
-               return false;
-       }
-
-       uint32_t uncompressedsize = getPayloadLength();
-
-       if(uncompressedsize == 0) {
-               return true;
-       }
-
-       uint8_t* compressed = (uint8_t*)malloc(uncompressedsize);
-       uLongf compressedsize = uncompressedsize;
-
-       if(compressed == NULL) {
-               return NULL;
-       }
-
-       if(::compress2(compressed, &compressedsize, getPayload(), uncompressedsize, level) != Z_OK) {
-               free(compressed);
-               return false;
-       }
-
-       clear();
-       uint8_t* data = reserve(compressedsize);
-
-       if(data == NULL) {
-               free(compressed);
-               return false;
-       }
-
-       memcpy(data, compressed, compressedsize);
-       free(compressed);
-
-       m_freezed = false;
-       writePacket<uint32_t>(UncompressedPayloadLengthPos, htobe32(uncompressedsize));
-       freeze();
-
-       return true;
-#endif
-}
-
-bool MsgPacket::isCompressed() {
-       return (be32toh(readPacket<uint32_t>(UncompressedPayloadLengthPos)) != 0);
-}
-
-bool MsgPacket::uncompress() {
-#ifndef HAVE_ZLIB
-       return false;
-#else
-       uLongf uncompressedsize = be32toh(readPacket<uint32_t>(UncompressedPayloadLengthPos));
-       uint8_t* uncompressed = (uint8_t*)malloc(uncompressedsize);
-
-       if(::uncompress(uncompressed, &uncompressedsize, getPayload(), getPayloadLength()) != Z_OK) {
-               free(uncompressed);
-               return false;
-       }
-
-       clear();
-       uint8_t* data = reserve(uncompressedsize);
-
-       if(data == NULL) {
-               free(uncompressed);
-               return false;
-       }
-
-       memcpy(data, uncompressed, uncompressedsize);
-       free(uncompressed);
-
-       writePacket<uint32_t>(UncompressedPayloadLengthPos, htobe32(0));
-
-       m_freezed = false;
-       freeze();
-
-       return true;
-#endif
-}
-
-void MsgPacket::print() {
-       uint32_t checksum = getCheckSum();
-       uint32_t test = crc32(m_packet, CheckSumPos);
-       bool sumvalid = (checksum == test);
-
-       std::cout << "MESSAGE PACKET  #" << getUID() << std::endl;
-       std::cout << "MSGID          : " << getMsgID() << std::endl;
-       std::cout << "TYPE           : " << getType() << std::endl;
-
-       if(checksum != 0) {
-               std::cout << "CHECKSUM       : 0x" << std::hex << checksum << " " << (sumvalid ? "(OK)" : "(FAILED)") << std::endl;
-       }
-       else {
-               std::cout << "NO CHECKSUM" << std::endl;
-       }
-
-       std::cout << "Owner ID       : " << std::dec << getClientID() << std::endl;
-       std::cout << "Total length   : " << std::dec << getPacketLength() << " bytes" << std::endl;
-       std::cout << "Header length  : " << HeaderLength << " bytes" << std::endl;
-       std::cout << "Payload length : " << getPayloadLength() << " bytes" << std::endl;
-       std::cout << "-------------------------------------------" << std::endl;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/msgpacket.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/msgpacket.h
deleted file mode 100644 (file)
index 6657760..0000000
+++ /dev/null
@@ -1,589 +0,0 @@
-/** \file msgpacket.h
-       Header file for the MsgPacket class.
-       This include file defines the MsgPacket class
-*/
-
-#ifndef MSGPACKET_H
-#define MSGPACKET_H
-
-#include <stdint.h>
-#include <pthread.h>
-#include <string.h>
-
-#include <ostream>
-#include <istream>
-
-// PACKET HEADER DEFINITION
-
-// pos    type       description
-// 0      uint32_t   packet sync (0xAAAAAA00)
-// 4      uint32_t   packet serial number
-// 8      uint16_t   message id
-// 10     uint16_t   type
-// 12     uint16_t   owner id
-// 14     uint16_t   protocol version
-// 16     uint32_t   payload checksum (0 if payload checksums are disabled)
-// 20     uint32_t   payload length
-// 24     uint32_t   uncompressed payload length (indicates compression if > 0)
-// 28     uint32_t   header checksum
-
-/**
-       @short Message Packet class
-
-       The primary interface for messages passed between communication endpoints.
-       A packet consist of a header and a payload part
-*/
-
-class MsgPacket {
-public:
-
-       /**
-       MsgPacket constructor.
-       Creates a message with a given message id, type and optional serial number.
-
-       @param  msgid                   user defined message id
-       @param  type                    user defined message type (default: 0)
-       @param  uid                             packet uid (default: unique incremental id)
-       */
-       MsgPacket(uint16_t msgid, uint16_t type = 0, uint32_t uid = 0);
-
-       /**
-       MsgPacket constructor.
-       Creates an empty message (may be used with C++ stream operators).
-       */
-       MsgPacket();
-
-       /**
-       Destructor.
-       */
-       ~MsgPacket();
-
-       /**
-       Insert NULL terminated string.
-       Add a NULL terminted string to the payload of the packet.
-
-       @param  string          NULL terminated character string
-       @return true on success / false on memory allocation error
-       */
-       bool put_String(const char* string);
-
-       /**
-       Insert unsigned 8bit integer.
-       Adds an unsigned 8bit integer number to the payload of the packet.
-
-       @param  c               unsigned 8bit number
-       @return true on success / false on memory allocation error
-       */
-       bool put_U8(uint8_t c);
-
-       /**
-       Insert unsigned 16bit integer.
-       Adds an unsigned 16bit integer number to the payload of the packet.
-
-       @param  us              unsigned 16bit number
-       @return true on success / false on memory allocation error
-       */
-       bool put_U16(uint16_t us);
-
-       /**
-       Insert signed 16bit integer.
-       Adds an signed 16bit integer number to the payload of the packet.
-
-       @param  s               signed 16bit number
-       @return true on success / false on memory allocation error
-       */
-       bool put_S16(int16_t s);
-
-       /**
-       Insert unsigned 32bit integer.
-       Adds an unsigned 32bit integer number to the payload of the packet.
-
-       @param  ul              unsigned 32bit number
-       @return true on success / false on memory allocation error
-       */
-       bool put_U32(uint32_t ul);
-
-       /**
-       Insert signed 32bit integer.
-       Adds an signed 32bit integer number to the payload of the packet.
-
-       @param  l               signed 32bit number
-       @return true on success / false on memory allocation error
-       */
-       bool put_S32(int32_t l);
-
-       /**
-       Insert unsigned 64bit integer.
-       Adds an unsigned 64bit integer number to the payload of the packet.
-
-       @param  ull             unsigned 64bit number
-       @return true on success / false on memory allocation error
-       */
-       bool put_U64(uint64_t ull);
-
-       /**
-       Insert signed 64bit integer.
-       Adds an signed 64bit integer number to the payload of the packet.
-
-       @param  ll              signed 64bit number
-       @return true on success / false on memory allocation error
-       */
-       bool put_S64(int64_t ll);
-
-       /**
-       Insert a binary large object.
-       Adds a binary object to the payload of the packet.
-
-       @param  source          pointer to blob data
-       @param  length          size of the blob in bytes
-       @return true on success / false on memory allocation error
-       */
-       bool put_Blob(uint8_t source[], uint32_t length);
-
-       /**
-       Reserve space.
-       Creates a memory region in the payload of the packet.
-
-       @param  length          number of bytes to reserve
-       @param  fill            fill the reserved memory with a unsigned char value
-       @param  c                       unsigned char value to use for filling the memory area
-       @return pointer to the reserved memory area or NULL if memory allocation failed
-       */
-       uint8_t* reserve(uint32_t length, bool fill = false, unsigned char c = 0);
-
-       void unreserve(uint32_t length);
-
-       /**
-       Consume space.
-       Consume a memory region in the payload of the packet. consume is the counter-part of reserve.
-
-       @param length           number of bytes to consume
-       @return pointer to the consumed memory area
-       */
-       uint8_t* consume(uint32_t length);
-
-       /**
-       Clear payload data.
-       Remove payload data from packet
-       */
-       void clear();
-
-       /**
-       Rewind the data access pointer.
-       Sets the pointer for the next "get_" operation to the beginning of the object.
-       */
-       void rewind();
-
-       /**
-       Extract NULL terminated string.
-       Return a NULL terminated string from the payload. The internal payload pointer will be moved
-       to the end of the string for the next "extract" call.
-
-       @return pointer to string at current payload position
-       */
-       const char* get_String();
-
-       /**
-       Extract unsigned 8bit integer.
-       Return unsigned 8bit integer at the current payload position pointer. The internal payload pointer will be incremented
-       by the size of the binary representation of the number for the next "extract" call.
-
-       @return unsigned 8bit integer at current payload position
-       */
-       uint8_t get_U8();
-
-       /**
-       Extract unsigned 16bit integer.
-       Return unsigned 16bit integer at the current payload position pointer. The internal payload pointer will be incremented
-       by the size of the binary representation of the number for the next "extract" call.
-
-       @return unsigned 16bit integer at current payload position
-       */
-       uint16_t get_U16();
-
-       /**
-       Extract signed 16bit integer.
-       Return signed 16bit integer at the current payload position pointer. The internal payload pointer will be incremented
-       by the size of the binary representation of the number for the next "extract" call.
-
-       @return signed 16bit integer at current payload position
-       */
-       int16_t get_S16();
-
-       /**
-       Extract unsigned 32bit integer.
-       Return unsigned 32bit integer at the current payload position pointer. The internal payload pointer will be incremented
-       by the size of the binary representation of the number for the next "extract" call.
-
-       @return unsigned 32bit integer at current payload position
-       */
-       uint32_t get_U32();
-
-       /**
-       Extract signed 32bit integer.
-       Return signed 32bit integer at the current payload position pointer. The internal payload pointer will be incremented
-       by the size of the binary representation of the number for the next "extract" call.
-
-       @return signed 32bit integer at current payload position
-       */
-       int32_t get_S32();
-
-       /**
-       Extract unsigned 64bit integer.
-       Return unsigned 64bit integer at the current payload position pointer. The internal payload pointer will be incremented
-       by the size of the binary representation of the number for the next "extract" call.
-
-       @return unsigned 64bit integer at current payload position
-       */
-       uint64_t get_U64();
-
-       /**
-       Extract signed 64bit integer.
-       Return signed 64bit integer at the current payload position pointer. The internal payload pointer will be incremented
-       by the size of the binary representation of the number for the next "extract" call.
-
-       @return signed 64bit integer at current payload position
-       */
-       int64_t get_S64();
-
-       /**
-       Extract binary large object.
-       Copy "length" bytes from the current payload position to "dest". The internal payload pointer will be incremented
-       by the "length" for the next "extract" call.
-
-       @param dest     pointer to destination buffer (must have a size of at least "length" bytes)
-       @param length   number of bytes to copy
-       @return true on success
-       */
-       bool get_Blob(uint8_t dest[], uint32_t length);
-
-       /**
-       Set the user-defined client id.
-       Add a user-defined client id to the packet header
-
-       @param  oid     owner id
-       */
-       void setClientID(uint16_t oid);
-
-       /**
-       Get the user-defined client id.
-       Read the user-defined client id from the packet header
-
-       @return owner id
-       */
-       uint16_t getClientID();
-
-       /**
-       Check for end of payload data.
-       Calling the "extract" functions shifts the payload pointer. This function checks
-       if there is still data available within the payload.
-
-       @return true - if there is no more data in the payload available
-       */
-       bool eop();
-
-       /**
-       Freeze message packet.
-       Compute header checksums and freeze the current packet state.
-       */
-       void freeze();
-
-       /**
-       Get pointer to packet data.
-       Returns a pointer to the packet header data
-
-       @return pointer to packet header
-       */
-       uint8_t* getPacket();
-
-       /**
-       Get packet length.
-       Returns the total size of the packet (header + payload)
-
-       @return total size of the packet
-       */
-       uint32_t getPacketLength();
-
-       /**
-       Get pointer to payload data.
-       Returns a pointer to the packets packets payload data
-
-       @return pointer to payload data
-       */
-       uint8_t* getPayload();
-
-       /**
-       Get payload length.
-       Return the size of the packets payload
-
-       @return payload size
-       */
-       uint32_t getPayloadLength();
-
-       /**
-       Get unique message id.
-       Returns the unique message id of the packet
-
-       @return unique id of the packet
-       */
-       uint32_t getUID();
-
-       /**
-       Get message id.
-       Returns the user-defined message id
-
-       @return message id
-       */
-       uint16_t getMsgID();
-
-       /**
-       Get message type.
-       Return the user-defined message type
-
-       @return message type
-       */
-       uint16_t getType();
-
-       /**
-       Get header checksum.
-       Return the header checksum of the packet
-
-       @return header checksum
-       */
-       uint32_t getCheckSum();
-
-       /**
-       Get payload checksum.
-       Return the payload checksum of the packet
-
-       @return payload checksum
-       */
-       uint32_t getPayloadCheckSum();
-
-       /**
-       Disable the payload checksum.
-       The payload checksum will not be generated for this packet
-       */
-       void disablePayloadCheckSum();
-
-       /**
-       Get protocol version.
-       Return the user defined protocol version
-
-       @return protocol version
-       */
-       uint16_t getProtocolVersion();
-
-       /**
-       Set protocol version.
-       Sets the user defined protocol version
-
-       @param version protocol version
-       */
-       void setProtocolVersion(uint16_t version);
-
-       /**
-       Set message id.
-       Sets the user-defined message id
-
-       @param msgid message id
-       */
-       void setMsgID(uint16_t msgid);
-
-       /**
-       Set message type.
-       Sets the user-defined message type
-
-       @param type message type
-       */
-       void setType(uint16_t type);
-
-       /**
-       Compress packet.
-       Compress the payload of the packet
-
-       @param level compression level (1 - 9)
-       @return true on success
-       */
-       bool compress(int level);
-
-       bool isCompressed();
-
-       /**
-       Uncompress packet.
-       Uncompress the payload of the packet
-
-       @return true on success
-       */
-       bool uncompress();
-
-       void print();
-
-       /**
-       Write packet to socket.
-       Writes the packet data to a filedescriptor
-
-       @param  fd              filedescriptor of the socket
-       @param  timeout_ms      write operation timeout in milliseconds
-       */
-       bool write(int fd, int timeout_ms = 3000);
-
-       /**
-       Receive packet from socket.
-       Create a new packet from incoming socket data
-
-       @param  fd              filedescriptor of the socket
-       @param  timeout_ms      read operation timeout in milliseconds
-       @return pointer to new packet or NULL on timeout
-       */
-       static MsgPacket* read(int fd, int timeout_ms = 3000);
-
-       /**
-       Receive packet from socket.
-       Create a new packet from incoming socket data
-
-       @param  fd                      filedescriptor of the socket
-       @param  closed          set to true if connection has been closed
-       @param  timeout_ms      read operation timeout in milliseconds
-       @return pointer to new packet or NULL on timeout
-       */
-       static MsgPacket* read(int fd, bool& closed, int timeout_ms = 3000);
-
-       static bool readstream(std::istream& in, MsgPacket& p);
-
-       enum {
-               HeaderLength = 32,                                              /*!< Length (in bytes) of a packet header. */
-               CheckSumPos = 28,                                               /*!< Checksum position (uint32_t) within the header data. */
-               UncompressedPayloadLengthPos = 24,              /*!< uncompressed payload length position (uint32_t). only compressed packets have this value set. */
-               PayloadLengthPos = 20,                                  /*!< payload length position (uint32_t). */
-               PayloadCheckSumPos = 16,                                /*!< checksum position of the payload (uint32_t). */
-               ProtocolVersionPos = 14,                                /*!< protocol-version position (uint16_t). */
-               ClientIDPos = 12,                                               /*!< owner-id position (uint16_t). */
-               TypePos = 10,                                                   /*!< message-type position (uint16_t). */
-               MsgIDPos = 8,                                                   /*!< message-id position (uint32_t). */
-               UIDPos = 4,                                                             /*!< message-uid position (uint32_t). */
-               SyncPos = 0                                                             /*!< sync-mark position (uint32_t). */
-       };
-
-protected:
-
-       void Init(uint16_t msgid, uint16_t type = 0, uint32_t uid = 0);
-
-       /**
-       Set unique message id.
-       Sets the unique message id of the packet
-
-       @param uid unique id of the packet
-       */
-       void setUID(uint32_t uid);
-
-       /**
-       Compute a CRC32 checksum.
-
-       @param  buf             pointer to data array
-       @param  size    size of array in bytes
-       @return 32bit crc
-       */
-       static uint32_t crc32(const uint8_t* buf, int size);
-
-       static int read(int fd, uint8_t* data, int datalen, int timeout_ms);
-
-private:
-
-       template<typename T>
-       void writePacket(int pos, T value) {
-               memcpy((void*)&m_packet[pos], (void*)&value, sizeof(T));
-       }
-
-       template<typename T>
-       T readPacket(int pos) {
-               T r;
-               memcpy((void*)&r, (void*)&m_packet[pos], sizeof(T));
-               return r;
-       }
-
-       bool checkPacketSize(uint32_t bytes);
-
-       static uint32_t globalUID;
-       static uint32_t crc32_tab[];
-
-       uint8_t* m_packet;
-       uint32_t m_size;
-       uint32_t m_usage;
-       uint32_t m_readposition;
-
-       bool m_freezed;
-       bool m_payloadchecksum;
-
-       enum {
-               InitialPacketSize = 128,
-               IncrementPacketSize = 512
-       };
-
-       static pthread_mutex_t uidmutex;
-};
-
-inline std::ostream& operator<<(std::ostream& out, MsgPacket& p) {
-       return out.write((const char*)p.getPacket(), p.getPacketLength());
-}
-
-inline std::istream& operator>>(std::istream& in, MsgPacket& p) {
-       MsgPacket::readstream(in, p);
-       return in;
-}
-
-/*
-@startuml
-
-note left of MsgPacket
- <b>Message Packet</b>
- The primary interface for messages passed
- between communication endpoints.
-
- <b>Sources:</b>
- libmsgexchange/include/msgpacket.h
- libmsgexchange/src/msgpacket.cpp
-end note
-
-class MsgPacket {
-.. data putters ..
-+bool put_String(const char* string)
-+bool put_U8(uint8_t c)
-+bool put_U16(uint16_t us)
-+bool put_S16(int16_t s)
-+bool put_U32(uint32_t ul)
-+bool put_S32(int32_t l)
-+bool put_U64(uint64_t ull)
-+bool put_S64(int64_t ll)
-+bool put_Blob(uint8_t source[], uint32_t length)
-.. data getters ..
-+const char* get_String()
-+uint8_t get_U8()
-+uint16_t get_U16()
-+int16_t get_S16()
-+uint32_t get_U32()
-+int32_t get_S32()
-+uint64_t get_U64()
-+int64_t get_S64()
-+bool get_Blob(uint8_t dest[], uint32_t length)
-.. memory allocation ..
-+uint8_t* reserve(uint32_t length, bool fill, unsigned char c)
-+uint8_t* consume(uint32_t length)
-+void clear()
-.. compression ..
-+bool compress(int level)
-+bool uncompress()
-.. transport ..
-+{static} MsgPacket* read(int fd, bool& closed, int timeout_ms)
-+bool write(int fd, int timeout_ms)
---
--{static} uint32_t globalUID
--uint8_t* m_packet;
--uint32_t m_size;
--uint32_t m_usage;
--uint32_t m_readposition;
-}
-@enduml
-*/
-
-#endif // MSGPACKET_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/os-config.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/os-config.c
deleted file mode 100644 (file)
index dc28f34..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-#include "os-config.h"
-#include <unistd.h>
-#include <stdio.h>
-#include <arpa/inet.h>
-
-// WINDOWS
-
-#ifdef WIN32
-
-uint32_t htobe32(uint32_t u) {
-       return (u >> 24) | ((u >> 8) & 0xff00) | ((u << 8) & 0xff0000) | (u << 24);
-}
-
-uint64_t htobe64(uint64_t u) {
-       return ((uint64_t) htobe32((uint32_t) u) << 32) | htobe32((uint32_t)(u >> 32));
-}
-
-uint16_t htobe16(uint16_t u) {
-       return (u >> 8) | ((u & 0xff) << 8);
-}
-
-uint32_t be32toh(uint32_t u) {
-       return (u << 24) | ((u << 8) & 0xff0000) | ((u >> 8) & 0xff00) | (u >> 24);
-}
-
-uint64_t be64toh(uint64_t u) {
-       return ((uint64_t) be32toh((uint32_t) u) << 32) | be32toh((uint32_t)(u >> 32));
-}
-
-uint16_t be16toh(uint16_t u) {
-       return (u >> 8) | (u & 0xff) << 8;
-}
-
-bool pollfd(int fd, int timeout_ms, bool in) {
-       fd_set fds;
-       struct timeval tv;
-
-       FD_ZERO(&fds);
-       FD_SET(fd, &fds);
-
-       tv.tv_sec = timeout_ms / 1000;
-       tv.tv_usec = 1000 * (timeout_ms % 1000);
-
-       if(in) {
-               return (select(fd + 1, &fds, NULL, NULL, &tv) > 0);
-       }
-
-       return (select(fd + 1, NULL, &fds, NULL, &tv) > 0);
-}
-
-// LINUX / OTHER
-
-#else
-
-#include <poll.h>
-
-bool pollfd(int fd, int timeout_ms, bool in) {
-       struct pollfd p;
-       p.fd = fd;
-       p.events = in ? POLLIN : POLLOUT;
-       p.revents = 0;
-
-       return (::poll(&p, 1, timeout_ms) > 0);
-}
-#endif
-
-// GENERAL
-
-bool setsock_nonblock(int fd, bool nonblock) {
-#ifdef WIN32
-       u_long sval = nonblock;
-       return (ioctlsocket(fd, FIONBIO, &sval) == 0);
-#else
-       return (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK) != -1);
-#endif
-}
-
-int socketread(int fd, uint8_t* data, int datalen, int timeout_ms) {
-        int read = 0;
-
-        while(read < datalen) {
-                if(pollfd(fd, timeout_ms, true) == 0) {
-                        return ETIMEDOUT;
-                }
-
-                int rc = recv(fd, (char*)(data + read), datalen - read, MSG_DONTWAIT);
-
-                if(rc == -1 && sockerror() == ENOTSOCK) {
-                        rc = ::read(fd, data + read, datalen - read);
-                }
-
-                if(rc == 0) {
-                        return ECONNRESET;
-                }
-                else if(rc == -1) {
-                        if(sockerror() == SEWOULDBLOCK) {
-                                continue;
-                        }
-
-                        return sockerror();
-                }
-
-                read += rc;
-        }
-
-        return 0;
-}
-
-char *xvdr_inet_ntoa(in6_addr addr)
-{
-       static char buff[INET6_ADDRSTRLEN];
-
-       if (IN6_IS_ADDR_V4MAPPED(&addr) || IN6_IS_ADDR_V4COMPAT(&addr))
-       {
-               snprintf(buff, sizeof(buff), "%d.%d.%d.%d",
-                       addr.s6_addr[12], addr.s6_addr[13], addr.s6_addr[14], addr.s6_addr[15]);
-       }
-       else
-               inet_ntop(AF_INET6, &(addr.s6_addr), buff, INET6_ADDRSTRLEN);
-
-       return buff;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/os-config.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/net/os-config.h
deleted file mode 100644 (file)
index c0834b4..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-// WINDOWS
-#ifdef WIN32
-
-#define syslog(s, msg, ...) std::cout << msg << std::endl;
-#define _WIN32_WINNT 0x0501
-#define SHUT_RDWR SD_BOTH
-#define sockerror() WSAGetLastError()
-
-#define EINPROGRESS WSAEINPROGRESS
-#define SEWOULDBLOCK WSAEWOULDBLOCK
-#define ENOTSOCK WSAENOTSOCK
-#define ECONNRESET WSAECONNRESET
-
-#define sockval_t char
-#define sendval_t const char
-
-#define MSG_DONTWAIT 0
-#define MSG_NOSIGNAL 0
-
-#include <iostream>
-#include <winsock2.h>
-#include <ws2spi.h>
-#include <ws2tcpip.h>
-#include "pthreads-win32/pthread.h"
-
-uint32_t htobe32(uint32_t u);
-uint64_t htobe64(uint64_t u);
-uint16_t htobe16(uint16_t u);
-uint32_t be32toh(uint32_t u);
-uint64_t be64toh(uint64_t u);
-uint16_t be16toh(uint16_t u);
-
-// LINUX / OTHER
-#else
-
-#define INVALID_SOCKET -1
-#define SEWOULDBLOCK EAGAIN
-
-#define closesocket close
-#define sockerror() errno
-
-#define sockval_t int*
-#define sendval_t const void
-
-#include <fcntl.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <errno.h>
-#include <netinet/tcp.h>
-#include <syslog.h>
-#include <signal.h>
-#include <pthread.h>
-#endif
-
-// ANDROID
-#ifdef ANDROID
-#include <linux/in.h>
-#ifndef __BSD_VISIBLE
-#define __BSD_VISIBLE
-#endif
-#include <sys/endian.h>
-#define be16toh betoh16
-#define be32toh betoh32
-#define be64toh betoh64
-#endif
-
-bool pollfd(int fd, int timeout_ms, bool in);
-bool setsock_nonblock(int fd, bool nonblock = true);
-int socketread(int fd, uint8_t* data, int datalen, int timeout_ms);
-char *xvdr_inet_ntoa(in6_addr addr);
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recordingscache.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recordingscache.c
deleted file mode 100644 (file)
index 4c853f5..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <stdio.h>
-#define __STDC_FORMAT_MACROS // Required for format specifiers
-#include <inttypes.h>
-
-#include "config/config.h"
-#include "recordingscache.h"
-#include "tools/hash.h"
-
-cRecordingsCache::cRecordingsCache() : m_changed(false) {
-  cMutexLock lock(&m_mutex);
-
-  // initialize cache
-  Update();
-}
-
-void cRecordingsCache::Update() {
-  for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
-    RegisterNoLock(recording);
-  }
-}
-
-cRecordingsCache::~cRecordingsCache() {
-}
-
-cRecordingsCache& cRecordingsCache::GetInstance() {
-  static cRecordingsCache singleton;
-  return singleton;
-}
-
-uint32_t cRecordingsCache::Register(cRecording* recording) {
-  cMutexLock lock(&m_mutex);
-
-  return RegisterNoLock(recording);
-}
-
-uint32_t cRecordingsCache::RegisterNoLock(cRecording* recording) {
-  cString filename = recording->FileName();
-  uint32_t uid = CreateStringHash(filename);
-
-  m_recordings[uid].filename = filename;
-  return uid;
-}
-
-cRecording* cRecordingsCache::Lookup(uint32_t uid) {
-  cMutexLock lock(&m_mutex);
-  DEBUGLOG("%s - lookup uid: %08x", __FUNCTION__, uid);
-
-  if(m_recordings.find(uid) == m_recordings.end()) {
-    DEBUGLOG("%s - not found !", __FUNCTION__);
-    return NULL;
-  }
-
-  cString filename = m_recordings[uid].filename;
-
-  if(isempty(filename)) {
-    DEBUGLOG("%s - empty filename for uid: %08x !", __FUNCTION__, uid);
-    return NULL;
-  }
-
-  DEBUGLOG("%s - filename: %s", __FUNCTION__, (const char*)filename);
-
-  cRecording* r = Recordings.GetByName(filename);
-  DEBUGLOG("%s - recording %s", __FUNCTION__, (r == NULL) ? "not found !" : "found");
-
-  return r;
-}
-
-void cRecordingsCache::SetPlayCount(uint32_t uid, int count)
-{
-  cMutexLock lock(&m_mutex);
-
-  if(m_recordings.find(uid) == m_recordings.end())
-    return;
-
-  DEBUGLOG("%s - Set Playcount: %i", (const char*)m_recordings[uid].filename, count);
-  m_recordings[uid].playcount = count;
-  m_changed = true;
-}
-
-void cRecordingsCache::SetLastPlayedPosition(uint32_t uid, uint64_t position)
-{
-  cMutexLock lock(&m_mutex);
-
-  if(m_recordings.find(uid) == m_recordings.end())
-    return;
-
-  DEBUGLOG("%s - Set Position: %llu", (const char*)m_recordings[uid].filename, position);
-  m_recordings[uid].lastplayedposition = position;
-}
-
-int cRecordingsCache::GetPlayCount(uint32_t uid)
-{
-  cMutexLock lock(&m_mutex);
-
-  if(m_recordings.find(uid) == m_recordings.end())
-    return 0;
-
-  //DEBUGLOG("%s - Get Playcount: %i", (const char*)m_recordings[uid].filename, m_recordings[uid].playcount]);
-
-  return m_recordings[uid].playcount;
-}
-
-uint64_t cRecordingsCache::GetLastPlayedPosition(uint32_t uid)
-{
-  cMutexLock lock(&m_mutex);
-
-  if(m_recordings.find(uid) == m_recordings.end())
-    return 0;
-
-  DEBUGLOG("%s - Get Position: %llu", (const char*)m_recordings[uid].filename, m_recordings[uid].lastplayedposition);
-  return m_recordings[uid].lastplayedposition;
-}
-
-void cRecordingsCache::LoadResumeData()
-{
-  cMutexLock lock(&m_mutex);
-
-  cString filename = AddDirectory(XVDRServerConfig.ConfigDirectory, RESUME_DATA_FILE);
-  FILE* f = fopen((const char*)filename, "r");
-
-  if(f == NULL)
-  {
-    ERRORLOG("unable to open resume data: %s", (const char*)filename);
-    return;
-  }
-
-  uint32_t uid = 0;
-  uint64_t pos = 0;
-  int count = 0;
-
-  while(fscanf(f, "%08x = %"PRIu64", %i", &uid, &pos, &count) != EOF)
-  {
-    m_recordings[uid].lastplayedposition = pos;
-    m_recordings[uid].playcount = count;
-
-    uid = 0;
-    pos = 0;
-    count = 0;
-  }
-
-  fclose(f);
-  return;
-}
-
-void cRecordingsCache::SaveResumeData()
-{
-  cMutexLock lock(&m_mutex);
-
-  cString filename = AddDirectory(XVDRServerConfig.ConfigDirectory, RESUME_DATA_FILE);
-  FILE* f = fopen((const char*)filename, "w");
-
-  if(f == NULL)
-  {
-    ERRORLOG("unable to create resume data: %s", (const char*)filename);
-    return;
-  }
-
-  std::map<uint32_t, struct RecEntry>::iterator i;
-  for(i = m_recordings.begin(); i != m_recordings.end(); i++)
-  {
-    if(i->second.lastplayedposition != 0 || i->second.playcount != 0)
-      fprintf(f, "%08x = %"PRIu64", %i\n", i->first, i->second.lastplayedposition, i->second.playcount);
-  }
-
-  fclose(f);
-  return;
-}
-
-bool cRecordingsCache::Changed() {
-  cMutexLock lock(&m_mutex);
-
-  bool rc = m_changed;
-  m_changed = false;
-
-  return rc;
-}
-
-void cRecordingsCache::gc() {
-  cMutexLock lock(&m_mutex);
-
-  Update();
-
-  std::map<uint32_t, struct RecEntry>::iterator i = m_recordings.begin();
-
-  while(i != m_recordings.end()) {
-    if(!isempty(i->second.filename) && Recordings.GetByName(i->second.filename) == NULL) {
-      INFOLOG("removing outdated recording (%08x) '%s' from cache", i->first, (const char*)i->second.filename);
-      std::map<uint32_t, struct RecEntry>::iterator n = i++;
-      m_recordings.erase(n);
-    }
-    else {
-      i++;
-    }
-  }
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recordingscache.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recordingscache.h
deleted file mode 100644 (file)
index a80fe9b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XBMC server plugin for VDR
- *
- *      Copyright (C) 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_RECORDINGSCACHE_H
-#define XVDR_RECORDINGSCACHE_H
-
-#include <stdint.h>
-#include <map>
-#include <vdr/thread.h>
-#include <vdr/tools.h>
-#include <vdr/recording.h>
-
-class cRecordingsCache
-{
-protected:
-
-  cRecordingsCache();
-
-  virtual ~cRecordingsCache();
-
-public:
-
-  static cRecordingsCache& GetInstance();
-
-  uint32_t Register(cRecording* recording);
-
-  cRecording* Lookup(uint32_t uid);
-
-  void SetPlayCount(uint32_t uid, int count);
-
-  void SetLastPlayedPosition(uint32_t uid, uint64_t position);
-
-  int GetPlayCount(uint32_t uid);
-
-  uint64_t GetLastPlayedPosition(uint32_t uid);
-
-  void LoadResumeData();
-
-  void SaveResumeData();
-
-  bool Changed();
-
-  void gc();
-
-protected:
-
-  void Update();
-
-  uint32_t RegisterNoLock(cRecording* recording);
-
-private:
-
-  struct RecEntry {
-    RecEntry() : playcount(0), lastplayedposition(0) {}
-    cString filename;
-    int playcount;
-    uint64_t lastplayedposition;
-  };
-
-  std::map<uint32_t, struct RecEntry> m_recordings;
-
-  cMutex m_mutex;
-
-  bool m_changed;
-};
-
-
-#endif // XVDR_RECORDINGSCACHE_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recplayer.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recplayer.c
deleted file mode 100644 (file)
index 6211b52..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010-2013 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-/*
- * This code is taken from VOMP for VDR plugin.
- */
-
-#include "recplayer.h"
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#define __STDC_FORMAT_MACROS // Required for format specifiers
-#include <inttypes.h>
-
-#include "config/config.h"
-
-#ifndef O_NOATIME
-#define O_NOATIME 0
-#endif
-
-cRecPlayer::cRecPlayer(cRecording* rec)
-{
-  m_file = -1;
-  m_fileOpen = -1;
-  m_rescanInterval = 2000; // 2000 ms rescan interval
-  m_recordingFilename = strdup(rec->FileName());
-  m_totalLength = 0;
-
-  // FIXME find out max file path / name lengths
-#if VDRVERSNUM < 10703
-  m_pesrecording = true;
-#else
-  m_pesrecording = rec->IsPesRecording();
-#endif
-
-  scan();
-  m_rescanTime.Set(0);
-}
-
-cRecPlayer::~cRecPlayer()
-{
-  cleanup();
-  closeFile();
-  free(m_recordingFilename);
-}
-
-void cRecPlayer::cleanup() {
-  for(int i = 0; i != m_segments.Size(); i++) {
-    delete m_segments[i];
-  }
-  m_segments.Clear();
-}
-
-void cRecPlayer::scan()
-{
-  struct stat s;
-  uint64_t len = m_totalLength;
-  m_totalLength = 0;
-
-  cleanup();
-
-  for(int i = 0; ; i++) {
-    fileNameFromIndex(i);
-
-    if(stat(m_fileName, &s) == -1) {
-      break;
-    }
-
-    cSegment* segment = new cSegment();
-    segment->start = m_totalLength;
-    segment->end = segment->start + s.st_size;
-
-    m_segments.Append(segment);
-
-    m_totalLength += s.st_size;
-  }
-
-  if(len != m_totalLength) {
-    INFOLOG("recording scan: %"PRIu64" bytes", m_totalLength);
-  }
-}
-
-void cRecPlayer::update()
-{
-  // do not rescan too often
-  if(m_rescanTime.Elapsed() < m_rescanInterval)
-    return;
-
-  DEBUGLOG("%s", __FUNCTION__);
-  m_rescanTime.Set(0);
-
-  scan();
-}
-
-char* cRecPlayer::fileNameFromIndex(int index) {
-  if (m_pesrecording)
-    snprintf(m_fileName, sizeof(m_fileName), "%s/%03i.vdr", m_recordingFilename, index+1);
-  else
-    snprintf(m_fileName, sizeof(m_fileName), "%s/%05i.ts", m_recordingFilename, index+1);
-
-  return m_fileName;
-}
-
-bool cRecPlayer::openFile(int index)
-{
-  if (index == m_fileOpen) return true;
-  closeFile();
-
-  fileNameFromIndex(index);
-  INFOLOG("openFile called for index %i (%s)", index, m_fileName);
-
-  // first try to open with NOATIME flag
-  m_file = open(m_fileName, O_RDONLY | O_NOATIME);
-
-  // fallback if FS doesn't support NOATIME
-  if (m_file == -1) {
-    m_file = open(m_fileName, O_RDONLY);
-  }
-
-  // failed to open file
-  if (m_file == -1) {
-    INFOLOG("file failed to open");
-    m_fileOpen = -1;
-    return false;
-  }
-
-  m_fileOpen = index;
-  return true;
-}
-
-void cRecPlayer::closeFile()
-{
-  if(m_file == -1) {
-    return;
-  }
-
-  INFOLOG("file closed");
-  close(m_file);
-
-  m_file = -1;
-  m_fileOpen = -1;
-}
-
-uint64_t cRecPlayer::getLengthBytes()
-{
-  return m_totalLength;
-}
-
-int cRecPlayer::getBlock(unsigned char* buffer, uint64_t position, int amount)
-{
-  // dont let the block be larger than 256 kb
-  if (amount > 256*1024)
-    amount = 256*1024;
-
-  if ((uint64_t)amount > m_totalLength)
-    amount = m_totalLength;
-
-  if (position >= m_totalLength)
-    return 0;
-
-  if ((position + amount) > m_totalLength)
-    amount = m_totalLength - position;
-
-  // work out what block "position" is in
-  int segmentNumber = -1;
-  for(int i = 0; i < m_segments.Size(); i++)
-  {
-    if ((position >= m_segments[i]->start) && (position < m_segments[i]->end)) {
-      segmentNumber = i;
-      break;
-    }
-  }
-
-  // segment not found / invalid position
-  if (segmentNumber == -1) return 0;
-
-  // open file (if not already open)
-  if (!openFile(segmentNumber)) return 0;
-
-  // work out position in current file
-  uint64_t filePosition = position - m_segments[segmentNumber]->start;
-
-  // seek to position
-  if(lseek(m_file, filePosition, SEEK_SET) == -1) {
-    ERRORLOG("unable to seek to position: %"PRIu64, filePosition);
-    return 0;
-  }
-
-  // try to read the block
-  int bytes_read = read(m_file, buffer, amount);
-  DEBUGLOG("read %i bytes from file %i at position %llu", bytes_read, segmentNumber, filePosition);
-
-  if(bytes_read <= 0) {
-    return 0;
-  }
-
-#ifndef __FreeBSD__
-  // Tell linux not to bother keeping the data in the FS cache
-  posix_fadvise(m_file, filePosition, bytes_read, POSIX_FADV_DONTNEED);
-#endif
-
-  // divide and conquer
-  if(bytes_read < amount) {
-    bytes_read += getBlock(&buffer[bytes_read], position + bytes_read, amount - bytes_read);
-  }
-
-  return bytes_read;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recplayer.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/recordings/recplayer.h
deleted file mode 100644 (file)
index 481c4fe..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2004-2005 Chris Tallon
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-/*
- * This code is taken from VOMP for VDR plugin.
- */
-
-#ifndef XVDR_RECPLAYER_H
-#define XVDR_RECPLAYER_H
-
-#include <stdio.h>
-#include <vdr/tools.h>
-#include <vdr/recording.h>
-
-class cSegment
-{
-  public:
-    uint64_t start;
-    uint64_t end;
-};
-
-class cRecPlayer {
-public:
-
-  cRecPlayer(cRecording* rec);
-
-  ~cRecPlayer();
-
-  uint64_t getLengthBytes();
-
-  int getBlock(unsigned char* buffer, uint64_t position, int amount);
-
-  bool openFile(int index);
-
-  void closeFile();
-
-  void scan();
-
-  void update();
-
-private:
-
-  void cleanup();
-
-  char* fileNameFromIndex(int index);
-
-  void checkBufferSize(int s);
-
-  bool m_pesrecording;
-
-  char m_fileName[512];
-
-  int m_file;
-
-  int m_fileOpen;
-
-  cVector<cSegment*> m_segments;
-
-  uint64_t m_totalLength;
-
-  char* m_recordingFilename;
-
-  cTimeMs m_rescanTime;
-
-  uint32_t m_rescanInterval;
-};
-
-#endif // XVDR_RECPLAYER_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan.c
deleted file mode 100644 (file)
index 155238b..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2013 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <stdio.h>
-#include "wirbelscan.h"
-#include "config/config.h"
-
-using namespace WIRBELSCAN_SERVICE;
-
-cWirbelScan::cWirbelScan() : m_plugin(NULL) {
-}
-
-cWirbelScan::~cWirbelScan() {
-  if(!IsScanning()) {
-    return;
-  }
-
-  WIRBELSCAN_SERVICE::cWirbelscanCmd cmd;
-  cmd.cmd = WIRBELSCAN_SERVICE::CmdStopScan;
-  DoCmd(cmd);
-}
-
-bool cWirbelScan::Connect() {
-  if(m_plugin == NULL) {
-    m_plugin = cPluginManager::GetPlugin("wirbelscan");
-  }
-
-  if(m_plugin == NULL) {
-    ERRORLOG("Unable to connect to wirbelscan plugin !");
-    return false;
-  }
-
-  INFOLOG("Connected to wirbelscan plugin ...");
-
-  cWirbelscanInfo info;
-  if(GetVersion(&info)) {
-    INFOLOG("wirbelscan plugin version: %s", info.PluginVersion);
-  }
-  else {
-    ERRORLOG("unable to fetch version information !");
-  }
-
-  return true;
-}
-
-bool cWirbelScan::GetVersion(cWirbelscanInfo* info) {
-  if(m_plugin == NULL) {
-    return false;
-  }
-
-  return m_plugin->Service(SPlugin""SInfo, info);
-}
-
-bool cWirbelScan::DoCmd(cWirbelscanCmd& cmd) {
-  if(m_plugin == NULL) {
-    return false;
-  }
-
-  if(!m_plugin->Service(SPlugin""SCommand, &cmd)) {
-    cmd.replycode = false;
-  }
-
-  return cmd.replycode;
-}
-
-bool cWirbelScan::GetStatus(cWirbelscanStatus& status) {
-  if(m_plugin == NULL) {
-    return false;
-  }
-
-  return m_plugin->Service(SPlugin"Get"SStatus, &status);
-}
-
-bool cWirbelScan::GetSetup(cWirbelscanScanSetup& param) {
-  if(m_plugin == NULL) {
-    return false;
-  }
-
-  return m_plugin->Service(SPlugin"Get"SSetup, &param);
-}
-
-bool cWirbelScan::SetSetup(cWirbelscanScanSetup& param) {
-  if(m_plugin == NULL) {
-    return false;
-  }
-
-  return m_plugin->Service(SPlugin"Set"SSetup, &param);
-}
-
-bool cWirbelScan::GetCountry(cWirbelScan::List& list) {
-  if(m_plugin == NULL) {
-    return false;
-  }
-
-  if(!m_plugin->Service(SPlugin"Get"SCountry, NULL)) {
-    return false;
-  }
-
-  cPreAllocBuffer b = {0, 0, NULL};
-  m_plugin->Service(SPlugin"Get"SCountry, &b);
-
-  SListItem* buffer = new SListItem[b.size];
-
-  b.buffer = buffer;
-  m_plugin->Service(SPlugin"Get"SCountry, &b);
-
-  list.clear();
-  for(uint32_t i = 0; i < b.count; i++) {
-    list.push_back(b.buffer[i]);
-  }
-
-  return true;
-}
-
-bool cWirbelScan::GetSat(cWirbelScan::List& list) {
-  if(m_plugin == NULL) {
-    return false;
-  }
-
-  if(!m_plugin->Service(SPlugin"Get"SSat, NULL)) {
-    return false;
-  }
-
-  cPreAllocBuffer b = {0, 0, NULL};
-  m_plugin->Service(SPlugin"Get"SSat, &b);
-
-  SListItem* buffer = new SListItem[b.size];
-
-  b.buffer = buffer;
-  m_plugin->Service(SPlugin"Get"SSat, &b);
-
-  list.clear();
-  for(uint32_t i = 0; i < b.count; i++) {
-    list.push_back(b.buffer[i]);
-  }
-
-  return true;
-}
-
-bool cWirbelScan::IsScanning() {
-  cWirbelscanStatus status;
-  if(!GetStatus(status)) {
-    return false;
-  }
-
-  return status.status == StatusScanning;
-}
-
-// currently unused
-
-bool cWirbelScan::GetUser(cUserTransponder& transponder) {
-  return false;
-}
-
-// currently unused
-
-bool cWirbelScan::SetUser(cUserTransponder& transponder) {
-  return false;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan.h
deleted file mode 100644 (file)
index bdf1998..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2013 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_WIRBELSCAN_H
-#define XVDR_WIRBELSCAN_H
-
-#include <stdint.h>
-#include <list>
-#include <vdr/plugin.h>
-
-#include "wirbelscan_services.h"
-
-class cWirbelScan {
-public:
-
-  typedef std::list<WIRBELSCAN_SERVICE::SListItem> List;
-
-  cWirbelScan();
-
-  virtual ~cWirbelScan();
-
-  bool Connect();
-
-  bool GetVersion(WIRBELSCAN_SERVICE::cWirbelscanInfo* info);
-
-  bool DoCmd(WIRBELSCAN_SERVICE::cWirbelscanCmd& cmd);
-
-  bool GetStatus(WIRBELSCAN_SERVICE::cWirbelscanStatus& status);
-
-  bool GetSetup(WIRBELSCAN_SERVICE::cWirbelscanScanSetup& param);
-
-  bool SetSetup(WIRBELSCAN_SERVICE::cWirbelscanScanSetup& param);
-
-  bool GetCountry(List& list);
-
-  bool GetSat(List& list);
-
-  bool IsScanning();
-
-  // get/set user are currently unused
-  // always returning false
-
-  bool GetUser(WIRBELSCAN_SERVICE::cUserTransponder& transponder);
-
-  bool SetUser(WIRBELSCAN_SERVICE::cUserTransponder& transponder);
-
-protected:
-
-  cPlugin* m_plugin;
-
-};
-
-#endif // XVDR_WIRBELSCAN_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan_services.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/scanner/wirbelscan_services.h
deleted file mode 100644 (file)
index 8316337..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * wirbelscan_services.h
- *
- * Copyright (C) 2010 Winfried Koehler 
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * The author can be reached at: handygewinnspiel AT gmx DOT de
- *
- * The project's page is http://wirbel.htpc-forum.de/wirbelscan/index2.html
- */
-
-#ifndef __WIRBELSCAN_SERVICES_H__
-#define __WIRBELSCAN_SERVICES_H__
-
-
-/********************************************************************
- *
- * wirbelscans plugin service interface
- *
- * see http://wirbel.htpc-forum.de/wirbelscan/vdr-servdemo-0.0.1.tgz
- * for example on usage.
- *
- *******************************************************************/
-
-namespace WIRBELSCAN_SERVICE { 
-/* begin of namespace. to use this header file:
- * #include "../wirbelscan/wirbelscan_services.h"
- * using namespace WIRBELSCAN_SERVICE;
- */
-
-/* --- service(s) version ----------------------------------------------------
- */
-
-#define SPlugin  "wirbelscan_"     // prefix
-#define SInfo    "GetVersion"      // plugin version and service api
-#define SCommand "DoCmd#0001"      // command api 0001
-#define SStatus  "Status#0002"     // query status
-#define SSetup   "Setup#0001"      // get/set setup, GetSetup#XXXX/SetSetup#XXXX
-#define SCountry "Country#0001"    // get list of country IDs and Names
-#define SSat     "Sat#0001"        // get list of satellite IDs and Names
-#define SUser    "User#0002"       // get/set single user transponder, GetUser#XXXX/SetUser#XXXX
-
-/* --- wirbelscan_GetVersion -------------------------------------------------
- * Query wirbelscans versions, will fail only if plugin version doesnt support service at all.
- */
-
-typedef struct {
-  const char * PluginVersion;                    // plugin version
-  const char * CommandVersion;                   // commands service version
-  const char * StatusVersion;                    // status service version
-  const char * SetupVersion;                     // get/put setup service version
-  const char * CountryVersion;                   // country ID list version
-  const char * SatVersion;                       // satellite ID list version
-  const char * UserVersion;                      // user transponder api version, 0.0.5-pre12b or higher.
-  const char * reserved2;                        // reserved, dont use.
-  const char * reserved3;                        // reserved, dont use.
-} cWirbelscanInfo;
-
-/* --- wirbelscan_DoCmd ------------------------------------------------------
- * Execute commands.
- */
-
-typedef enum {
-  CmdStartScan = 0,                              // start scanning
-  CmdStopScan  = 1,                              // stop scanning
-  CmdStore     = 2,                              // store current setup
-} s_cmd;
-
-typedef struct {
-  s_cmd cmd;                                     // see above.
-  bool replycode;                                // false, if unsuccessful.
-} cWirbelscanCmd;
-
-/* --- wirbelscan_Status -----------------------------------------------------
- * Query Status. Use this to build up your osd information displayed to user.
- */
-
-typedef enum {
-  StatusUnknown  = 0,                            // no status information available, try again later.
-  StatusScanning = 1,                            // scan in progress.
-  StatusStopped  = 2,                            // no scan in progress (not started, finished or stopped).
-  StatusBusy     = 3,                            // plugin is busy, try again later.
-} cStatus;
-
-typedef struct {
-  cStatus status;                                // see above.
-  char curr_device[256];                         // name of current device. meaningless, if (status != StatusScanning)
-  uint16_t progress;                             // progress by means of "percent of predefined transponders". NOTE: will differ in terms of time. meaningless, if (status != StatusScanning)
-  uint16_t strength;                             // current signal strength as reported from device. NOTE: updated only after switching to new transponder. meaningless, if (status != StatusScanning)
-  char transponder[256];                         // current transponder. meaningless, if (status != StatusScanning)
-  uint16_t numChannels;                          // current number of (all) channels, including those which are new. meaningless, if (status != StatusScanning)
-  uint16_t newChannels;                          // number of channels found during this scan. meaningless, if (status != StatusScanning)
-  uint16_t nextTransponders;                     // number of transponders still to be scanned from NIT on this transponder. meaningless, if (status != StatusScanning)
-  uint16_t reserved2;                            // reserved, dont use.
-  uint16_t reserved3;                            // reserved, dont use.
-} cWirbelscanStatus;
-
-/* --- wirbelscan_GetSetup, wirbelscan_SetSetup ------------------------------
- * Get/Set Setup. Use this to build up your setup osd displayed to user.
- */
-
-typedef struct {
-  uint16_t  verbosity;                           // 0 (errors only) .. 5 (extended debug); default = 3 (messages)
-  uint16_t  logFile;                             // 0 = off, 1 = stdout, 2 = syslog
-  uint16_t DVB_Type;                             // DVB-T = 0, DVB-C = 1, DVB-S/S2 = 2, PVRINPUT = 3, PVRINPUT(FM Radio) = 4, ATSC = 5, TRANSPONDER = 999
-  uint16_t DVBT_Inversion;                       // AUTO/OFF = 0, AUTO/ON = 1
-  uint16_t DVBC_Inversion;                       // AUTO/OFF = 0, AUTO/ON = 1
-  uint16_t DVBC_Symbolrate;                      // careful here - may change. AUTO = 0, 6900 = 1, 6875 = 2  (...)  14 = 5483, 15 = ALL
-  uint16_t DVBC_QAM;                             // AUTO = 0,QAM64 = 1, QAM128 = 2, QAM256 = 3, ALL = 4
-  uint16_t CountryId;                            // the id according to country, found in country list,   see wirbelscan_GetCountry
-  uint16_t SatId;                                // the id according to satellite, found in list,         see wirbelscan_GetSat
-  uint32_t scanflags;                            // bitwise flag of wanted channels: TV = (1 << 0), RADIO = (1 << 1), FTA = (1 << 2), SCRAMBLED = (1 << 4), HDTV = (1 << 5)
-  uint16_t ATSC_type;                            // VSB = 0, QAM = 1, both VSB+QAM = 2
-  uint16_t stuffing[6];                          // dont use.
-} cWirbelscanScanSetup;
-
-/* --- wirbelscan_GetCountry, wirbelscan_GetSat ------------------------------
- * Use this to build up your setup OSD - user needs to choose satellite and
- * country by name and assign correct IDs to setup, see
- *    * cWirbelscanScanSetup::CountryId
- *    * cWirbelscanScanSetup::SatId.
- *
- * 1) Query needed buffer size with cPreAllocBuffer::size == 0
- * 2) allocate memory in your plugin, to be at least: cPreAllocBuffer::size * sizeof(SListItem)
- * 3) second call fills buffer with count * sizeof(SListItem) bytes.
- * 4) access to items as SListItem*
- */
-
-typedef struct {
-  int id;
-  char short_name[8];
-  char full_name[64];
-} SListItem;
-
-typedef struct {
-  uint32_t size;
-  uint32_t count;
-  SListItem * buffer;
-} cPreAllocBuffer;
-
-/* --- wirbelscan_GetUser, wirbelscan_SetUser --------------------------------
- * Scan a user defined Transponder. Service() expects a pointer to uint32_t Data[3];
- * Data should be initialized and read using class cUserTransponder.
- *
- * ---------------------------------------------
- * id            : 9  country-id/sat-id
- * frequency     : 21 DVB-T: 177500..858000; ATSC/DVB-C: 73000..858000, DVB-S/S2: 2000..15000
- * polarisation  : 2  0=h, 1=v, 2=l, 3=r
- * type          : 3  DVB_Type
- * symbolrate    : 17 i.e. 27500, 6900
- * fec_hi        : 4  DVB-S/S2: 1=1/2, 2=2/3, 3=3/4, 4=4/5, 5=5/6, 6=6/7, 7=7/8, 8=8/9, 9=forbidden, 10=3/5, 11=9/10
- *                    DVB-T     1=1/2, 2=2/3, 3=3/4, 4=forbidden, 5=5/6, 6=forbidden, 7=7/8, 8..15=forbidden
- * fec_lo        : 4  DVB-T     1=1/2, 2=2/3, 3=3/4, 4=forbidden, 5=5/6, 6=forbidden, 7=7/8, 8..15=forbidden
- * modulation    : 4  DVB-C: 0=forbidden, 1=QAM16, 2=QAM32, 3=QAM64, 4=QAM128, 5=QAM256, 6..15: forbidden
- *                    DVB-T: 0=QPSK, 1=QAM16, 2=forbidden, 3=QAM64, 4..15: forbidden
- *                    DVB-S: 0=QPSK, 1=QAM16, 2..8: forbidden, 9=PSK8, 10..15:forbidden
- *                    ATSC:  0..2: forbidden, 3=QAM64, 4=forbidden, 5=QAM256, 6=QAM_AUTO, 7=VSB8, 8=VSB16, 9..15=forbidden                         
- * orbit         : 12 i.e. 192 for S19E2
- * we_flag       : 1  0=west, 1=east
- * rolloff       : 2  0=0,35, 1=0,25, 2=0,20
- * satsystem     : 1  0=DVB-S, 1=DVB-S2
- * bw            : 2  0=8MHz, 1=7MHz, 2=6MHz, 3=5MHz
- * priority      : 1  0=LP, 1=HP
- * hierarchy     : 4  0=OFF, 1=alpha1, 2=alpha2, 3=alpha4
- * guardinterval : 2  0=1/32, 1=1/16, 2=1/8, 3=1/4
- * transmission  : 2  0=2k, 1=8k, 2=4k
- * inversion     : 1  0=OFF, 1=ON
- * use_nit       : 1  0=OFF, 1=ON
- * reserved      : 3  always 0
- * ---------------------------------------------
- */
-
-#if ! defined(uint32_t) || ! defined(uint8_t)
-#include <stdint.h>
-#endif
-
-#define P(v,b,p) ((v & ((1 << b) -1)) << p)
-#define G(v,b,p) ((v >> p) & ((1 << b) -1))
-
-class cUserTransponder {
-  private:
-  uint32_t data[3];
-  public:
-  ~cUserTransponder() { };
-  cUserTransponder(uint32_t * Data) {
-     data[0] = *(Data + 0);
-     data[1] = *(Data + 1);
-     data[2] = *(Data + 2);
-     };
-
-  // DVB-T 
-  cUserTransponder(uint8_t id, uint32_t frequency, uint8_t modulation, uint8_t fec_hp, uint8_t fec_lp, uint8_t bw,
-                   uint8_t priority, uint8_t hierarchy, uint8_t guard, uint8_t tm, uint8_t inversion, uint8_t use_nit) {
-     data[0] = P(id,9,23) | P(frequency,21,2);
-     data[1] = P(fec_hp,4,8) | P(fec_lp,4,4) | P(modulation,4,0);
-     data[2] = P(bw,2,14) | P(priority,1,13) | P(hierarchy,4,9) | P(guard,2,7) | P(tm,2,5) | P(inversion,1,4) | P(use_nit,1,3);
-     };
-
-  // DVB-C
-  cUserTransponder(uint8_t id, uint32_t frequency, uint32_t symbolrate, uint8_t modulation, uint8_t inversion, uint8_t use_nit) {
-     data[0] = P(id,9,23) | P(frequency,21,2);
-     data[1] = P(1,3,29) | P(symbolrate,17,12) | P(modulation,4,0);
-     data[2] = P(inversion,1,4) | P(use_nit,1,3);
-     };
-
-  // DVB-S 
-  cUserTransponder(uint8_t id, uint8_t system, uint32_t frequency, uint8_t polarisation, uint32_t symbolrate,
-                   uint8_t modulation, uint8_t fec, uint16_t orbit, uint8_t we_flag, uint8_t rolloff, uint8_t use_nit) { 
-     data[0] = P(id,9,23) | P(frequency,21,2) | P(polarisation,2,0);
-     data[1] = P(2,3,29) | P(symbolrate,17,12) | P(fec,4,8) | P(modulation,4,0);
-     data[2] = P(orbit,12,20) | P(we_flag,1,19) | P(rolloff,2,17) | P(system,1,16) | P(use_nit,1,3);
-     };
-
-  // ATSC
-  cUserTransponder(uint8_t id, uint32_t frequency, uint8_t modulation, uint8_t use_nit) {
-     data[0] = P(id,9,23) | P(frequency,21,2);
-     data[1] = P(5,3,29) | P(modulation,4,0);
-     data[2] = P(use_nit,1,3);
-     };
-
-  const uint32_t * Data(void) { return data; };
-  int Id(void)          { return G(data[0],9,23); };
-  int Frequency(void)   { return G(data[0],21,2); };
-  int Polarisation(void){ return G(data[0],2,0); };
-  int Type(void)        { return G(data[1],3,29); };
-  int Symbolrate(void)  { return G(data[1],17,12); };
-  int FecHP(void)       { return G(data[1],4,8); };
-  int FecLP(void)       { return G(data[1],4,4); };
-  int Modulation(void)  { return G(data[1],4,0); };
-  int Orbit(void)       { return G(data[2],12,20); };
-  int EastFlag(void)    { return G(data[2],1,19); };
-  int Rolloff(void)     { return G(data[2],2,17); };
-  int Satsystem(void)   { return G(data[2],1,16) + 5; };
-  int Bandwidth(void)   { return (8 - G(data[2],2,14)) * (int) 1E6; };
-  int Priority(void)    { return G(data[2],1,13); };
-  int Hierarchy(void)   { return G(data[2],4,9); };
-  int Guard(void)       { return G(data[2],2,7); };
-  int Transmission(void){ return G(data[2],2,5); };
-  int Inversion(void)   { return G(data[2],1,4); };
-  int UseNit(void)      { return G(data[2],1,3); };
-  bool IsTerr(void)     { return IsType(0); };
-  bool IsCable(void)    { return IsType(1); };
-  bool IsSat(void)      { return IsType(2); };
-  bool IsAtsc(void)     { return IsType(5); };
-  bool IsType(int type) { return type == Type(); };
-};
-
-
-} /* end of namespace, dont touch */
-#endif
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/tools/hash.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/tools/hash.c
deleted file mode 100644 (file)
index 65f746f..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 1986 Gary S. Brown (CRC32 code)
- *      Copyright (C) 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <vdr/tools.h>
-#include <vdr/channels.h>
-#include "xvdr/xvdrchannels.h"
-
-#include "hash.h"
-
-static uint32_t crc32_tab[] = {
-       0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
-       0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
-       0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
-       0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-       0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
-       0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
-       0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
-       0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-       0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
-       0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-       0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
-       0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-       0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
-       0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
-       0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
-       0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-       0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
-       0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
-       0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
-       0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-       0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
-       0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
-       0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
-       0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-       0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
-       0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
-       0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
-       0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-       0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
-       0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-       0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
-       0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-       0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
-       0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
-       0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
-       0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-       0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
-       0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
-       0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
-       0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-       0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
-       0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
-       0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
-};
-
-uint32_t crc32(const unsigned char *buf, size_t size)
-{
-       uint32_t crc = 0xFFFFFFFF;
-       const uint8_t *p = (uint8_t*)buf;
-
-       while (size--)
-               crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);
-
-       return (crc ^ ~0U) & 0x7FFFFFFF; // channeluid is signed
-}
-
-uint32_t CreateStringHash(const cString& string) {
-  const char* p = string;
-  int len = strlen(p);
-
-  return crc32((const unsigned char*)p, len);
-}
-
-uint32_t CreateChannelUID(const cChannel* channel) {
-  cString channelid = channel->GetChannelID().ToString();
-  return CreateStringHash(channelid);
-}
-
-const cChannel* FindChannelByUID(uint32_t channelUID) {
-  cChannel* result = NULL;
-  XVDRChannels.Lock(false);
-  cChannels *channels = XVDRChannels.Get();
-
-  // maybe we need to use a lookup table
-  for (cChannel *channel = channels->First(); channel; channel = channels->Next(channel)) {
-    cString channelid = channel->GetChannelID().ToString();
-    if(channelUID == CreateStringHash(channelid)) {
-      result = channel;
-      break;
-    }
-  }
-
-  XVDRChannels.Unlock();
-  return result;
-}
-
-uint32_t CreateTimerUID(const cTimer* timer) {
-  cString timerid = cString::sprintf("%s:%s:%04d:%04d:%s",
-      *timer->Channel()->GetChannelID().ToString(),
-      *timer->PrintDay(timer->Day(), timer->WeekDays(), true),
-      timer->Start(),
-      timer->Stop(),
-      timer->File());
-
-  return CreateStringHash(timerid);
-}
-
-cTimer* FindTimerByUID(uint32_t timerUID) {
-  int numTimers = Timers.Count();
-
-  for (int i = 0; i < numTimers; i++) {
-    cTimer* timer = Timers.Get(i);
-    if (!timer)
-      continue;
-
-    if(CreateTimerUID(timer) == timerUID) {
-      return timer;
-    }
-  }
-
-  return NULL;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/tools/hash.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/tools/hash.h
deleted file mode 100644 (file)
index 1a3f334..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 1986 Gary S. Brown (CRC32 code)
- *      Copyright (C) 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_HASH_H
-#define XVDR_HASH_H
-
-#include <stdint.h>
-#include <vdr/channels.h>
-#include <vdr/timers.h>
-
-uint32_t CreateChannelUID(const cChannel* channel);
-const cChannel* FindChannelByUID(uint32_t channelUID);
-
-uint32_t CreateTimerUID(const cTimer* channel);
-cTimer* FindTimerByUID(uint32_t timerUID);
-
-uint32_t CreateStringHash(const cString& string);
-
-#endif // XVDR_HASH_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/timerconflicts.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/timerconflicts.c
deleted file mode 100644 (file)
index 57a7c66..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2013 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <map>
-#include <set>
-
-#include <vdr/timers.h>
-#include <vdr/device.h>
-#include "config/config.h"
-#include "timerconflicts.h"
-#include "xvdrchannels.h"
-
-int CheckTimerConflicts(cTimer* timer) {
-  XVDRChannels.Lock(false);
-
-  // check for timer conflicts
-  DEBUGLOG("Checking conflicts for: %s", (const char*)timer->ToText(true));
-
-  // order active timers by starttime
-  std::map<time_t, cTimer*> timeline;
-  int numTimers = Timers.Count();
-  for (int i = 0; i < numTimers; i++)
-  {
-    cTimer* t = Timers.Get(i);
-
-    // same timer -> skip
-    if (!t || timer->Index() == i)
-      continue;
-
-    // timer not active -> skip
-    if(!(t->Flags() & tfActive))
-      continue;
-
-    // this one is earlier -> no match
-    if(t->StopTime() <= timer->StartTime())
-      continue;
-
-    // this one is later -> no match
-    if(t->StartTime() >= timer->StopTime())
-      continue;
-
-    timeline[t->StartTime()] = t;
-  }
-
-  std::set<int> transponders;
-  transponders.insert(timer->Channel()->Transponder()); // we also count ourself
-  cTimer* to_check = timer;
-
-  std::map<time_t, cTimer*>::iterator i;
-  for (i = timeline.begin(); i != timeline.end(); i++) {
-    cTimer* t = i->second;
-
-    // this one is earlier -> no match
-    if(t->StopTime() <= to_check->StartTime())
-      continue;
-
-    // this one is later -> no match
-    if(t->StartTime() >= to_check->StopTime())
-      continue;
-
-    // same transponder -> no conflict
-    if(t->Channel()->Transponder() == to_check->Channel()->Transponder())
-      continue;
-
-    // different source -> no conflict
-    if(t->Channel()->Source() != to_check->Channel()->Source())
-      continue;
-
-    DEBUGLOG("Possible conflict: %s", (const char*)t->ToText(true));
-    transponders.insert(t->Channel()->Transponder());
-
-    // now check conflicting timer
-    to_check = t;
-  }
-
-  uint32_t number_of_devices_for_this_channel = 0;
-  for(int i = 0; i < cDevice::NumDevices(); i++) {
-    cDevice* device = cDevice::GetDevice(i);
-    if(device != NULL && device->ProvidesTransponder(timer->Channel()))
-      number_of_devices_for_this_channel++;
-  }
-
-  int cflags = 0;
-  if(transponders.size() > number_of_devices_for_this_channel) {
-    DEBUGLOG("ERROR - Not enough devices");
-    cflags += 2048;
-  }
-  else if(transponders.size() > 1) {
-    DEBUGLOG("Overlapping timers - Will record");
-    cflags += 1024;
-  }
-  else {
-    DEBUGLOG("No conflicts");
-  }
-
-  XVDRChannels.Unlock();
-
-  return cflags;
-}
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/timerconflicts.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/timerconflicts.h
deleted file mode 100644 (file)
index 4c298d2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2013 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#ifndef XVDR_TIMERCONFLICTS_H
-#define XVDR_TIMERCONFLICTS_H
-
-int CheckTimerConflicts(cTimer* timer);
-
-#endif // XVDR_TIMERCONFLICTS_H
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdr.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdr.c
deleted file mode 100644 (file)
index fb8454a..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <getopt.h>
-#include <vdr/plugin.h>
-#include "xvdr.h"
-
-cPluginXVDRServer::cPluginXVDRServer(void)
-{
-  Server = NULL;
-}
-
-cPluginXVDRServer::~cPluginXVDRServer()
-{
-  // Clean up after yourself!
-}
-
-const char *cPluginXVDRServer::CommandLineHelp(void)
-{
-    return "  -t n, --timeout=n      stream data timeout in seconds (default: 10)\n";
-}
-
-bool cPluginXVDRServer::ProcessArgs(int argc, char *argv[])
-{
-  // Implement command line argument processing here if applicable.
-  static struct option long_options[] = {
-       { "timeout",  required_argument, NULL, 't' },
-       { NULL,       no_argument,       NULL,  0  }
-     };
-
-  int c;
-
-  while ((c = getopt_long(argc, argv, "t:", long_options, NULL)) != -1) {
-        switch (c) {
-          case 't': if(optarg != NULL) XVDRServerConfig.stream_timeout = atoi(optarg);
-                    break;
-          default:  return false;
-          }
-        }
-  return true;
-}
-
-bool cPluginXVDRServer::Initialize(void)
-{
-  // Initialize any background activities the plugin shall perform.
-  XVDRServerConfig.ConfigDirectory = ConfigDirectory(PLUGIN_NAME_I18N);
-#if VDRVERSNUM >= 10730
-  XVDRServerConfig.CacheDirectory = CacheDirectory(PLUGIN_NAME_I18N);
-#else
-  XVDRServerConfig.CacheDirectory = ConfigDirectory(PLUGIN_NAME_I18N);
-#endif
-  XVDRServerConfig.Load();
-  return true;
-}
-
-bool cPluginXVDRServer::Start(void)
-{
-  Server = new cXVDRServer(XVDRServerConfig.listen_port);
-
-  return true;
-}
-
-void cPluginXVDRServer::Stop(void)
-{
-  delete Server;
-  Server = NULL;
-}
-
-void cPluginXVDRServer::Housekeeping(void)
-{
-  // Perform any cleanup or other regular tasks.
-}
-
-void cPluginXVDRServer::MainThreadHook(void)
-{
-  // Perform actions in the context of the main program thread.
-  // WARNING: Use with great care - see PLUGINS.html!
-}
-
-cString cPluginXVDRServer::Active(void)
-{
-  // Return a message string if shutdown should be postponed
-  return NULL;
-}
-
-time_t cPluginXVDRServer::WakeupTime(void)
-{
-  // Return custom wakeup time for shutdown script
-  return 0;
-}
-
-cMenuSetupPage *cPluginXVDRServer::SetupMenu(void)
-{
-  // Return a setup menu in case the plugin supports one.
-  return NULL;
-}
-
-bool cPluginXVDRServer::SetupParse(const char *Name, const char *Value)
-{
-  // Parse your own setup parameters and store their values.
-  return false;
-}
-
-bool cPluginXVDRServer::Service(const char *Id, void *Data)
-{
-  // Handle custom service requests from other plugins
-  return false;
-}
-
-const char **cPluginXVDRServer::SVDRPHelpPages(void)
-{
-  // Return help text for SVDRP commands this plugin implements
-  return NULL;
-}
-
-cString cPluginXVDRServer::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
-{
-  // Process SVDRP commands this plugin implements
-  return NULL;
-}
-
-VDRPLUGINCREATOR(cPluginXVDRServer); // Don't touch this!
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdr.h b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdr.h
deleted file mode 100644 (file)
index 8c0e3af..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *      vdr-plugin-xvdr - XVDR server plugin for VDR
- *
- *      Copyright (C) 2010 Alwin Esch (Team XBMC)
- *      Copyright (C) 2010, 2011 Alexander Pipelka
- *
- *      https://github.com/pipelka/vdr-plugin-xvdr
- *
- *  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 2, 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, write to the Free Software
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- *  http://www.gnu.org/copyleft/gpl.html
- *
- */
-
-#include <getopt.h>
-#include <vdr/plugin.h>
-#include "xvdrserver.h"
-
-static const char *VERSION        = "0.9.9";
-static const char *DESCRIPTION    = "XVDR Server";
-
-class cPluginXVDRServer : public cPlugin {
-private:
-  cXVDRServer *Server;
-
-public:
-  cPluginXVDRServer(void);
-  virtual ~cPluginXVDRServer();
-  virtual const char *Version(void) { return VERSION; }
-  virtual const char *Description(void) { return DESCRIPTION; }
-  virtual const char *CommandLineHelp(void);
-  virtual bool ProcessArgs(int argc, char *argv[]);
-  virtual bool Initialize(void);
-  virtual bool Start(void);
-  virtual void Stop(void);
-  virtual void Housekeeping(void);
-  virtual void MainThreadHook(void);
-  virtual cString Active(void);
-  virtual time_t WakeupTime(void);
-  virtual const char *MainMenuEntry(void) { return NULL; }
-  virtual cOsdObject *MainMenuAction(void) { return NULL; }
-  virtual cMenuSetupPage *SetupMenu(void);
-  virtual bool SetupParse(const char *Name, const char *Value);
-  virtual bool Service(const char *Id, void *Data = NULL);
-  virtual const char **SVDRPHelpPages(void);
-  virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
-};
-
diff --git a/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrchannels.c b/v/vdr-plugin-xvdr-0.9.9.git20150814/src/xvdr/xvdrchannels.c
deleted file mode 100644 (file)
index cd6f259..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-#include <sys/wait.h>
-#include "config/config.h"
-#include "tools/hash.h"
-#include "vdr/tools.h"
-#include "xvdrchannels.h"
-
-cXVDRChannels XVDRChannels;
-
-cXVDRChannels::cXVDRChannels() {
-       Channels.Lock(false);
-       channels = Reorder(&Channels);
-       channelsHash = ChannelsHash(&Channels);
-       Channels.Unlock();
-}
-
-uint64_t cXVDRChannels::CheckUpdates() {
-       cRwLock::Lock(false);
-       Channels.Lock(false);
-
-       cChannels *oldChannels = channels;
-       uint64_t oldHash = channelsHash;
-       uint64_t newHash = ChannelsHash(&Channels);
-
-       if (newHash == oldHash) {
-               Channels.Unlock();
-               cRwLock::Unlock();
-               return oldHash;
-       }
-
-       cRwLock::Unlock();<