gpac (1.0.1+dfsg1-4+deb11u2) bullseye-security; urgency=medium
authorAron Xu <aron@debian.org>
Tue, 23 May 2023 11:53:25 +0000 (12:53 +0100)
committerAron Xu <aron@debian.org>
Tue, 23 May 2023 11:53:25 +0000 (12:53 +0100)
  * Fix multiple security issues

[dgit import unpatched gpac 1.0.1+dfsg1-4+deb11u2]

145 files changed:
1  2 
debian/README.source
debian/changelog
debian/control
debian/copyright
debian/copyright-scan-patterns.yml
debian/dirs
debian/docs
debian/fill.copyright.blanks.yml
debian/fix.scanned.copyright
debian/gbp.conf
debian/gpac-doc.docs
debian/gpac-doc.install
debian/gpac-get-orig-source
debian/gpac-modules-base.install
debian/gpac.docs
debian/gpac.install
debian/gpac.lintian-overrides
debian/gpac.manpages
debian/libgpac-dev.install
debian/libgpac10.install
debian/libgpac10.symbols
debian/not-installed
debian/patches/CVE-2020-35979.patch
debian/patches/CVE-2020-35980.patch
debian/patches/CVE-2020-35981.patch
debian/patches/CVE-2020-35982.patch
debian/patches/CVE-2021-28300.patch
debian/patches/CVE-2021-29279.patch
debian/patches/CVE-2021-30014_CVE-2021-30020_CVE-2021-30022.patch
debian/patches/CVE-2021-30015.patch
debian/patches/CVE-2021-30019.patch
debian/patches/CVE-2021-30199.patch
debian/patches/CVE-2021-31255.patch
debian/patches/CVE-2021-31256.patch
debian/patches/CVE-2021-31257.patch
debian/patches/CVE-2021-31258.patch
debian/patches/CVE-2021-31260.patch
debian/patches/CVE-2021-31261.patch
debian/patches/CVE-2021-31262.patch
debian/patches/CVE-2021-33361.patch
debian/patches/CVE-2021-33363.patch
debian/patches/CVE-2021-33364.patch
debian/patches/CVE-2021-33365.patch
debian/patches/CVE-2021-33366.patch
debian/patches/CVE-2021-36412.patch
debian/patches/CVE-2021-36414.patch
debian/patches/CVE-2021-36417.patch
debian/patches/CVE-2021-4043.patch
debian/patches/CVE-2021-40559.patch
debian/patches/CVE-2021-40562.patch
debian/patches/CVE-2021-40563.patch
debian/patches/CVE-2021-40564.patch
debian/patches/CVE-2021-40565.patch
debian/patches/CVE-2021-40566.patch
debian/patches/CVE-2021-40567.patch
debian/patches/CVE-2021-40568.patch
debian/patches/CVE-2021-40569.patch
debian/patches/CVE-2021-40570.patch
debian/patches/CVE-2021-40571.patch
debian/patches/CVE-2021-40572.patch
debian/patches/CVE-2021-40574.patch
debian/patches/CVE-2021-40575.patch
debian/patches/CVE-2021-40576_40606_40609.patch
debian/patches/CVE-2021-40592.patch
debian/patches/CVE-2021-40607.patch
debian/patches/CVE-2021-40608.patch
debian/patches/CVE-2021-40944.patch
debian/patches/CVE-2021-41456.patch
debian/patches/CVE-2021-41457.patch
debian/patches/CVE-2021-41459.patch
debian/patches/CVE-2021-45262.patch
debian/patches/CVE-2021-45263.patch
debian/patches/CVE-2021-45267.patch
debian/patches/CVE-2021-45291.patch
debian/patches/CVE-2021-45292.patch
debian/patches/CVE-2021-45297.patch
debian/patches/CVE-2021-45760.patch
debian/patches/CVE-2021-45762.patch
debian/patches/CVE-2021-45763.patch
debian/patches/CVE-2021-45764.patch
debian/patches/CVE-2021-45767.patch
debian/patches/CVE-2021-45831.patch
debian/patches/CVE-2021-46038to46046_46049_46051.patch
debian/patches/CVE-2021-46047.patch
debian/patches/CVE-2022-1035.patch
debian/patches/CVE-2022-1222.patch
debian/patches/CVE-2022-1441.patch
debian/patches/CVE-2022-1795.patch
debian/patches/CVE-2022-2454.patch
debian/patches/CVE-2022-24574.patch
debian/patches/CVE-2022-24577.patch
debian/patches/CVE-2022-24578.patch
debian/patches/CVE-2022-26967_partial.patch
debian/patches/CVE-2022-27145.patch
debian/patches/CVE-2022-27147.patch
debian/patches/CVE-2022-29537.patch
debian/patches/CVE-2022-3222.patch
debian/patches/CVE-2022-36190_36191.patch
debian/patches/CVE-2022-38530.patch
debian/patches/CVE-2022-3957.patch
debian/patches/CVE-2022-4202.patch
debian/patches/CVE-2022-43255.patch
debian/patches/CVE-2022-45202.patch
debian/patches/CVE-2022-45283.patch
debian/patches/CVE-2022-45343.patch
debian/patches/CVE-2022-47086.patch
debian/patches/CVE-2022-47091.patch
debian/patches/CVE-2022-47094.patch
debian/patches/CVE-2022-47095.patch
debian/patches/CVE-2022-47657.patch
debian/patches/CVE-2022-47659.patch
debian/patches/CVE-2022-47660.patch
debian/patches/CVE-2022-47661.patch
debian/patches/CVE-2022-47662.patch
debian/patches/CVE-2022-47663.patch
debian/patches/CVE-2023-0770.patch
debian/patches/CVE-2023-0818.patch
debian/patches/CVE-2023-0819.patch
debian/patches/CVE-2023-0866.patch
debian/patches/CVE-2023-1448.patch
debian/patches/CVE-2023-1449.patch
debian/patches/CVE-2023-1452.patch
debian/patches/CVE-2023-1654.patch
debian/patches/CVE-2023-23143.patch
debian/patches/CVE-2023-23144.patch
debian/patches/CVE-2023-23145.patch
debian/patches/CVE-2023-2837.patch
debian/patches/CVE-2023-2838.patch
debian/patches/CVE-2023-2839.patch
debian/patches/CVE-2023-2840.patch
debian/patches/dont-err-build-on-uknown-system.patch
debian/patches/gcc-optflags.patch
debian/patches/series
debian/patches/talos-2021-1297-2.patch
debian/patches/talos-2021-1297.patch
debian/patches/talos-2021-1298.patch
debian/patches/talos-2021-1299.patch
debian/repack.local
debian/repack.sh
debian/repack.stub
debian/rules
debian/source/format
debian/source/lintian-overrides
debian/upstream/metadata
debian/watch

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c018ce6eaec9723c059a4a1025a11ccbd376ca0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++This package uses quilt for patching. Refer to the quilt readme at
++/usr/share/doc/quilt/README.source.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e8d2390fe2a73d8be6f37678e035e90a845b7c6a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,459 @@@
++gpac (1.0.1+dfsg1-4+deb11u2) bullseye-security; urgency=medium
++
++  * Fix multiple security issues
++
++ -- Aron Xu <aron@debian.org>  Tue, 23 May 2023 19:53:25 +0800
++
++gpac (1.0.1+dfsg1-4+deb11u1) bullseye-security; urgency=medium
++
++  * Fix multiple security issues
++    - CVE-2021-21861
++    - CVE-2021-21860
++    - CVE-2021-21859
++    - CVE-2021-21858
++    - CVE-2021-21857
++    - CVE-2021-21855
++    - CVE-2021-21854
++    - CVE-2021-21853
++    - CVE-2021-21852
++    - CVE-2021-21850
++    - CVE-2021-21849
++    - CVE-2021-21848
++    - CVE-2021-21847
++    - CVE-2021-21846
++    - CVE-2021-21845
++    - CVE-2021-21844
++    - CVE-2021-21843
++    - CVE-2021-21842
++    - CVE-2021-21841
++    - CVE-2021-21840
++    - CVE-2021-21839
++    - CVE-2021-21838
++    - CVE-2021-21837
++    - CVE-2021-21836
++    - CVE-2021-21834
++
++ -- Moritz Mรผhlenhoff <jmm@debian.org>  Fri, 20 Aug 2021 00:03:29 +0200
++
++gpac (1.0.1+dfsg1-4) unstable; urgency=medium
++
++  [ Moritz Muehlenhoff ]
++  * Cherrypicked fixes for multiple security issues:
++    (Closes: #987280, #987323, #987374)
++    - CVE-2021-30014/CVE-2021-30020/CVE-2021-30022
++    - CVE-2020-35979
++    - CVE-2020-35981
++    - CVE-2020-35982
++    - CVE-2021-28300
++    - CVE-2021-29279
++    - CVE-2021-31255
++    - CVE-2021-31256
++    - CVE-2021-31261
++    - CVE-2021-30015
++    - CVE-2021-30019
++    - CVE-2021-30199
++    - CVE-2021-31257
++    - CVE-2021-31258
++    - CVE-2021-31260
++    - CVE-2021-31262
++
++  [ Reinhard Tartler ]
++  * upload to unstable
++
++ -- Reinhard Tartler <siretart@tauware.de>  Mon, 24 May 2021 21:09:10 -0400
++
++gpac (1.0.1+dfsg1-3) unstable; urgency=medium
++
++  * Clean share/gpac.desktop (Closes: #975779)
++  * Bugfix: FTBFS on armel: missing -latomic (Closes: #975433)
++
++ -- Reinhard Tartler <siretart@tauware.de>  Wed, 25 Nov 2020 15:43:00 -0500
++
++gpac (1.0.1+dfsg1-2) unstable; urgency=medium
++
++  * Upload to unstable
++
++ -- Reinhard Tartler <siretart@tauware.de>  Sat, 21 Nov 2020 17:13:44 -0500
++
++gpac (1.0.1+dfsg1-1) experimental; urgency=medium
++
++  * New upstream version
++    - soname bump to libgpac10
++    - Fixes lots of security issues, closes: #972053
++       CVE-2019-20161 CVE-2019-20162 CVE-2019-20163 CVE-2019-20165
++       CVE-2019-20170 CVE-2019-20208 CVE-2019-20628 CVE-2019-20629
++       CVE-2019-20630 CVE-2019-20631 CVE-2019-20632 CVE-2020-11558
++       CVE-2020-6630 CVE-2020-6631
++    - Fixes CVE-2018-21015 CVE-2018-21016, closes: #940882
++    - Fixes CVE-2019-13618, closes: #932242
++    - Fixes CVE-2019-12481 CVE-2019-12482 CVE-2019-12483, closes: #931088
++    - Fix in manpage, closes: #782093
++  * Rewritten debian/copyright with help of 'cme update dpkg-copyright'
++
++ -- Reinhard Tartler <siretart@tauware.de>  Tue, 17 Nov 2020 18:36:39 -0500
++
++gpac (0.7.1+dfsg1-4) unstable; urgency=medium
++
++  [ Debian Janitor ]
++  * Use secure URI in Homepage field.
++  * Bump debhelper from old 9 to 10.
++  * Set upstream metadata fields: Bug-Database, Bug-Submit, Repository,
++    Repository-Browse.
++  * Drop unnecessary dh arguments: --parallel
++
++  [ Reinhard Tartler ]
++  * upload to unstable
++  * libgpac7.symbols: Add Build-Depends-Package field
++  * debian/changelog: cleanups
++  * Fix FTCBFS: Pass --cross-prefix to ./configure, Closes: #945200
++    Thanks to Helmut Grohne <helmut@subdivi.de> for providing the patch
++
++ -- Reinhard Tartler <siretart@tauware.de>  Fri, 13 Nov 2020 21:27:34 -0500
++
++gpac (0.7.1+dfsg1-3) experimental; urgency=medium
++
++  * Merge security patches from unstable
++    Closes: #926961, Closes: #926963
++
++ -- Reinhard Tartler <siretart@tauware.de>  Sat, 13 Apr 2019 16:52:04 -0400
++
++gpac (0.7.1+dfsg1-2) experimental; urgency=medium
++
++  * Upload to experimental and mark the previous upload as
++    UNRELEASED. It was deemed unappropriate for this stage of the
++    Debian Release cycle.
++
++ -- Reinhard Tartler <siretart@tauware.de>  Sun, 07 Apr 2019 12:19:28 -0400
++
++gpac (0.7.1+dfsg1-1) UNRELEASED; urgency=medium
++
++  [ Balint Reczey ]
++  * Remove myself from Uploaders
++
++  [ Reinhard Tartler ]
++  * Update exclude lists
++  * New upstream version 0.7.1+dfsg1 (Closes: #817194)
++  * Add bugfix for CVE-2018-7752 (Closes: #892526)
++  * Add patch for CVE-2018-20760, CVE-2018-20762, CVE-2018-20763
++    (CVE-2018-20761 does not need addressing) (Closes: #921969)
++  * add patch for CVE-2018-13005, CVE-2018-13006 (Closes: #902782)
++
++ -- Reinhard Tartler <siretart@tauware.de>  Fri, 15 Feb 2019 06:43:22 -0500
++
++gpac (0.5.2-426-gc5ad4e4+dfsg5-5) unstable; urgency=medium
++
++  [ Moritz Muehlenhoff ]
++  * Bug fix: "CVE-2019-11222: Buffer-overflow in gf_bin128_parse", thanks
++    to Salvatore Bonaccorso (Closes: #926961).
++  * Bug fix: "CVE-2019-11221: buffer-overflow issue in gf_import_message()
++    in media_import.c", thanks to Salvatore Bonaccorso (Closes: #926963).
++
++ -- Reinhard Tartler <siretart@tauware.de>  Sat, 13 Apr 2019 16:41:15 -0400
++
++gpac (0.5.2-426-gc5ad4e4+dfsg5-4.1) unstable; urgency=medium
++
++  * CVE-2018-7752 (Closes: #892526)
++  * CVE-2018-13005, CVE-2018-13006 (Closes: #902782)
++  * CVE-2018-20760, CVE-2018-20761, CVE-2018-20762, CVE-2018-20763
++    (Closes: #921969)
++
++ -- Moritz Muehlenhoff <jmm@debian.org>  Mon, 01 Apr 2019 23:07:02 +0200
++
++gpac (0.5.2-426-gc5ad4e4+dfsg5-4) unstable; urgency=medium
++
++  * Team upload.
++
++  [ Ondล™ej Novรฝ ]
++  * d/copyright: Use https protocol in Format field.
++  * d/control: Set Vcs-* to salsa.debian.org.
++  * d/changelog: Remove trailing whitespaces.
++
++  [ Felipe Sateler ]
++  * Change maintainer address to debian-multimedia@lists.debian.org.
++
++  [ James Cowgill ]
++  * d/patches: Add patch to fix FTBFS with FFmpeg 4.0. (Closes: #888343)
++
++ -- James Cowgill <jcowgill@debian.org>  Fri, 25 May 2018 14:56:56 +0100
++
++gpac (0.5.2-426-gc5ad4e4+dfsg5-3) unstable; urgency=medium
++
++  * Team upload.
++  * Drop OpenJPEG support. (Closes: #826814)
++  * Enable verbose building.
++  * Bump standards to 3.9.8.
++  * Update debian/watch now that upstream moved to github.
++
++ -- James Cowgill <jcowgill@debian.org>  Thu, 04 Aug 2016 22:29:39 +0100
++
++gpac (0.5.2-426-gc5ad4e4+dfsg5-2) unstable; urgency=medium
++
++  * Team upload.
++
++  [ Andreas Cadhalpun ]
++  * Fix build with ffmpeg 3.0. (Closes: #803821)
++
++  [ Sebastian Ramacher ]
++  * Migrate to automatic dbg packages
++  * debian/control:
++    - Bump Standards-Version.
++    - Update Vcs-*.
++    - Drop obsolete Breaks+Replaces.
++
++  [ Steven Chamberlain ]
++  * Update symbols for hurd and kfreebsd. (Closes: #815431)
++
++ -- Sebastian Ramacher <sramacher@debian.org>  Wed, 09 Mar 2016 23:21:23 +0100
++
++gpac (0.5.2-426-gc5ad4e4+dfsg5-1) unstable; urgency=medium
++
++  [ Balint Reczey ]
++  * Rename library package to libgpac4 (Closes: #791490)
++  * Convert to multiarch (Closes: #791492)
++  * Bump standards version
++  * Add symbols file
++  * Pass CFLAGS and LDFLAGS to ./configure
++  * Remove space from license names
++  * Drop all include files in extra_lib from upstream source
++  * Fix upstream version number's dfsg postfix
++  * Fix symbols file for libgpac4
++
++  [ Alessio Treglia ]
++  * Fix unmanaged SONAME bump. Add Breaks/Replaces fields for a smooth
++    libgpac3 -> libgpac4 migration.
++  * Multiarchify libgpac-dbg
++  * Fix few lintian warnings concerning debian/copyright.
++
++ -- Alessio Treglia <alessio@debian.org>  Wed, 08 Jul 2015 15:15:55 +0100
++
++gpac (0.5.2-426-gc5ad4e4~dfsg4-1) unstable; urgency=medium
++
++  [ Alessio Treglia ]
++  * New upstream version 0.5.2-426-gc5ad4e4 (Closes: #776301, #783879)
++  * Update repacking mechanism.
++    The project moved to github.
++  * Update repack.sh
++  * Update compression in gbp.conf
++  * Refresh patches
++
++  [ Balint Reczey ]
++  * Refresh remaining patches
++  * Update passing revision to configure
++  * Don't fail the build intentionally on unknown systems
++  * Skip test using .swf file
++  * List removed files in copyright file
++  * Remove sourceless .swf from original tarball
++  * Add myself to uploaders
++
++ -- Balint Reczey <balint@balintreczey.hu>  Sun, 28 Jun 2015 11:44:32 -0500
++
++gpac (0.5.0+svn5324~dfsg1-1) unstable; urgency=medium
++
++  * New upstream snapshot.
++  * Refresh patches.
++  * debian/copyright:
++    - Improve copyright and licensing information on src/utils/unicode.c.
++      Thanks to bastien ROUCARIES for pointing this out. (Closes: #754732)
++    - Update debian/* copyright holders's information.
++    - Mention debian/copyright in debian/source/lintian-overrides to
++      avoid lintian's license-problem-non-free-RFC error.
++
++ -- Alessio Treglia <alessio@debian.org>  Thu, 31 Jul 2014 14:13:58 +0100
++
++gpac (0.5.0+svn5294~dfsg1-1) unstable; urgency=low
++
++  * New upstream snapshot.
++  * Refresh patches.
++
++ -- Alessio Treglia <alessio@debian.org>  Tue, 08 Jul 2014 13:04:26 +0100
++
++gpac (0.5.0+svn5194~dfsg1-4) unstable; urgency=low
++
++  * Drop build-dep on libxmlrpc-c3-dev.
++
++ -- Alessio Treglia <alessio@debian.org>  Mon, 07 Jul 2014 16:41:09 +0100
++
++gpac (0.5.0+svn5194~dfsg1-3) unstable; urgency=low
++
++  * Removed Andres Meja from Uploaders list. Thanks Andres for your
++    contributions on the gpac package. Closes: 743529
++  * Removed unused BD on libwxgtk2.8-dev. Thanks to Olly Betts
++    <olly@survex.com> for pointing this out. Closes: #748715
++
++ -- Reinhard Tartler <siretart@tauware.de>  Thu, 29 May 2014 19:57:10 -0400
++
++gpac (0.5.0+svn5194~dfsg1-2) unstable; urgency=low
++
++  * Upload to unstable
++
++ -- Reinhard Tartler <siretart@tauware.de>  Sun, 11 May 2014 19:00:36 -0400
++
++gpac (0.5.0+svn5194~dfsg1-1) experimental; urgency=low
++
++  * New upstream version 0.5.0+svn5194~dfsg:
++    - now decodes 10bit HEVC video
++  * Add patch to export gf_isom_set_pixel_aspect_ratio. This allows x264
++    to link dynamically against libgpac.so.3
++  * Refresh patches
++  * Upload to unstable
++
++ -- Reinhard Tartler <siretart@tauware.de>  Sun, 06 Apr 2014 12:11:08 -0400
++
++gpac (0.5.0+svn5104~dfsg1-1) experimental; urgency=low
++
++  * New  upstream version 0.5.0+svn5104~dfsg1:
++    - src/utils/sha1.c is relicensed under LGPLv2.1, Closes: #730759
++  * Don't install modules in multi-arch directories, Closes: #730497
++  * Add libusb-1.0.0-dev headers because libfreenect requires this
++  * Fix install rule
++  * Follow upstream soname bump
++    - Drop the symbols file for now until it has been revised thourougly
++  * Let binaries produce the correct svn revision
++  * Refresh patches
++  * Patch and build against libav10, Closes: #739321
++  * Bump standards version, no changes necessary
++
++ -- Reinhard Tartler <siretart@tauware.de>  Sat, 22 Feb 2014 18:15:00 +0000
++
++gpac (0.5.0+svn4288~dfsg1-4) unstable; urgency=low
++
++  * Compile with libfreenect support.
++
++ -- Alessio Treglia <alessio@debian.org>  Sun, 06 Oct 2013 21:53:29 +0100
++
++gpac (0.5.0+svn4288~dfsg1-3) unstable; urgency=low
++
++  * Do not fail if dh_auto_clean returns some value different
++    from 0. (Closes: #725541)
++
++ -- Alessio Treglia <alessio@debian.org>  Sun, 06 Oct 2013 21:43:12 +0100
++
++gpac (0.5.0+svn4288~dfsg1-2) unstable; urgency=low
++
++  * Upload to unstable
++
++ -- Reinhard Tartler <siretart@tauware.de>  Thu, 15 Aug 2013 18:05:38 +0200
++
++gpac (0.5.0+svn4288~dfsg1-1) experimental; urgency=low
++
++  [ Alessio Treglia ]
++  * New upstream snapshot.
++  * Refresh patches.
++  * Update symbols.
++  * Fix Homepage URL. (Closes: #688063)
++  * Set get-orig-source back to retrieve sources from SVN.
++  * Strip libav stuff out of the tarball, bump DFSG versioning.
++  * Don't remove include/gpac/version.h
++  * Overwriting include/gpac/version.h is no longer needed as
++    buildsystem works now. Upstream's buildsystem has been fixed
++    so there is no need to overwrite include/gpac/version.h anymore.
++  * Bump Standards.
++
++  [ Reinhard Tartler ]
++  * Build against libav 9.
++
++ -- Alessio Treglia <alessio@debian.org>  Wed, 30 Jan 2013 14:41:46 +0000
++
++gpac (0.5.0~dfsg0-1) unstable; urgency=low
++
++  * New stable release.
++  * debian/{rules,watch}:
++    - Download new stable releases from upstream's website.
++  * Refresh patches.
++
++ -- Alessio Treglia <alessio@debian.org>  Sun, 27 May 2012 11:25:44 +0200
++
++gpac (0.4.5+svn4035~dfsg0-1) unstable; urgency=low
++
++  * New upstream snapshot.
++  * Small improvements to debian/watch.
++  * debian/copyright: Group files by License, try to better organize
++    stanzas.
++
++ -- Alessio Treglia <alessio@debian.org>  Tue, 15 May 2012 19:37:01 +0200
++
++gpac (0.4.5+svn4019~dfsg0-3) unstable; urgency=low
++
++  * Move the header <gpac/configuration.h> into the multiarch
++    path. (Closes: #669999)
++
++ -- Alessio Treglia <alessio@debian.org>  Mon, 23 Apr 2012 10:10:10 +0200
++
++gpac (0.4.5+svn4019~dfsg0-2) unstable; urgency=low
++
++  * Upload to unstable.
++  * Blacklist gf_dvb_get_freq_from_url on non-Linux architectures.
++
++ -- Alessio Treglia <alessio@debian.org>  Fri, 20 Apr 2012 15:11:23 +0200
++
++gpac (0.4.5+svn4019~dfsg0-1) experimental; urgency=low
++
++  * New upstream snapshot.
++  * Add symbols file, ABI should be stable now.
++
++ -- Alessio Treglia <alessio@debian.org>  Fri, 20 Apr 2012 12:36:11 +0200
++
++gpac (0.4.5+svn4002~dfsg0-1) experimental; urgency=low
++
++  * Merge with upstream snapshot svn4002.
++  * Bump SONAME.
++
++ -- Alessio Treglia <alessio@debian.org>  Fri, 06 Apr 2012 11:00:34 +0200
++
++gpac (0.4.5+svn3950~dfsg0-1) experimental; urgency=low
++
++  * Merge new upstream snapshot.
++  * Update repackaging:
++    - Include modules/widgetman/*, which are now dual-licensed.
++    - Strip more unneeded code.
++  * Drop {dfsg,soname-fix}.patch patches, not needed anymore.
++  * Refresh patches.
++  * Correct team's name.
++  * Update debian/copyright.
++  * Bump debhelper requirement.
++  * Bump Standards.
++
++ -- Alessio Treglia <alessio@debian.org>  Tue, 06 Mar 2012 23:52:07 +0100
++
++gpac (0.4.5+svn3912~dfsg1-1) experimental; urgency=low
++
++  * Merge upstream latest nightly build.
++  * Refresh patches.
++
++ -- Alessio Treglia <alessio@debian.org>  Sat, 11 Feb 2012 18:46:42 +0100
++
++gpac (0.4.5+svn3462~dfsg0-1) unstable; urgency=low
++
++  * Merge upstream SVN snapshot svn3462:
++    - DASH: SPTS don't need '-dash-ts-prog' option (+doc added)
++    - support in the player for BaseURL as source as specified in
++      latest draft and generated by MP4Box
++    - Fixed bug in edit list rewrite when concatenating
++    - Added simple osd module for perf monitoring (cpu/mem/fps)
++    - Fixed some crashes when destroying objects/services before their
++      creation is completed (stress mode)
++    - Fixed event firing for secondary scenes and
++      exported createVRMLfromString
++    - Only notify fractionChanged when it actually changes
++    - Commented full AAC file scan for duration
++    - Made DX module store its YUV config (speeds up startup)
++    - Added option to avoid unloading modules
++    - use gf_esd_get_textual_description() instead of (incomplete) switches
++    - Fixed UPnP detection and removed extension loading
++  * Drop xulrunner-dev, gpac doesn't build against it.
++  * Revise repackaging and debian/rules' get-orig-source target.
++  * Refresh patches.
++  * Configure with --enable-debug.
++  * Add -O2 to CFLAGS, use -O0 when optimizations are disabled.
++  * Implement DEB_BUILD_OPTIONS' noopt flag.
++  * Install modules in multiarch path.
++  * Split gpac and install modules into new gpac-modules-base package.
++  * Add -DBG packages.
++
++ -- Alessio Treglia <alessio@debian.org>  Sat, 11 Feb 2012 17:35:15 +0100
++
++gpac (0.4.5+svn3450~dfsg3-1) unstable; urgency=low
++
++  * Initial release. (Closes: #636350)
++
++ -- Andres Mejia <amejia@debian.org>  Sat, 04 Feb 2012 00:12:54 +0100
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7c51d5598870e7267e557deeab7bf2d255dc0b50
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,97 @@@
++Source: gpac
++Section: graphics
++Priority: optional
++Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
++Uploaders:
++ Reinhard Tartler <siretart@tauware.de>,
++ Alessio Treglia <alessio@debian.org>
++Build-Depends:
++ debhelper-compat (= 13),
++ freeglut3-dev,
++ liba52-0.7.4-dev,
++ libasound2-dev,
++ libavcodec-dev (>= 6:10~),
++ libavdevice-dev (>= 6:10~),
++ libavformat-dev (>= 6:10~),
++ libavutil-dev (>= 6:10~),
++ libfaad-dev,
++ libfreenect-dev,
++ libfreetype6-dev,
++ libjack-dev,
++ libjpeg-dev,
++ libmad0-dev,
++ libogg-dev,
++ libpng-dev,
++ libpulse-dev,
++ libsdl1.2-dev,
++ libswscale-dev (>= 6:10~),
++ libtheora-dev,
++ libusb-1.0-0-dev,
++ libvorbis-dev,
++ libxml2-dev,
++ libxv-dev,
++ libxvidcore-dev
++Standards-Version: 3.9.8
++Homepage: https://gpac.wp.mines-telecom.fr/
++Vcs-Git: https://salsa.debian.org/multimedia-team/gpac.git
++Vcs-Browser: https://salsa.debian.org/multimedia-team/gpac
++
++Package: gpac
++Architecture: any
++Depends:
++ gpac-modules-base (= ${binary:Version}),
++ ${misc:Depends},
++ ${shlibs:Depends}
++Description: GPAC Project on Advanced Content - utilities
++ GPAC stands for GPAC Project on Advanced Content (a recursive acronym). It is
++ an Open Source multimedia framework for research and academic purposes. The
++ project covers different aspects of multimedia, with a focus on presentation
++ technologies (graphics, animation and interactivity).
++ .
++ This package contains the following utilities:
++   - MP4Client (content packaging)
++   - MP4Box
++
++Package: gpac-modules-base
++Architecture: any
++Multi-Arch: same
++Depends:
++ ${misc:Depends},
++ ${shlibs:Depends}
++Description: GPAC Project on Advanced Content - modules
++ GPAC stands for GPAC Project on Advanced Content (a recursive acronym). It is
++ an Open Source multimedia framework for research and academic purposes. The
++ project covers different aspects of multimedia, with a focus on presentation
++ technologies (graphics, animation and interactivity).
++ .
++ This package contains the GPAC modules.
++
++Package: libgpac10
++Architecture: any
++Section: libs
++Multi-Arch: same
++Depends:
++ ${misc:Depends},
++ ${shlibs:Depends}
++Description: GPAC Project on Advanced Content - shared libraries
++ GPAC stands for GPAC Project on Advanced Content (a recursive acronym). It is
++ an Open Source multimedia framework for research and academic purposes. The
++ project covers different aspects of multimedia, with a focus on presentation
++ technologies (graphics, animation and interactivity).
++ .
++ This package contains the shared libraries used at runtime in depending
++ packages.
++
++Package: libgpac-dev
++Architecture: any
++Section: libdevel
++Depends:
++ libgpac10 (= ${binary:Version}),
++ ${misc:Depends}
++Description: GPAC Project on Advanced Content - development files
++ GPAC stands for GPAC Project on Advanced Content (a recursive acronym). It is
++ an Open Source multimedia framework for research and academic purposes. The
++ project covers different aspects of multimedia, with a focus on presentation
++ technologies (graphics, animation and interactivity).
++ .
++ This package contains files that are used for application development.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c2528768cbbbb3af57f86e2f6e2c0457516c49d1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1893 @@@
++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
++Upstream-Name: gpac
++Upstream-Contact: jeanlf@users.sourceforge.net
++Source: http://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac
++Files-Excluded:
++ applications/deprecated
++ applications/generators/WebGLGen
++ applications/mp4box_android
++ applications/osmo4_android_studio
++ applications/osmo4_ios
++ applications/testapps
++ build
++ debian
++ extra_lib/include
++ modules/deprecated
++ share/deprecated
++
++Files: *
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2.1
++
++Files: Changelog
++  change_version.sh
++  check_revision.sh
++  mkdmg.sh
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: applications/*
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: applications/generators/*
++Copyright: Telecom ParisTech 2004-2012
++License: LGPL-2+
++
++Files: applications/generators/X3D/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: applications/gpac/*
++Copyright: Telecom ParisTech 2017-2020
++License: LGPL-2+
++
++Files: applications/mp4box/*
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: applications/mp4box/live.c
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: applications/mp4box/mp4box.h
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: applications/mp4box/wrapper.c
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: applications/mp4client/carbon_events.c
++Copyright: Telecom ParisTech 2005-2012
++License: LGPL-2+
++
++Files: applications/mp4client/main.c
++Copyright: Telecom ParisTech 2005-2020
++License: LGPL-2+
++
++Files: applications/testapps/atscdmx/*
++Copyright: Telecom ParisTech 2018
++License: LGPL-2+
++
++Files: applications/testapps/bmp4demux/main.c
++Copyright: Telecom ParisTech 2013
++License: LGPL-2+
++
++Files: applications/testapps/dmbrs/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: applications/testapps/fmp4demux/main.c
++Copyright: Telecom ParisTech 2013
++License: LGPL-2+
++
++Files: applications/testapps/hevcbench/*
++Copyright: Telecom ParisTech 2012
++License: LGPL-2+
++
++Files: applications/testapps/loadcompare/*
++Copyright: Telecom ParisTech 2006-2012
++License: LGPL-2+
++
++Files: applications/testapps/mpedemux/*
++Copyright: Telecom ParisTech 2007-2012
++License: LGPL-2+
++
++Files: applications/testapps/player_api/*
++Copyright: Romain Bouqueau 2015
++License: LGPL-2+
++
++Files: applications/testapps/segmp4demux/main.c
++Copyright: Telecom ParisTech 2013- / Romain Bouqueau 2013
++License: LGPL-2+
++
++Files: applications/testapps/svg2bifs/*
++Copyright: Telecom ParisTech 2006-2012
++License: LGPL-2+
++
++Files: applications/testapps/ts2hds/*
++Copyright: Romain Bouqueau 2012
++License: LGPL-2+
++
++Files: applications/testapps/ts2udp/*
++Copyright: Romain Bouqueau - GPAC Licensing 2016
++License: LGPL-2+
++
++Files: applications/testapps/udptsseg/*
++Copyright: Telecom ParisTech 2008-2012
++License: LGPL-2+
++
++Files: configure
++Copyright: 2003-2018, Telecom ParisTech
++License: LGPL-2+
++
++Files: debian/*
++Copyright:
++  2012-2014 Alessio Treglia <alessio@debian.org>
++  2009-2011 Andres Mejia <amejia@debian.org>
++  2009-2011 Reinhard Tartler <siretart@tauware.de>
++License: LGPL-2+
++
++Files: include/*
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: include/gpac/*
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: include/gpac/00_doxy.h
++Copyright: TELECOM ParisTech 2019
++License: LGPL-2+
++
++Files: include/gpac/Remotery.h
++Copyright: 2014-2018, Celtoys Ltd
++License: Apache-2.0
++
++Files: include/gpac/ait.h
++Copyright: TELECOM ParisTech 2011
++License: LGPL-2+
++
++Files: include/gpac/atsc.h
++Copyright: Telecom ParisTech 2017-2019
++License: LGPL-2+
++
++Files: include/gpac/configuration.h
++Copyright: Telecom ParisTech 2008-2012
++License: LGPL-2+
++
++Files: include/gpac/dash.h
++  include/gpac/version.h
++Copyright: Telecom ParisTech 2012-2019
++License: LGPL-2+
++
++Files: include/gpac/dsmcc.h
++Copyright: Telecom ParisTech 2011-2012
++License: LGPL-2+
++
++Files: include/gpac/dvb_mpe.h
++Copyright: Telecom ParisTech 2006-2012
++License: LGPL-2+
++
++Files: include/gpac/events.h
++  include/gpac/tools.h
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: include/gpac/filters.h
++  include/gpac/main.h
++Copyright: Telecom ParisTech 2017-2020
++License: LGPL-2+
++
++Files: include/gpac/html5_media.h
++  include/gpac/html5_mse.h
++  include/gpac/webvtt.h
++Copyright: Telecom ParisTech 2013-2019
++License: LGPL-2+
++
++Files: include/gpac/internal/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: include/gpac/internal/avilib.h
++Copyright: Thomas ร–streich - June 2001, / 2002, Thomas ร–streich / 1999, Rainer Johanni <Rainer@Johanni.de>
++License: LGPL-2+
++
++Files: include/gpac/internal/compositor_dev.h
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: include/gpac/internal/m3u8.h
++Copyright: Telecom ParisTech 2010-2012, Romain Bouqueau
++License: LGPL-2+
++
++Files: include/gpac/internal/ogg.h
++Copyright: 1994-2002, the Xiph.Org Foundation http:www.xiph.org
++License: LGPL-2+
++
++Files: include/gpac/internal/reedsolomon.h
++Copyright: Henry Minsky (hqm@ua.com), Universal Access Inc. (1991-1996)
++License: GPL-3+
++Comment: Copyright information is not given in the source files, however, the
++ website where this code can be found states that this code is licensed under
++ the GPL-3+, with the option of licensing the code under different terms.
++ .
++ The website is http://rscode.sourceforge.net/
++ The statement (as of July 30, 2011) states the following:
++  "The code is licensed under the GPL, however a commercial license is also
++  available. A royalty-free license to modify and redistribute the code in binary
++  or source form is available."
++ For more information see the "rscode-1.3.tgz" release tarball available at:
++ http://sourceforge.net/projects/rscode/files/
++
++Files: include/gpac/internal/vobsub.h
++Copyright: Falco (Ivan Vecera) 2006
++License: LGPL-2+
++
++Files: include/gpac/laser.h
++  include/gpac/mpegts.h
++Copyright: Telecom ParisTech 2006-2019
++License: LGPL-2+
++
++Files: include/gpac/modules/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: include/gpac/modules/audio_out.h
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: include/gpac/modules/hardcoded_proto.h
++Copyright: Telecom ParisTech 2012
++License: LGPL-2+
++
++Files: include/gpac/modules/video_out.h
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: include/gpac/mpd.h
++Copyright: Telecom ParisTech 2010-2012
++License: LGPL-2+
++
++Files: include/gpac/nodes_mpeg4.h
++  include/gpac/nodes_x3d.h
++  include/gpac/token.h
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: include/gpac/nodes_svg.h
++Copyright: 2004-2012, Telecom ParisTech
++License: LGPL-2+
++
++Files: include/gpac/scene_engine.h
++Copyright: Telecom ParisTech 2005-2019
++License: LGPL-2+
++
++Files: include/gpac/scenegraph_svg.h
++  include/gpac/svg_types.h
++Copyright: Telecom ParisTech 2004-2019
++License: LGPL-2+
++
++Files: include/wince/*
++Copyright: Microsoft Corporation.
++License: LGPL-2+
++
++Files: modules/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: modules/alsa/*
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: modules/dektec_out/*
++Copyright: 2016-2020, Telecom Paris
++  2014-2016, GPAC Licensing
++License: LGPL-2+
++
++Files: modules/dektec_out/dektec_video_old.cpp
++Copyright: Romain Bouqueau @ GPAC Licensing
++License: LGPL-2+
++
++Files: modules/demo_is/*
++Copyright: Telecom ParisTech 2009-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/*
++Copyright: Telecom ParisTech 2011-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/audio_filter/*
++Copyright: Telecom ParisTech 2010-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/avcap/*
++Copyright: Telecom ParisTech 2011-20XX
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/ffmpeg_in/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/freenect/*
++Copyright: Telecom ParisTech 2011-20XX
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/gapi/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/gdip_raster/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/hyb_in/*
++Copyright: Telecom ParisTech 2010-20xx
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/libplayer/*
++Copyright: Telecom ParisTech 2005-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/mse_in/*
++Copyright: Telecom ParisTech 2013
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/opencv_is/*
++Copyright: Telecom ParisTech 2009-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/platinum/*
++Copyright: Telecom ParisTech 2009-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/rvc_dec/*
++Copyright: Telecom ParisTech 2010-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/ui_rec/*
++Copyright: Telecom ParisTech 2007-2012
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/widgetman/*
++Copyright: 2009, Telecom ParisTech.
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/widgetman/unzip.c
++Copyright: 1998-2005, Gilles Vollant
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/widgetman/unzip.h
++Copyright: 1998-2005, Gilles Vollant
++License: Zlib
++
++Files: modules/deprecated/old_arch/widgetman/wgt_load_base.js
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: modules/deprecated/old_arch/wiiis/*
++Copyright: Telecom ParisTech 2009-2012
++License: LGPL-2+
++
++Files: modules/directfb_out/*
++Copyright: Telecom ParisTech 2010-2012
++License: LGPL-2+
++
++Files: modules/directfb_out/directfb_out.c
++Copyright: Telecom ParisTech 2010-2020
++License: LGPL-2+
++
++Files: modules/droid_audio/*
++Copyright: Mines-Telecom 2009
++License: LGPL-2+
++
++Files: modules/droid_cam/*
++Copyright: Mines-Telecom 2009
++License: LGPL-2+
++
++Files: modules/droid_mpegv/*
++Copyright: Mines-Telecom 2009
++License: LGPL-2+
++
++Files: modules/droid_out/*
++Copyright: Mines-Telecom 2009
++License: LGPL-2+
++
++Files: modules/dx_hw/*
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: modules/dx_hw/dx_audio.c
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: modules/dx_hw/resource.h
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: modules/filter_export.cpp
++Copyright: Telecom ParisTech 2018
++License: LGPL-2+
++
++Files: modules/ios_cam/*
++Copyright: Mines-Telecom 2009
++License: LGPL-2+
++
++Files: modules/ios_mpegv/*
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: modules/ios_mpegv/ios_mpegv.c
++Copyright: Mines-Telecom 2009
++License: LGPL-2+
++
++Files: modules/jack/*
++Copyright: Telecom ParisTech 2008-2019
++License: LGPL-2+
++
++Files: modules/pulseaudio/*
++Copyright: Telecom ParisTech 2008-2019
++License: LGPL-2+
++
++Files: modules/sdl_out/audio.c
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: modules/sdl_out/sdl_out.h
++  modules/sdl_out/video.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: modules/validator/*
++Copyright: Telecom ParisTech 2010-2020
++License: LGPL-2+
++
++Files: modules/x11_out/*
++Copyright: Telecom ParisTech 2005-2020
++License: LGPL-2+
++
++Files: packagers/*
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: run_configure.sh
++Copyright: 1998-2002, Josip Rodin
++License: LGPL-2+
++
++Files: share/*
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: share/deprecated/mpegu-core.js
++  share/deprecated/mpegu-wm.js
++Copyright: 2009
++License: LGPL-2+
++
++Files: share/doc/man/*
++Copyright: 2000-2020, Telecom Paris distributed under LGPL v2.1+ - http:gpac.io
++License: LGPL-2.1
++
++Files: share/gui/*
++Copyright: 2010-2020, Telecom Paris
++License: LGPL-2+
++
++Files: share/gui/extensions/*
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: share/gui/extensions/about/info.js
++Copyright: 2002-2020, Telecom Paris;
++License: LGPL-2.1
++
++Files: share/vis/extern/BrowserLib/Core/Code/Keyboard.js
++Copyright: 2006, The Closure Library Authors.
++License: Apache-2.0
++
++Files: src/*
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: src/bifs/field_encode.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/compositor/audio_input.c
++  src/compositor/audio_mixer.c
++  src/compositor/audio_render.c
++  src/compositor/media_object.c
++  src/compositor/object_manager.c
++  src/compositor/scene.c
++  src/compositor/scene_ns.c
++  src/compositor/texturing.c
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: src/compositor/clock.c
++  src/compositor/mpeg4_inline.c
++  src/compositor/mpeg4_inputsensor.c
++  src/compositor/mpeg4_mediacontrol.c
++  src/compositor/mpeg4_mediasensor.c
++  src/compositor/scene_node_init.c
++Copyright: Telecom ParisTech 2000-2017
++License: LGPL-2+
++
++Files: src/compositor/compositor.c
++  src/compositor/compositor_2d.c
++  src/compositor/compositor_3d.c
++  src/compositor/mpeg4_composite.c
++  src/compositor/mpeg4_layer_3d.c
++  src/compositor/mpeg4_textures.c
++  src/compositor/texturing_gl.c
++  src/compositor/visual_manager_3d_gl.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/compositor/gl_inc.h
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: src/compositor/offscreen_cache.c
++  src/compositor/offscreen_cache.h
++Copyright: Telecom ParisTech 2006-2012
++License: LGPL-2+
++
++Files: src/compositor/svg_base.c
++  src/compositor/svg_filters.c
++  src/compositor/svg_geometry.c
++  src/compositor/svg_grouping.c
++  src/compositor/svg_media.c
++  src/compositor/svg_paint_servers.c
++Copyright: Telecom ParisTech 2005-2012
++License: LGPL-2+
++
++Files: src/compositor/svg_external.c
++Copyright: Telecom ParisTech 2005-2017
++License: LGPL-2+
++
++Files: src/compositor/svg_font.c
++Copyright: Telecom ParisTech 2007-2012
++License: LGPL-2+
++
++Files: src/compositor/svg_text.c
++Copyright: Telecom ParisTech 2004-2012
++License: LGPL-2+
++
++Files: src/crypto/*
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: src/crypto/g_crypt.c
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: src/crypto/g_crypt_openssl.c
++Copyright: Motion Spell 2016
++License: LGPL-2+
++
++Files: src/crypto/g_crypt_tinyaes.c
++Copyright: Telecom ParisTech 2018
++License: LGPL-2+
++
++Files: src/evg/*
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: src/evg/ftgrays.c
++Copyright: 2000-2004, David Turner, Robert Wilhelm, and Werner Lemberg.
++License: FTL
++
++Files: src/evg/raster3d.c
++  src/evg/raster_yuv.c
++Copyright: Telecom ParisTech 2019
++License: LGPL-2+
++
++Files: src/export.cpp
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/filter_core/*
++Copyright: Telecom ParisTech 2017-2018
++License: LGPL-2+
++
++Files: src/filter_core/filter.c
++  src/filter_core/filter_session.c
++  src/filter_core/filter_session_js.c
++Copyright: Telecom ParisTech 2017-2020
++License: LGPL-2+
++
++Files: src/filter_core/filter_props.c
++Copyright: Telecom ParisTech 2017-2019
++License: LGPL-2+
++
++Files: src/filters/*
++Copyright: Telecom ParisTech 2000-2017
++License: LGPL-2+
++
++Files: src/filters/base_filter_example.c
++  src/filters/in_dvb4linux.c
++  src/filters/rewrite_nalu.c
++Copyright: Telecom ParisTech 2017
++License: LGPL-2+
++
++Files: src/filters/bsrw.c
++  src/filters/dec_ttml.c
++Copyright: Telecom ParisTech 2020
++License: LGPL-2+
++
++Files: src/filters/compose.c
++  src/filters/dec_nvdec.c
++  src/filters/dmx_dash.c
++  src/filters/ff_dmx.c
++  src/filters/in_file.c
++  src/filters/in_http.c
++  src/filters/inspect.c
++  src/filters/mux_isom.c
++  src/filters/out_file.c
++  src/filters/reframer.c
++  src/filters/write_nhml.c
++Copyright: Telecom ParisTech 2017-2020
++License: LGPL-2+
++
++Files: src/filters/dasher.c
++  src/filters/encrypt_cenc_isma.c
++  src/filters/filelist.c
++  src/filters/in_atsc.c
++  src/filters/mux_ts.c
++  src/filters/out_video.c
++  src/filters/vcrop.c
++Copyright: Telecom ParisTech 2018-2020
++License: LGPL-2+
++
++Files: src/filters/dec_j2k.c
++  src/filters/dec_vorbis.c
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: src/filters/dec_laser.c
++  src/filters/dec_mad.c
++  src/filters/dec_odf.c
++  src/filters/dmx_mpegps.c
++  src/filters/dmx_saf.c
++  src/filters/load_svg.c
++Copyright: Telecom ParisTech 2005-2017
++License: LGPL-2+
++
++Files: src/filters/dec_mediacodec.c
++  src/filters/dec_mediacodec.h
++  src/filters/dmx_ogg.c
++  src/filters/isoffin_read.c
++  src/filters/load_bt_xmt.c
++  src/filters/load_text.c
++  src/filters/reframe_adts.c
++  src/filters/reframe_amr.c
++  src/filters/reframe_nalu.c
++  src/filters/rewrite_adts.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/filters/dec_mediacodec_jni.c
++  src/filters/dec_vtb.c
++  src/filters/isoffin.h
++  src/filters/isoffin_load.c
++  src/filters/isoffin_read_ch.c
++  src/filters/write_qcp.c
++  src/filters/write_vtt.c
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: src/filters/dec_nvdec_sdk.c
++  src/filters/dec_nvdec_sdk.h
++Copyright: 1993-2015, NVIDIA Corporation.
++License: LGPL-2+
++
++Files: src/filters/dec_openhevc.c
++  src/filters/dec_opensvc.c
++Copyright: Telecom ParisTech 2010-2017
++License: LGPL-2+
++
++Files: src/filters/dec_vtb_glctx.m
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: src/filters/dec_webvtt.c
++Copyright: Telecom ParisTech 2013-2017
++License: LGPL-2+
++
++Files: src/filters/decrypt_cenc_isma.c
++  src/filters/enc_jpg.c
++  src/filters/enc_png.c
++  src/filters/ff_enc.c
++  src/filters/ff_rescale.c
++  src/filters/in_pipe.c
++  src/filters/out_audio.c
++  src/filters/out_pipe.c
++  src/filters/reframe_rawpcm.c
++  src/filters/reframe_rawvid.c
++  src/filters/resample_audio.c
++  src/filters/rewind.c
++  src/filters/rewrite_mp4v.c
++  src/filters/rewrite_obu.c
++Copyright: Telecom ParisTech 2018
++License: LGPL-2+
++
++Files: src/filters/dmx_avi.c
++Copyright: Telecom ParisTech 2005-2019
++License: LGPL-2+
++
++Files: src/filters/dmx_gsf.c
++  src/filters/mux_avi.c
++  src/filters/mux_gsf.c
++  src/filters/reframe_av1.c
++Copyright: Telecom ParisTech 2018-2019
++License: LGPL-2+
++
++Files: src/filters/dmx_m2ts.c
++  src/filters/dmx_nhml.c
++  src/filters/dmx_nhnt.c
++  src/filters/dmx_vobsub.c
++Copyright: Telecom ParisTech 2005-2020
++License: LGPL-2+
++
++Files: src/filters/ff_avf.c
++  src/filters/tssplit.c
++Copyright: Telecom Paris 2019
++License: LGPL-2+
++
++Files: src/filters/ff_common.c
++  src/filters/ff_common.h
++  src/filters/ff_dec.c
++  src/filters/unit_test_filter.c
++  src/filters/write_generic.c
++  src/filters/write_nhnt.c
++Copyright: Telecom ParisTech 2017-2018
++License: LGPL-2+
++
++Files: src/filters/ff_mx.c
++Copyright: Telecom Paris 2019-2020
++License: LGPL-2+
++
++Files: src/filters/hevcmerge.c
++  src/filters/hevcsplit.c
++  src/filters/jsfilter.c
++  src/filters/out_sock.c
++  src/filters/reframe_flac.c
++  src/filters/reframe_prores.c
++  src/filters/vflip.c
++Copyright: Telecom ParisTech 2019
++License: LGPL-2+
++
++Files: src/filters/in_sock.c
++  src/filters/tileagg.c
++Copyright: Telecom ParisTech 2017-2019
++License: LGPL-2+
++
++Files: src/filters/out_http.c
++  src/filters/out_rtp.c
++  src/filters/out_rtsp.c
++Copyright: Telecom ParisTech 2019-2020
++License: LGPL-2+
++
++Files: src/ietf/rtp_streamer.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/isomedia/*
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: src/isomedia/box_code_adobe.c
++Copyright: Romain Bouqueau 2012- Telecom Paris 2019
++License: LGPL
++
++Files: src/isomedia/box_code_apple.c
++Copyright: Telecom ParisTech 2006-2019
++License: LGPL
++
++Files: src/isomedia/box_code_drm.c
++  src/isomedia/box_code_meta.c
++Copyright: Telecom ParisTech 2005-2019
++License: LGPL
++
++Files: src/isomedia/box_dump.c
++  src/isomedia/isom_read.c
++  src/isomedia/isom_store.c
++  src/isomedia/isom_write.c
++  src/isomedia/stbl_write.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/isomedia/drm_sample.c
++Copyright: Telecom ParisTech 2005-2019
++License: LGPL-2+
++
++Files: src/isomedia/meta.c
++Copyright: Telecom ParisTech 2005-2020
++License: LGPL-2+
++
++Files: src/isomedia/ttml.c
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: src/jsmods/*
++Copyright: Telecom ParisTech 2019
++License: LGPL-2+
++
++Files: src/jsmods/WebGLRenderingContextBase.c
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: src/jsmods/core.c
++  src/jsmods/scene_js.c
++  src/jsmods/xhr.c
++Copyright: Telecom ParisTech 2007-2020
++License: LGPL-2+
++
++Files: src/jsmods/storage.c
++Copyright: Telecom ParisTech 2007-2019
++License: LGPL-2+
++
++Files: src/laser/*
++Copyright: Telecom ParisTech 2005-2019
++License: LGPL-2+
++
++Files: src/laser/lsr_tables.c
++Copyright: 2004-200X Telecom ParisTech
++License: LGPL-2+
++
++Files: src/media_tools/*
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/media_tools/ait.c
++Copyright: Telecom ParisTech 2011-2012
++License: LGPL-2+
++
++Files: src/media_tools/atsc_dmx.c
++Copyright: Telecom ParisTech 2018-2020
++License: LGPL-2+
++
++Files: src/media_tools/avilib.c
++Copyright: Thomas ostreich - June 2001, / 2002, Thomas ostreich / 1999, Rainer Johanni <Rainer@Johanni.de>
++License: LGPL-2+
++
++Files: src/media_tools/dash_client.c
++Copyright: Telecom ParisTech 2010-2020
++License: LGPL-2+
++
++Files: src/media_tools/dash_segmenter.c
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: src/media_tools/dsmcc.c
++Copyright: Telecom ParisTech 2011-2020
++License: LGPL-2+
++
++Files: src/media_tools/dvb_mpe.c
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: src/media_tools/gpac_ogg.c
++Copyright: 1994-2002, the Xiph.Org Foundation http:www.xiph.org
++License: LGPL-2+
++
++Files: src/media_tools/html5_media.c
++  src/media_tools/html5_mse.c
++Copyright: Telecom ParisTech 2013
++License: LGPL-2+
++
++Files: src/media_tools/img.c
++  src/media_tools/isom_hinter.c
++  src/media_tools/webvtt.c
++Copyright: Telecom ParisTech 2000-2012
++License: LGPL-2+
++
++Files: src/media_tools/m3u8.c
++Copyright: Telecom ParisTech 2010-2012, Romain Bouqueau
++License: LGPL-2+
++
++Files: src/media_tools/mpeg2_ps.c
++  src/media_tools/mpeg2_ps.h
++Copyright: Cisco Systems Inc. 2004.
++License: MPL-1.1
++
++Files: src/media_tools/mpegts.c
++Copyright: Telecom ParisTech 2005-2020
++License: LGPL-2+
++
++Files: src/media_tools/reedsolomon.c
++Copyright: 1991, Henry Minsky
++License: GPL-3+
++Comment: Copyright information is not given in the source files, however, the
++ website where this code can be found states that this code is licensed under
++ the GPL-3+, with the option of licensing the code under different terms.
++ .
++ The website is http://rscode.sourceforge.net/
++ The statement (as of July 30, 2011) states the following:
++  "The code is licensed under the GPL, however a commercial license is also
++  available. A royalty-free license to modify and redistribute the code in binary
++  or source form is available."
++ For more information see the "rscode-1.3.tgz" release tarball available at:
++ http://sourceforge.net/projects/rscode/files/
++
++Files: src/media_tools/saf.c
++Copyright: Telecom ParisTech 2005-2012
++License: LGPL-2+
++
++Files: src/media_tools/vobsub.c
++Copyright: Jean Le Feuvre - Telecom ParisTech 2018_2020 / Falco (Ivan Vecera) 2006
++License: LGPL-2+
++
++Files: src/odf/ipmpx_parse.c
++  src/odf/odf_parse.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/odf/odf_code.c
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: src/quickjs/*
++Copyright: 2016-2020, Fabrice Bellard
++License: Expat
++
++Files: src/quickjs/GPAC_README.md
++  src/quickjs/libunicode-table.h
++Copyright:
++ 2000-2005, Jean Le Feuvre
++ 2006-2011, ENST
++ 2010-2011, Telecom ParisTech
++ 2000-2006, Cyril Concolato
++ 2010, Romain Bouqueau
++ 2008, Pierre Souchay
++ Yi-Zhen Zhang
++ 2006, Andrew Voznytsa
++ 1999, Rainer Johanni
++ 2001-2002, Thomas ร–streich
++License: LGPL-2+
++
++Files: src/quickjs/cutils.c
++  src/quickjs/cutils.h
++Copyright: 2018, Charlie Gordon
++  2017, Fabrice Bellard
++License: Expat
++
++Files: src/quickjs/quickjs-atom.h
++  src/quickjs/quickjs-opcode.h
++  src/quickjs/quickjs.c
++  src/quickjs/quickjs.h
++Copyright: 2017-2020, Fabrice Bellard
++  2017-2020, Charlie Gordon
++License: Expat
++
++Files: src/scene_manager/loader_bt.c
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: src/scene_manager/loader_qt.c
++  src/scene_manager/swf_parse.c
++  src/scene_manager/swf_svg.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/scenegraph/dom_events.c
++  src/scenegraph/smil_anim.c
++  src/scenegraph/smil_timing.c
++  src/scenegraph/svg_attributes.c
++  src/scenegraph/svg_properties.c
++Copyright: Telecom ParisTech 2004-2012
++License: LGPL-2+
++
++Files: src/scenegraph/dom_js.c
++Copyright: Telecom ParisTech 2007-2019
++License: LGPL-2+
++
++Files: src/scenegraph/html5_media_js.c
++Copyright: Telecom ParisTech 2007-2012
++License: LGPL-2+
++
++Files: src/scenegraph/html5_mse_js.c
++Copyright: Telecom ParisTech 2012
++License: LGPL-2+
++
++Files: src/scenegraph/mpeg4_valuator.c
++  src/scenegraph/vrml_js.c
++Copyright: Telecom ParisTech 2000-2019
++License: LGPL-2+
++
++Files: src/scenegraph/qjs_common.h
++Copyright: Telecom ParisTech 2019
++License: LGPL-2+
++
++Files: src/scenegraph/svg_js.c
++Copyright: Telecom ParisTech 2005-2019
++License: LGPL-2+
++
++Files: src/scenegraph/svg_types.c
++Copyright: Telecom ParisTech 2004-2019
++License: LGPL-2+
++
++Files: src/scenegraph/xml_ns.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL
++
++Files: src/terminal/*
++Copyright: Telecom ParisTech 2000-2018
++License: LGPL-2+
++
++Files: src/utils/Remotery.c
++Copyright: 2014-2018, Celtoys Ltd
++License: Apache-2.0
++
++Files: src/utils/alloc.c
++Copyright: Telecom ParisTech 2010-2018
++License: LGPL-2+
++
++Files: src/utils/bitstream.c
++  src/utils/gltools.c
++  src/utils/os_config_init.c
++  src/utils/os_divers.c
++Copyright: Telecom ParisTech 2000-2020
++License: LGPL-2+
++
++Files: src/utils/cache.c
++Copyright: Telecom ParisTech 2010-2020
++License: LGPL-2+
++
++Files: src/utils/constants.c
++Copyright: Telecom ParisTech 2017-2018
++License: LGPL-2+
++
++Files: src/utils/dlmalloc.c
++Copyright: N/A
++License: public-domain
++ The statement about this code being in the public domain is written verbatim
++ below.
++ .
++ This is a version (aka dlmalloc) of malloc/free/realloc written by
++ Doug Lea and released to the public domain, as explained at
++ http://creativecommons.org/licenses/publicdomain.  Send questions,
++ comments, complaints, performance data, etc to dl@cs.oswego.edu
++
++Files: src/utils/downloader.c
++  src/utils/xml_parser.c
++Copyright: Telecom ParisTech 2005-2020
++License: LGPL-2+
++
++Files: src/utils/gzio.c
++Copyright: 1995-2005, Jean-loup Gailly.
++License: LGPL-2+
++
++Files: src/utils/os_file.c
++Copyright: Telecom ParisTech 2000-2020, / Romain Bouqueau 2015
++License: LGPL-2+
++
++Files: src/utils/path2d_stroker.c
++Copyright: 2000-2004, David Turner, Robert Wilhelm, and Werner Lemberg.
++License: FTL
++
++Files: src/utils/sha1.c
++Copyright: 2003-2006, Christophe Devine
++License: LGPL-2.1
++
++Files: src/utils/symbian_net.cpp
++  src/utils/symbian_os.cpp
++Copyright: Telecom ParisTech 2005-2012
++License: LGPL-2+
++
++Files: src/utils/uni_bidi.c
++  src/utils/utf.c
++Copyright: Telecom ParisTech 2007-2012
++License: LGPL-2+
++
++Files: src/utils/unicode.c
++Copyright: The Internet Society (1999).
++License: LGPL-2+
++Comment:
++ Note that the disclaimer in the source file is actually for the rfc2640.txt
++ document, not the source file itself. This file was written by the copyright
++ holders mentioned above. See also include/gpac/unicode.h. The full copyright
++ statement follows:
++ .
++ This code has been adapted from http://www.ietf.org/rfc/rfc2640.txt
++ Full Copyright Statement
++ .
++ Copyright (C) The Internet Society (1999).  All Rights Reserved.
++ .
++ This document and translations of it may be copied and furnished to
++ others, and derivative works that comment on or otherwise explain it
++ or assist in its implementation may be prepared, copied, published
++ and distributed, in whole or in part, without restriction of any
++ kind, provided that the above copyright notice and this paragraph are
++ included on all such copies and derivative works.  However, this
++ document itself may not be modified in any way, such as by removing
++ the copyright notice or references to the Internet Society or other
++ Internet organizations, except as needed for the purpose of
++ developing Internet standards in which case the procedures for
++ copyrights defined in the Internet Standards process must be
++ followed, or as required to translate it into languages other than
++ English.
++ .
++ The limited permissions granted above are perpetual and will not be
++ revoked by the Internet Society or its successors or assigns.
++ .
++ This document and the information contained herein is provided on an
++ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
++ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
++ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
++ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
++ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
++ .
++ Acknowledgement
++ .
++    Funding for the RFC Editor function is currently provided by the
++    Internet Society.
++
++Files: src/utils/zlib_symbian_ext.h
++Copyright: 1995-1998, Jean-loup Gailly and Mark Adler
++License: Zlib
++
++Files: src/utils/zutil.c
++  src/utils/zutil.h
++Copyright: 1995-2005, Jean-loup Gailly.
++License: Zlib
++
++License: Apache-2.0
++ Licensed under the Apache License, Version 2.0 (the "License");
++ you may not use this file except in compliance with the License.
++ You may obtain a copy of the License at
++ .
++      http://www.apache.org/licenses/LICENSE-2.0
++ .
++ Unless required by applicable law or agreed to in writing, software
++ distributed under the License is distributed on an "AS IS" BASIS,
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
++ express or implied.
++ See the License for the specific language governing permissions
++ and limitations under the License.
++ .
++ On Debian systems, the complete text of the Apache version 2.0 license
++ can be found in `/usr/share/common-licenses/Apache-2.0'.
++
++License: Expat
++ This software is Copyright (c) 2020 by X. Ample.
++ .
++ This is free software, licensed under:
++ .
++   The MIT (X11) License
++ .
++ The MIT License
++ .
++ Permission is hereby granted, free of charge, to any person
++ obtaining a copy of this software and associated
++ documentation files (the "Software"), to deal in the Software
++ without restriction, including without limitation the rights to
++ use, copy, modify, merge, publish, distribute, sublicense,
++ and/or sell copies of the Software, and to permit persons to
++ whom the Software is furnished to do so, subject to the
++ following conditions:
++ .
++ The above copyright notice and this permission notice shall
++ be included in all copies or substantial portions of the
++ Software.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
++ WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
++ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ MERCHANTABILITY, FITNESS FOR A PARTICULAR
++ PURPOSE AND NONINFRINGEMENT. IN NO EVENT
++ SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ CONNECTION WITH THE SOFTWARE OR THE USE OR
++ OTHER DEALINGS IN THE SOFTWARE.
++
++License: FTL
++ This file is part of the FreeType project, and may only be used,
++ modified, and distributed under the terms of the FreeType project
++ license, LICENSE.TXT.  By continuing to use, modify, or distribute
++ this file you indicate that you have read the license and
++ understand and accept it fully.
++
++License: GPL-3+
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++ .
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ GNU General Public License for more details.
++Comment:
++ You should have received a copy of the GNU General Public License
++ along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ .
++ On Debian systems, the complete text of the GNU General Public
++ License version 3 can be found in `/usr/share/common-licenses/GPL-3'.
++
++License: LGPL
++ This library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public
++ License as published by the Free Software Foundation; either
++ version 2 of the License.
++ .
++ This library 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
++ Library General Public License for more details.
++ .
++ You should have received a copy of the GNU Library General Public License
++ along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ .
++ On Debian systems, the complete text of the GNU Library General
++ Public License can be found in `/usr/share/common-licenses/LGPL-2'.
++
++License: LGPL-2+
++ This library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public
++ License as published by the Free Software Foundation; either
++ version 2 of the License, or (at your option) any later version.
++ .
++ This library 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
++ Library General Public License for more details.
++ .
++ You should have received a copy of the GNU Library General Public License
++ along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ .
++ On Debian systems, the complete text of the GNU Library General
++ Public License can be found in `/usr/share/common-licenses/LGPL-2'.
++
++License: LGPL-2.1
++ This software is Copyright (c) 2020 by X. Ample.
++ .
++ This is free software, licensed under:
++ .
++   The GNU Lesser General Public License, Version 2.1, February 1999
++ .
++ This program is free software; you can redistribute it and/or modify it
++ under the terms of the GNU Lesser General Public License as published by the
++ Free Software Foundation; version 2.1 of the License.
++ On Debian systems, the complete text of version 2.1 of the GNU Lesser
++ General Public License can be found in '/usr/share/common-licenses/LGPL-2.1'.
++
++License: MPL-1.1
++                           MOZILLA PUBLIC LICENSE
++                                 Version 1.1
++ .
++                               ---------------
++ .
++ 1. Definitions.
++ .
++      1.0.1. "Commercial Use" means distribution or otherwise making the
++      Covered Code available to a third party.
++ .
++      1.1. "Contributor" means each entity that creates or contributes to
++      the creation of Modifications.
++ .
++      1.2. "Contributor Version" means the combination of the Original
++      Code, prior Modifications used by a Contributor, and the Modifications
++      made by that particular Contributor.
++ .
++      1.3. "Covered Code" means the Original Code or Modifications or the
++      combination of the Original Code and Modifications, in each case
++      including portions thereof.
++ .
++      1.4. "Electronic Distribution Mechanism" means a mechanism generally
++      accepted in the software development community for the electronic
++      transfer of data.
++ .
++      1.5. "Executable" means Covered Code in any form other than Source
++      Code.
++ .
++      1.6. "Initial Developer" means the individual or entity identified
++      as the Initial Developer in the Source Code notice required by Exhibit
++      A.
++ .
++      1.7. "Larger Work" means a work which combines Covered Code or
++      portions thereof with code not governed by the terms of this License.
++ .
++      1.8. "License" means this document.
++ .
++      1.8.1. "Licensable" means having the right to grant, to the maximum
++      extent possible, whether at the time of the initial grant or
++      subsequently acquired, any and all of the rights conveyed herein.
++ .
++      1.9. "Modifications" means any addition to or deletion from the
++      substance or structure of either the Original Code or any previous
++      Modifications. When Covered Code is released as a series of files, a
++      Modification is:
++           A. Any addition to or deletion from the contents of a file
++           containing Original Code or previous Modifications.
++ .
++           B. Any new file that contains any part of the Original Code or
++           previous Modifications.
++ .
++      1.10. "Original Code" means Source Code of computer software code
++      which is described in the Source Code notice required by Exhibit A as
++      Original Code, and which, at the time of its release under this
++      License is not already Covered Code governed by this License.
++ .
++      1.10.1. "Patent Claims" means any patent claim(s), now owned or
++      hereafter acquired, including without limitation,  method, process,
++      and apparatus claims, in any patent Licensable by grantor.
++ .
++      1.11. "Source Code" means the preferred form of the Covered Code for
++      making modifications to it, including all modules it contains, plus
++      any associated interface definition files, scripts used to control
++      compilation and installation of an Executable, or source code
++      differential comparisons against either the Original Code or another
++      well known, available Covered Code of the Contributor's choice. The
++      Source Code can be in a compressed or archival form, provided the
++      appropriate decompression or de-archiving software is widely available
++      for no charge.
++ .
++      1.12. "You" (or "Your")  means an individual or a legal entity
++      exercising rights under, and complying with all of the terms of, this
++      License or a future version of this License issued under Section 6.1.
++      For legal entities, "You" includes any entity which controls, is
++      controlled by, or is under common control with You. For purposes of
++      this definition, "control" means (a) the power, direct or indirect,
++      to cause the direction or management of such entity, whether by
++      contract or otherwise, or (b) ownership of more than fifty percent
++      (50%) of the outstanding shares or beneficial ownership of such
++      entity.
++ .
++ 2. Source Code License.
++ .
++      2.1. The Initial Developer Grant.
++      The Initial Developer hereby grants You a world-wide, royalty-free,
++      non-exclusive license, subject to third party intellectual property
++      claims:
++           (a)  under intellectual property rights (other than patent or
++           trademark) Licensable by Initial Developer to use, reproduce,
++           modify, display, perform, sublicense and distribute the Original
++           Code (or portions thereof) with or without Modifications, and/or
++           as part of a Larger Work; and
++ .
++           (b) under Patents Claims infringed by the making, using or
++           selling of Original Code, to make, have made, use, practice,
++           sell, and offer for sale, and/or otherwise dispose of the
++           Original Code (or portions thereof).
++ .
++           (c) the licenses granted in this Section 2.1(a) and (b) are
++           effective on the date Initial Developer first distributes
++           Original Code under the terms of this License.
++ .
++           (d) Notwithstanding Section 2.1(b) above, no patent license is
++           granted: 1) for code that You delete from the Original Code; 2)
++           separate from the Original Code;  or 3) for infringements caused
++           by: i) the modification of the Original Code or ii) the
++           combination of the Original Code with other software or devices.
++ .
++      2.2. Contributor Grant.
++      Subject to third party intellectual property claims, each Contributor
++      hereby grants You a world-wide, royalty-free, non-exclusive license
++ .
++           (a)  under intellectual property rights (other than patent or
++           trademark) Licensable by Contributor, to use, reproduce, modify,
++           display, perform, sublicense and distribute the Modifications
++           created by such Contributor (or portions thereof) either on an
++           unmodified basis, with other Modifications, as Covered Code
++           and/or as part of a Larger Work; and
++ .
++           (b) under Patent Claims infringed by the making, using, or
++           selling of  Modifications made by that Contributor either alone
++           and/or in combination with its Contributor Version (or portions
++           of such combination), to make, use, sell, offer for sale, have
++           made, and/or otherwise dispose of: 1) Modifications made by that
++           Contributor (or portions thereof); and 2) the combination of
++           Modifications made by that Contributor with its Contributor
++           Version (or portions of such combination).
++ .
++           (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
++           effective on the date Contributor first makes Commercial Use of
++           the Covered Code.
++ .
++           (d)    Notwithstanding Section 2.2(b) above, no patent license is
++           granted: 1) for any code that Contributor has deleted from the
++           Contributor Version; 2)  separate from the Contributor Version;
++           3)  for infringements caused by: i) third party modifications of
++           Contributor Version or ii)  the combination of Modifications made
++           by that Contributor with other software  (except as part of the
++           Contributor Version) or other devices; or 4) under Patent Claims
++           infringed by Covered Code in the absence of Modifications made by
++           that Contributor.
++ .
++ 3. Distribution Obligations.
++ .
++      3.1. Application of License.
++      The Modifications which You create or to which You contribute are
++      governed by the terms of this License, including without limitation
++      Section 2.2. The Source Code version of Covered Code may be
++      distributed only under the terms of this License or a future version
++      of this License released under Section 6.1, and You must include a
++      copy of this License with every copy of the Source Code You
++      distribute. You may not offer or impose any terms on any Source Code
++      version that alters or restricts the applicable version of this
++      License or the recipients' rights hereunder. However, You may include
++      an additional document offering the additional rights described in
++      Section 3.5.
++ .
++      3.2. Availability of Source Code.
++      Any Modification which You create or to which You contribute must be
++      made available in Source Code form under the terms of this License
++      either on the same media as an Executable version or via an accepted
++      Electronic Distribution Mechanism to anyone to whom you made an
++      Executable version available; and if made available via Electronic
++      Distribution Mechanism, must remain available for at least twelve (12)
++      months after the date it initially became available, or at least six
++      (6) months after a subsequent version of that particular Modification
++      has been made available to such recipients. You are responsible for
++      ensuring that the Source Code version remains available even if the
++      Electronic Distribution Mechanism is maintained by a third party.
++ .
++      3.3. Description of Modifications.
++      You must cause all Covered Code to which You contribute to contain a
++      file documenting the changes You made to create that Covered Code and
++      the date of any change. You must include a prominent statement that
++      the Modification is derived, directly or indirectly, from Original
++      Code provided by the Initial Developer and including the name of the
++      Initial Developer in (a) the Source Code, and (b) in any notice in an
++      Executable version or related documentation in which You describe the
++      origin or ownership of the Covered Code.
++ .
++      3.4. Intellectual Property Matters
++           (a) Third Party Claims.
++           If Contributor has knowledge that a license under a third party's
++           intellectual property rights is required to exercise the rights
++           granted by such Contributor under Sections 2.1 or 2.2,
++           Contributor must include a text file with the Source Code
++           distribution titled "LEGAL" which describes the claim and the
++           party making the claim in sufficient detail that a recipient will
++           know whom to contact. If Contributor obtains such knowledge after
++           the Modification is made available as described in Section 3.2,
++           Contributor shall promptly modify the LEGAL file in all copies
++           Contributor makes available thereafter and shall take other steps
++           (such as notifying appropriate mailing lists or newsgroups)
++           reasonably calculated to inform those who received the Covered
++           Code that new knowledge has been obtained.
++ .
++           (b) Contributor APIs.
++           If Contributor's Modifications include an application programming
++           interface and Contributor has knowledge of patent licenses which
++           are reasonably necessary to implement that API, Contributor must
++           also include this information in the LEGAL file.
++ .
++                (c)    Representations.
++           Contributor represents that, except as disclosed pursuant to
++           Section 3.4(a) above, Contributor believes that Contributor's
++           Modifications are Contributor's original creation(s) and/or
++           Contributor has sufficient rights to grant the rights conveyed by
++           this License.
++ .
++      3.5. Required Notices.
++      You must duplicate the notice in Exhibit A in each file of the Source
++      Code.  If it is not possible to put such notice in a particular Source
++      Code file due to its structure, then You must include such notice in a
++      location (such as a relevant directory) where a user would be likely
++      to look for such a notice.  If You created one or more Modification(s)
++      You may add your name as a Contributor to the notice described in
++      Exhibit A.  You must also duplicate this License in any documentation
++      for the Source Code where You describe recipients' rights or ownership
++      rights relating to Covered Code.  You may choose to offer, and to
++      charge a fee for, warranty, support, indemnity or liability
++      obligations to one or more recipients of Covered Code. However, You
++      may do so only on Your own behalf, and not on behalf of the Initial
++      Developer or any Contributor. You must make it absolutely clear than
++      any such warranty, support, indemnity or liability obligation is
++      offered by You alone, and You hereby agree to indemnify the Initial
++      Developer and every Contributor for any liability incurred by the
++      Initial Developer or such Contributor as a result of warranty,
++      support, indemnity or liability terms You offer.
++ .
++      3.6. Distribution of Executable Versions.
++      You may distribute Covered Code in Executable form only if the
++      requirements of Section 3.1-3.5 have been met for that Covered Code,
++      and if You include a notice stating that the Source Code version of
++      the Covered Code is available under the terms of this License,
++      including a description of how and where You have fulfilled the
++      obligations of Section 3.2. The notice must be conspicuously included
++      in any notice in an Executable version, related documentation or
++      collateral in which You describe recipients' rights relating to the
++      Covered Code. You may distribute the Executable version of Covered
++      Code or ownership rights under a license of Your choice, which may
++      contain terms different from this License, provided that You are in
++      compliance with the terms of this License and that the license for the
++      Executable version does not attempt to limit or alter the recipient's
++      rights in the Source Code version from the rights set forth in this
++      License. If You distribute the Executable version under a different
++      license You must make it absolutely clear that any terms which differ
++      from this License are offered by You alone, not by the Initial
++      Developer or any Contributor. You hereby agree to indemnify the
++      Initial Developer and every Contributor for any liability incurred by
++      the Initial Developer or such Contributor as a result of any such
++      terms You offer.
++ .
++      3.7. Larger Works.
++      You may create a Larger Work by combining Covered Code with other code
++      not governed by the terms of this License and distribute the Larger
++      Work as a single product. In such a case, You must make sure the
++      requirements of this License are fulfilled for the Covered Code.
++ .
++ 4. Inability to Comply Due to Statute or Regulation.
++ .
++      If it is impossible for You to comply with any of the terms of this
++      License with respect to some or all of the Covered Code due to
++      statute, judicial order, or regulation then You must: (a) comply with
++      the terms of this License to the maximum extent possible; and (b)
++      describe the limitations and the code they affect. Such description
++      must be included in the LEGAL file described in Section 3.4 and must
++      be included with all distributions of the Source Code. Except to the
++      extent prohibited by statute or regulation, such description must be
++      sufficiently detailed for a recipient of ordinary skill to be able to
++      understand it.
++ .
++ 5. Application of this License.
++ .
++      This License applies to code to which the Initial Developer has
++      attached the notice in Exhibit A and to related Covered Code.
++ .
++ 6. Versions of the License.
++ .
++      6.1. New Versions.
++      Netscape Communications Corporation ("Netscape") may publish revised
++      and/or new versions of the License from time to time. Each version
++      will be given a distinguishing version number.
++ .
++      6.2. Effect of New Versions.
++      Once Covered Code has been published under a particular version of the
++      License, You may always continue to use it under the terms of that
++      version. You may also choose to use such Covered Code under the terms
++      of any subsequent version of the License published by Netscape. No one
++      other than Netscape has the right to modify the terms applicable to
++      Covered Code created under this License.
++ .
++      6.3. Derivative Works.
++      If You create or use a modified version of this License (which you may
++      only do in order to apply it to code which is not already Covered Code
++      governed by this License), You must (a) rename Your license so that
++      the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
++      "MPL", "NPL" or any confusingly similar phrase do not appear in your
++      license (except to note that your license differs from this License)
++      and (b) otherwise make it clear that Your version of the license
++      contains terms which differ from the Mozilla Public License and
++      Netscape Public License. (Filling in the name of the Initial
++      Developer, Original Code or Contributor in the notice described in
++      Exhibit A shall not of themselves be deemed to be modifications of
++      this License.)
++ .
++ 7. DISCLAIMER OF WARRANTY.
++ .
++      COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
++      WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++      WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
++      DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
++      THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
++      IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
++      YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
++      COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
++      OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
++      ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
++ .
++ 8. TERMINATION.
++ .
++      8.1.  This License and the rights granted hereunder will terminate
++      automatically if You fail to comply with terms herein and fail to cure
++      such breach within 30 days of becoming aware of the breach. All
++      sublicenses to the Covered Code which are properly granted shall
++      survive any termination of this License. Provisions which, by their
++      nature, must remain in effect beyond the termination of this License
++      shall survive.
++ .
++      8.2.  If You initiate litigation by asserting a patent infringement
++      claim (excluding declatory judgment actions) against Initial Developer
++      or a Contributor (the Initial Developer or Contributor against whom
++      You file such action is referred to as "Participant")  alleging that:
++ .
++      (a)  such Participant's Contributor Version directly or indirectly
++      infringes any patent, then any and all rights granted by such
++      Participant to You under Sections 2.1 and/or 2.2 of this License
++      shall, upon 60 days notice from Participant terminate prospectively,
++      unless if within 60 days after receipt of notice You either: (i)
++      agree in writing to pay Participant a mutually agreeable reasonable
++      royalty for Your past and future use of Modifications made by such
++      Participant, or (ii) withdraw Your litigation claim with respect to
++      the Contributor Version against such Participant.  If within 60 days
++      of notice, a reasonable royalty and payment arrangement are not
++      mutually agreed upon in writing by the parties or the litigation claim
++      is not withdrawn, the rights granted by Participant to You under
++      Sections 2.1 and/or 2.2 automatically terminate at the expiration of
++      the 60 day notice period specified above.
++ .
++      (b)  any software, hardware, or device, other than such Participant's
++      Contributor Version, directly or indirectly infringes any patent, then
++      any rights granted to You by such Participant under Sections 2.1(b)
++      and 2.2(b) are revoked effective as of the date You first made, used,
++      sold, distributed, or had made, Modifications made by that
++      Participant.
++ .
++      8.3.  If You assert a patent infringement claim against Participant
++      alleging that such Participant's Contributor Version directly or
++      indirectly infringes any patent where such claim is resolved (such as
++      by license or settlement) prior to the initiation of patent
++      infringement litigation, then the reasonable value of the licenses
++      granted by such Participant under Sections 2.1 or 2.2 shall be taken
++      into account in determining the amount or value of any payment or
++      license.
++ .
++      8.4.  In the event of termination under Sections 8.1 or 8.2 above,
++      all end user license agreements (excluding distributors and resellers)
++      which have been validly granted by You or any distributor hereunder
++      prior to termination shall survive termination.
++ .
++ 9. LIMITATION OF LIABILITY.
++ .
++      UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
++      (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
++      DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
++      OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
++      ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
++      CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
++      WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
++      COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
++      INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
++      LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
++      RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
++      PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
++      EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
++      THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
++ .
++ 10. U.S. GOVERNMENT END USERS.
++ .
++      The Covered Code is a "commercial item," as that term is defined in
++      48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
++      software" and "commercial computer software documentation," as such
++      terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
++      C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
++      all U.S. Government End Users acquire Covered Code with only those
++      rights set forth herein.
++ .
++ 11. MISCELLANEOUS.
++ .
++      This License represents the complete agreement concerning subject
++      matter hereof. If any provision of this License is held to be
++      unenforceable, such provision shall be reformed only to the extent
++      necessary to make it enforceable. This License shall be governed by
++      California law provisions (except to the extent applicable law, if
++      any, provides otherwise), excluding its conflict-of-law provisions.
++      With respect to disputes in which at least one party is a citizen of,
++      or an entity chartered or registered to do business in the United
++      States of America, any litigation relating to this License shall be
++      subject to the jurisdiction of the Federal Courts of the Northern
++      District of California, with venue lying in Santa Clara County,
++      California, with the losing party responsible for costs, including
++      without limitation, court costs and reasonable attorneys' fees and
++      expenses. The application of the United Nations Convention on
++      Contracts for the International Sale of Goods is expressly excluded.
++      Any law or regulation which provides that the language of a contract
++      shall be construed against the drafter shall not apply to this
++      License.
++ .
++ 12. RESPONSIBILITY FOR CLAIMS.
++ .
++      As between Initial Developer and the Contributors, each party is
++      responsible for claims and damages arising, directly or indirectly,
++      out of its utilization of rights under this License and You agree to
++      work with Initial Developer and Contributors to distribute such
++      responsibility on an equitable basis. Nothing herein is intended or
++      shall be deemed to constitute any admission of liability.
++ .
++ 13. MULTIPLE-LICENSED CODE.
++ .
++      Initial Developer may designate portions of the Covered Code as
++      "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
++      Developer permits you to utilize portions of the Covered Code under
++      Your choice of the NPL or the alternative licenses, if any, specified
++      by the Initial Developer in the file described in Exhibit A.
++ .
++ EXHIBIT A -Mozilla Public License.
++ .
++      ``The contents of this file are subject to the Mozilla Public License
++      Version 1.1 (the "License"); you may not use this file except in
++      compliance with the License. You may obtain a copy of the License at
++      http://www.mozilla.org/MPL/
++ .
++      Software distributed under the License is distributed on an "AS IS"
++      basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
++      License for the specific language governing rights and limitations
++      under the License.
++ .
++      The Original Code is ______________________________________.
++ .
++      The Initial Developer of the Original Code is ________________________.
++      Portions created by ______________________ are Copyright (C) ______
++      _______________________. All Rights Reserved.
++ .
++      Contributor(s): ______________________________________.
++ .
++      Alternatively, the contents of this file may be used under the terms
++      of the _____ license (the  "[___] License"), in which case the
++      provisions of [______] License are applicable instead of those
++      above.  If you wish to allow use of your version of this file only
++      under the terms of the [____] License and not to allow others to use
++      your version of this file under the MPL, indicate your decision by
++      deleting  the provisions above and replace  them with the notice and
++      other provisions required by the [___] License.  If you do not delete
++      the provisions above, a recipient may use your version of this file
++      under either the MPL or the [___] License."
++ .
++      [NOTE: The text of this Exhibit A may differ slightly from the text of
++      the notices in the Source Code files of the Original Code. You should
++      use the text of this Exhibit A rather than the text found in the
++      Original Code Source Code for Your Modifications.]
++
++License: Zlib
++ This software is provided 'as-is', without any express or implied
++ warranty.  In no event will the authors be held liable for any damages
++ arising from the use of this software.
++ .
++ Permission is granted to anyone to use this software for any purpose,
++ including commercial applications, and to alter it and redistribute it
++ freely, subject to the following restrictions:
++ .
++ 1. The origin of this software must not be misrepresented; you must not
++    claim that you wrote the original software. If you use this software
++    in a product, an acknowledgment in the product documentation would be
++    appreciated but is not required.
++ 2. Altered source versions must be plainly marked as such, and must not be
++    misrepresented as being the original software.
++ 3. This notice may not be removed or altered from any source distribution.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cd7feff25a7339341cf33e9a2996fa533389545a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++---
++ignore:
++  pattern:
++  - /debian/
++  - /.git
++  - /.travis.yml
++  - /Clean.bat
++  - Makefile
++  suffixes:
++  - txt
++  - TXT
++  - html
++  - bat
++  - svg
++  - rng
++  - dsp
++  - dsw
++  - nvdl
++  - idl
++  - plist
++  - rc
++  - sln
++  - vcxproj
++  - filters
++  - cfg
++  - xml
++  - cur
++  - rc
++  - pch
++  - icns
++  - nsi
++  - bt
++  - mp4
++  - glsl
diff --cc debian/dirs
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ca882bbb78588982a650ff2685c36fe51ae99ae3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/bin
++usr/sbin
diff --cc debian/docs
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8f287764a86b59ae6661e857d17950cc8bacafd9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++BUGS
++README.md
++TODO
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c0563cc22c82938cf4bf197f4c8c9db8ba19288
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++---
++src/utils/utf.c:
++  'override-license': LGPL-2+
++include/gpac/internal/dvb_mpe_dev.h:
++  'override-license': LGPL-2+
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4f7195ea641dd7be1799be9e734cccd1bbe7af91
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++! Files:"src/utils/utf.c"
++  Copyright="Telecom ParisTech 2007-2012"
++  License short_name=LGPL-2+
++
++! Files:"include/gpac/dvb_mpe.h"
++  Copyright="Telecom ParisTech 2006-2012"
++  License short_name=LGPL-2+
diff --cc debian/gbp.conf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d0c1355fa49ce9116f47092f4dedb3ecb684a36d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++[DEFAULT]
++pristine-tar = True
++compression = xz
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..299950c58d46d875441a081e9981757b1251f717
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++#DOCS#
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..299950c58d46d875441a081e9981757b1251f717
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++#DOCS#
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b0a3d1626c6dcbb29bbacf2d97026420fe2ce14b
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,53 @@@
++#!/bin/bash
++
++set -e
++
++# Script used to generate the orig source tarball for gpac.
++
++mkdir -p "$(pwd)"/get-orig-source
++pushd get-orig-source >/dev/null
++
++GIT_REPO_URL="https://github.com/gpac/gpac"
++CLONE_DIR="gpac-git"
++
++[ -d "${CLONE_DIR}" ] || git clone "${GIT_REPO_URL}" "${CLONE_DIR}" 1>/dev/null 2>&1
++pushd "${CLONE_DIR}" >/dev/null
++VERSION="$(git describe | sed -e 's/v\(.*\)/\1/')"
++popd >/dev/null
++
++# Remove temp files and other cruft from source tarball
++# The find command snippet here was taken from debhelper's dh_clean command
++# with some modification to delete more unneeded files.
++echo "Removing temp files and other cruft from source tarball" 1>/dev/null 2>&1
++find "${CLONE_DIR}" \
++  \( \
++    \( -type f -a \
++      \( -name '#*#' -o -name '.*~' -o -name '*~' -o -name DEADJOE \
++         -o -name '*.orig' -o -name '*.rej' -o -name '*.bak' \
++         -o -name '.*.orig' -o -name .*.rej -o -name '.SUMS' \
++         -o -name TAGS -o \( -path '*/.deps/*' -a -name '*.P' \) \
++         -o -name config.status -o -name config.cache -o -name config.log \
++      \) -exec rm -f "{}" \; \
++    \) -o \
++    \( -type d -a \
++      \( -name autom4te.cache -o -name .svn \
++      \) -prune -exec rm -rf "{}" \; \
++    \) \
++  \)
++
++# Make ./configure executable
++chmod 755 "${CLONE_DIR}"/configure
++
++# Remove empty directories
++echo "Removing empty directories" 1>/dev/null 2>&1
++find "${CLONE_DIR}" -type d -empty -delete
++
++mv "${CLONE_DIR}" "gpac-${VERSION}"
++XZ_OPT=-9fqzv tar --exclude-vcs -cJf "gpac_${VERSION}.orig.tar.xz" \
++  "gpac-${VERSION}/"
++rm -rf "gpac-${VERSION}/"
++
++echo "--upstream-version ${VERSION} $(pwd)/gpac_${VERSION}.orig.tar.xz"
++
++popd >/dev/null
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ad19fdaab01eff211378019081e41bfc774e7013
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/lib/*/gpac
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ecbd93825af6e545584c041f410c22114ce4bb90
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++share/doc/configuration.html
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f7177e8d9fcbe1f7874b2a0fc06e4d6eac627775
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/bin
++usr/share
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9d0ef6075e088f63c67af315b4dc2448d58dc105
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++# gpac is a recursive acronym, thus why it appears in short description.
++gpac: description-starts-with-package-name
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a162dae93e3c4b569c8e270ca7123afdac5d1a9d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++debian/tmp/usr/usr/share/man/man1/gpac-filters.1
++debian/tmp/usr/usr/share/man/man1/gpac.1
++debian/tmp/usr/usr/share/man/man1/mp4box.1
++debian/tmp/usr/usr/share/man/man1/mp4client.1
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1500aa6332cf24cea72dd79027f068e1aab2bd18
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++usr/include
++usr/lib/*/libgpac.so
++usr/lib/*/libgpac_static.a
++usr/lib/*/pkgconfig/*.pc
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8c21b71a0cb1628807f24e3f54a12afdd2413153
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/lib/*/libgpac.so.*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f10dde05b9baa8689cca670da103eeb05443f0b7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2242 @@@
++libgpac.so.10 libgpac10 #MINVER#
++* Build-Depends-Package: libgpac-dev
++ AVI_close@Base 1.0.1+dfsg1-1~
++ AVI_open_output_file@Base 1.0.1+dfsg1-1~
++ AVI_set_audio@Base 1.0.1+dfsg1-1~
++ AVI_set_video@Base 1.0.1+dfsg1-1~
++ AVI_write_audio@Base 1.0.1+dfsg1-1~
++ AVI_write_frame@Base 1.0.1+dfsg1-1~
++ gf_4cc_to_str@Base 1.0.1+dfsg1-1~
++ gf_ac3_get_bitrate@Base 1.0.1+dfsg1-1~
++ gf_ac3_get_channels@Base 1.0.1+dfsg1-1~
++ gf_ac3_parser_bs@Base 1.0.1+dfsg1-1~
++ gf_angle_diff@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_debug_tsi@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_del@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_find_service@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_get_first_packet_time@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_get_last_packet_time@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_get_nb_packets@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_get_object_count@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_get_recv_bytes@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_get_service_udta@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_new@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_process@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_purge_objects@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_remove_first_object@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_remove_object_by_name@Base 1.0.1+dfsg1-1~
++ gf_atsc3_dmx_set_service_udta@Base 1.0.1+dfsg1-1~
++ gf_atsc3_set_callback@Base 1.0.1+dfsg1-1~
++ gf_atsc3_set_max_objects_store@Base 1.0.1+dfsg1-1~
++ gf_atsc3_set_reorder@Base 1.0.1+dfsg1-1~
++ gf_atsc3_tune_in@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_all_names@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_all_shortnames@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_bit_depth@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_enum@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_from_isobmf@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_get_cicp_from_layout@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_get_cicp_layout@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_get_layout_from_cicp@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_get_layout_name_from_cicp@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_is_planar@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_name@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_parse@Base 1.0.1+dfsg1-1~
++ gf_audio_fmt_sname@Base 1.0.1+dfsg1-1~
++ gf_av1_get_obu_name@Base 1.0.1+dfsg1-1~
++ gf_av1_init_state@Base 1.0.1+dfsg1-1~
++ gf_av1_reset_state@Base 1.0.1+dfsg1-1~
++ gf_avc_get_pps_info@Base 1.0.1+dfsg1-1~
++ gf_avc_get_profile_name@Base 1.0.1+dfsg1-1~
++ gf_avc_get_sps_info@Base 1.0.1+dfsg1-1~
++ gf_avc_hevc_get_chroma_format_name@Base 1.0.1+dfsg1-1~
++ gf_avc_is_rext_profile@Base 1.0.1+dfsg1-1~
++ gf_base16_decode@Base 1.0.1+dfsg1-1~
++ gf_base16_encode@Base 1.0.1+dfsg1-1~
++ gf_base64_decode@Base 1.0.1+dfsg1-1~
++ gf_base64_encode@Base 1.0.1+dfsg1-1~
++ gf_bbox_equal@Base 1.0.1+dfsg1-1~
++ gf_bbox_from_rect@Base 1.0.1+dfsg1-1~
++ gf_bbox_get_vertices@Base 1.0.1+dfsg1-1~
++ gf_bbox_grow_point@Base 1.0.1+dfsg1-1~
++ gf_bbox_plane_relation@Base 1.0.1+dfsg1-1~
++ gf_bbox_point_inside@Base 1.0.1+dfsg1-1~
++ gf_bbox_refresh@Base 1.0.1+dfsg1-1~
++ gf_bbox_union@Base 1.0.1+dfsg1-1~
++ gf_bifs_decode_au@Base 1.0.1+dfsg1-1~
++ gf_bifs_decode_command_list@Base 1.0.1+dfsg1-1~
++ gf_bifs_decode_has_conditionnals@Base 1.0.1+dfsg1-1~
++ gf_bifs_decoder_configure_stream@Base 1.0.1+dfsg1-1~
++ gf_bifs_decoder_del@Base 1.0.1+dfsg1-1~
++ gf_bifs_decoder_new@Base 1.0.1+dfsg1-1~
++ gf_bifs_encode_au@Base 1.0.1+dfsg1-1~
++ gf_bifs_encoder_del@Base 1.0.1+dfsg1-1~
++ gf_bifs_encoder_get_config@Base 1.0.1+dfsg1-1~
++ gf_bifs_encoder_get_rap@Base 1.0.1+dfsg1-1~
++ gf_bifs_encoder_get_version@Base 1.0.1+dfsg1-1~
++ gf_bifs_encoder_new@Base 1.0.1+dfsg1-1~
++ gf_bifs_encoder_new_stream@Base 1.0.1+dfsg1-1~
++ gf_bifs_encoder_set_source_url@Base 1.0.1+dfsg1-1~
++ gf_bifs_get_aq_info@Base 1.0.1+dfsg1-1~
++ gf_bifs_get_child_table@Base 1.0.1+dfsg1-1~
++ gf_bin128_parse@Base 1.0.1+dfsg1-1~
++ gf_blob_get_data@Base 1.0.1+dfsg1-1~
++ gf_bs_align@Base 1.0.1+dfsg1-1~
++ gf_bs_available@Base 1.0.1+dfsg1-1~
++ gf_bs_bits_available@Base 1.0.1+dfsg1-1~
++ gf_bs_del@Base 1.0.1+dfsg1-1~
++ gf_bs_enable_emulation_byte_removal@Base 1.0.1+dfsg1-1~
++ gf_bs_flush@Base 1.0.1+dfsg1-1~
++ gf_bs_from_file@Base 1.0.1+dfsg1-1~
++ gf_bs_get_bit_offset@Base 1.0.1+dfsg1-1~
++ gf_bs_get_bit_position@Base 1.0.1+dfsg1-1~
++ gf_bs_get_content@Base 1.0.1+dfsg1-1~
++ gf_bs_get_content_no_truncate@Base 1.0.1+dfsg1-1~
++ gf_bs_get_position@Base 1.0.1+dfsg1-1~
++ gf_bs_get_refreshed_size@Base 1.0.1+dfsg1-1~
++ gf_bs_get_size@Base 1.0.1+dfsg1-1~
++ gf_bs_insert_data@Base 1.0.1+dfsg1-1~
++ gf_bs_new@Base 1.0.1+dfsg1-1~
++ gf_bs_peek_bits@Base 1.0.1+dfsg1-1~
++ gf_bs_read_bit@Base 1.0.1+dfsg1-1~
++ gf_bs_read_data@Base 1.0.1+dfsg1-1~
++ gf_bs_read_double@Base 1.0.1+dfsg1-1~
++ gf_bs_read_float@Base 1.0.1+dfsg1-1~
++ gf_bs_read_int@Base 1.0.1+dfsg1-1~
++ gf_bs_read_long_int@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u16@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u16_le@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u24@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u32@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u32_le@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u64@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u64_le@Base 1.0.1+dfsg1-1~
++ gf_bs_read_u8@Base 1.0.1+dfsg1-1~
++ gf_bs_read_vluimsbf5@Base 1.0.1+dfsg1-1~
++ gf_bs_seek@Base 1.0.1+dfsg1-1~
++ gf_bs_set_eos_callback@Base 1.0.1+dfsg1-1~
++ gf_bs_skip_bytes@Base 1.0.1+dfsg1-1~
++ gf_bs_transfer@Base 1.0.1+dfsg1-1~
++ gf_bs_truncate@Base 1.0.1+dfsg1-1~
++ gf_bs_write_byte@Base 1.0.1+dfsg1-1~
++ gf_bs_write_data@Base 1.0.1+dfsg1-1~
++ gf_bs_write_double@Base 1.0.1+dfsg1-1~
++ gf_bs_write_float@Base 1.0.1+dfsg1-1~
++ gf_bs_write_int@Base 1.0.1+dfsg1-1~
++ gf_bs_write_long_int@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u16@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u16_le@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u24@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u32@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u32_le@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u64@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u64_le@Base 1.0.1+dfsg1-1~
++ gf_bs_write_u8@Base 1.0.1+dfsg1-1~
++ gf_calloc@Base 1.0.1+dfsg1-1~
++ gf_cfg_del@Base 1.0.1+dfsg1-1~
++ gf_cfg_del_section@Base 1.0.1+dfsg1-1~
++ gf_cfg_discard_changes@Base 1.0.1+dfsg1-1~
++ gf_cfg_force_new@Base 1.0.1+dfsg1-1~
++ gf_cfg_get_filename@Base 1.0.1+dfsg1-1~
++ gf_cfg_get_key@Base 1.0.1+dfsg1-1~
++ gf_cfg_get_key_count@Base 1.0.1+dfsg1-1~
++ gf_cfg_get_key_name@Base 1.0.1+dfsg1-1~
++ gf_cfg_get_section_count@Base 1.0.1+dfsg1-1~
++ gf_cfg_get_section_name@Base 1.0.1+dfsg1-1~
++ gf_cfg_new@Base 1.0.1+dfsg1-1~
++ gf_cfg_save@Base 1.0.1+dfsg1-1~
++ gf_cfg_set_key@Base 1.0.1+dfsg1-1~
++ gf_cleanup_dir@Base 1.0.1+dfsg1-1~
++ gf_clock_time@Base 1.0.1+dfsg1-1~
++ gf_closest_point_to_line@Base 1.0.1+dfsg1-1~
++ gf_cmx_apply@Base 1.0.1+dfsg1-1~
++ gf_cmx_apply_argb@Base 1.0.1+dfsg1-1~
++ gf_cmx_apply_fixed@Base 1.0.1+dfsg1-1~
++ gf_cmx_apply_wide@Base 1.0.1+dfsg1-1~
++ gf_cmx_copy@Base 1.0.1+dfsg1-1~
++ gf_cmx_init@Base 1.0.1+dfsg1-1~
++ gf_cmx_multiply@Base 1.0.1+dfsg1-1~
++ gf_cmx_set@Base 1.0.1+dfsg1-1~
++ gf_codec_id_from_isobmf@Base 1.0.1+dfsg1-1~
++ gf_codec_parse@Base 1.0.1+dfsg1-1~
++ gf_codecid_4cc_type@Base 1.0.1+dfsg1-1~
++ gf_codecid_alt@Base 1.0.1+dfsg1-1~
++ gf_codecid_enum@Base 1.0.1+dfsg1-1~
++ gf_codecid_file_ext@Base 1.0.1+dfsg1-1~
++ gf_codecid_from_oti@Base 1.0.1+dfsg1-1~
++ gf_codecid_mime@Base 1.0.1+dfsg1-1~
++ gf_codecid_name@Base 1.0.1+dfsg1-1~
++ gf_codecid_oti@Base 1.0.1+dfsg1-1~
++ gf_codecid_type@Base 1.0.1+dfsg1-1~
++ gf_color_enum@Base 1.0.1+dfsg1-1~
++ gf_color_get_name@Base 1.0.1+dfsg1-1~
++ gf_color_parse@Base 1.0.1+dfsg1-1~
++ gf_crc_32@Base 1.0.1+dfsg1-1~
++ gf_crypt_close@Base 1.0.1+dfsg1-1~
++ gf_crypt_decrypt@Base 1.0.1+dfsg1-1~
++ gf_crypt_encrypt@Base 1.0.1+dfsg1-1~
++ gf_crypt_file@Base 1.0.1+dfsg1-1~
++ gf_crypt_fragment@Base 1.0.1+dfsg1-1~
++ gf_crypt_init@Base 1.0.1+dfsg1-1~
++ gf_crypt_open@Base 1.0.1+dfsg1-1~
++ gf_crypt_set_IV@Base 1.0.1+dfsg1-1~
++ gf_crypt_set_key@Base 1.0.1+dfsg1-1~
++ gf_dash_all_groups_done@Base 1.0.1+dfsg1-1~
++ gf_dash_close@Base 1.0.1+dfsg1-1~
++ gf_dash_debug_group@Base 1.0.1+dfsg1-1~
++ gf_dash_del@Base 1.0.1+dfsg1-1~
++ gf_dash_disable_speed_adaptation@Base 1.0.1+dfsg1-1~
++ gf_dash_enable_utc_drift_compensation@Base 1.0.1+dfsg1-1~
++ gf_dash_get_automatic_switching@Base 1.0.1+dfsg1-1~
++ gf_dash_get_dependent_group_index@Base 1.0.1+dfsg1-1~
++ gf_dash_get_duration@Base 1.0.1+dfsg1-1~
++ gf_dash_get_group_count@Base 1.0.1+dfsg1-1~
++ gf_dash_get_group_udta@Base 1.0.1+dfsg1-1~
++ gf_dash_get_info@Base 1.0.1+dfsg1-1~
++ gf_dash_get_min_buffer_time@Base 1.0.1+dfsg1-1~
++ gf_dash_get_period_duration@Base 1.0.1+dfsg1-1~
++ gf_dash_get_period_start@Base 1.0.1+dfsg1-1~
++ gf_dash_get_period_switch_status@Base 1.0.1+dfsg1-1~
++ gf_dash_get_tile_adaptation_mode@Base 1.0.1+dfsg1-1~
++ gf_dash_get_timeshift_buffer_pos@Base 1.0.1+dfsg1-1~
++ gf_dash_get_url@Base 1.0.1+dfsg1-1~
++ gf_dash_get_utc_drift_estimate@Base 1.0.1+dfsg1-1~
++ gf_dash_group_check_bandwidth@Base 1.0.1+dfsg1-1~
++ gf_dash_group_discard_segment@Base 1.0.1+dfsg1-1~
++ gf_dash_group_enum_descriptor@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_active_quality@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_as_id@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_audio_channels@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_download_rate@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_language@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_max_segments_in_cache@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_next_segment_location@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_num_components@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_num_groups_depending_on@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_num_qualities@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_num_segments_ready@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_presentation_time_offset@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_quality_info@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_segment_init_keys@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_segment_init_url@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_segment_mime@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_srd_info@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_srd_max_size_info@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_start_range@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_time_shift_buffer_depth@Base 1.0.1+dfsg1-1~
++ gf_dash_group_get_video_info@Base 1.0.1+dfsg1-1~
++ gf_dash_group_has_dependent_group@Base 1.0.1+dfsg1-1~
++ gf_dash_group_loop_detected@Base 1.0.1+dfsg1-1~
++ gf_dash_group_probe_current_download_segment_location@Base 1.0.1+dfsg1-1~
++ gf_dash_group_seek@Base 1.0.1+dfsg1-1~
++ gf_dash_group_segment_switch_forced@Base 1.0.1+dfsg1-1~
++ gf_dash_group_select@Base 1.0.1+dfsg1-1~
++ gf_dash_group_select_quality@Base 1.0.1+dfsg1-1~
++ gf_dash_group_set_buffer_levels@Base 1.0.1+dfsg1-1~
++ gf_dash_group_set_codec_stat@Base 1.0.1+dfsg1-1~
++ gf_dash_group_set_max_buffer_playout@Base 1.0.1+dfsg1-1~
++ gf_dash_group_set_quality_degradation_hint@Base 1.0.1+dfsg1-1~
++ gf_dash_group_set_visible_rect@Base 1.0.1+dfsg1-1~
++ gf_dash_groups_set_language@Base 1.0.1+dfsg1-1~
++ gf_dash_ignore_xlink@Base 1.0.1+dfsg1-1~
++ gf_dash_in_last_period@Base 1.0.1+dfsg1-1~
++ gf_dash_in_period_setup@Base 1.0.1+dfsg1-1~
++ gf_dash_is_dynamic_mpd@Base 1.0.1+dfsg1-1~
++ gf_dash_is_group_selectable@Base 1.0.1+dfsg1-1~
++ gf_dash_is_group_selected@Base 1.0.1+dfsg1-1~
++ gf_dash_is_in_setup@Base 1.0.1+dfsg1-1~
++ gf_dash_is_m3u8@Base 1.0.1+dfsg1-1~
++ gf_dash_is_running@Base 1.0.1+dfsg1-1~
++ gf_dash_new@Base 1.0.1+dfsg1-1~
++ gf_dash_open@Base 1.0.1+dfsg1-1~
++ gf_dash_override_ntp@Base 1.0.1+dfsg1-1~
++ gf_dash_request_period_switch@Base 1.0.1+dfsg1-1~
++ gf_dash_seek@Base 1.0.1+dfsg1-1~
++ gf_dash_set_agressive_adaptation@Base 1.0.1+dfsg1-1~
++ gf_dash_set_algo@Base 1.0.1+dfsg1-1~
++ gf_dash_set_atsc_ast_shift@Base 1.0.1+dfsg1-1~
++ gf_dash_set_automatic_switching@Base 1.0.1+dfsg1-1~
++ gf_dash_set_group_done@Base 1.0.1+dfsg1-1~
++ gf_dash_set_group_udta@Base 1.0.1+dfsg1-1~
++ gf_dash_set_low_latency_mode@Base 1.0.1+dfsg1-1~
++ gf_dash_set_max_resolution@Base 1.0.1+dfsg1-1~
++ gf_dash_set_min_timeout_between_404@Base 1.0.1+dfsg1-1~
++ gf_dash_set_period_xlink_query_string@Base 1.0.1+dfsg1-1~
++ gf_dash_set_segment_expiration_threshold@Base 1.0.1+dfsg1-1~
++ gf_dash_set_speed@Base 1.0.1+dfsg1-1~
++ gf_dash_set_switching_probe_count@Base 1.0.1+dfsg1-1~
++ gf_dash_set_tile_adaptation_mode@Base 1.0.1+dfsg1-1~
++ gf_dash_set_timeshift@Base 1.0.1+dfsg1-1~
++ gf_dash_set_user_buffer@Base 1.0.1+dfsg1-1~
++ gf_dash_set_utc_shift@Base 1.0.1+dfsg1-1~
++ gf_dash_split_adaptation_sets@Base 1.0.1+dfsg1-1~
++ gf_dash_switch_quality@Base 1.0.1+dfsg1-1~
++ gf_dasher_add_base_url@Base 1.0.1+dfsg1-1~
++ gf_dasher_add_input@Base 1.0.1+dfsg1-1~
++ gf_dasher_clean_inputs@Base 1.0.1+dfsg1-1~
++ gf_dasher_configure_isobmf_default@Base 1.0.1+dfsg1-1~
++ gf_dasher_del@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_cached_inputs@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_loop_inputs@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_memory_fragmenting@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_rap_splitting@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_real_time@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_segment_timeline@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_sidx@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_single_file@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_single_segment@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_url_template@Base 1.0.1+dfsg1-1~
++ gf_dasher_enable_utc_ref@Base 1.0.1+dfsg1-1~
++ gf_dasher_new@Base 1.0.1+dfsg1-1~
++ gf_dasher_next_update_time@Base 1.0.1+dfsg1-1~
++ gf_dasher_print_session_info@Base 1.0.1+dfsg1-1~
++ gf_dasher_process@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_ast_offset@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_content_protection_location_mode@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_cues@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_durations@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_dynamic_mode@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_hls_clock@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_info@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_initial_isobmf@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_location@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_min_buffer@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_profile_extension@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_segment_marker@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_split_mode@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_start_date@Base 1.0.1+dfsg1-1~
++ gf_dasher_set_switch_mode@Base 1.0.1+dfsg1-1~
++ gf_decrypt_file@Base 1.0.1+dfsg1-1~
++ gf_decrypt_fragment@Base 1.0.1+dfsg1-1~
++ gf_dir_exists@Base 1.0.1+dfsg1-1~
++ gf_dm_add_cache_entry@Base 1.0.1+dfsg1-1~
++ gf_dm_del@Base 1.0.1+dfsg1-1~
++ gf_dm_delete_cached_file_entry_session@Base 1.0.1+dfsg1-1~
++ gf_dm_force_headers@Base 1.0.1+dfsg1-1~
++ gf_dm_get_data_rate@Base 1.0.1+dfsg1-1~
++ gf_dm_get_global_rate@Base 1.0.1+dfsg1-1~
++ gf_dm_get_url_info@Base 1.0.1+dfsg1-1~
++ gf_dm_new@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_abort@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_del@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_enum_headers@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_fetch_data@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_force_memory_mode@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_get_cache_name@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_get_header@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_get_header_sizes_and_times@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_get_resource_name@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_get_stats@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_get_utc_start@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_last_error@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_mime_type@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_new@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_new_server@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_new_simple@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_process@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_process_headers@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_send@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_set_range@Base 1.0.1+dfsg1-1~
++ gf_dm_sess_setup_from_url@Base 1.0.1+dfsg1-1~
++ gf_dm_set_auth_callback@Base 1.0.1+dfsg1-1~
++ gf_dm_set_data_rate@Base 1.0.1+dfsg1-1~
++ gf_dm_set_localcache_provider@Base 1.0.1+dfsg1-1~
++ gf_dm_url_info_del@Base 1.0.1+dfsg1-1~
++ gf_dm_url_info_init@Base 1.0.1+dfsg1-1~
++ gf_dm_wget@Base 1.0.1+dfsg1-1~
++ gf_dm_wget_with_cache@Base 1.0.1+dfsg1-1~
++ gf_dom_add_text_node@Base 1.0.1+dfsg1-1~
++ gf_dom_event_fire@Base 1.0.1+dfsg1-1~
++ gf_dom_event_fire_ex@Base 1.0.1+dfsg1-1~
++ gf_dom_event_get_name@Base 1.0.1+dfsg1-1~
++ gf_dom_event_type_by_name@Base 1.0.1+dfsg1-1~
++ gf_dom_flatten_textContent@Base 1.0.1+dfsg1-1~
++ gf_dom_get_key_name@Base 1.0.1+dfsg1-1~
++ gf_dom_get_key_type@Base 1.0.1+dfsg1-1~
++ gf_dom_listener_build@Base 1.0.1+dfsg1-1~
++ gf_dom_listener_count@Base 1.0.1+dfsg1-1~
++ gf_dom_listener_del@Base 1.0.1+dfsg1-1~
++ gf_dom_listener_get@Base 1.0.1+dfsg1-1~
++ gf_dom_set_textContent@Base 1.0.1+dfsg1-1~
++ gf_dynstrcat@Base 1.0.1+dfsg1-1~
++ gf_eac3_parser_bs@Base 1.0.1+dfsg1-1~
++ gf_enum_directory@Base 1.0.1+dfsg1-1~
++ gf_errno_str@Base 1.0.1+dfsg1-1~
++ gf_error_to_string@Base 1.0.1+dfsg1-1~
++ gf_event_target_get_node@Base 1.0.1+dfsg1-1~
++ gf_evg_set_depth_test@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_delete@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_get_pixel@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_get_pixel_f@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_get_pixel_yuv_f@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_new@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_push_gradient_interpolation@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_alpha@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_brush_color@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_color_matrix@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_filter@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_gradient_interpolation@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_gradient_mode@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_linear_gradient@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_mapping@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_matrix@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_radial_gradient@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_texture@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_texture_parametric@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_set_texture_planes@Base 1.0.1+dfsg1-1~
++ gf_evg_stencil_type@Base 1.0.1+dfsg1-1~
++ gf_evg_surface3d_new@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_attach_to_buffer@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_attach_to_texture@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_clear@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_clear_depth@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_delete@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_fill@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_new@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_set_center_coords@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_set_clipper@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_set_matrix@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_set_matrix_3d@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_set_path@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_set_raster_level@Base 1.0.1+dfsg1-1~
++ gf_evg_surface_viewport@Base 1.0.1+dfsg1-1~
++ gf_fclose@Base 1.0.1+dfsg1-1~
++ gf_feof@Base 1.0.1+dfsg1-1~
++ gf_ferror@Base 1.0.1+dfsg1-1~
++ gf_fflush@Base 1.0.1+dfsg1-1~
++ gf_fgetc@Base 1.0.1+dfsg1-1~
++ gf_fgets@Base 1.0.1+dfsg1-1~
++ gf_file_basename@Base 1.0.1+dfsg1-1~
++ gf_file_delete@Base 1.0.1+dfsg1-1~
++ gf_file_exists@Base 1.0.1+dfsg1-1~
++ gf_file_exists_ex@Base 1.0.1+dfsg1-1~
++ gf_file_ext_start@Base 1.0.1+dfsg1-1~
++ gf_file_handles_count@Base 1.0.1+dfsg1-1~
++ gf_file_load_data@Base 1.0.1+dfsg1-1~
++ gf_file_load_data_filep@Base 1.0.1+dfsg1-1~
++ gf_file_modification_time@Base 1.0.1+dfsg1-1~
++ gf_file_move@Base 1.0.1+dfsg1-1~
++ gf_file_temp@Base 1.0.1+dfsg1-1~
++ gf_fileio_check@Base 1.0.1+dfsg1-1~
++ gf_fileio_del@Base 1.0.1+dfsg1-1~
++ gf_fileio_factory@Base 1.0.1+dfsg1-1~
++ gf_fileio_from_url@Base 1.0.1+dfsg1-1~
++ gf_fileio_get_stats@Base 1.0.1+dfsg1-1~
++ gf_fileio_get_udta@Base 1.0.1+dfsg1-1~
++ gf_fileio_new@Base 1.0.1+dfsg1-1~
++ gf_fileio_open_url@Base 1.0.1+dfsg1-1~
++ gf_fileio_read_mode@Base 1.0.1+dfsg1-1~
++ gf_fileio_resource_url@Base 1.0.1+dfsg1-1~
++ gf_fileio_set_stats@Base 1.0.1+dfsg1-1~
++ gf_fileio_translate_url@Base 1.0.1+dfsg1-1~
++ gf_fileio_url@Base 1.0.1+dfsg1-1~
++ gf_fileio_write_mode@Base 1.0.1+dfsg1-1~
++ gf_filter_add_event_listener@Base 1.0.1+dfsg1-1~
++ gf_filter_all_sinks_done@Base 1.0.1+dfsg1-1~
++ gf_filter_ask_rt_reschedule@Base 1.0.1+dfsg1-1~
++ gf_filter_assign_id@Base 1.0.1+dfsg1-1~
++ gf_filter_block_eos@Base 1.0.1+dfsg1-1~
++ gf_filter_connect_destination@Base 1.0.1+dfsg1-1~
++ gf_filter_connect_source@Base 1.0.1+dfsg1-1~
++ gf_filter_count_source_by_protocol@Base 1.0.1+dfsg1-1~
++ gf_filter_disable_inputs@Base 1.0.1+dfsg1-1~
++ gf_filter_disable_probe@Base 1.0.1+dfsg1-1~
++ gf_filter_end_of_session@Base 1.0.1+dfsg1-1~
++ gf_filter_event_name@Base 1.0.1+dfsg1-1~
++ gf_filter_forward_gf_event@Base 1.0.1+dfsg1-1~
++ gf_filter_get_arg@Base 1.0.1+dfsg1-1~
++ gf_filter_get_arg_str@Base 1.0.1+dfsg1-1~
++ gf_filter_get_args@Base 1.0.1+dfsg1-1~
++ gf_filter_get_author@Base 1.0.1+dfsg1-1~
++ gf_filter_get_clock_hint@Base 1.0.1+dfsg1-1~
++ gf_filter_get_description@Base 1.0.1+dfsg1-1~
++ gf_filter_get_download_manager@Base 1.0.1+dfsg1-1~
++ gf_filter_get_font_manager@Base 1.0.1+dfsg1-1~
++ gf_filter_get_help@Base 1.0.1+dfsg1-1~
++ gf_filter_get_id@Base 1.0.1+dfsg1-1~
++ gf_filter_get_info@Base 1.0.1+dfsg1-1~
++ gf_filter_get_info_str@Base 1.0.1+dfsg1-1~
++ gf_filter_get_ipid@Base 1.0.1+dfsg1-1~
++ gf_filter_get_ipid_count@Base 1.0.1+dfsg1-1~
++ gf_filter_get_max_extra_input_pids@Base 1.0.1+dfsg1-1~
++ gf_filter_get_name@Base 1.0.1+dfsg1-1~
++ gf_filter_get_num_events_queued@Base 1.0.1+dfsg1-1~
++ gf_filter_get_opid@Base 1.0.1+dfsg1-1~
++ gf_filter_get_opid_count@Base 1.0.1+dfsg1-1~
++ gf_filter_get_output_buffer_max@Base 1.0.1+dfsg1-1~
++ gf_filter_get_sep@Base 1.0.1+dfsg1-1~
++ gf_filter_get_session_caps@Base 1.0.1+dfsg1-1~
++ gf_filter_get_stats@Base 1.0.1+dfsg1-1~
++ gf_filter_get_udta@Base 1.0.1+dfsg1-1~
++ gf_filter_get_version@Base 1.0.1+dfsg1-1~
++ gf_filter_has_pid_connection_pending@Base 1.0.1+dfsg1-1~
++ gf_filter_hint_single_clock@Base 1.0.1+dfsg1-1~
++ gf_filter_in_parent_chain@Base 1.0.1+dfsg1-1~
++ gf_filter_is_alias@Base 1.0.1+dfsg1-1~
++ gf_filter_is_dynamic@Base 1.0.1+dfsg1-1~
++ gf_filter_is_supported_mime@Base 1.0.1+dfsg1-1~
++ gf_filter_is_supported_source@Base 1.0.1+dfsg1-1~
++ gf_filter_load_filter@Base 1.0.1+dfsg1-1~
++ gf_filter_make_sticky@Base 1.0.1+dfsg1-1~
++ gf_filter_notification_failure@Base 1.0.1+dfsg1-1~
++ gf_filter_override_caps@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_discard@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_enum_properties@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_expand@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_forward@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_byte_offset@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_carousel_version@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_clock_type@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_corrupted@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_crypt_flags@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_cts@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_data@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_dependency_flags@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_dts@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_duration@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_frame_interface@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_framing@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_interlaced@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_property@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_property_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_roll_info@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_sap@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_seek_flag@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_seq_num@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_get_timescale@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_is_blocking_ref@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_merge_properties@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_merge_properties_filter@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_alloc@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_alloc_destructor@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_clone@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_copy@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_frame_interface@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_ref@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_shared@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_new_shared_internal@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_ref@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_ref_props@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_send@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_byte_offset@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_carousel_version@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_clock_type@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_corrupted@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_crypt_flags@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_cts@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_dependency_flags@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_dts@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_duration@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_framing@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_interlaced@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_property@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_property_dyn@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_property_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_readonly@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_roll_info@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_sap@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_seek_flag@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_set_seq_num@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_truncate@Base 1.0.1+dfsg1-1~
++ gf_filter_pck_unref@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_allow_direct_dispatch@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_caps_query@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_caps_query_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_check_caps@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_clear_eos@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_copy_properties@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_discard_block@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_drop_packet@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_enum_info@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_enum_properties@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_exec_event@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_first_packet_is_empty@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_alias_udta@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_args@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_buffer_occupancy@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_clock_info@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_destination@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_filter_name@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_first_packet_cts@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_info@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_info_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_max_buffer@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_min_pck_duration@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_name@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_packet@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_packet_count@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_property@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_property_entry_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_property_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_source@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_source_filter_name@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_statistics@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_timescale@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_get_udta@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_has_seen_eos@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_init_play_event@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_is_eos@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_is_filter_in_parents@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_is_playing@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_merge_properties@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_negociate_property@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_negociate_property_dyn@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_negociate_property_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_new@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_orig_src_args@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_query_buffer_duration@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_raw_new@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_recompute_dts@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_remove@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_require_source_id@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_resolve_file_template@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_send_event@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_clock_mode@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_discard@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_eos@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_framing_mode@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_info@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_info_dyn@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_info_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_loose_connect@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_max_buffer@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_name@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_property@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_property_dyn@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_property_str@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_set_udta@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_try_pull@Base 1.0.1+dfsg1-1~
++ gf_filter_pid_would_block@Base 1.0.1+dfsg1-1~
++ gf_filter_post_process_task@Base 1.0.1+dfsg1-1~
++ gf_filter_post_task@Base 1.0.1+dfsg1-1~
++ gf_filter_prevent_blocking@Base 1.0.1+dfsg1-1~
++ gf_filter_probe_data@Base 1.0.1+dfsg1-1~
++ gf_filter_reconnect_output@Base 1.0.1+dfsg1-1~
++ gf_filter_register_opengl_provider@Base 1.0.1+dfsg1-1~
++ gf_filter_release_property@Base 1.0.1+dfsg1-1~
++ gf_filter_remove@Base 1.0.1+dfsg1-1~
++ gf_filter_remove_event_listener@Base 1.0.1+dfsg1-1~
++ gf_filter_remove_src@Base 1.0.1+dfsg1-1~
++ gf_filter_reporting_enabled@Base 1.0.1+dfsg1-1~
++ gf_filter_request_opengl@Base 1.0.1+dfsg1-1~
++ gf_filter_reset_source@Base 1.0.1+dfsg1-1~
++ gf_filter_send_event@Base 1.0.1+dfsg1-1~
++ gf_filter_send_gf_event@Base 1.0.1+dfsg1-1~
++ gf_filter_send_update@Base 1.0.1+dfsg1-1~
++ gf_filter_set_active_opengl_context@Base 1.0.1+dfsg1-1~
++ gf_filter_set_event_target@Base 1.0.1+dfsg1-1~
++ gf_filter_set_name@Base 1.0.1+dfsg1-1~
++ gf_filter_set_session_caps@Base 1.0.1+dfsg1-1~
++ gf_filter_set_setup_failure_callback@Base 1.0.1+dfsg1-1~
++ gf_filter_set_source@Base 1.0.1+dfsg1-1~
++ gf_filter_setup_failure@Base 1.0.1+dfsg1-1~
++ gf_filter_ui_event@Base 1.0.1+dfsg1-1~
++ gf_filter_update_status@Base 1.0.1+dfsg1-1~
++ gf_font_manager_create_span@Base 1.0.1+dfsg1-1~
++ gf_font_manager_new@Base 1.0.1+dfsg1-1~
++ gf_font_manager_refresh_span_bounds@Base 1.0.1+dfsg1-1~
++ gf_font_manager_set_font_ex@Base 1.0.1+dfsg1-1~
++ gf_fopen@Base 1.0.1+dfsg1-1~
++ gf_fopen_ex@Base 1.0.1+dfsg1-1~
++ gf_fprintf@Base 1.0.1+dfsg1-1~
++ gf_fputc@Base 1.0.1+dfsg1-1~
++ gf_fputs@Base 1.0.1+dfsg1-1~
++ gf_fread@Base 1.0.1+dfsg1-1~
++ gf_free@Base 1.0.1+dfsg1-1~
++ gf_fs_abort@Base 1.0.1+dfsg1-1~
++ gf_fs_check_filter_register_cap@Base 1.0.1+dfsg1-1~
++ gf_fs_del@Base 1.0.1+dfsg1-1~
++ gf_fs_enable_reporting@Base 1.0.1+dfsg1-1~
++ gf_fs_enum_unmapped_options@Base 1.0.1+dfsg1-1~
++ gf_fs_filter_exists@Base 1.0.1+dfsg1-1~
++ gf_fs_filters_registers_count@Base 1.0.1+dfsg1-1~
++ gf_fs_get_filter_register@Base 1.0.1+dfsg1-1~
++ gf_fs_get_filter_stats@Base 1.0.1+dfsg1-1~
++ gf_fs_get_filters_count@Base 1.0.1+dfsg1-1~
++ gf_fs_get_last_connect_error@Base 1.0.1+dfsg1-1~
++ gf_fs_get_last_process_error@Base 1.0.1+dfsg1-1~
++ gf_fs_get_max_resolution_chain_length@Base 1.0.1+dfsg1-1~
++ gf_fs_is_last_task@Base 1.0.1+dfsg1-1~
++ gf_fs_load_destination@Base 1.0.1+dfsg1-1~
++ gf_fs_load_filter@Base 1.0.1+dfsg1-1~
++ gf_fs_load_script@Base 1.0.1+dfsg1-1~
++ gf_fs_load_source@Base 1.0.1+dfsg1-1~
++ gf_fs_lock_filters@Base 1.0.1+dfsg1-1~
++ gf_fs_mime_supported@Base 1.0.1+dfsg1-1~
++ gf_fs_new@Base 1.0.1+dfsg1-1~
++ gf_fs_new_defaults@Base 1.0.1+dfsg1-1~
++ gf_fs_post_user_task@Base 1.0.1+dfsg1-1~
++ gf_fs_print_all_connections@Base 1.0.1+dfsg1-1~
++ gf_fs_print_connections@Base 1.0.1+dfsg1-1~
++ gf_fs_print_stats@Base 1.0.1+dfsg1-1~
++ gf_fs_register_test_filters@Base 1.0.1+dfsg1-1~
++ gf_fs_run@Base 1.0.1+dfsg1-1~
++ gf_fs_send_update@Base 1.0.1+dfsg1-1~
++ gf_fs_set_max_resolution_chain_length@Base 1.0.1+dfsg1-1~
++ gf_fs_set_max_sleep_time@Base 1.0.1+dfsg1-1~
++ gf_fs_set_separators@Base 1.0.1+dfsg1-1~
++ gf_fs_set_ui_callback@Base 1.0.1+dfsg1-1~
++ gf_fs_stop@Base 1.0.1+dfsg1-1~
++ gf_fseek@Base 1.0.1+dfsg1-1~
++ gf_fsize@Base 1.0.1+dfsg1-1~
++ gf_ftell@Base 1.0.1+dfsg1-1~
++ gf_fwrite@Base 1.0.1+dfsg1-1~
++ gf_get_bit_size@Base 1.0.1+dfsg1-1~
++ gf_get_default_cache_directory@Base 1.0.1+dfsg1-1~
++ gf_get_next_pow2@Base 1.0.1+dfsg1-1~
++ gf_get_user_name@Base 1.0.1+dfsg1-1~
++ gf_gmtime@Base 1.0.1+dfsg1-1~
++ gf_gpac_copyright@Base 1.0.1+dfsg1-1~
++ gf_gpac_copyright_cite@Base 1.0.1+dfsg1-1~
++ gf_gpac_version@Base 1.0.1+dfsg1-1~
++ gf_gz_compress_payload@Base 1.0.1+dfsg1-1~
++ gf_gz_compress_payload_ex@Base 1.0.1+dfsg1-1~
++ gf_gz_decompress_payload@Base 1.0.1+dfsg1-1~
++ gf_gzclearerr@Base 1.0.1+dfsg1-1~
++ gf_gzclose@Base 1.0.1+dfsg1-1~
++ gf_gzdirect@Base 1.0.1+dfsg1-1~
++ gf_gzeof@Base 1.0.1+dfsg1-1~
++ gf_gzerror@Base 1.0.1+dfsg1-1~
++ gf_gzgetc@Base 1.0.1+dfsg1-1~
++ gf_gzgets@Base 1.0.1+dfsg1-1~
++ gf_gzopen@Base 1.0.1+dfsg1-1~
++ gf_gzread@Base 1.0.1+dfsg1-1~
++ gf_gzrewind@Base 1.0.1+dfsg1-1~
++ gf_gzseek@Base 1.0.1+dfsg1-1~
++ gf_gztell@Base 1.0.1+dfsg1-1~
++ gf_hevc_get_profile_name@Base 1.0.1+dfsg1-1~
++ gf_hevc_get_sps_info@Base 1.0.1+dfsg1-1~
++ gf_hevc_get_sps_info_with_state@Base 1.0.1+dfsg1-1~
++ gf_hinter_can_embbed_data@Base 1.0.1+dfsg1-1~
++ gf_hinter_finalize@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_del@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_finalize@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_force_no_offsets@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_get_bandwidth@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_get_flags@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_get_payload_name@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_new@Base 1.0.1+dfsg1-1~
++ gf_hinter_track_process@Base 1.0.1+dfsg1-1~
++ gf_htonl@Base 1.0.1+dfsg1-1~
++ gf_htons@Base 1.0.1+dfsg1-1~
++ gf_id3_get_genre@Base 1.0.1+dfsg1-1~
++ gf_id3_get_genre_tag@Base 1.0.1+dfsg1-1~
++ gf_img_jpeg_dec@Base 1.0.1+dfsg1-1~
++ gf_img_parse@Base 1.0.1+dfsg1-1~
++ gf_img_png_dec@Base 1.0.1+dfsg1-1~
++ gf_img_png_enc@Base 1.0.1+dfsg1-1~
++ gf_inline_is_default_viewpoint@Base 1.0.1+dfsg1-1~
++ gf_inspect_dump_nalu@Base 1.0.1+dfsg1-1~
++ gf_inspect_dump_obu@Base 1.0.1+dfsg1-1~
++ gf_inspect_dump_prores@Base 1.0.1+dfsg1-1~
++ gf_isom_3gp_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_3gp_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_3gp_config_update@Base 1.0.1+dfsg1-1~
++ gf_isom_ac3_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_ac3_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_add_chapter@Base 1.0.1+dfsg1-1~
++ gf_isom_add_desc_to_description@Base 1.0.1+dfsg1-1~
++ gf_isom_add_desc_to_root_od@Base 1.0.1+dfsg1-1~
++ gf_isom_add_meta_item@Base 1.0.1+dfsg1-1~
++ gf_isom_add_meta_item_memory@Base 1.0.1+dfsg1-1~
++ gf_isom_add_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_add_sample_group_info@Base 1.0.1+dfsg1-1~
++ gf_isom_add_sample_info@Base 1.0.1+dfsg1-1~
++ gf_isom_add_sample_reference@Base 1.0.1+dfsg1-1~
++ gf_isom_add_sample_shadow@Base 1.0.1+dfsg1-1~
++ gf_isom_add_track_kind@Base 1.0.1+dfsg1-1~
++ gf_isom_add_track_to_root_od@Base 1.0.1+dfsg1-1~
++ gf_isom_add_user_data@Base 1.0.1+dfsg1-1~
++ gf_isom_add_user_data_boxes@Base 1.0.1+dfsg1-1~
++ gf_isom_add_uuid@Base 1.0.1+dfsg1-1~
++ gf_isom_append_edit@Base 1.0.1+dfsg1-1~
++ gf_isom_append_sample_data@Base 1.0.1+dfsg1-1~
++ gf_isom_apple_get_tag@Base 1.0.1+dfsg1-1~
++ gf_isom_apple_set_tag@Base 1.0.1+dfsg1-1~
++ gf_isom_apply_box_patch@Base 1.0.1+dfsg1-1~
++ gf_isom_av1_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_av1_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_avc_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_avc_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_avc_config_update@Base 1.0.1+dfsg1-1~
++ gf_isom_avc_set_inband_config@Base 1.0.1+dfsg1-1~
++ gf_isom_begin_hint_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_box_del@Base 1.0.1+dfsg1-1~
++ gf_isom_box_equal@Base 1.0.1+dfsg1-1~
++ gf_isom_box_new@Base 1.0.1+dfsg1-1~
++ gf_isom_box_parse@Base 1.0.1+dfsg1-1~
++ gf_isom_box_size@Base 1.0.1+dfsg1-1~
++ gf_isom_box_write@Base 1.0.1+dfsg1-1~
++ gf_isom_box_write_header@Base 1.0.1+dfsg1-1~
++ gf_isom_cenc_get_default_info@Base 1.0.1+dfsg1-1~
++ gf_isom_cenc_get_sample_aux_info@Base 1.0.1+dfsg1-1~
++ gf_isom_cenc_get_sample_aux_info_buffer@Base 1.0.1+dfsg1-1~
++ gf_isom_cenc_is_pattern_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_cenc_samp_aux_info_del@Base 1.0.1+dfsg1-1~
++ gf_isom_change_ismacryp_protection@Base 1.0.1+dfsg1-1~
++ gf_isom_change_mpeg4_description@Base 1.0.1+dfsg1-1~
++ gf_isom_check_data_reference@Base 1.0.1+dfsg1-1~
++ gf_isom_clone_box@Base 1.0.1+dfsg1-1~
++ gf_isom_clone_config_box@Base 1.0.1+dfsg1-1~
++ gf_isom_clone_pl_indications@Base 1.0.1+dfsg1-1~
++ gf_isom_clone_pssh@Base 1.0.1+dfsg1-1~
++ gf_isom_clone_sample_description@Base 1.0.1+dfsg1-1~
++ gf_isom_clone_track@Base 1.0.1+dfsg1-1~
++ gf_isom_close@Base 1.0.1+dfsg1-1~
++ gf_isom_close_fragments@Base 1.0.1+dfsg1-1~
++ gf_isom_close_segment@Base 1.0.1+dfsg1-1~
++ gf_isom_copy_sample_info@Base 1.0.1+dfsg1-1~
++ gf_isom_delete@Base 1.0.1+dfsg1-1~
++ gf_isom_delete_text_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_disable_odf_conversion@Base 1.0.1+dfsg1-1~
++ gf_isom_dovi_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_dump@Base 1.0.1+dfsg1-1~
++ gf_isom_dump_hint_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_dump_ismacryp_protection@Base 1.0.1+dfsg1-1~
++ gf_isom_dump_ismacryp_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_dump_supported_box@Base 1.0.1+dfsg1-1~
++ gf_isom_enable_compression@Base 1.0.1+dfsg1-1~
++ gf_isom_enable_raw_pack@Base 1.0.1+dfsg1-1~
++ gf_isom_end_hint_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_estimate_size@Base 1.0.1+dfsg1-1~
++ gf_isom_extract_meta_item@Base 1.0.1+dfsg1-1~
++ gf_isom_extract_meta_item_mem@Base 1.0.1+dfsg1-1~
++ gf_isom_extract_meta_xml@Base 1.0.1+dfsg1-1~
++ gf_isom_finalize_for_fragment@Base 1.0.1+dfsg1-1~
++ gf_isom_find_od_id_for_track@Base 1.0.1+dfsg1-1~
++ gf_isom_flac_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_flac_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_flush_fragments@Base 1.0.1+dfsg1-1~
++ gf_isom_flush_sidx@Base 1.0.1+dfsg1-1~
++ gf_isom_force_64bit_chunk_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_fragment_add_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_fragment_append_data@Base 1.0.1+dfsg1-1~
++ gf_isom_fragment_set_cenc_sai@Base 1.0.1+dfsg1-1~
++ gf_isom_fragment_set_sample_roll_group@Base 1.0.1+dfsg1-1~
++ gf_isom_freeze_order@Base 1.0.1+dfsg1-1~
++ gf_isom_get_adobe_protection_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_alternate_brand@Base 1.0.1+dfsg1-1~
++ gf_isom_get_audio_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_audio_layout@Base 1.0.1+dfsg1-1~
++ gf_isom_get_avc_svc_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_avg_sample_size@Base 1.0.1+dfsg1-1~
++ gf_isom_get_bitrate@Base 1.0.1+dfsg1-1~
++ gf_isom_get_brand_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_brands@Base 1.0.1+dfsg1-1~
++ gf_isom_get_cenc_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_chapter@Base 1.0.1+dfsg1-1~
++ gf_isom_get_chapter_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_chunks_infos@Base 1.0.1+dfsg1-1~
++ gf_isom_get_color_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_composition_offset_shift@Base 1.0.1+dfsg1-1~
++ gf_isom_get_constant_sample_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_constant_sample_size@Base 1.0.1+dfsg1-1~
++ gf_isom_get_copyright@Base 1.0.1+dfsg1-1~
++ gf_isom_get_copyright_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_creation_time@Base 1.0.1+dfsg1-1~
++ gf_isom_get_cts_to_dts_shift@Base 1.0.1+dfsg1-1~
++ gf_isom_get_current_tfdt@Base 1.0.1+dfsg1-1~
++ gf_isom_get_current_top_box_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_get_data_reference@Base 1.0.1+dfsg1-1~
++ gf_isom_get_decoder_config@Base 1.0.1+dfsg1-1~
++ gf_isom_get_dims_description@Base 1.0.1+dfsg1-1~
++ gf_isom_get_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_edit@Base 1.0.1+dfsg1-1~
++ gf_isom_get_edit_list_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_edits_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_esd@Base 1.0.1+dfsg1-1~
++ gf_isom_get_file_offset_for_time@Base 1.0.1+dfsg1-1~
++ gf_isom_get_filename@Base 1.0.1+dfsg1-1~
++ gf_isom_get_fragment_defaults@Base 1.0.1+dfsg1-1~
++ gf_isom_get_fragmented_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_fragmented_samples_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_fragments_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_generic_sample_description@Base 1.0.1+dfsg1-1~
++ gf_isom_get_handler_name@Base 1.0.1+dfsg1-1~
++ gf_isom_get_hevc_lhvc_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_highest_track_in_scalable_segment@Base 1.0.1+dfsg1-1~
++ gf_isom_get_ismacryp_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_ismacryp_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_get_jp2_config@Base 1.0.1+dfsg1-1~
++ gf_isom_get_last_created_track_id@Base 1.0.1+dfsg1-1~
++ gf_isom_get_last_producer_time_box@Base 1.0.1+dfsg1-1~
++ gf_isom_get_max_sample_cts_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_get_max_sample_delta@Base 1.0.1+dfsg1-1~
++ gf_isom_get_max_sample_size@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_data_size@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_language@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_original_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_subtype@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_time@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_timescale@Base 1.0.1+dfsg1-1~
++ gf_isom_get_media_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_meta_image_props@Base 1.0.1+dfsg1-1~
++ gf_isom_get_meta_item_by_id@Base 1.0.1+dfsg1-1~
++ gf_isom_get_meta_item_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_meta_item_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_meta_primary_item_id@Base 1.0.1+dfsg1-1~
++ gf_isom_get_meta_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_missing_bytes@Base 1.0.1+dfsg1-1~
++ gf_isom_get_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_get_mpeg4_subtype@Base 1.0.1+dfsg1-1~
++ gf_isom_get_nalu_extract_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_get_nalu_length_field@Base 1.0.1+dfsg1-1~
++ gf_isom_get_next_alternate_group_id@Base 1.0.1+dfsg1-1~
++ gf_isom_get_next_moof_number@Base 1.0.1+dfsg1-1~
++ gf_isom_get_num_supported_boxes@Base 1.0.1+dfsg1-1~
++ gf_isom_get_oinf_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_omadrm_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_original_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_original_format_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_payt_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_payt_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_pcm_config@Base 1.0.1+dfsg1-1~
++ gf_isom_get_pixel_aspect_ratio@Base 1.0.1+dfsg1-1~
++ gf_isom_get_pl_indication@Base 1.0.1+dfsg1-1~
++ gf_isom_get_pssh_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_pssh_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_raw_user_data@Base 1.0.1+dfsg1-1~
++ gf_isom_get_reference@Base 1.0.1+dfsg1-1~
++ gf_isom_get_reference_ID@Base 1.0.1+dfsg1-1~
++ gf_isom_get_reference_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_root_od@Base 1.0.1+dfsg1-1~
++ gf_isom_get_rvc_config@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_cenc_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_cenc_info_ex@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_description_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_description_index@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_dts@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_ex@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_flags@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_for_media_time@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_for_movie_time@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_from_dts@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_group_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_info_ex@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_padding_bits@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_rap_roll_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_size@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sample_sync@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sidx_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_stsd_template@Base 1.0.1+dfsg1-1~
++ gf_isom_get_supported_box_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_sync_point_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_tile_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_timescale@Base 1.0.1+dfsg1-1~
++ gf_isom_get_tmcd_config@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_by_id@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_flags@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_id@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_kind@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_kind_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_layout_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_magic@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_matrix@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_original_id@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_switch_group_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_switch_parameter@Base 1.0.1+dfsg1-1~
++ gf_isom_get_track_template@Base 1.0.1+dfsg1-1~
++ gf_isom_get_trex_template@Base 1.0.1+dfsg1-1~
++ gf_isom_get_udta_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_udta_type@Base 1.0.1+dfsg1-1~
++ gf_isom_get_user_data@Base 1.0.1+dfsg1-1~
++ gf_isom_get_user_data_count@Base 1.0.1+dfsg1-1~
++ gf_isom_get_visual_bit_depth@Base 1.0.1+dfsg1-1~
++ gf_isom_get_visual_info@Base 1.0.1+dfsg1-1~
++ gf_isom_get_webvtt_config@Base 1.0.1+dfsg1-1~
++ gf_isom_get_xml_metadata_description@Base 1.0.1+dfsg1-1~
++ gf_isom_guess_specification@Base 1.0.1+dfsg1-1~
++ gf_isom_has_cenc_sample_group@Base 1.0.1+dfsg1-1~
++ gf_isom_has_meta_xml@Base 1.0.1+dfsg1-1~
++ gf_isom_has_movie@Base 1.0.1+dfsg1-1~
++ gf_isom_has_padding_bits@Base 1.0.1+dfsg1-1~
++ gf_isom_has_sample_dependency@Base 1.0.1+dfsg1-1~
++ gf_isom_has_segment@Base 1.0.1+dfsg1-1~
++ gf_isom_has_sync_points@Base 1.0.1+dfsg1-1~
++ gf_isom_has_sync_shadows@Base 1.0.1+dfsg1-1~
++ gf_isom_has_time_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_has_track_reference@Base 1.0.1+dfsg1-1~
++ gf_isom_hevc_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_hevc_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_hevc_config_update@Base 1.0.1+dfsg1-1~
++ gf_isom_hevc_set_inband_config@Base 1.0.1+dfsg1-1~
++ gf_isom_hevc_set_tile_config@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_blank_data@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_direct_data@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_max_chunk_size@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_pck_del@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_pck_length@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_pck_new@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_pck_read@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_pck_size@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_pck_write@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_sample_data@Base 1.0.1+dfsg1-1~
++ gf_isom_hint_sample_description_data@Base 1.0.1+dfsg1-1~
++ gf_isom_iff_create_image_item_from_track@Base 1.0.1+dfsg1-1~
++ gf_isom_is_JPEG2000@Base 1.0.1+dfsg1-1~
++ gf_isom_is_adobe_protection_media@Base 1.0.1+dfsg1-1~
++ gf_isom_is_cenc_media@Base 1.0.1+dfsg1-1~
++ gf_isom_is_fragmented@Base 1.0.1+dfsg1-1~
++ gf_isom_is_ismacryp_media@Base 1.0.1+dfsg1-1~
++ gf_isom_is_media_encrypted@Base 1.0.1+dfsg1-1~
++ gf_isom_is_omadrm_media@Base 1.0.1+dfsg1-1~
++ gf_isom_is_same_sample_description@Base 1.0.1+dfsg1-1~
++ gf_isom_is_self_contained@Base 1.0.1+dfsg1-1~
++ gf_isom_is_single_av@Base 1.0.1+dfsg1-1~
++ gf_isom_is_smooth_streaming_moov@Base 1.0.1+dfsg1-1~
++ gf_isom_is_track_enabled@Base 1.0.1+dfsg1-1~
++ gf_isom_is_track_encrypted@Base 1.0.1+dfsg1-1~
++ gf_isom_is_track_fragmented@Base 1.0.1+dfsg1-1~
++ gf_isom_is_track_in_root_od@Base 1.0.1+dfsg1-1~
++ gf_isom_is_video_handler_type@Base 1.0.1+dfsg1-1~
++ gf_isom_ismacryp_delete_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_keep_utc_times@Base 1.0.1+dfsg1-1~
++ gf_isom_last_error@Base 1.0.1+dfsg1-1~
++ gf_isom_lhvc_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_lhvc_config_update@Base 1.0.1+dfsg1-1~
++ gf_isom_lhvc_force_inband_config@Base 1.0.1+dfsg1-1~
++ gf_isom_load_extra_boxes@Base 1.0.1+dfsg1-1~
++ gf_isom_make_interleave@Base 1.0.1+dfsg1-1~
++ gf_isom_meta_add_item_ref@Base 1.0.1+dfsg1-1~
++ gf_isom_meta_get_next_item_id@Base 1.0.1+dfsg1-1~
++ gf_isom_modify_alternate_brand@Base 1.0.1+dfsg1-1~
++ gf_isom_modify_edit@Base 1.0.1+dfsg1-1~
++ gf_isom_moov_first@Base 1.0.1+dfsg1-1~
++ gf_isom_mvc_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_mvc_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_needs_layer_reconstruction@Base 1.0.1+dfsg1-1~
++ gf_isom_new_dims_description@Base 1.0.1+dfsg1-1~
++ gf_isom_new_generic_sample_description@Base 1.0.1+dfsg1-1~
++ gf_isom_new_hint_description@Base 1.0.1+dfsg1-1~
++ gf_isom_new_mj2k_description@Base 1.0.1+dfsg1-1~
++ gf_isom_new_mpeg4_description@Base 1.0.1+dfsg1-1~
++ gf_isom_new_text_description@Base 1.0.1+dfsg1-1~
++ gf_isom_new_text_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_new_track@Base 1.0.1+dfsg1-1~
++ gf_isom_new_track_from_template@Base 1.0.1+dfsg1-1~
++ gf_isom_new_xml_subtitle_description@Base 1.0.1+dfsg1-1~
++ gf_isom_open@Base 1.0.1+dfsg1-1~
++ gf_isom_open_progressive@Base 1.0.1+dfsg1-1~
++ gf_isom_open_progressive_ex@Base 1.0.1+dfsg1-1~
++ gf_isom_open_segment@Base 1.0.1+dfsg1-1~
++ gf_isom_opus_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_opus_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_parse_text_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_patch_last_sample_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_probe_data@Base 1.0.1+dfsg1-1~
++ gf_isom_probe_file@Base 1.0.1+dfsg1-1~
++ gf_isom_probe_file_range@Base 1.0.1+dfsg1-1~
++ gf_isom_refresh_fragmented@Base 1.0.1+dfsg1-1~
++ gf_isom_refresh_size_info@Base 1.0.1+dfsg1-1~
++ gf_isom_release_segment@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_chapter@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_edit@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_edits@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_meta_item@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_meta_xml@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_root_od@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_sample_group@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_stream_description@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_track@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_track_from_root_od@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_track_kind@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_track_references@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_user_data@Base 1.0.1+dfsg1-1~
++ gf_isom_remove_user_data_item@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_alt_brands@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_data_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_fragment_info@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_sample_count@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_seq_num@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_switch_parameters@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_tables@Base 1.0.1+dfsg1-1~
++ gf_isom_reset_track_switch_parameter@Base 1.0.1+dfsg1-1~
++ gf_isom_rewrite_track_dependencies@Base 1.0.1+dfsg1-1~
++ gf_isom_rtp_packet_begin@Base 1.0.1+dfsg1-1~
++ gf_isom_rtp_packet_set_flags@Base 1.0.1+dfsg1-1~
++ gf_isom_rtp_packet_set_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_rtp_set_time_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_rtp_set_time_sequence_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_rtp_set_timescale@Base 1.0.1+dfsg1-1~
++ gf_isom_sample_del@Base 1.0.1+dfsg1-1~
++ gf_isom_sample_get_subsample@Base 1.0.1+dfsg1-1~
++ gf_isom_sample_get_subsamples_buffer@Base 1.0.1+dfsg1-1~
++ gf_isom_sample_has_subsamples@Base 1.0.1+dfsg1-1~
++ gf_isom_sample_is_fragment_start@Base 1.0.1+dfsg1-1~
++ gf_isom_sample_new@Base 1.0.1+dfsg1-1~
++ gf_isom_sdp_add_line@Base 1.0.1+dfsg1-1~
++ gf_isom_sdp_add_track_line@Base 1.0.1+dfsg1-1~
++ gf_isom_sdp_clean@Base 1.0.1+dfsg1-1~
++ gf_isom_sdp_clean_track@Base 1.0.1+dfsg1-1~
++ gf_isom_sdp_get@Base 1.0.1+dfsg1-1~
++ gf_isom_sdp_track_get@Base 1.0.1+dfsg1-1~
++ gf_isom_segment_get_fragment_count@Base 1.0.1+dfsg1-1~
++ gf_isom_segment_get_track_fragment_count@Base 1.0.1+dfsg1-1~
++ gf_isom_segment_get_track_fragment_decode_time@Base 1.0.1+dfsg1-1~
++ gf_isom_set_alternate_group_id@Base 1.0.1+dfsg1-1~
++ gf_isom_set_audio_info@Base 1.0.1+dfsg1-1~
++ gf_isom_set_audio_layout@Base 1.0.1+dfsg1-1~
++ gf_isom_set_brand_info@Base 1.0.1+dfsg1-1~
++ gf_isom_set_byte_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_set_clean_aperture@Base 1.0.1+dfsg1-1~
++ gf_isom_set_composition_offset_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_set_copyright@Base 1.0.1+dfsg1-1~
++ gf_isom_set_creation_time@Base 1.0.1+dfsg1-1~
++ gf_isom_set_cts_packing@Base 1.0.1+dfsg1-1~
++ gf_isom_set_default_sync_track@Base 1.0.1+dfsg1-1~
++ gf_isom_set_dolby_vision_profile@Base 1.0.1+dfsg1-1~
++ gf_isom_set_edit@Base 1.0.1+dfsg1-1~
++ gf_isom_set_extraction_slc@Base 1.0.1+dfsg1-1~
++ gf_isom_set_final_name@Base 1.0.1+dfsg1-1~
++ gf_isom_set_fragment_option@Base 1.0.1+dfsg1-1~
++ gf_isom_set_fragment_reference_time@Base 1.0.1+dfsg1-1~
++ gf_isom_set_handler_name@Base 1.0.1+dfsg1-1~
++ gf_isom_set_high_dynamic_range_info@Base 1.0.1+dfsg1-1~
++ gf_isom_set_image_sequence_alpha@Base 1.0.1+dfsg1-1~
++ gf_isom_set_image_sequence_coding_constraints@Base 1.0.1+dfsg1-1~
++ gf_isom_set_interleave_time@Base 1.0.1+dfsg1-1~
++ gf_isom_set_ipod_compatible@Base 1.0.1+dfsg1-1~
++ gf_isom_set_ismacryp_protection@Base 1.0.1+dfsg1-1~
++ gf_isom_set_last_sample_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_set_last_sample_duration_ex@Base 1.0.1+dfsg1-1~
++ gf_isom_set_media_language@Base 1.0.1+dfsg1-1~
++ gf_isom_set_media_subtype@Base 1.0.1+dfsg1-1~
++ gf_isom_set_media_timescale@Base 1.0.1+dfsg1-1~
++ gf_isom_set_media_type@Base 1.0.1+dfsg1-1~
++ gf_isom_set_meta_primary_item@Base 1.0.1+dfsg1-1~
++ gf_isom_set_meta_type@Base 1.0.1+dfsg1-1~
++ gf_isom_set_meta_xml@Base 1.0.1+dfsg1-1~
++ gf_isom_set_nalu_extract_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_set_nalu_length_field@Base 1.0.1+dfsg1-1~
++ gf_isom_set_next_moof_number@Base 1.0.1+dfsg1-1~
++ gf_isom_set_pixel_aspect_ratio@Base 1.0.1+dfsg1-1~
++ gf_isom_set_pl_indication@Base 1.0.1+dfsg1-1~
++ gf_isom_set_progress_callback@Base 1.0.1+dfsg1-1~
++ gf_isom_set_removed_bytes@Base 1.0.1+dfsg1-1~
++ gf_isom_set_root_od_id@Base 1.0.1+dfsg1-1~
++ gf_isom_set_root_od_url@Base 1.0.1+dfsg1-1~
++ gf_isom_set_rvc_config@Base 1.0.1+dfsg1-1~
++ gf_isom_set_sample_cenc_default_group@Base 1.0.1+dfsg1-1~
++ gf_isom_set_sample_cenc_group@Base 1.0.1+dfsg1-1~
++ gf_isom_set_sample_padding@Base 1.0.1+dfsg1-1~
++ gf_isom_set_sample_rap_group@Base 1.0.1+dfsg1-1~
++ gf_isom_set_sample_roll_group@Base 1.0.1+dfsg1-1~
++ gf_isom_set_single_moof_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_set_storage_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_set_timescale@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_creation_time@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_enabled@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_flags@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_group@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_id@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_index@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_interleaving_group@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_layout_info@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_magic@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_matrix@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_priority_in_group@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_reference@Base 1.0.1+dfsg1-1~
++ gf_isom_set_track_switch_parameter@Base 1.0.1+dfsg1-1~
++ gf_isom_set_traf_base_media_decode_time@Base 1.0.1+dfsg1-1~
++ gf_isom_set_traf_mss_timeext@Base 1.0.1+dfsg1-1~
++ gf_isom_set_visual_bit_depth@Base 1.0.1+dfsg1-1~
++ gf_isom_set_visual_color_info@Base 1.0.1+dfsg1-1~
++ gf_isom_set_visual_info@Base 1.0.1+dfsg1-1~
++ gf_isom_setup_hint_track@Base 1.0.1+dfsg1-1~
++ gf_isom_setup_track_fragment@Base 1.0.1+dfsg1-1~
++ gf_isom_setup_track_fragment_template@Base 1.0.1+dfsg1-1~
++ gf_isom_shift_cts_offset@Base 1.0.1+dfsg1-1~
++ gf_isom_start_fragment@Base 1.0.1+dfsg1-1~
++ gf_isom_start_segment@Base 1.0.1+dfsg1-1~
++ gf_isom_stxt_get_description@Base 1.0.1+dfsg1-1~
++ gf_isom_svc_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_svc_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_svc_config_update@Base 1.0.1+dfsg1-1~
++ gf_isom_text_add_blink@Base 1.0.1+dfsg1-1~
++ gf_isom_text_add_highlight@Base 1.0.1+dfsg1-1~
++ gf_isom_text_add_hyperlink@Base 1.0.1+dfsg1-1~
++ gf_isom_text_add_karaoke@Base 1.0.1+dfsg1-1~
++ gf_isom_text_add_style@Base 1.0.1+dfsg1-1~
++ gf_isom_text_add_text@Base 1.0.1+dfsg1-1~
++ gf_isom_text_dump@Base 1.0.1+dfsg1-1~
++ gf_isom_text_reset@Base 1.0.1+dfsg1-1~
++ gf_isom_text_reset_styles@Base 1.0.1+dfsg1-1~
++ gf_isom_text_sample_write_bs@Base 1.0.1+dfsg1-1~
++ gf_isom_text_set_box@Base 1.0.1+dfsg1-1~
++ gf_isom_text_set_display_flags@Base 1.0.1+dfsg1-1~
++ gf_isom_text_set_highlight_color@Base 1.0.1+dfsg1-1~
++ gf_isom_text_set_karaoke_segment@Base 1.0.1+dfsg1-1~
++ gf_isom_text_set_scroll_delay@Base 1.0.1+dfsg1-1~
++ gf_isom_text_set_streaming_mode@Base 1.0.1+dfsg1-1~
++ gf_isom_text_set_wrap@Base 1.0.1+dfsg1-1~
++ gf_isom_text_to_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_tmcd_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_update_bitrate@Base 1.0.1+dfsg1-1~
++ gf_isom_update_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_update_edit_list_duration@Base 1.0.1+dfsg1-1~
++ gf_isom_update_sample@Base 1.0.1+dfsg1-1~
++ gf_isom_update_sample_reference@Base 1.0.1+dfsg1-1~
++ gf_isom_use_compact_size@Base 1.0.1+dfsg1-1~
++ gf_isom_vp_config_get@Base 1.0.1+dfsg1-1~
++ gf_isom_vp_config_new@Base 1.0.1+dfsg1-1~
++ gf_isom_write@Base 1.0.1+dfsg1-1~
++ gf_isom_xml_subtitle_get_description@Base 1.0.1+dfsg1-1~
++ gf_itags_enum_tags@Base 1.0.1+dfsg1-1~
++ gf_itags_find_by_id3tag@Base 1.0.1+dfsg1-1~
++ gf_itags_find_by_itag@Base 1.0.1+dfsg1-1~
++ gf_itags_find_by_name@Base 1.0.1+dfsg1-1~
++ gf_itags_get_id3tag@Base 1.0.1+dfsg1-1~
++ gf_itags_get_itag@Base 1.0.1+dfsg1-1~
++ gf_itags_get_name@Base 1.0.1+dfsg1-1~
++ gf_itags_get_type@Base 1.0.1+dfsg1-1~
++ gf_js_lock@Base 1.0.1+dfsg1-1~
++ gf_js_try_lock@Base 1.0.1+dfsg1-1~
++ gf_js_vrml_flush_event_out@Base 1.0.1+dfsg1-1~
++ gf_lang_find@Base 1.0.1+dfsg1-1~
++ gf_lang_get_2cc@Base 1.0.1+dfsg1-1~
++ gf_lang_get_3cc@Base 1.0.1+dfsg1-1~
++ gf_lang_get_count@Base 1.0.1+dfsg1-1~
++ gf_lang_get_name@Base 1.0.1+dfsg1-1~
++ gf_laser_decode_au@Base 1.0.1+dfsg1-1~
++ gf_laser_decode_command_list@Base 1.0.1+dfsg1-1~
++ gf_laser_decode_has_conditionnals@Base 1.0.1+dfsg1-1~
++ gf_laser_decoder_configure_stream@Base 1.0.1+dfsg1-1~
++ gf_laser_decoder_del@Base 1.0.1+dfsg1-1~
++ gf_laser_decoder_new@Base 1.0.1+dfsg1-1~
++ gf_laser_decoder_remove_stream@Base 1.0.1+dfsg1-1~
++ gf_laser_decoder_set_clock@Base 1.0.1+dfsg1-1~
++ gf_laser_encode_au@Base 1.0.1+dfsg1-1~
++ gf_laser_encoder_del@Base 1.0.1+dfsg1-1~
++ gf_laser_encoder_get_config@Base 1.0.1+dfsg1-1~
++ gf_laser_encoder_get_rap@Base 1.0.1+dfsg1-1~
++ gf_laser_encoder_new@Base 1.0.1+dfsg1-1~
++ gf_laser_encoder_new_stream@Base 1.0.1+dfsg1-1~
++ gf_list_add@Base 1.0.1+dfsg1-1~
++ gf_list_clone@Base 1.0.1+dfsg1-1~
++ gf_list_count@Base 1.0.1+dfsg1-1~
++ gf_list_del@Base 1.0.1+dfsg1-1~
++ gf_list_del_item@Base 1.0.1+dfsg1-1~
++ gf_list_enum@Base 1.0.1+dfsg1-1~
++ gf_list_find@Base 1.0.1+dfsg1-1~
++ gf_list_get@Base 1.0.1+dfsg1-1~
++ gf_list_insert@Base 1.0.1+dfsg1-1~
++ gf_list_last@Base 1.0.1+dfsg1-1~
++ gf_list_new@Base 1.0.1+dfsg1-1~
++ gf_list_pop_back@Base 1.0.1+dfsg1-1~
++ gf_list_pop_front@Base 1.0.1+dfsg1-1~
++ gf_list_rem@Base 1.0.1+dfsg1-1~
++ gf_list_rem_last@Base 1.0.1+dfsg1-1~
++ gf_list_reset@Base 1.0.1+dfsg1-1~
++ gf_list_swap@Base 1.0.1+dfsg1-1~
++ gf_list_transfer@Base 1.0.1+dfsg1-1~
++ gf_log@Base 1.0.1+dfsg1-1~
++ gf_log_get_tool_level@Base 1.0.1+dfsg1-1~
++ gf_log_get_tools_levels@Base 1.0.1+dfsg1-1~
++ gf_log_lt@Base 1.0.1+dfsg1-1~
++ gf_log_modify_tools_levels@Base 1.0.1+dfsg1-1~
++ gf_log_reset_file@Base 1.0.1+dfsg1-1~
++ gf_log_set_callback@Base 1.0.1+dfsg1-1~
++ gf_log_set_strict_error@Base 1.0.1+dfsg1-1~
++ gf_log_set_tool_level@Base 1.0.1+dfsg1-1~
++ gf_log_set_tools_levels@Base 1.0.1+dfsg1-1~
++ gf_log_tool_level_on@Base 1.0.1+dfsg1-1~
++ gf_log_use_color@Base 1.0.1+dfsg1-1~
++ gf_log_use_file@Base 1.0.1+dfsg1-1~
++ gf_log_va_list@Base 1.0.1+dfsg1-1~
++ gf_lz_compress_payload@Base 1.0.1+dfsg1-1~
++ gf_lz_decompress_payload@Base 1.0.1+dfsg1-1~
++ gf_m2ts_demux_del@Base 1.0.1+dfsg1-1~
++ gf_m2ts_demux_dmscc_init@Base 1.0.1+dfsg1-1~
++ gf_m2ts_demux_new@Base 1.0.1+dfsg1-1~
++ gf_m2ts_get_sdt_info@Base 1.0.1+dfsg1-1~
++ gf_m2ts_get_stream_name@Base 1.0.1+dfsg1-1~
++ gf_m2ts_get_sys_clock@Base 1.0.1+dfsg1-1~
++ gf_m2ts_get_ts_clock@Base 1.0.1+dfsg1-1~
++ gf_m2ts_get_ts_clock_90k@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_del@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_enable_pcr_only_packets@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_enable_sdt@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_new@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_process@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_program_add@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_program_count@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_program_find@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_program_get_pcr_pid@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_program_get_pmt_pid@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_program_get_stream_count@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_program_set_name@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_set_initial_pcr@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_set_pcr_max_interval@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_update_config@Base 1.0.1+dfsg1-1~
++ gf_m2ts_mux_use_single_au_pes_mode@Base 1.0.1+dfsg1-1~
++ gf_m2ts_probe_data@Base 1.0.1+dfsg1-1~
++ gf_m2ts_probe_file@Base 1.0.1+dfsg1-1~
++ gf_m2ts_process_data@Base 1.0.1+dfsg1-1~
++ gf_m2ts_program_stream_add@Base 1.0.1+dfsg1-1~
++ gf_m2ts_program_stream_remove@Base 1.0.1+dfsg1-1~
++ gf_m2ts_reset_parsers@Base 1.0.1+dfsg1-1~
++ gf_m2ts_reset_parsers_for_program@Base 1.0.1+dfsg1-1~
++ gf_m2ts_restamp@Base 1.0.1+dfsg1-1~
++ gf_m2ts_set_pes_framing@Base 1.0.1+dfsg1-1~
++ gf_m3u8_parse_master_playlist@Base 1.0.1+dfsg1-1~
++ gf_m3u8_solve_representation_xlink@Base 1.0.1+dfsg1-1~
++ gf_m3u8_to_mpd@Base 1.0.1+dfsg1-1~
++ gf_m4a_get_channel_cfg@Base 1.0.1+dfsg1-1~
++ gf_m4a_get_config@Base 1.0.1+dfsg1-1~
++ gf_m4a_get_profile@Base 1.0.1+dfsg1-1~
++ gf_m4a_get_profile_name@Base 1.0.1+dfsg1-1~
++ gf_m4a_object_type_name@Base 1.0.1+dfsg1-1~
++ gf_m4a_parse_config@Base 1.0.1+dfsg1-1~
++ gf_m4a_write_config@Base 1.0.1+dfsg1-1~
++ gf_m4a_write_config_bs@Base 1.0.1+dfsg1-1~
++ gf_m4v_get_config@Base 1.0.1+dfsg1-1~
++ gf_m4v_get_object_start@Base 1.0.1+dfsg1-1~
++ gf_m4v_get_profile_name@Base 1.0.1+dfsg1-1~
++ gf_m4v_parse_config@Base 1.0.1+dfsg1-1~
++ gf_m4v_parse_frame@Base 1.0.1+dfsg1-1~
++ gf_m4v_parser_del@Base 1.0.1+dfsg1-1~
++ gf_m4v_parser_del_no_bs@Base 1.0.1+dfsg1-1~
++ gf_m4v_parser_get_obj_type@Base 1.0.1+dfsg1-1~
++ gf_m4v_parser_new@Base 1.0.1+dfsg1-1~
++ gf_m4v_parser_set_inspect@Base 1.0.1+dfsg1-1~
++ gf_m4v_rewrite_pl@Base 1.0.1+dfsg1-1~
++ gf_malloc@Base 1.0.1+dfsg1-1~
++ gf_media_aom_av1_parse_obu@Base 1.0.1+dfsg1-1~
++ gf_media_avc_parse_nalu@Base 1.0.1+dfsg1-1~
++ gf_media_avc_read_pps@Base 1.0.1+dfsg1-1~
++ gf_media_avc_read_pps_bs@Base 1.0.1+dfsg1-1~
++ gf_media_avc_read_sps@Base 1.0.1+dfsg1-1~
++ gf_media_avc_read_sps_bs@Base 1.0.1+dfsg1-1~
++ gf_media_change_par@Base 1.0.1+dfsg1-1~
++ gf_media_change_pl@Base 1.0.1+dfsg1-1~
++ gf_media_check_qt_prores@Base 1.0.1+dfsg1-1~
++ gf_media_export@Base 1.0.1+dfsg1-1~
++ gf_media_filter_hevc@Base 1.0.1+dfsg1-1~
++ gf_media_fragment_file@Base 1.0.1+dfsg1-1~
++ gf_media_get_file_hash@Base 1.0.1+dfsg1-1~
++ gf_media_get_reduced_frame_rate@Base 1.0.1+dfsg1-1~
++ gf_media_get_rfc_6381_codec_name@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_parse_nalu@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_parse_nalu_bs@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_pps@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_pps_bs@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_sps@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_sps_bs@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_sps_ex@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_vps@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_vps_bs@Base 1.0.1+dfsg1-1~
++ gf_media_hevc_read_vps_ex@Base 1.0.1+dfsg1-1~
++ gf_media_import@Base 1.0.1+dfsg1-1~
++ gf_media_import_chapters@Base 1.0.1+dfsg1-1~
++ gf_media_import_chapters_file@Base 1.0.1+dfsg1-1~
++ gf_media_make_3gpp@Base 1.0.1+dfsg1-1~
++ gf_media_make_isma@Base 1.0.1+dfsg1-1~
++ gf_media_make_psp@Base 1.0.1+dfsg1-1~
++ gf_media_map_esd@Base 1.0.1+dfsg1-1~
++ gf_media_map_item_esd@Base 1.0.1+dfsg1-1~
++ gf_media_merge_svc@Base 1.0.1+dfsg1-1~
++ gf_media_mpd_format_segment_name@Base 1.0.1+dfsg1-1~
++ gf_media_nal_rewrite_samples@Base 1.0.1+dfsg1-1~
++ gf_media_nalu_next_start_code@Base 1.0.1+dfsg1-1~
++ gf_media_nalu_next_start_code_bs@Base 1.0.1+dfsg1-1~
++ gf_media_nalu_remove_emulation_bytes@Base 1.0.1+dfsg1-1~
++ gf_media_prores_parse_bs@Base 1.0.1+dfsg1-1~
++ gf_media_reduce_aspect_ratio@Base 1.0.1+dfsg1-1~
++ gf_media_remove_non_rap@Base 1.0.1+dfsg1-1~
++ gf_media_split_hevc_tiles@Base 1.0.1+dfsg1-1~
++ gf_media_split_lhvc@Base 1.0.1+dfsg1-1~
++ gf_media_split_svc@Base 1.0.1+dfsg1-1~
++ gf_media_update_bitrate@Base 1.0.1+dfsg1-1~
++ gf_mixer_add_input@Base 1.0.1+dfsg1-1~
++ gf_mixer_buffering@Base 1.0.1+dfsg1-1~
++ gf_mixer_del@Base 1.0.1+dfsg1-1~
++ gf_mixer_empty@Base 1.0.1+dfsg1-1~
++ gf_mixer_get_config@Base 1.0.1+dfsg1-1~
++ gf_mixer_get_output@Base 1.0.1+dfsg1-1~
++ gf_mixer_lock@Base 1.0.1+dfsg1-1~
++ gf_mixer_new@Base 1.0.1+dfsg1-1~
++ gf_mixer_reconfig@Base 1.0.1+dfsg1-1~
++ gf_mixer_set_config@Base 1.0.1+dfsg1-1~
++ gf_mkdir@Base 1.0.1+dfsg1-1~
++ gf_mo_adjust_clock@Base 1.0.1+dfsg1-1~
++ gf_mo_event_target_add_node@Base 1.0.1+dfsg1-1~
++ gf_mo_event_target_get@Base 1.0.1+dfsg1-1~
++ gf_mo_event_target_remove_by_node@Base 1.0.1+dfsg1-1~
++ gf_mo_fetch_data@Base 1.0.1+dfsg1-1~
++ gf_mo_get_audio_info@Base 1.0.1+dfsg1-1~
++ gf_mo_get_current_speed@Base 1.0.1+dfsg1-1~
++ gf_mo_get_duration@Base 1.0.1+dfsg1-1~
++ gf_mo_get_loop@Base 1.0.1+dfsg1-1~
++ gf_mo_get_min_frame_dur@Base 1.0.1+dfsg1-1~
++ gf_mo_get_nb_layers@Base 1.0.1+dfsg1-1~
++ gf_mo_get_nb_views@Base 1.0.1+dfsg1-1~
++ gf_mo_get_object_time@Base 1.0.1+dfsg1-1~
++ gf_mo_get_scenegraph@Base 1.0.1+dfsg1-1~
++ gf_mo_get_speed@Base 1.0.1+dfsg1-1~
++ gf_mo_get_visual_info@Base 1.0.1+dfsg1-1~
++ gf_mo_has_audio@Base 1.0.1+dfsg1-1~
++ gf_mo_is_done@Base 1.0.1+dfsg1-1~
++ gf_mo_is_muted@Base 1.0.1+dfsg1-1~
++ gf_mo_is_started@Base 1.0.1+dfsg1-1~
++ gf_mo_load_xlink_resource@Base 1.0.1+dfsg1-1~
++ gf_mo_map_timestamp_to_sys_clock@Base 1.0.1+dfsg1-1~
++ gf_mo_pause@Base 1.0.1+dfsg1-1~
++ gf_mo_play@Base 1.0.1+dfsg1-1~
++ gf_mo_register@Base 1.0.1+dfsg1-1~
++ gf_mo_release_data@Base 1.0.1+dfsg1-1~
++ gf_mo_restart@Base 1.0.1+dfsg1-1~
++ gf_mo_resume@Base 1.0.1+dfsg1-1~
++ gf_mo_set_flag@Base 1.0.1+dfsg1-1~
++ gf_mo_set_speed@Base 1.0.1+dfsg1-1~
++ gf_mo_should_deactivate@Base 1.0.1+dfsg1-1~
++ gf_mo_stop@Base 1.0.1+dfsg1-1~
++ gf_mo_unload_xlink_resource@Base 1.0.1+dfsg1-1~
++ gf_mo_unregister@Base 1.0.1+dfsg1-1~
++ gf_mo_url_changed@Base 1.0.1+dfsg1-1~
++ gf_module_get_file_name@Base 1.0.1+dfsg1-1~
++ gf_module_load_static@Base 1.0.1+dfsg1-1~
++ gf_modules_close_interface@Base 1.0.1+dfsg1-1~
++ gf_modules_count@Base 1.0.1+dfsg1-1~
++ gf_modules_get_file_name@Base 1.0.1+dfsg1-1~
++ gf_modules_get_module_directories@Base 1.0.1+dfsg1-1~
++ gf_modules_load@Base 1.0.1+dfsg1-1~
++ gf_modules_load_by_name@Base 1.0.1+dfsg1-1~
++ gf_modules_refresh@Base 1.0.1+dfsg1-1~
++ gf_mp3_frame_size@Base 1.0.1+dfsg1-1~
++ gf_mp3_get_next_header@Base 1.0.1+dfsg1-1~
++ gf_mp3_get_next_header_mem@Base 1.0.1+dfsg1-1~
++ gf_mp3_layer@Base 1.0.1+dfsg1-1~
++ gf_mp3_num_channels@Base 1.0.1+dfsg1-1~
++ gf_mp3_object_type_indication@Base 1.0.1+dfsg1-1~
++ gf_mp3_sampling_rate@Base 1.0.1+dfsg1-1~
++ gf_mp3_version@Base 1.0.1+dfsg1-1~
++ gf_mp3_version_name@Base 1.0.1+dfsg1-1~
++ gf_mp3_window_size@Base 1.0.1+dfsg1-1~
++ gf_mpd_complete_from_dom@Base 1.0.1+dfsg1-1~
++ gf_mpd_del@Base 1.0.1+dfsg1-1~
++ gf_mpd_delete_segment_list@Base 1.0.1+dfsg1-1~
++ gf_mpd_get_base_url_count@Base 1.0.1+dfsg1-1~
++ gf_mpd_get_duration@Base 1.0.1+dfsg1-1~
++ gf_mpd_get_segment_start_time_with_timescale@Base 1.0.1+dfsg1-1~
++ gf_mpd_init_from_dom@Base 1.0.1+dfsg1-1~
++ gf_mpd_init_smooth_from_dom@Base 1.0.1+dfsg1-1~
++ gf_mpd_new@Base 1.0.1+dfsg1-1~
++ gf_mpd_resolve_segment_duration@Base 1.0.1+dfsg1-1~
++ gf_mpd_resolve_url@Base 1.0.1+dfsg1-1~
++ gf_mpd_seek_in_period@Base 1.0.1+dfsg1-1~
++ gf_mpd_smooth_to_mpd@Base 1.0.1+dfsg1-1~
++ gf_mpd_solve_segment_list_xlink@Base 1.0.1+dfsg1-1~
++ gf_mpd_write_file@Base 1.0.1+dfsg1-1~
++ gf_mpegh_get_mhas_pl@Base 1.0.1+dfsg1-1~
++ gf_mpegv12_get_config@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_matrix@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_rotation@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_scale@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_scale_at@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_skew@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_skew_x@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_skew_y@Base 1.0.1+dfsg1-1~
++ gf_mx2d_add_translation@Base 1.0.1+dfsg1-1~
++ gf_mx2d_apply_coords@Base 1.0.1+dfsg1-1~
++ gf_mx2d_apply_point@Base 1.0.1+dfsg1-1~
++ gf_mx2d_apply_rect@Base 1.0.1+dfsg1-1~
++ gf_mx2d_decompose@Base 1.0.1+dfsg1-1~
++ gf_mx2d_from_mx@Base 1.0.1+dfsg1-1~
++ gf_mx2d_inverse@Base 1.0.1+dfsg1-1~
++ gf_mx2d_pre_multiply@Base 1.0.1+dfsg1-1~
++ gf_mx_add_matrix@Base 1.0.1+dfsg1-1~
++ gf_mx_add_matrix_2d@Base 1.0.1+dfsg1-1~
++ gf_mx_add_matrix_4x4@Base 1.0.1+dfsg1-1~
++ gf_mx_add_rotation@Base 1.0.1+dfsg1-1~
++ gf_mx_add_scale@Base 1.0.1+dfsg1-1~
++ gf_mx_add_translation@Base 1.0.1+dfsg1-1~
++ gf_mx_apply_bbox@Base 1.0.1+dfsg1-1~
++ gf_mx_apply_bbox_sphere@Base 1.0.1+dfsg1-1~
++ gf_mx_apply_plane@Base 1.0.1+dfsg1-1~
++ gf_mx_apply_ray@Base 1.0.1+dfsg1-1~
++ gf_mx_apply_rect@Base 1.0.1+dfsg1-1~
++ gf_mx_apply_vec@Base 1.0.1+dfsg1-1~
++ gf_mx_apply_vec_4x4@Base 1.0.1+dfsg1-1~
++ gf_mx_decompose@Base 1.0.1+dfsg1-1~
++ gf_mx_del@Base 1.0.1+dfsg1-1~
++ gf_mx_equal@Base 1.0.1+dfsg1-1~
++ gf_mx_from_mx2d@Base 1.0.1+dfsg1-1~
++ gf_mx_get_num_locks@Base 1.0.1+dfsg1-1~
++ gf_mx_get_yaw_pitch_roll@Base 1.0.1+dfsg1-1~
++ gf_mx_inverse@Base 1.0.1+dfsg1-1~
++ gf_mx_inverse_4x4@Base 1.0.1+dfsg1-1~
++ gf_mx_lookat@Base 1.0.1+dfsg1-1~
++ gf_mx_new@Base 1.0.1+dfsg1-1~
++ gf_mx_ortho@Base 1.0.1+dfsg1-1~
++ gf_mx_ortho_reverse_z@Base 1.0.1+dfsg1-1~
++ gf_mx_p@Base 1.0.1+dfsg1-1~
++ gf_mx_perspective@Base 1.0.1+dfsg1-1~
++ gf_mx_perspective_reverse_z@Base 1.0.1+dfsg1-1~
++ gf_mx_rotate_vector@Base 1.0.1+dfsg1-1~
++ gf_mx_rotation_matrix_from_vectors@Base 1.0.1+dfsg1-1~
++ gf_mx_transpose@Base 1.0.1+dfsg1-1~
++ gf_mx_try_lock@Base 1.0.1+dfsg1-1~
++ gf_mx_v@Base 1.0.1+dfsg1-1~
++ gf_net_get_ntp@Base 1.0.1+dfsg1-1~
++ gf_net_get_ntp_diff_ms@Base 1.0.1+dfsg1-1~
++ gf_net_get_ntp_ms@Base 1.0.1+dfsg1-1~
++ gf_net_get_ntp_ts@Base 1.0.1+dfsg1-1~
++ gf_net_get_timezone@Base 1.0.1+dfsg1-1~
++ gf_net_get_utc@Base 1.0.1+dfsg1-1~
++ gf_net_get_utc_ts@Base 1.0.1+dfsg1-1~
++ gf_net_has_ipv6@Base 1.0.1+dfsg1-1~
++ gf_net_is_ipv6@Base 1.0.1+dfsg1-1~
++ gf_net_ntp_diff_ms@Base 1.0.1+dfsg1-1~
++ gf_net_ntp_to_utc@Base 1.0.1+dfsg1-1~
++ gf_net_parse_date@Base 1.0.1+dfsg1-1~
++ gf_net_set_ntp_shift@Base 1.0.1+dfsg1-1~
++ gf_node_allow_cyclic_traverse@Base 1.0.1+dfsg1-1~
++ gf_node_changed@Base 1.0.1+dfsg1-1~
++ gf_node_clone@Base 1.0.1+dfsg1-1~
++ gf_node_dirty_clear@Base 1.0.1+dfsg1-1~
++ gf_node_dirty_get@Base 1.0.1+dfsg1-1~
++ gf_node_dirty_parent_graph@Base 1.0.1+dfsg1-1~
++ gf_node_dirty_parents@Base 1.0.1+dfsg1-1~
++ gf_node_dirty_reset@Base 1.0.1+dfsg1-1~
++ gf_node_dirty_set@Base 1.0.1+dfsg1-1~
++ gf_node_dom_listener_add@Base 1.0.1+dfsg1-1~
++ gf_node_event_out@Base 1.0.1+dfsg1-1~
++ gf_node_event_out_str@Base 1.0.1+dfsg1-1~
++ gf_node_get_attribute_by_name@Base 1.0.1+dfsg1-1~
++ gf_node_get_attribute_by_tag@Base 1.0.1+dfsg1-1~
++ gf_node_get_class_name@Base 1.0.1+dfsg1-1~
++ gf_node_get_field@Base 1.0.1+dfsg1-1~
++ gf_node_get_field_by_name@Base 1.0.1+dfsg1-1~
++ gf_node_get_field_count@Base 1.0.1+dfsg1-1~
++ gf_node_get_graph@Base 1.0.1+dfsg1-1~
++ gf_node_get_id@Base 1.0.1+dfsg1-1~
++ gf_node_get_name@Base 1.0.1+dfsg1-1~
++ gf_node_get_name_and_id@Base 1.0.1+dfsg1-1~
++ gf_node_get_num_fields_in_mode@Base 1.0.1+dfsg1-1~
++ gf_node_get_parent@Base 1.0.1+dfsg1-1~
++ gf_node_get_parent_count@Base 1.0.1+dfsg1-1~
++ gf_node_get_private@Base 1.0.1+dfsg1-1~
++ gf_node_get_proto@Base 1.0.1+dfsg1-1~
++ gf_node_get_proto_root@Base 1.0.1+dfsg1-1~
++ gf_node_get_scene_time@Base 1.0.1+dfsg1-1~
++ gf_node_get_tag@Base 1.0.1+dfsg1-1~
++ gf_node_in_table_by_tag@Base 1.0.1+dfsg1-1~
++ gf_node_init@Base 1.0.1+dfsg1-1~
++ gf_node_insert_child@Base 1.0.1+dfsg1-1~
++ gf_node_list_add_child@Base 1.0.1+dfsg1-1~
++ gf_node_list_add_child_last@Base 1.0.1+dfsg1-1~
++ gf_node_list_del_child@Base 1.0.1+dfsg1-1~
++ gf_node_list_del_child_idx@Base 1.0.1+dfsg1-1~
++ gf_node_list_find_child@Base 1.0.1+dfsg1-1~
++ gf_node_list_get_child@Base 1.0.1+dfsg1-1~
++ gf_node_list_get_count@Base 1.0.1+dfsg1-1~
++ gf_node_list_insert_child@Base 1.0.1+dfsg1-1~
++ gf_node_mpeg4_type_by_class_name@Base 1.0.1+dfsg1-1~
++ gf_node_new@Base 1.0.1+dfsg1-1~
++ gf_node_parent_of@Base 1.0.1+dfsg1-1~
++ gf_node_proto_is_grouping@Base 1.0.1+dfsg1-1~
++ gf_node_proto_set_grouping@Base 1.0.1+dfsg1-1~
++ gf_node_register@Base 1.0.1+dfsg1-1~
++ gf_node_register_iri@Base 1.0.1+dfsg1-1~
++ gf_node_remove_id@Base 1.0.1+dfsg1-1~
++ gf_node_replace@Base 1.0.1+dfsg1-1~
++ gf_node_replace_child@Base 1.0.1+dfsg1-1~
++ gf_node_set_callback_function@Base 1.0.1+dfsg1-1~
++ gf_node_set_cyclic_traverse_flag@Base 1.0.1+dfsg1-1~
++ gf_node_set_id@Base 1.0.1+dfsg1-1~
++ gf_node_set_private@Base 1.0.1+dfsg1-1~
++ gf_node_set_proto_eventin_handler@Base 1.0.1+dfsg1-1~
++ gf_node_store_embedded_data@Base 1.0.1+dfsg1-1~
++ gf_node_traverse@Base 1.0.1+dfsg1-1~
++ gf_node_traverse_children@Base 1.0.1+dfsg1-1~
++ gf_node_unregister@Base 1.0.1+dfsg1-1~
++ gf_node_unregister_children@Base 1.0.1+dfsg1-1~
++ gf_node_unregister_iri@Base 1.0.1+dfsg1-1~
++ gf_node_x3d_type_by_class_name@Base 1.0.1+dfsg1-1~
++ gf_ntohl@Base 1.0.1+dfsg1-1~
++ gf_ntohs@Base 1.0.1+dfsg1-1~
++ gf_odf_av1_cfg_del@Base 1.0.1+dfsg1-1~
++ gf_odf_av1_cfg_new@Base 1.0.1+dfsg1-1~
++ gf_odf_av1_cfg_read@Base 1.0.1+dfsg1-1~
++ gf_odf_av1_cfg_read_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_av1_cfg_read_bs_size@Base 1.0.1+dfsg1-1~
++ gf_odf_av1_cfg_write@Base 1.0.1+dfsg1-1~
++ gf_odf_av1_cfg_write_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_avc_cfg_del@Base 1.0.1+dfsg1-1~
++ gf_odf_avc_cfg_new@Base 1.0.1+dfsg1-1~
++ gf_odf_avc_cfg_read@Base 1.0.1+dfsg1-1~
++ gf_odf_avc_cfg_write@Base 1.0.1+dfsg1-1~
++ gf_odf_avc_cfg_write_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_add_com@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_decode@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_del@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_encode@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_get_au@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_get_com@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_new@Base 1.0.1+dfsg1-1~
++ gf_odf_codec_set_au@Base 1.0.1+dfsg1-1~
++ gf_odf_com_del@Base 1.0.1+dfsg1-1~
++ gf_odf_com_new@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_add_desc@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_copy@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_del@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_esd_new@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_list_del@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_list_read@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_list_size@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_list_write@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_new@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_read@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_size@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_write@Base 1.0.1+dfsg1-1~
++ gf_odf_desc_write_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_dump_com@Base 1.0.1+dfsg1-1~
++ gf_odf_dump_com_list@Base 1.0.1+dfsg1-1~
++ gf_odf_dump_desc@Base 1.0.1+dfsg1-1~
++ gf_odf_dump_txtcfg@Base 1.0.1+dfsg1-1~
++ gf_odf_encode_ui_config@Base 1.0.1+dfsg1-1~
++ gf_odf_get_bifs_config@Base 1.0.1+dfsg1-1~
++ gf_odf_get_laser_config@Base 1.0.1+dfsg1-1~
++ gf_odf_get_text_config@Base 1.0.1+dfsg1-1~
++ gf_odf_hevc_cfg_del@Base 1.0.1+dfsg1-1~
++ gf_odf_hevc_cfg_new@Base 1.0.1+dfsg1-1~
++ gf_odf_hevc_cfg_read@Base 1.0.1+dfsg1-1~
++ gf_odf_hevc_cfg_read_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_hevc_cfg_write@Base 1.0.1+dfsg1-1~
++ gf_odf_hevc_cfg_write_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_parse_descriptor@Base 1.0.1+dfsg1-1~
++ gf_odf_slc_set_pref@Base 1.0.1+dfsg1-1~
++ gf_odf_tx3g_read@Base 1.0.1+dfsg1-1~
++ gf_odf_vp_cfg_del@Base 1.0.1+dfsg1-1~
++ gf_odf_vp_cfg_new@Base 1.0.1+dfsg1-1~
++ gf_odf_vp_cfg_read@Base 1.0.1+dfsg1-1~
++ gf_odf_vp_cfg_read_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_vp_cfg_write@Base 1.0.1+dfsg1-1~
++ gf_odf_vp_cfg_write_bs@Base 1.0.1+dfsg1-1~
++ gf_odf_write_descriptor@Base 1.0.1+dfsg1-1~
++ gf_odm_disconnect@Base 1.0.1+dfsg1-1~
++ gf_odm_get_object_info@Base 1.0.1+dfsg1-1~
++ gf_odm_new@Base 1.0.1+dfsg1-1~
++ gf_odm_setup_object@Base 1.0.1+dfsg1-1~
++ gf_odm_setup_pid@Base 1.0.1+dfsg1-1~
++ gf_opts_default_shared_directory@Base 1.0.1+dfsg1-1~
++ gf_opts_del_section@Base 1.0.1+dfsg1-1~
++ gf_opts_discard_changes@Base 1.0.1+dfsg1-1~
++ gf_opts_get_bool@Base 1.0.1+dfsg1-1~
++ gf_opts_get_filename@Base 1.0.1+dfsg1-1~
++ gf_opts_get_int@Base 1.0.1+dfsg1-1~
++ gf_opts_get_key@Base 1.0.1+dfsg1-1~
++ gf_opts_get_key_count@Base 1.0.1+dfsg1-1~
++ gf_opts_get_key_name@Base 1.0.1+dfsg1-1~
++ gf_opts_get_key_restricted@Base 1.0.1+dfsg1-1~
++ gf_opts_get_section_count@Base 1.0.1+dfsg1-1~
++ gf_opts_get_section_name@Base 1.0.1+dfsg1-1~
++ gf_opts_set_key@Base 1.0.1+dfsg1-1~
++ gf_path_add_arc@Base 1.0.1+dfsg1-1~
++ gf_path_add_arc_to@Base 1.0.1+dfsg1-1~
++ gf_path_add_bezier@Base 1.0.1+dfsg1-1~
++ gf_path_add_cubic_to@Base 1.0.1+dfsg1-1~
++ gf_path_add_cubic_to_vec@Base 1.0.1+dfsg1-1~
++ gf_path_add_ellipse@Base 1.0.1+dfsg1-1~
++ gf_path_add_line_to@Base 1.0.1+dfsg1-1~
++ gf_path_add_line_to_vec@Base 1.0.1+dfsg1-1~
++ gf_path_add_move_to@Base 1.0.1+dfsg1-1~
++ gf_path_add_move_to_vec@Base 1.0.1+dfsg1-1~
++ gf_path_add_quadratic_to@Base 1.0.1+dfsg1-1~
++ gf_path_add_quadratic_to_vec@Base 1.0.1+dfsg1-1~
++ gf_path_add_rect@Base 1.0.1+dfsg1-1~
++ gf_path_add_rect_center@Base 1.0.1+dfsg1-1~
++ gf_path_add_svg_arc_to@Base 1.0.1+dfsg1-1~
++ gf_path_clone@Base 1.0.1+dfsg1-1~
++ gf_path_close@Base 1.0.1+dfsg1-1~
++ gf_path_del@Base 1.0.1+dfsg1-1~
++ gf_path_flatten@Base 1.0.1+dfsg1-1~
++ gf_path_get_bounds@Base 1.0.1+dfsg1-1~
++ gf_path_get_control_bounds@Base 1.0.1+dfsg1-1~
++ gf_path_get_flatten@Base 1.0.1+dfsg1-1~
++ gf_path_get_outline@Base 1.0.1+dfsg1-1~
++ gf_path_is_empty@Base 1.0.1+dfsg1-1~
++ gf_path_iterator_del@Base 1.0.1+dfsg1-1~
++ gf_path_iterator_get_length@Base 1.0.1+dfsg1-1~
++ gf_path_iterator_get_transform@Base 1.0.1+dfsg1-1~
++ gf_path_iterator_new@Base 1.0.1+dfsg1-1~
++ gf_path_new@Base 1.0.1+dfsg1-1~
++ gf_path_point_over@Base 1.0.1+dfsg1-1~
++ gf_path_reset@Base 1.0.1+dfsg1-1~
++ gf_pixel_fmt_all_names@Base 1.0.1+dfsg1-1~
++ gf_pixel_fmt_all_shortnames@Base 1.0.1+dfsg1-1~
++ gf_pixel_fmt_enum@Base 1.0.1+dfsg1-1~
++ gf_pixel_fmt_name@Base 1.0.1+dfsg1-1~
++ gf_pixel_fmt_parse@Base 1.0.1+dfsg1-1~
++ gf_pixel_fmt_sname@Base 1.0.1+dfsg1-1~
++ gf_pixel_get_bytes_per_pixel@Base 1.0.1+dfsg1-1~
++ gf_pixel_get_nb_comp@Base 1.0.1+dfsg1-1~
++ gf_pixel_get_size_info@Base 1.0.1+dfsg1-1~
++ gf_plane_get_distance@Base 1.0.1+dfsg1-1~
++ gf_plane_get_p_vertex_idx@Base 1.0.1+dfsg1-1~
++ gf_plane_intersect_line@Base 1.0.1+dfsg1-1~
++ gf_polygone2d_get_convexity@Base 1.0.1+dfsg1-1~
++ gf_prompt_get_char@Base 1.0.1+dfsg1-1~
++ gf_prompt_get_size@Base 1.0.1+dfsg1-1~
++ gf_prompt_has_input@Base 1.0.1+dfsg1-1~
++ gf_prompt_set_echo_off@Base 1.0.1+dfsg1-1~
++ gf_props_4cc_get_flags@Base 1.0.1+dfsg1-1~
++ gf_props_4cc_get_name@Base 1.0.1+dfsg1-1~
++ gf_props_4cc_get_type@Base 1.0.1+dfsg1-1~
++ gf_props_dump@Base 1.0.1+dfsg1-1~
++ gf_props_dump_val@Base 1.0.1+dfsg1-1~
++ gf_props_get_description@Base 1.0.1+dfsg1-1~
++ gf_props_get_id@Base 1.0.1+dfsg1-1~
++ gf_props_get_type_desc@Base 1.0.1+dfsg1-1~
++ gf_props_get_type_name@Base 1.0.1+dfsg1-1~
++ gf_props_parse_type@Base 1.0.1+dfsg1-1~
++ gf_quat_from_axis_cos@Base 1.0.1+dfsg1-1~
++ gf_quat_from_matrix@Base 1.0.1+dfsg1-1~
++ gf_quat_from_rotation@Base 1.0.1+dfsg1-1~
++ gf_quat_get_inv@Base 1.0.1+dfsg1-1~
++ gf_quat_multiply@Base 1.0.1+dfsg1-1~
++ gf_quat_rotate@Base 1.0.1+dfsg1-1~
++ gf_quat_slerp@Base 1.0.1+dfsg1-1~
++ gf_quat_to_rotation@Base 1.0.1+dfsg1-1~
++ gf_rand@Base 1.0.1+dfsg1-1~
++ gf_rand_init@Base 1.0.1+dfsg1-1~
++ gf_ray@Base 1.0.1+dfsg1-1~
++ gf_ray_hit_box@Base 1.0.1+dfsg1-1~
++ gf_ray_hit_sphere@Base 1.0.1+dfsg1-1~
++ gf_ray_hit_triangle@Base 1.0.1+dfsg1-1~
++ gf_realloc@Base 1.0.1+dfsg1-1~
++ gf_rect_center@Base 1.0.1+dfsg1-1~
++ gf_rect_equal@Base 1.0.1+dfsg1-1~
++ gf_rect_from_bbox@Base 1.0.1+dfsg1-1~
++ gf_rect_overlaps@Base 1.0.1+dfsg1-1~
++ gf_rect_pixelize@Base 1.0.1+dfsg1-1~
++ gf_rect_union@Base 1.0.1+dfsg1-1~
++ gf_rmdir@Base 1.0.1+dfsg1-1~
++ gf_rtp_builder_del@Base 1.0.1+dfsg1-1~
++ gf_rtp_builder_format_sdp@Base 1.0.1+dfsg1-1~
++ gf_rtp_builder_get_payload_name@Base 1.0.1+dfsg1-1~
++ gf_rtp_builder_init@Base 1.0.1+dfsg1-1~
++ gf_rtp_builder_new@Base 1.0.1+dfsg1-1~
++ gf_rtp_builder_process@Base 1.0.1+dfsg1-1~
++ gf_rtp_decode_rtcp@Base 1.0.1+dfsg1-1~
++ gf_rtp_decode_rtp@Base 1.0.1+dfsg1-1~
++ gf_rtp_del@Base 1.0.1+dfsg1-1~
++ gf_rtp_depacketizer_del@Base 1.0.1+dfsg1-1~
++ gf_rtp_depacketizer_new@Base 1.0.1+dfsg1-1~
++ gf_rtp_depacketizer_process@Base 1.0.1+dfsg1-1~
++ gf_rtp_depacketizer_reset@Base 1.0.1+dfsg1-1~
++ gf_rtp_enable_nat_keepalive@Base 1.0.1+dfsg1-1~
++ gf_rtp_flush_rtp@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_clockrate@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_current_time@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_hight_interleave_id@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_loss@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_low_interleave_id@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_ports@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_tcp_bytes_sent@Base 1.0.1+dfsg1-1~
++ gf_rtp_get_transport@Base 1.0.1+dfsg1-1~
++ gf_rtp_initialize@Base 1.0.1+dfsg1-1~
++ gf_rtp_is_interleaved@Base 1.0.1+dfsg1-1~
++ gf_rtp_is_unicast@Base 1.0.1+dfsg1-1~
++ gf_rtp_new@Base 1.0.1+dfsg1-1~
++ gf_rtp_read_flush@Base 1.0.1+dfsg1-1~
++ gf_rtp_read_rtcp@Base 1.0.1+dfsg1-1~
++ gf_rtp_read_rtp@Base 1.0.1+dfsg1-1~
++ gf_rtp_reorderer_add@Base 1.0.1+dfsg1-1~
++ gf_rtp_reorderer_del@Base 1.0.1+dfsg1-1~
++ gf_rtp_reorderer_get@Base 1.0.1+dfsg1-1~
++ gf_rtp_reorderer_new@Base 1.0.1+dfsg1-1~
++ gf_rtp_reorderer_reset@Base 1.0.1+dfsg1-1~
++ gf_rtp_reset_buffers@Base 1.0.1+dfsg1-1~
++ gf_rtp_reset_ssrc@Base 1.0.1+dfsg1-1~
++ gf_rtp_send_bye@Base 1.0.1+dfsg1-1~
++ gf_rtp_send_packet@Base 1.0.1+dfsg1-1~
++ gf_rtp_send_rtcp_report@Base 1.0.1+dfsg1-1~
++ gf_rtp_set_info_rtp@Base 1.0.1+dfsg1-1~
++ gf_rtp_set_ports@Base 1.0.1+dfsg1-1~
++ gf_rtp_setup_payload@Base 1.0.1+dfsg1-1~
++ gf_rtp_setup_transport@Base 1.0.1+dfsg1-1~
++ gf_rtp_stop@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_append_sdp@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_append_sdp_extended@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_del@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_disable_auto_rtcp@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_format_sdp_header@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_get_next_rtp_sn@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_get_payload_type@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_new@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_send_au@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_send_au_with_sn@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_send_bye@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_send_data@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_send_rtcp@Base 1.0.1+dfsg1-1~
++ gf_rtp_streamer_set_interleave_callbacks@Base 1.0.1+dfsg1-1~
++ gf_rtsp_command_del@Base 1.0.1+dfsg1-1~
++ gf_rtsp_command_new@Base 1.0.1+dfsg1-1~
++ gf_rtsp_command_reset@Base 1.0.1+dfsg1-1~
++ gf_rtsp_generate_session_id@Base 1.0.1+dfsg1-1~
++ gf_rtsp_get_command@Base 1.0.1+dfsg1-1~
++ gf_rtsp_get_remote_address@Base 1.0.1+dfsg1-1~
++ gf_rtsp_get_response@Base 1.0.1+dfsg1-1~
++ gf_rtsp_get_server_name@Base 1.0.1+dfsg1-1~
++ gf_rtsp_get_session_ip@Base 1.0.1+dfsg1-1~
++ gf_rtsp_get_session_port@Base 1.0.1+dfsg1-1~
++ gf_rtsp_get_session_state@Base 1.0.1+dfsg1-1~
++ gf_rtsp_http_tunnel_start@Base 1.0.1+dfsg1-1~
++ gf_rtsp_is_my_session@Base 1.0.1+dfsg1-1~
++ gf_rtsp_nc_to_string@Base 1.0.1+dfsg1-1~
++ gf_rtsp_range_del@Base 1.0.1+dfsg1-1~
++ gf_rtsp_range_new@Base 1.0.1+dfsg1-1~
++ gf_rtsp_range_parse@Base 1.0.1+dfsg1-1~
++ gf_rtsp_register_interleave@Base 1.0.1+dfsg1-1~
++ gf_rtsp_reset_aggregation@Base 1.0.1+dfsg1-1~
++ gf_rtsp_response_del@Base 1.0.1+dfsg1-1~
++ gf_rtsp_response_new@Base 1.0.1+dfsg1-1~
++ gf_rtsp_response_reset@Base 1.0.1+dfsg1-1~
++ gf_rtsp_send_command@Base 1.0.1+dfsg1-1~
++ gf_rtsp_send_response@Base 1.0.1+dfsg1-1~
++ gf_rtsp_session_del@Base 1.0.1+dfsg1-1~
++ gf_rtsp_session_new@Base 1.0.1+dfsg1-1~
++ gf_rtsp_session_new_server@Base 1.0.1+dfsg1-1~
++ gf_rtsp_session_read@Base 1.0.1+dfsg1-1~
++ gf_rtsp_session_reset@Base 1.0.1+dfsg1-1~
++ gf_rtsp_session_write_interleaved@Base 1.0.1+dfsg1-1~
++ gf_rtsp_set_buffer_size@Base 1.0.1+dfsg1-1~
++ gf_rtsp_set_interleave_callback@Base 1.0.1+dfsg1-1~
++ gf_rtsp_transport_clone@Base 1.0.1+dfsg1-1~
++ gf_rtsp_transport_del@Base 1.0.1+dfsg1-1~
++ gf_rtsp_unregister_interleave@Base 1.0.1+dfsg1-1~
++ gf_sc_audio_check_url@Base 1.0.1+dfsg1-1~
++ gf_sc_audio_open@Base 1.0.1+dfsg1-1~
++ gf_sc_audio_register@Base 1.0.1+dfsg1-1~
++ gf_sc_audio_restart@Base 1.0.1+dfsg1-1~
++ gf_sc_audio_setup@Base 1.0.1+dfsg1-1~
++ gf_sc_audio_stop@Base 1.0.1+dfsg1-1~
++ gf_sc_audio_unregister@Base 1.0.1+dfsg1-1~
++ gf_sc_connect_from_time_ex@Base 1.0.1+dfsg1-1~
++ gf_sc_disconnect@Base 1.0.1+dfsg1-1~
++ gf_sc_draw_frame@Base 1.0.1+dfsg1-1~
++ gf_sc_focus_switch_ring@Base 1.0.1+dfsg1-1~
++ gf_sc_get_clock@Base 1.0.1+dfsg1-1~
++ gf_sc_get_compositor@Base 1.0.1+dfsg1-1~
++ gf_sc_get_downloader@Base 1.0.1+dfsg1-1~
++ gf_sc_get_fps@Base 1.0.1+dfsg1-1~
++ gf_sc_get_mfurl_from_xlink@Base 1.0.1+dfsg1-1~
++ gf_sc_get_option@Base 1.0.1+dfsg1-1~
++ gf_sc_get_screen_buffer@Base 1.0.1+dfsg1-1~
++ gf_sc_get_selected_text@Base 1.0.1+dfsg1-1~
++ gf_sc_get_viewpoint@Base 1.0.1+dfsg1-1~
++ gf_sc_input_sensor_keyboard_input@Base 1.0.1+dfsg1-1~
++ gf_sc_input_sensor_mouse_input@Base 1.0.1+dfsg1-1~
++ gf_sc_input_sensor_string_input@Base 1.0.1+dfsg1-1~
++ gf_sc_invalidate@Base 1.0.1+dfsg1-1~
++ gf_sc_is_over@Base 1.0.1+dfsg1-1~
++ gf_sc_lock@Base 1.0.1+dfsg1-1~
++ gf_sc_map_point@Base 1.0.1+dfsg1-1~
++ gf_sc_navigation_supported@Base 1.0.1+dfsg1-1~
++ gf_sc_on_event@Base 1.0.1+dfsg1-1~
++ gf_sc_play_from_time@Base 1.0.1+dfsg1-1~
++ gf_sc_register_extra_graph@Base 1.0.1+dfsg1-1~
++ gf_sc_register_time_node@Base 1.0.1+dfsg1-1~
++ gf_sc_release_screen_buffer@Base 1.0.1+dfsg1-1~
++ gf_sc_reload_config@Base 1.0.1+dfsg1-1~
++ gf_sc_reset_graphics@Base 1.0.1+dfsg1-1~
++ gf_sc_send_event@Base 1.0.1+dfsg1-1~
++ gf_sc_set_option@Base 1.0.1+dfsg1-1~
++ gf_sc_set_scene_size@Base 1.0.1+dfsg1-1~
++ gf_sc_set_size@Base 1.0.1+dfsg1-1~
++ gf_sc_set_viewpoint@Base 1.0.1+dfsg1-1~
++ gf_sc_svg_convert_length_to_display@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_check_url_change@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_destroy@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_get_handler@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_open@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_play@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_play_from_to@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_release_stream@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_restart@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_setup@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_stop@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_stop_no_unregister@Base 1.0.1+dfsg1-1~
++ gf_sc_texture_update_frame@Base 1.0.1+dfsg1-1~
++ gf_sc_unregister_time_node@Base 1.0.1+dfsg1-1~
++ gf_sc_user_event@Base 1.0.1+dfsg1-1~
++ gf_scene_attach_to_compositor@Base 1.0.1+dfsg1-1~
++ gf_scene_del@Base 1.0.1+dfsg1-1~
++ gf_scene_disconnect@Base 1.0.1+dfsg1-1~
++ gf_scene_find_odm@Base 1.0.1+dfsg1-1~
++ gf_scene_force_size@Base 1.0.1+dfsg1-1~
++ gf_scene_get_media_object_ex@Base 1.0.1+dfsg1-1~
++ gf_scene_get_time@Base 1.0.1+dfsg1-1~
++ gf_scene_new@Base 1.0.1+dfsg1-1~
++ gf_scene_node_callback@Base 1.0.1+dfsg1-1~
++ gf_scene_process_anchor@Base 1.0.1+dfsg1-1~
++ gf_scene_register_extra_graph@Base 1.0.1+dfsg1-1~
++ gf_scene_resume_live@Base 1.0.1+dfsg1-1~
++ gf_scene_select_object@Base 1.0.1+dfsg1-1~
++ gf_scene_set_addon_layout_info@Base 1.0.1+dfsg1-1~
++ gf_scene_set_duration@Base 1.0.1+dfsg1-1~
++ gf_scene_set_service_id@Base 1.0.1+dfsg1-1~
++ gf_scene_set_timeshift_depth@Base 1.0.1+dfsg1-1~
++ gf_scene_setup_object@Base 1.0.1+dfsg1-1~
++ gf_scene_switch_quality@Base 1.0.1+dfsg1-1~
++ gf_sdp_conn_del@Base 1.0.1+dfsg1-1~
++ gf_sdp_conn_new@Base 1.0.1+dfsg1-1~
++ gf_sdp_fmtp_del@Base 1.0.1+dfsg1-1~
++ gf_sdp_fmtp_new@Base 1.0.1+dfsg1-1~
++ gf_sdp_info_del@Base 1.0.1+dfsg1-1~
++ gf_sdp_info_new@Base 1.0.1+dfsg1-1~
++ gf_sdp_info_parse@Base 1.0.1+dfsg1-1~
++ gf_sdp_info_reset@Base 1.0.1+dfsg1-1~
++ gf_sdp_media_del@Base 1.0.1+dfsg1-1~
++ gf_sdp_media_new@Base 1.0.1+dfsg1-1~
++ gf_sema_del@Base 1.0.1+dfsg1-1~
++ gf_sema_new@Base 1.0.1+dfsg1-1~
++ gf_sema_notify@Base 1.0.1+dfsg1-1~
++ gf_sema_wait@Base 1.0.1+dfsg1-1~
++ gf_sema_wait_for@Base 1.0.1+dfsg1-1~
++ gf_seng_aggregate_context@Base 1.0.1+dfsg1-1~
++ gf_seng_enable_aggregation@Base 1.0.1+dfsg1-1~
++ gf_seng_encode_context@Base 1.0.1+dfsg1-1~
++ gf_seng_encode_from_file@Base 1.0.1+dfsg1-1~
++ gf_seng_encode_from_string@Base 1.0.1+dfsg1-1~
++ gf_seng_get_base64_iod@Base 1.0.1+dfsg1-1~
++ gf_seng_get_iod@Base 1.0.1+dfsg1-1~
++ gf_seng_get_stream_carousel_info@Base 1.0.1+dfsg1-1~
++ gf_seng_get_stream_config@Base 1.0.1+dfsg1-1~
++ gf_seng_get_stream_count@Base 1.0.1+dfsg1-1~
++ gf_seng_init@Base 1.0.1+dfsg1-1~
++ gf_seng_save_context@Base 1.0.1+dfsg1-1~
++ gf_seng_terminate@Base 1.0.1+dfsg1-1~
++ gf_set_progress@Base 1.0.1+dfsg1-1~
++ gf_set_progress_callback@Base 1.0.1+dfsg1-1~
++ gf_sg_activate_routes@Base 1.0.1+dfsg1-1~
++ gf_sg_add_namespace@Base 1.0.1+dfsg1-1~
++ gf_sg_command_apply@Base 1.0.1+dfsg1-1~
++ gf_sg_command_apply_list@Base 1.0.1+dfsg1-1~
++ gf_sg_command_del@Base 1.0.1+dfsg1-1~
++ gf_sg_command_field_new@Base 1.0.1+dfsg1-1~
++ gf_sg_command_new@Base 1.0.1+dfsg1-1~
++ gf_sg_del@Base 1.0.1+dfsg1-1~
++ gf_sg_delete_all_protos@Base 1.0.1+dfsg1-1~
++ gf_sg_find_node@Base 1.0.1+dfsg1-1~
++ gf_sg_find_node_by_name@Base 1.0.1+dfsg1-1~
++ gf_sg_find_proto@Base 1.0.1+dfsg1-1~
++ gf_sg_fire_dom_event@Base 1.0.1+dfsg1-1~
++ gf_sg_get_max_node_id@Base 1.0.1+dfsg1-1~
++ gf_sg_get_next_available_node_id@Base 1.0.1+dfsg1-1~
++ gf_sg_get_next_available_proto_id@Base 1.0.1+dfsg1-1~
++ gf_sg_get_next_available_route_id@Base 1.0.1+dfsg1-1~
++ gf_sg_get_private@Base 1.0.1+dfsg1-1~
++ gf_sg_get_root_node@Base 1.0.1+dfsg1-1~
++ gf_sg_get_scene_size_info@Base 1.0.1+dfsg1-1~
++ gf_sg_handle_dom_event@Base 1.0.1+dfsg1-1~
++ gf_sg_handle_dom_event_for_vrml@Base 1.0.1+dfsg1-1~
++ gf_sg_has_scripting@Base 1.0.1+dfsg1-1~
++ gf_sg_js_dom_pre_destroy@Base 1.0.1+dfsg1-1~
++ gf_sg_js_get_node@Base 1.0.1+dfsg1-1~
++ gf_sg_mfurl_del@Base 1.0.1+dfsg1-1~
++ gf_sg_new@Base 1.0.1+dfsg1-1~
++ gf_sg_new_subscene@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_add_node_code@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_create_instance@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_del@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_field_find@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_field_find_by_name@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_field_get_field@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_field_is_sftime_offset@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_field_new@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_field_set_ised@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_get_class_name@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_get_extern_url@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_get_field_count@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_get_graph@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_get_id@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_instance_set_ised@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_load_code@Base 1.0.1+dfsg1-1~
++ gf_sg_proto_new@Base 1.0.1+dfsg1-1~
++ gf_sg_reset@Base 1.0.1+dfsg1-1~
++ gf_sg_route_del@Base 1.0.1+dfsg1-1~
++ gf_sg_route_del_by_id@Base 1.0.1+dfsg1-1~
++ gf_sg_route_find@Base 1.0.1+dfsg1-1~
++ gf_sg_route_find_by_name@Base 1.0.1+dfsg1-1~
++ gf_sg_route_get_name@Base 1.0.1+dfsg1-1~
++ gf_sg_route_new@Base 1.0.1+dfsg1-1~
++ gf_sg_route_new_to_callback@Base 1.0.1+dfsg1-1~
++ gf_sg_route_set_id@Base 1.0.1+dfsg1-1~
++ gf_sg_route_set_name@Base 1.0.1+dfsg1-1~
++ gf_sg_script_event_in@Base 1.0.1+dfsg1-1~
++ gf_sg_script_field_get_info@Base 1.0.1+dfsg1-1~
++ gf_sg_script_field_new@Base 1.0.1+dfsg1-1~
++ gf_sg_script_get_field_index@Base 1.0.1+dfsg1-1~
++ gf_sg_script_load@Base 1.0.1+dfsg1-1~
++ gf_sg_set_max_defined_route_id@Base 1.0.1+dfsg1-1~
++ gf_sg_set_node_callback@Base 1.0.1+dfsg1-1~
++ gf_sg_set_private@Base 1.0.1+dfsg1-1~
++ gf_sg_set_proto_loader@Base 1.0.1+dfsg1-1~
++ gf_sg_set_root_node@Base 1.0.1+dfsg1-1~
++ gf_sg_set_scene_size_info@Base 1.0.1+dfsg1-1~
++ gf_sg_set_scene_time_callback@Base 1.0.1+dfsg1-1~
++ gf_sg_sfcolor_to_rgba@Base 1.0.1+dfsg1-1~
++ gf_sg_sfrotation_interpolate@Base 1.0.1+dfsg1-1~
++ gf_sg_use_pixel_metrics@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_field_clone@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_field_copy@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_field_equal@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_field_pointer_del@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_field_pointer_new@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_get_event_type_name@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_get_field_type_name@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_get_sf_type@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_is_sf_field@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_mf_alloc@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_mf_append@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_mf_get_item@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_mf_insert@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_mf_remove@Base 1.0.1+dfsg1-1~
++ gf_sg_vrml_mf_reset@Base 1.0.1+dfsg1-1~
++ gf_sha1_csum@Base 1.0.1+dfsg1-1~
++ gf_sha1_file@Base 1.0.1+dfsg1-1~
++ gf_sk_accept@Base 1.0.1+dfsg1-1~
++ gf_sk_bind@Base 1.0.1+dfsg1-1~
++ gf_sk_connect@Base 1.0.1+dfsg1-1~
++ gf_sk_del@Base 1.0.1+dfsg1-1~
++ gf_sk_get_handle@Base 1.0.1+dfsg1-1~
++ gf_sk_get_host_name@Base 1.0.1+dfsg1-1~
++ gf_sk_get_local_info@Base 1.0.1+dfsg1-1~
++ gf_sk_get_local_ip@Base 1.0.1+dfsg1-1~
++ gf_sk_get_remote_address@Base 1.0.1+dfsg1-1~
++ gf_sk_is_multicast_address@Base 1.0.1+dfsg1-1~
++ gf_sk_listen@Base 1.0.1+dfsg1-1~
++ gf_sk_new@Base 1.0.1+dfsg1-1~
++ gf_sk_probe@Base 1.0.1+dfsg1-1~
++ gf_sk_receive@Base 1.0.1+dfsg1-1~
++ gf_sk_receive_no_select@Base 1.0.1+dfsg1-1~
++ gf_sk_receive_wait@Base 1.0.1+dfsg1-1~
++ gf_sk_reset@Base 1.0.1+dfsg1-1~
++ gf_sk_send@Base 1.0.1+dfsg1-1~
++ gf_sk_send_wait@Base 1.0.1+dfsg1-1~
++ gf_sk_server_mode@Base 1.0.1+dfsg1-1~
++ gf_sk_set_block_mode@Base 1.0.1+dfsg1-1~
++ gf_sk_set_buffer_size@Base 1.0.1+dfsg1-1~
++ gf_sk_set_usec_wait@Base 1.0.1+dfsg1-1~
++ gf_sk_setup_multicast@Base 1.0.1+dfsg1-1~
++ gf_sl_depacketize@Base 1.0.1+dfsg1-1~
++ gf_sl_get_header_size@Base 1.0.1+dfsg1-1~
++ gf_sl_packetize@Base 1.0.1+dfsg1-1~
++ gf_sleep@Base 1.0.1+dfsg1-1~
++ gf_sm_aggregate@Base 1.0.1+dfsg1-1~
++ gf_sm_del@Base 1.0.1+dfsg1-1~
++ gf_sm_dump@Base 1.0.1+dfsg1-1~
++ gf_sm_dump_command_list@Base 1.0.1+dfsg1-1~
++ gf_sm_dump_graph@Base 1.0.1+dfsg1-1~
++ gf_sm_dumper_del@Base 1.0.1+dfsg1-1~
++ gf_sm_dumper_new@Base 1.0.1+dfsg1-1~
++ gf_sm_dumper_set_extra_graph@Base 1.0.1+dfsg1-1~
++ gf_sm_encode_to_file@Base 1.0.1+dfsg1-1~
++ gf_sm_get_mux_info@Base 1.0.1+dfsg1-1~
++ gf_sm_import_bifs_subtitle@Base 1.0.1+dfsg1-1~
++ gf_sm_load_bt_from_string@Base 1.0.1+dfsg1-1~
++ gf_sm_load_done@Base 1.0.1+dfsg1-1~
++ gf_sm_load_init@Base 1.0.1+dfsg1-1~
++ gf_sm_load_run@Base 1.0.1+dfsg1-1~
++ gf_sm_load_string@Base 1.0.1+dfsg1-1~
++ gf_sm_new@Base 1.0.1+dfsg1-1~
++ gf_sm_stats_del@Base 1.0.1+dfsg1-1~
++ gf_sm_stats_for_command@Base 1.0.1+dfsg1-1~
++ gf_sm_stats_for_graph@Base 1.0.1+dfsg1-1~
++ gf_sm_stats_for_scene@Base 1.0.1+dfsg1-1~
++ gf_sm_stats_get@Base 1.0.1+dfsg1-1~
++ gf_sm_stats_new@Base 1.0.1+dfsg1-1~
++ gf_sm_stats_reset@Base 1.0.1+dfsg1-1~
++ gf_sm_stream_au_new@Base 1.0.1+dfsg1-1~
++ gf_sm_stream_new@Base 1.0.1+dfsg1-1~
++ gf_smil_set_media_duration@Base 1.0.1+dfsg1-1~
++ gf_smil_timing_init_runtime_info@Base 1.0.1+dfsg1-1~
++ gf_smil_timing_insert_clock@Base 1.0.1+dfsg1-1~
++ gf_smil_timing_is_active@Base 1.0.1+dfsg1-1~
++ gf_strdup@Base 1.0.1+dfsg1-1~
++ gf_stream_type_afx_name@Base 1.0.1+dfsg1-1~
++ gf_stream_type_all_names@Base 1.0.1+dfsg1-1~
++ gf_stream_type_by_name@Base 1.0.1+dfsg1-1~
++ gf_stream_type_name@Base 1.0.1+dfsg1-1~
++ gf_stream_types_enum@Base 1.0.1+dfsg1-1~
++ gf_stretch_bits@Base 1.0.1+dfsg1-1~
++ gf_svg_apply_animations@Base 1.0.1+dfsg1-1~
++ gf_svg_apply_inheritance@Base 1.0.1+dfsg1-1~
++ gf_svg_attributes_copy@Base 1.0.1+dfsg1-1~
++ gf_svg_create_attribute_value@Base 1.0.1+dfsg1-1~
++ gf_svg_flatten_attributes@Base 1.0.1+dfsg1-1~
++ gf_svg_is_animation_tag@Base 1.0.1+dfsg1-1~
++ gf_svg_parse_attribute@Base 1.0.1+dfsg1-1~
++ gf_svg_parse_element_id@Base 1.0.1+dfsg1-1~
++ gf_svg_parse_style@Base 1.0.1+dfsg1-1~
++ gf_svg_properties_init_pointers@Base 1.0.1+dfsg1-1~
++ gf_svg_properties_reset_pointers@Base 1.0.1+dfsg1-1~
++ gf_sys_clock@Base 1.0.1+dfsg1-1~
++ gf_sys_clock_high_res@Base 1.0.1+dfsg1-1~
++ gf_sys_close@Base 1.0.1+dfsg1-1~
++ gf_sys_features@Base 1.0.1+dfsg1-1~
++ gf_sys_format_help@Base 1.0.1+dfsg1-1~
++ gf_sys_get_arg@Base 1.0.1+dfsg1-1~
++ gf_sys_get_argc@Base 1.0.1+dfsg1-1~
++ gf_sys_get_argv@Base 1.0.1+dfsg1-1~
++ gf_sys_get_battery_state@Base 1.0.1+dfsg1-1~
++ gf_sys_get_options@Base 1.0.1+dfsg1-1~
++ gf_sys_get_process_id@Base 1.0.1+dfsg1-1~
++ gf_sys_get_rti@Base 1.0.1+dfsg1-1~
++ gf_sys_init@Base 1.0.1+dfsg1-1~
++ gf_sys_is_arg_used@Base 1.0.1+dfsg1-1~
++ gf_sys_is_gpac_arg@Base 1.0.1+dfsg1-1~
++ gf_sys_is_quiet@Base 1.0.1+dfsg1-1~
++ gf_sys_is_test_mode@Base 1.0.1+dfsg1-1~
++ gf_sys_localized@Base 1.0.1+dfsg1-1~
++ gf_sys_mark_arg_used@Base 1.0.1+dfsg1-1~
++ gf_sys_old_arch_compat@Base 1.0.1+dfsg1-1~
++ gf_sys_print_arg@Base 1.0.1+dfsg1-1~
++ gf_sys_print_core_help@Base 1.0.1+dfsg1-1~
++ gf_sys_profiler_enable_sampling@Base 1.0.1+dfsg1-1~
++ gf_sys_profiler_sampling_enabled@Base 1.0.1+dfsg1-1~
++ gf_sys_profiler_send@Base 1.0.1+dfsg1-1~
++ gf_sys_profiler_set_callback@Base 1.0.1+dfsg1-1~
++ gf_sys_set_args@Base 1.0.1+dfsg1-1~
++ gf_sys_set_cfg_option@Base 1.0.1+dfsg1-1~
++ gf_sys_set_console_code@Base 1.0.1+dfsg1-1~
++ gf_sys_word_match@Base 1.0.1+dfsg1-1~
++ gf_term_add_object@Base 1.0.1+dfsg1-1~
++ gf_term_connect@Base 1.0.1+dfsg1-1~
++ gf_term_connect_from_time@Base 1.0.1+dfsg1-1~
++ gf_term_connect_with_path@Base 1.0.1+dfsg1-1~
++ gf_term_del@Base 1.0.1+dfsg1-1~
++ gf_term_disconnect@Base 1.0.1+dfsg1-1~
++ gf_term_dump_scene@Base 1.0.1+dfsg1-1~
++ gf_term_find_service@Base 1.0.1+dfsg1-1~
++ gf_term_get_channel_net_info@Base 1.0.1+dfsg1-1~
++ gf_term_get_current_service_id@Base 1.0.1+dfsg1-1~
++ gf_term_get_download_info@Base 1.0.1+dfsg1-1~
++ gf_term_get_elapsed_time_in_ms@Base 1.0.1+dfsg1-1~
++ gf_term_get_framerate@Base 1.0.1+dfsg1-1~
++ gf_term_get_object@Base 1.0.1+dfsg1-1~
++ gf_term_get_object_count@Base 1.0.1+dfsg1-1~
++ gf_term_get_object_info@Base 1.0.1+dfsg1-1~
++ gf_term_get_offscreen_buffer@Base 1.0.1+dfsg1-1~
++ gf_term_get_option@Base 1.0.1+dfsg1-1~
++ gf_term_get_root_object@Base 1.0.1+dfsg1-1~
++ gf_term_get_screen_buffer@Base 1.0.1+dfsg1-1~
++ gf_term_get_service_info@Base 1.0.1+dfsg1-1~
++ gf_term_get_simulation_frame_rate@Base 1.0.1+dfsg1-1~
++ gf_term_get_text_selection@Base 1.0.1+dfsg1-1~
++ gf_term_get_time_in_ms@Base 1.0.1+dfsg1-1~
++ gf_term_get_url@Base 1.0.1+dfsg1-1~
++ gf_term_get_viewpoint@Base 1.0.1+dfsg1-1~
++ gf_term_get_visual_output_size@Base 1.0.1+dfsg1-1~
++ gf_term_get_world_info@Base 1.0.1+dfsg1-1~
++ gf_term_is_supported_url@Base 1.0.1+dfsg1-1~
++ gf_term_is_type_supported@Base 1.0.1+dfsg1-1~
++ gf_term_navigate_to@Base 1.0.1+dfsg1-1~
++ gf_term_new@Base 1.0.1+dfsg1-1~
++ gf_term_object_subscene_type@Base 1.0.1+dfsg1-1~
++ gf_term_paste_text@Base 1.0.1+dfsg1-1~
++ gf_term_play_from_time@Base 1.0.1+dfsg1-1~
++ gf_term_print_graph@Base 1.0.1+dfsg1-1~
++ gf_term_print_stats@Base 1.0.1+dfsg1-1~
++ gf_term_process_step@Base 1.0.1+dfsg1-1~
++ gf_term_release_screen_buffer@Base 1.0.1+dfsg1-1~
++ gf_term_scene_update@Base 1.0.1+dfsg1-1~
++ gf_term_select_object@Base 1.0.1+dfsg1-1~
++ gf_term_select_service@Base 1.0.1+dfsg1-1~
++ gf_term_send_event@Base 1.0.1+dfsg1-1~
++ gf_term_set_option@Base 1.0.1+dfsg1-1~
++ gf_term_set_size@Base 1.0.1+dfsg1-1~
++ gf_term_set_speed@Base 1.0.1+dfsg1-1~
++ gf_term_set_viewpoint@Base 1.0.1+dfsg1-1~
++ gf_term_switch_quality@Base 1.0.1+dfsg1-1~
++ gf_term_toggle_addons@Base 1.0.1+dfsg1-1~
++ gf_term_user_event@Base 1.0.1+dfsg1-1~
++ gf_th_del@Base 1.0.1+dfsg1-1~
++ gf_th_id@Base 1.0.1+dfsg1-1~
++ gf_th_new@Base 1.0.1+dfsg1-1~
++ gf_th_run@Base 1.0.1+dfsg1-1~
++ gf_th_set_priority@Base 1.0.1+dfsg1-1~
++ gf_th_status@Base 1.0.1+dfsg1-1~
++ gf_th_stop@Base 1.0.1+dfsg1-1~
++ gf_token_find@Base 1.0.1+dfsg1-1~
++ gf_token_get@Base 1.0.1+dfsg1-1~
++ gf_token_get_line@Base 1.0.1+dfsg1-1~
++ gf_token_get_strip@Base 1.0.1+dfsg1-1~
++ gf_url_colon_suffix@Base 1.0.1+dfsg1-1~
++ gf_url_concatenate@Base 1.0.1+dfsg1-1~
++ gf_url_concatenate_parent@Base 1.0.1+dfsg1-1~
++ gf_url_get_absolute_path@Base 1.0.1+dfsg1-1~
++ gf_url_get_resource_name@Base 1.0.1+dfsg1-1~
++ gf_url_get_resource_path@Base 1.0.1+dfsg1-1~
++ gf_url_is_local@Base 1.0.1+dfsg1-1~
++ gf_url_to_fs_path@Base 1.0.1+dfsg1-1~
++ gf_utc_time_since_1970@Base 1.0.1+dfsg1-1~
++ gf_utf8_is_right_to_left@Base 1.0.1+dfsg1-1~
++ gf_utf8_mbstowcs@Base 1.0.1+dfsg1-1~
++ gf_utf8_reorder_bidi@Base 1.0.1+dfsg1-1~
++ gf_utf8_wcslen@Base 1.0.1+dfsg1-1~
++ gf_utf8_wcstombs@Base 1.0.1+dfsg1-1~
++ gf_utf_get_utf8_string_from_bom@Base 1.0.1+dfsg1-1~
++ gf_v2d_distance@Base 1.0.1+dfsg1-1~
++ gf_v2d_from_polar@Base 1.0.1+dfsg1-1~
++ gf_v2d_len@Base 1.0.1+dfsg1-1~
++ gf_vec_cross@Base 1.0.1+dfsg1-1~
++ gf_vec_cross_p@Base 1.0.1+dfsg1-1~
++ gf_vec_dot@Base 1.0.1+dfsg1-1~
++ gf_vec_dot_p@Base 1.0.1+dfsg1-1~
++ gf_vec_len@Base 1.0.1+dfsg1-1~
++ gf_vec_len_p@Base 1.0.1+dfsg1-1~
++ gf_vec_lensq@Base 1.0.1+dfsg1-1~
++ gf_vec_lensq_p@Base 1.0.1+dfsg1-1~
++ gf_vec_norm@Base 1.0.1+dfsg1-1~
++ gf_vec_scale@Base 1.0.1+dfsg1-1~
++ gf_vec_scale_p@Base 1.0.1+dfsg1-1~
++ gf_vorbis_check_frame@Base 1.0.1+dfsg1-1~
++ gf_vorbis_parse_header@Base 1.0.1+dfsg1-1~
++ gf_webvtt_cue_del@Base 1.0.1+dfsg1-1~
++ gf_webvtt_dump_iso_track@Base 1.0.1+dfsg1-1~
++ gf_webvtt_parse_cues_from_data@Base 1.0.1+dfsg1-1~
++ gf_webvtt_parse_iso_cues@Base 1.0.1+dfsg1-1~
++ gf_x3d_get_node_type@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_append_child@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_create_attribute@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_del@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_get_error@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_get_line@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_get_root@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_get_root_idx@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_get_root_nodes_count@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_new@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_node_del@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_parse@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_parse_string@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_rem_child@Base 1.0.1+dfsg1-1~
++ gf_xml_dom_serialize@Base 1.0.1+dfsg1-1~
++ gf_xml_get_element_tag@Base 1.0.1+dfsg1-1~
++ gf_xml_get_root_type@Base 1.0.1+dfsg1-1~
++ gf_xml_parse_bit_sequence@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_binary_file@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_del@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_get_error@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_get_line@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_get_node_end_pos@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_get_node_start_pos@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_init@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_new@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_parse@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_parse_file@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_peek_node@Base 1.0.1+dfsg1-1~
++ gf_xml_sax_suspend@Base 1.0.1+dfsg1-1~
++ my_str_lwr@Base 1.0.1+dfsg1-1~
++ my_str_upr@Base 1.0.1+dfsg1-1~
++ utf8_to_ucs4@Base 1.0.1+dfsg1-1~
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d762163381569475ddc927d637e11562d303dac9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/share/gpac/gui
++usr/share/gpac/shaders
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0c5bb107c67d13a0a4e8892303322106d3a37fca
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From b15020f54aff24aaeb64b80771472be8e64a7adc Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 4 Jan 2021 11:24:26 +0100
++Subject: [PATCH] fixed #1662
++
++---
++ src/media_tools/isom_hinter.c | 8 ++++++--
++ 1 file changed, 6 insertions(+), 2 deletions(-)
++
++diff --git a/src/media_tools/isom_hinter.c b/src/media_tools/isom_hinter.c
++index 8af1d04b7f..2d05934f6d 100644
++--- a/src/media_tools/isom_hinter.c
+++++ b/src/media_tools/isom_hinter.c
++@@ -793,8 +793,12 @@ GF_Err gf_hinter_track_process(GF_RTPHinter *tkHint)
++                              }
++                              remain -= size;
++                              tkHint->rtp_p->sl_header.accessUnitEndFlag = remain ? 0 : 1;
++-                             e = gf_rtp_builder_process(tkHint->rtp_p, ptr, size, (u8) !remain, samp->dataLength, duration, (u8) (descIndex + GF_RTP_TX3G_SIDX_OFFSET) );
++-                             ptr += size;
+++                             if (!size) {
+++                                     GF_LOG(GF_LOG_WARNING, GF_LOG_RTP, ("[rtp hinter] Broken AVC nalu encapsulation: NALU size is 0, ignoring it\n", size));
+++                             } else {
+++                                     e = gf_rtp_builder_process(tkHint->rtp_p, ptr, size, (u8) !remain, samp->dataLength, duration, (u8) (descIndex + GF_RTP_TX3G_SIDX_OFFSET) );
+++                                     ptr += size;
+++                             }
++                              tkHint->rtp_p->sl_header.accessUnitStartFlag = 0;
++                      }
++              } else {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..04afafe05428958fef7fb9b8b684464209c2c0b5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From 5aba27604d957e960d8069d85ccaf868f8a7b07a Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 4 Jan 2021 11:18:27 +0100
++Subject: [PATCH] fixed #1661
++
++---
++ src/isomedia/isom_store.c | 3 +++
++ 1 file changed, 3 insertions(+)
++
++diff --git a/src/isomedia/isom_store.c b/src/isomedia/isom_store.c
++index ee2b2cfaf..b3aea7b69 100644
++--- a/src/isomedia/isom_store.c
+++++ b/src/isomedia/isom_store.c
++@@ -102,6 +102,9 @@ void CleanWriters(GF_List *writers)
++ {
++      while (gf_list_count(writers)) {
++              TrackWriter *writer = (TrackWriter*)gf_list_get(writers, 0);
+++             //in case we have an error in the middle of file write, remove our created stco and stsc from sample table
+++             gf_list_del_item(writer->stbl->child_boxes, writer->stco);
+++             gf_list_del_item(writer->stbl->child_boxes, writer->stsc);
++              gf_isom_box_del(writer->stco);
++              gf_isom_box_del((GF_Box *)writer->stsc);
++              gf_free(writer);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c9e2e573b31ca8be8b8ff024bcbf53adb80ef94a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From dae9900580a8888969481cd72035408091edb11b Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 4 Jan 2021 11:06:52 +0100
++Subject: [PATCH] fixed #1659
++
++---
++ src/isomedia/isom_store.c | 6 ++++++
++ 1 file changed, 6 insertions(+)
++
++diff --git a/src/isomedia/isom_store.c b/src/isomedia/isom_store.c
++index 37dfbe55a9..ee2b2cfaf2 100644
++--- a/src/isomedia/isom_store.c
+++++ b/src/isomedia/isom_store.c
++@@ -150,8 +150,14 @@ GF_Err SetupWriters(MovieWriter *mw, GF_List *writers, u8 interleaving)
++ 
++      trackCount = gf_list_count(movie->moov->trackList);
++      for (i = 0; i < trackCount; i++) {
+++             GF_SampleTableBox *stbl;
++              trak = gf_isom_get_track(movie->moov, i+1);
++ 
+++             stbl = (trak->Media && trak->Media->information) ? trak->Media->information->sampleTable : NULL;
+++             if (!stbl || !stbl->SampleSize || !stbl->ChunkOffset || !stbl->SampleToChunk) {
+++                     return GF_ISOM_INVALID_FILE;
+++             }
+++
++              GF_SAFEALLOC(writer, TrackWriter);
++              if (!writer) goto exit;
++              writer->sampleNumber = 1;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8269076411ea58beb6bfc953f650b1a1b4a6c02a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++From a4eb327049132359cae54b59faec9e2f14c5a619 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 4 Jan 2021 11:10:48 +0100
++Subject: [PATCH] fixed #1660
++
++---
++ src/media_tools/isom_hinter.c | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/src/media_tools/isom_hinter.c b/src/media_tools/isom_hinter.c
++index 5bf89cb5ca..8af1d04b7f 100644
++--- a/src/media_tools/isom_hinter.c
+++++ b/src/media_tools/isom_hinter.c
++@@ -967,6 +967,8 @@ GF_Err gf_hinter_track_finalize(GF_RTPHinter *tkHint, Bool AddSystemInfo)
++              if (avcc) {
++                      sprintf(sdpLine, "a=fmtp:%d profile-level-id=%02X%02X%02X; packetization-mode=1", tkHint->rtp_p->PayloadType, avcc->AVCProfileIndication, avcc->profile_compatibility, avcc->AVCLevelIndication);
++              } else {
+++                     if (!svcc)
+++                             return GF_ISOM_INVALID_FILE;
++                      sprintf(sdpLine, "a=fmtp:%d profile-level-id=%02X%02X%02X; packetization-mode=1", tkHint->rtp_p->PayloadType, svcc->AVCProfileIndication, svcc->profile_compatibility, svcc->AVCLevelIndication);
++              }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2e39c52604cf692fec8506a0c2010c4d6e40fdc1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++From c4a5109dad73abe25ad12d8d529a728ae98d78ca Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 11 Mar 2021 15:28:56 +0100
++Subject: [PATCH] fixed #1702
++
++---
++ src/isomedia/track.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/track.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/track.c
++@@ -1019,7 +1019,7 @@ GF_Err MergeTrack(GF_TrackBox *trak, GF_
++                                      break;
++                              }
++                      }
++-                     if (saiz && saio) {
+++                     if (saiz && saio && senc) {
++                              for (i = 0; i < saiz->sample_count; i++) {
++                                      GF_CENCSampleAuxInfo *sai;
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0ea538a433e22bb7c78c16e1e891fbe6b9a4d162
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++From da69ad1f970a7e17c865eaec9af98cc84df10d5b Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 29 Mar 2021 09:17:40 +0200
++Subject: [PATCH] fixed 1718
++
++---
++ src/filters/reframe_flac.c | 19 ++++++++++++++++++-
++ 1 file changed, 18 insertions(+), 1 deletion(-)
++
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_flac.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_flac.c
++@@ -59,6 +59,7 @@ typedef struct
++      Bool is_playing;
++      Bool is_file;
++      Bool initial_play_done, file_loaded;
+++     Bool in_error;
++ 
++      Bool initialized;
++      u32 sample_rate, nb_channels, bits_per_sample, block_size;
++@@ -378,6 +379,9 @@ GF_Err flac_dmx_process(GF_Filter *filte
++      u64 cts = GF_FILTER_NO_TS;
++      FLACHeader hdr;
++ 
+++     if (ctx->in_error)
+++             return GF_NON_COMPLIANT_BITSTREAM;
+++
++      //always reparse duration
++      if (!ctx->duration.num)
++              flac_dmx_check_dur(filter, ctx);
++@@ -484,7 +488,12 @@ GF_Err flac_dmx_process(GF_Filter *filte
++                      gf_bs_reassign_buffer(ctx->bs, ctx->flac_buffer, size);
++                      u32 magic = gf_bs_read_u32(ctx->bs);
++                      if (magic != GF_4CC('f','L','a','C')) {
++-
+++                             GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[FLACDmx] invalid FLAC magic\n"));
+++                             ctx->in_error = GF_TRUE;
+++                             ctx->flac_buffer_size = 0;
+++                             if (pck)
+++                                     gf_filter_pid_drop_packet(ctx->ipid);
+++                             return GF_NON_COMPLIANT_BITSTREAM;
++                      }
++                      while (gf_bs_available(ctx->bs)) {
++                              Bool last = gf_bs_read_int(ctx->bs, 1);
++@@ -514,6 +523,14 @@ GF_Err flac_dmx_process(GF_Filter *filte
++                              }
++                              if (last) break;
++                      }
+++                     if (!dsi_end) {
+++                             GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[FLACDmx] invalid FLAC header\n"));
+++                             ctx->in_error = GF_TRUE;
+++                             ctx->flac_buffer_size = 0;
+++                             if (pck)
+++                                     gf_filter_pid_drop_packet(ctx->ipid);
+++                             return GF_NON_COMPLIANT_BITSTREAM;
+++                     }
++                      flac_dmx_check_pid(filter, ctx, ctx->flac_buffer+4, dsi_end-4);
++                      remain -= size;
++                      start += size;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..42294f203cef237aeded40f98d2e879bc31ff4da
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,67 @@@
++Backport of 
++
++From 51cdb67ff7c5f1242ac58c5aa603ceaf1793b788 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 29 Mar 2021 09:34:02 +0200
++Subject: [PATCH] add safety in avc/hevc/vvc sps/pps/vps ID check - cf #1720
++ #1721 #1722
++
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/av_parsers.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++@@ -5012,10 +5012,7 @@ static s32 gf_media_avc_read_sps_bs_inte
++      by subset SPS. According to the SVC standard, subset SPS can have the same sps_id
++      than its base layer, but it does not refer to the same SPS. */
++      sps_id = gf_bs_get_ue(bs) + GF_SVC_SSPS_ID_SHIFT * subseq_sps;
++-     if (sps_id >= 32) {
++-             return -1;
++-     }
++-     if (sps_id < 0) {
+++     if ((sps_id < 0) || (sps_id >= 32)) {
++              return -1;
++      }
++ 
++@@ -5342,7 +5339,7 @@ static s32 gf_media_avc_read_pps_bs_inte
++              /*nal_hdr = */gf_bs_read_u8(bs);
++      }
++      pps_id = gf_bs_get_ue(bs);
++-     if (pps_id >= 255) {
+++     if ((pps_id<0) || (pps_id >= 255)) {
++              return -1;
++      }
++      pps = &avc->pps[pps_id];
++@@ -5350,7 +5347,7 @@ static s32 gf_media_avc_read_pps_bs_inte
++ 
++      if (!pps->status) pps->status = 1;
++      pps->sps_id = gf_bs_get_ue(bs);
++-     if (pps->sps_id >= 32) {
+++     if ((pps->sps_id<0) || (pps->sps_id >= 32)) {
++              pps->sps_id = 0;
++              return -1;
++      }
++@@ -6595,7 +6592,7 @@ s32 hevc_parse_slice_segment(GF_BitStrea
++      }
++ 
++      pps_id = gf_bs_get_ue(bs);
++-     if (pps_id >= 64)
+++     if ((pps_id<0) || (pps_id >= 64))
++              return -1;
++ 
++      pps = &hevc->pps[pps_id];
++@@ -7409,7 +7406,7 @@ static s32 gf_media_hevc_read_vps_bs_int
++      //nalu header already parsed
++      vps_id = gf_bs_read_int(bs, 4);
++ 
++-     if (vps_id >= 16) return -1;
+++     if ((vps_id<0) || (vps_id >= 16)) return -1;
++ 
++      vps = &hevc->vps[vps_id];
++      vps->bit_pos_vps_extensions = -1;
++@@ -7637,7 +7634,7 @@ static s32 gf_media_hevc_read_sps_bs_int
++ 
++      //nalu header already parsed
++      vps_id = gf_bs_read_int(bs, 4);
++-     if (vps_id >= 16) {
+++     if ((vps_id<0) || (vps_id >= 16)) {
++              return -1;
++      }
++      memset(&ptl, 0, sizeof(ptl));
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..632b8b073cb5422d3acc0ba7b862ab9405645b47
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++From 13dad7d5ef74ca2e6fe4010f5b03eb12e9bbe0ec Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 29 Mar 2021 09:21:51 +0200
++Subject: [PATCH] fixed #1719
++
++---
++ src/filters/reframe_av1.c | 3 +++
++ 1 file changed, 3 insertions(+)
++
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_av1.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_av1.c
++@@ -718,6 +718,9 @@ static GF_Err av1dmx_parse_flush_sample(
++      GF_FilterPacket *pck;
++      u8 *output;
++ 
+++     if (!ctx->opid)
+++             return GF_NON_COMPLIANT_BITSTREAM;
+++             
++      gf_bs_get_content_no_truncate(ctx->state.bs, &ctx->state.frame_obus, &pck_size, &ctx->state.frame_obus_alloc);
++ 
++      if (!pck_size) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d5986295ef4452eb1587d6b1c8d71f98207cfdba
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++From 13dad7d5ef74ca2e6fe4010f5b03eb12e9bbe0ec Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 29 Mar 2021 09:21:51 +0200
++Subject: [PATCH] fixed #1719
++
++---
++ src/filters/reframe_av1.c | 3 +++
++ 1 file changed, 3 insertions(+)
++
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_adts.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_adts.c
++@@ -683,6 +683,12 @@ GF_Err adts_dmx_process(GF_Filter *filte
++                      break;
++              }
++ 
+++             if (ctx->hdr.frame_size < ctx->hdr.hdr_size) {
+++                     GF_LOG(GF_LOG_WARNING, GF_LOG_PARSER, ("[ADTSDmx] Corrupted ADTS frame header, resyncing\n"));
+++                     ctx->nb_frames = 0;
+++                     goto drop_byte;
+++             }
+++
++              adts_dmx_check_pid(filter, ctx);
++ 
++              if (!ctx->is_playing) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2b627a0ee1f6b596dd024cd68e6c595cc9854862
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++From b2db2f99b4c30f96e17b9a14537c776da6cb5dca Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 8 Apr 2021 09:29:42 +0200
++Subject: [PATCH] fixed #1728
++
++---
++ src/filters/reframe_latm.c | 8 ++++----
++ 1 file changed, 4 insertions(+), 4 deletions(-)
++
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_latm.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_latm.c
++@@ -424,8 +424,8 @@ GF_Err latm_dmx_process(GF_Filter *filte
++      GF_LATMDmxCtx *ctx = gf_filter_get_udta(filter);
++      GF_FilterPacket *pck, *dst_pck;
++      u32 pos;
++-     u8 *data, *output;
++-     u32 pck_size, prev_pck_size;
+++     u8 *data=NULL, *output;
+++     u32 pck_size=0, prev_pck_size;
++      u64 cts = GF_FILTER_NO_TS;
++ 
++      //always reparse duration
++@@ -448,10 +448,10 @@ GF_Err latm_dmx_process(GF_Filter *filte
++              } else {
++                      return GF_OK;
++              }
+++     } else {
+++             data = (char *) gf_filter_pck_get_data(pck, &pck_size);
++      }
++ 
++-     data = (char *) gf_filter_pck_get_data(pck, &pck_size);
++-
++      //input pid sets some timescale - we flushed pending data , update cts
++      if (ctx->timescale && pck) {
++              cts = gf_filter_pck_get_cts(pck);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2a44594bf3605d34273b6f43028b6d0c38ae329e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,123 @@@
++From 758135e91e623d7dfe7f6aaad7aeb3f791b7a4e5 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 8 Apr 2021 10:07:35 +0200
++Subject: [PATCH] fixed #1733
++
++---
++ src/isomedia/box_code_adobe.c | 35 ++++++++++++++++++++++++++++++-----
++ 1 file changed, 30 insertions(+), 5 deletions(-)
++
++diff --git a/src/isomedia/box_code_adobe.c b/src/isomedia/box_code_adobe.c
++index ab5115f25a..711d84bf0d 100644
++--- a/src/isomedia/box_code_adobe.c
+++++ b/src/isomedia/box_code_adobe.c
++@@ -79,6 +79,7 @@ GF_Err abst_box_read(GF_Box *s, GF_BitStream *bs)
++      int i;
++      u32 tmp_strsize;
++      char *tmp_str;
+++     Bool zfound=GF_FALSE;
++      GF_Err e;
++ 
++      ISOM_DECREASE_SIZE(ptr, 25)
++@@ -102,10 +103,14 @@ GF_Err abst_box_read(GF_Box *s, GF_BitStream *bs)
++              ISOM_DECREASE_SIZE(ptr, 1)
++              tmp_str[i] = gf_bs_read_u8(bs);
++              tmp_strsize--;
++-             if (!tmp_str[i])
+++             if (!tmp_str[i]) {
+++                     zfound = GF_TRUE;
++                      break;
+++             }
++              i++;
++      }
+++     if (!zfound)
+++             return GF_ISOM_INVALID_FILE;
++      if (i) {
++              ptr->movie_identifier = gf_strdup(tmp_str);
++      }
++@@ -114,15 +119,20 @@ GF_Err abst_box_read(GF_Box *s, GF_BitStream *bs)
++      ptr->server_entry_count = gf_bs_read_u8(bs);
++      for (i=0; i<ptr->server_entry_count; i++) {
++              int j=0;
+++             zfound = GF_FALSE;
++              tmp_strsize=(u32)ptr->size;
++              while (tmp_strsize) {
++                      ISOM_DECREASE_SIZE(ptr, 1)
++                      tmp_str[j] = gf_bs_read_u8(bs);
++                      tmp_strsize--;
++-                     if (!tmp_str[j])
+++                     if (!tmp_str[j]) {
+++                             zfound = GF_TRUE;
++                              break;
+++                     }
++                      j++;
++              }
+++             if (!zfound)
+++                     return GF_ISOM_INVALID_FILE;
++              if (j) {
++                      gf_list_insert(ptr->server_entry_table, gf_strdup(tmp_str), i);
++              }
++@@ -132,16 +142,21 @@ GF_Err abst_box_read(GF_Box *s, GF_BitStream *bs)
++      ptr->quality_entry_count = gf_bs_read_u8(bs);
++      for (i=0; i<ptr->quality_entry_count; i++) {
++              int j=0;
+++             zfound = GF_FALSE;
++              tmp_strsize=(u32)ptr->size;
++              while (tmp_strsize) {
++                      ISOM_DECREASE_SIZE(ptr, 1)
++                      tmp_str[j] = gf_bs_read_u8(bs);
++                      tmp_strsize--;
++-                     if (!tmp_str[j])
+++                     if (!tmp_str[j]) {
+++                             zfound = GF_TRUE;
++                              break;
+++                     }
++                      j++;
++              }
++ 
+++             if (!zfound)
+++                     return GF_ISOM_INVALID_FILE;
++              if (j) {
++                      gf_list_insert(ptr->quality_entry_table, gf_strdup(tmp_str), i);
++              }
++@@ -149,28 +164,38 @@ GF_Err abst_box_read(GF_Box *s, GF_BitStream *bs)
++ 
++      i=0;
++      tmp_strsize=(u32)ptr->size;
+++     zfound = GF_FALSE;
++      while (tmp_strsize) {
++              ISOM_DECREASE_SIZE(ptr, 1)
++              tmp_str[i] = gf_bs_read_u8(bs);
++              tmp_strsize--;
++-             if (!tmp_str[i])
+++             if (!tmp_str[i]) {
+++                     zfound = GF_TRUE;
++                      break;
+++             }
++              i++;
++      }
+++     if (!zfound)
+++             return GF_ISOM_INVALID_FILE;
++      if (i) {
++              ptr->drm_data = gf_strdup(tmp_str);
++      }
++ 
++      i=0;
++      tmp_strsize=(u32)ptr->size;
+++     zfound = GF_FALSE;
++      while (tmp_strsize) {
++              ISOM_DECREASE_SIZE(ptr, 1)
++              tmp_str[i] = gf_bs_read_u8(bs);
++              tmp_strsize--;
++-             if (!tmp_str[i])
+++             if (!tmp_str[i]) {
+++                     zfound = GF_TRUE;
++                      break;
+++             }
++              i++;
++      }
+++     if (!zfound)
+++             return GF_ISOM_INVALID_FILE;
++      if (i) {
++              ptr->meta_data = gf_strdup(tmp_str);
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d5b28961ac2c7dbc3c3d4791b2ea06e232c3d6bb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++From 2da2f68bffd51d89b1d272d22aa8cc023c1c066e Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 12 Mar 2021 11:46:56 +0100
++Subject: [PATCH] fixed #1705
++
++---
++ src/isomedia/stbl_read.c | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/src/isomedia/stbl_read.c b/src/isomedia/stbl_read.c
++index ebfbe62abe..384d4f7827 100644
++--- a/src/isomedia/stbl_read.c
+++++ b/src/isomedia/stbl_read.c
++@@ -419,11 +419,13 @@ GF_Err stbl_GetSampleInfos(GF_SampleTableBox *stbl, u32 sampleNumber, u64 *offse
++              if ( stbl->ChunkOffset->type == GF_ISOM_BOX_TYPE_STCO) {
++                      stco = (GF_ChunkOffsetBox *)stbl->ChunkOffset;
++                      if (!stco->offsets) return GF_ISOM_INVALID_FILE;
+++                     if (stco->nb_entries < sampleNumber) return GF_ISOM_INVALID_FILE;
++ 
++                      (*offset) = (u64) stco->offsets[sampleNumber - 1];
++              } else {
++                      co64 = (GF_ChunkLargeOffsetBox *)stbl->ChunkOffset;
++                      if (!co64->offsets) return GF_ISOM_INVALID_FILE;
+++                     if (co64->nb_entries < sampleNumber) return GF_ISOM_INVALID_FILE;
++ 
++                      (*offset) = co64->offsets[sampleNumber - 1];
++              }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fbfe1daf2fa0027927d00829a25a3c00c8249b67
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++From 87afe070cd6866df7fe80f11b26ef75161de85e0 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 8 Apr 2021 10:09:46 +0200
++Subject: [PATCH] fixed #1734
++
++---
++ applications/mp4box/main.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++--- gpac-1.0.1+dfsg1.orig/applications/mp4box/main.c
+++++ gpac-1.0.1+dfsg1/applications/mp4box/main.c
++@@ -1296,7 +1296,7 @@ GF_Err HintFile(GF_ISOFile *file, u32 MT
++ 
++              streamType = 0;
++              esd = gf_isom_get_esd(file, i+1, 1);
++-             if (esd) {
+++             if (esd && esd->decoderConfig) {
++                      streamType = esd->decoderConfig->streamType;
++                      if (!prev_ocr) {
++                              prev_ocr = esd->OCRESID;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..64056950845ba168d5b5f48e0f690b51325192b8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++From ebfa346eff05049718f7b80041093b4c5581c24e Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 12 Mar 2021 11:56:53 +0100
++Subject: [PATCH] fixed #1706
++
++---
++ src/isomedia/isom_read.c      |  1 +
++ src/isomedia/isom_write.c     | 13 ++++++++++---
++ src/media_tools/isom_hinter.c |  6 +++++-
++ 3 files changed, 16 insertions(+), 4 deletions(-)
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/isom_read.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/isom_read.c
++@@ -3802,6 +3802,7 @@ u32 gf_isom_guess_specification(GF_ISOFi
++                      case GF_ISOM_SUBTYPE_MPEG4_CRYP:
++                      {
++                              GF_DecoderConfig *dcd = gf_isom_get_decoder_config(file, i+1, 1);
+++                             if (!dcd) break;
++                              switch (dcd->streamType) {
++                              case GF_STREAM_VISUAL:
++                                      if (dcd->objectTypeIndication==GF_CODECID_MPEG4_PART2) nb_m4v++;
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/isom_write.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/isom_write.c
++@@ -5224,6 +5224,7 @@ GF_Err gf_isom_set_extraction_slc(GF_ISO
++      GF_SampleEntryBox *entry;
++      GF_Err e;
++      GF_SLConfig **slc;
+++     GF_ESDBox *esds;
++ 
++      trak = gf_isom_get_track_from_file(the_file, trackNumber);
++      if (!trak) return GF_BAD_PARAM;
++@@ -5234,15 +5235,21 @@ GF_Err gf_isom_set_extraction_slc(GF_ISO
++      //we must be sure we are not using a remote ESD
++      switch (entry->type) {
++      case GF_ISOM_BOX_TYPE_MP4S:
++-             if (((GF_MPEGSampleEntryBox *)entry)->esd->desc->slConfig->predefined != SLPredef_MP4) return GF_BAD_PARAM;
+++             esds = ((GF_MPEGSampleEntryBox *)entry)->esd;
+++             if (!esds || !esds->desc || !esds->desc->slConfig || (esds->desc->slConfig->predefined != SLPredef_MP4))
+++                     return GF_ISOM_INVALID_FILE;
++              slc = & ((GF_MPEGSampleEntryBox *)entry)->slc;
++              break;
++      case GF_ISOM_BOX_TYPE_MP4A:
++-             if (((GF_MPEGAudioSampleEntryBox *)entry)->esd->desc->slConfig->predefined != SLPredef_MP4) return GF_BAD_PARAM;
+++             esds = ((GF_MPEGAudioSampleEntryBox *)entry)->esd;
+++             if (!esds || !esds->desc || !esds->desc->slConfig || (esds->desc->slConfig->predefined != SLPredef_MP4))
+++                     return GF_ISOM_INVALID_FILE;
++              slc = & ((GF_MPEGAudioSampleEntryBox *)entry)->slc;
++              break;
++      case GF_ISOM_BOX_TYPE_MP4V:
++-             if (((GF_MPEGVisualSampleEntryBox *)entry)->esd->desc->slConfig->predefined != SLPredef_MP4) return GF_BAD_PARAM;
+++             esds = ((GF_MPEGVisualSampleEntryBox *)entry)->esd;
+++             if (!esds || !esds->desc || !esds->desc->slConfig || (esds->desc->slConfig->predefined != SLPredef_MP4))
+++                     return GF_ISOM_INVALID_FILE;
++              slc = & ((GF_MPEGVisualSampleEntryBox *)entry)->slc;
++              break;
++      default:
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/isom_hinter.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/isom_hinter.c
++@@ -641,7 +641,11 @@ GF_RTPHinter *gf_hinter_track_new(GF_ISO
++      if (hintType==GF_RTP_PAYT_MPEG4) {
++              tmp->rtp_p->slMap.CodecID = codecid;
++              /*set this SL for extraction.*/
++-             gf_isom_set_extraction_slc(file, TrackNum, 1, &my_sl);
+++             *e = gf_isom_set_extraction_slc(file, TrackNum, 1, &my_sl);
+++             if (*e) {
+++                     gf_hinter_track_del(tmp);
+++                     return NULL;
+++             }
++      }
++      tmp->bandwidth = bandwidth;
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..01f70ad498a49389c9a949b9b926703717dd5def
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++From df8fffd839fe5ae9acd82d26fd48280a397411d9 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 8 Apr 2021 10:21:26 +0200
++Subject: [PATCH] fixed #1736
++
++---
++ src/isomedia/track.c | 10 +++++++---
++ 1 file changed, 7 insertions(+), 3 deletions(-)
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/track.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/track.c
++@@ -1003,10 +1003,13 @@ GF_Err MergeTrack(GF_TrackBox *trak, GF_
++                              if ((aux_info_type == GF_ISOM_CENC_SCHEME) || (aux_info_type == GF_ISOM_CBC_SCHEME) ||
++                                      (aux_info_type == GF_ISOM_CENS_SCHEME) || (aux_info_type == GF_ISOM_CBCS_SCHEME) ||
++                                      (gf_list_count(traf->sai_offsets) == 1)) {
++-                                     offset = saio->offsets[0] + moof_offset;
++-                                     nb_saio = saio->entry_count;
++-                                     break;
+++                                     if (saio->offsets && saio->entry_count) {
+++                                             offset = saio->offsets[0] + moof_offset;
+++                                             nb_saio = saio->entry_count;
+++                                             break;
+++                                     }
++                              }
+++                             saio = NULL;
++                      }
++                      for (i = 0; i < gf_list_count(traf->sai_sizes); i++) {
++                              saiz = (GF_SampleAuxiliaryInfoSizeBox *)gf_list_get(traf->sai_sizes, i);
++@@ -1018,6 +1021,7 @@ GF_Err MergeTrack(GF_TrackBox *trak, GF_
++                                      (gf_list_count(traf->sai_sizes) == 1)) {
++                                      break;
++                              }
+++                             saiz = NULL;
++                      }
++                      if (saiz && saio && senc) {
++                              for (i = 0; i < saiz->sample_count; i++) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..28653139fb891366ab21da5f7f601d9dc191cb7e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++From cd3738dea038dbd12e603ad48cd7373ae0440f65 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 9 Apr 2021 11:12:47 +0200
++Subject: [PATCH] fixed #1737
++
++---
++ src/media_tools/isom_hinter.c | 3 ++-
++ 1 file changed, 2 insertions(+), 1 deletion(-)
++
++diff --git a/src/media_tools/isom_hinter.c b/src/media_tools/isom_hinter.c
++index 6aeb9d172..6c4da454a 100644
++--- a/src/media_tools/isom_hinter.c
+++++ b/src/media_tools/isom_hinter.c
++@@ -402,8 +402,9 @@ GF_RTPHinter *gf_hinter_track_new(GF_ISOFile *file, u32 TrackNum,
++                              else if (gf_isom_has_sync_shadows(file, TrackNum) || gf_isom_has_sample_dependency(file, TrackNum)) {
++                                      flags |= GP_RTP_PCK_SYSTEMS_CAROUSEL;
++                              }
++-                             gf_odf_desc_del((GF_Descriptor*)esd);
++                      }
+++                     if (esd)
+++                             gf_odf_desc_del((GF_Descriptor*)esd);
++                      break;
++              case GF_ISOM_SUBTYPE_3GP_H263:
++                      hintType = GF_RTP_PAYT_H263;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..20c9d966e2339442c860617b1be6683754a3077c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,39 @@@
++From b2eab95e07cb5819375a50358d4806a8813b6e50 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 9 Apr 2021 11:17:40 +0200
++Subject: [PATCH] fixed #1738
++
++---
++ src/isomedia/avc_ext.c | 7 ++++---
++ 1 file changed, 4 insertions(+), 3 deletions(-)
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/avc_ext.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/avc_ext.c
++@@ -1330,7 +1330,8 @@ static GF_Err gf_isom_check_mvc(GF_ISOFi
++      return GF_OK;
++ }
++ 
++-static GF_AV1Config* AV1_DuplicateConfig(GF_AV1Config const * const cfg) {
+++static GF_AV1Config* AV1_DuplicateConfig(GF_AV1Config const * const cfg)
+++{
++      u32 i = 0;
++      GF_AV1Config *out = gf_malloc(sizeof(GF_AV1Config));
++ 
++@@ -1374,7 +1375,7 @@ void AV1_RewriteESDescriptorEx(GF_MPEGVi
++              av1->emul_esd->decoderConfig->avgBitrate = btrt->avgBitrate;
++              av1->emul_esd->decoderConfig->maxBitrate = btrt->maxBitrate;
++      }
++-     if (av1->av1_config) {
+++     if (av1->av1_config && av1->av1_config->config) {
++              GF_AV1Config *av1_cfg = AV1_DuplicateConfig(av1->av1_config->config);
++              if (av1_cfg) {
++                      gf_odf_av1_cfg_write(av1_cfg, &av1->emul_esd->decoderConfig->decoderSpecificInfo->data, &av1->emul_esd->decoderConfig->decoderSpecificInfo->dataLength);
++@@ -2275,7 +2276,7 @@ GF_AV1Config *gf_isom_av1_config_get(GF_
++      trak = gf_isom_get_track_from_file(the_file, trackNumber);
++      if (!trak || !trak->Media || !DescriptionIndex) return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex - 1);
++-     if (!entry || !entry->av1_config) return NULL;
+++     if (!entry || !entry->av1_config|| !entry->av1_config->config) return NULL;
++      return AV1_DuplicateConfig(entry->av1_config->config);
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..39bc6fc16ad8ee7909af3a0c11caaaf23968f9bf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++From a51f951b878c2b73c1d8e2f1518c7cdc5fb82c3f Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 10 May 2021 11:14:03 +0200
++Subject: [PATCH] fixed #1782 (fuzz)
++
++---
++ applications/mp4box/main.c    | 8 ++++++++
++ src/isomedia/box_code_adobe.c | 7 +++----
++ 2 files changed, 11 insertions(+), 4 deletions(-)
++
++diff --git a/applications/mp4box/main.c b/applications/mp4box/main.c
++index e0215f77e..db6c06779 100644
++--- a/applications/mp4box/main.c
+++++ b/applications/mp4box/main.c
++@@ -5439,6 +5439,14 @@ static u32 mp4box_cleanup(u32 ret_code) {
++      }
++      if (logfile) gf_fclose(logfile);
++      gf_sys_close();
+++
+++#ifdef GPAC_MEMORY_TRACKING
+++     if (mem_track && (gf_memory_size() || gf_file_handles_count() )) {
+++             gf_log_set_tool_level(GF_LOG_MEMORY, GF_LOG_INFO);
+++             gf_memory_print();
+++     }
+++#endif
+++
++      return ret_code;
++ }
++ 
++diff --git a/src/isomedia/box_code_adobe.c b/src/isomedia/box_code_adobe.c
++index fe4619191..bb80f3ce8 100644
++--- a/src/isomedia/box_code_adobe.c
+++++ b/src/isomedia/box_code_adobe.c
++@@ -408,6 +408,7 @@ GF_Err afra_box_read(GF_Box *s, GF_BitStream *bs)
++      for (i=0; i<ptr->entry_count; i++) {
++              GF_AfraEntry *ae = gf_malloc(sizeof(GF_AfraEntry));
++              if (!ae) return GF_OUT_OF_MEM;
+++             gf_list_insert(ptr->local_access_entries, ae, i);
++ 
++              ISOM_DECREASE_SIZE(ptr, 8)
++              ae->time = gf_bs_read_u64(bs);
++@@ -418,8 +419,6 @@ GF_Err afra_box_read(GF_Box *s, GF_BitStream *bs)
++                      ISOM_DECREASE_SIZE(ptr, 4)
++                      ae->offset = gf_bs_read_u32(bs);
++              }
++-
++-             gf_list_insert(ptr->local_access_entries, ae, i);
++      }
++ 
++      if (ptr->global_entries) {
++@@ -428,6 +427,8 @@ GF_Err afra_box_read(GF_Box *s, GF_BitStream *bs)
++              for (i=0; i<ptr->global_entry_count; i++) {
++                      GF_GlobalAfraEntry *ae = gf_malloc(sizeof(GF_GlobalAfraEntry));
++                      if (!ae) return GF_OUT_OF_MEM;
+++                     gf_list_insert(ptr->global_access_entries, ae, i);
+++
++                      ISOM_DECREASE_SIZE(ptr, 8)
++                      ae->time = gf_bs_read_u64(bs);
++                      if (ptr->long_ids) {
++@@ -448,8 +449,6 @@ GF_Err afra_box_read(GF_Box *s, GF_BitStream *bs)
++                              ae->afra_offset = gf_bs_read_u32(bs);
++                              ae->offset_from_afra = gf_bs_read_u32(bs);
++                      }
++-
++-                     gf_list_insert(ptr->global_access_entries, ae, i);
++              }
++      }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..60044333a72bf4ecbd5a2180d7a315c707035c09
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++From ec64c7b8966d7e4642d12debb888be5acf18efb9 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 10 May 2021 11:31:19 +0200
++Subject: [PATCH] fixed #1786 (fuzz)
++
++---
++ src/isomedia/box_code_meta.c | 5 ++++-
++ 1 file changed, 4 insertions(+), 1 deletion(-)
++
++diff --git a/src/isomedia/box_code_meta.c b/src/isomedia/box_code_meta.c
++index c8435b9f8..e3f0556c0 100644
++--- a/src/isomedia/box_code_meta.c
+++++ b/src/isomedia/box_code_meta.c
++@@ -566,10 +566,13 @@ GF_Err infe_box_read(GF_Box *s, GF_BitStream *bs)
++                              ptr->content_type = (char*)gf_malloc(sizeof(char)*string_len);
++                              if (!ptr->content_type) return GF_OUT_OF_MEM;
++                              memcpy(ptr->content_type, buf+string_start, string_len);
++-                     } else {
+++                     } else if (!ptr->content_encoding) {
++                              ptr->content_encoding = (char*)gf_malloc(sizeof(char)*string_len);
++                              if (!ptr->content_encoding) return GF_OUT_OF_MEM;
++                              memcpy(ptr->content_encoding, buf+string_start, string_len);
+++                     } else {
+++                             //we could throw an error but we silently accept this infe
+++                             break;
++                      }
++                      string_start += string_len;
++                      string_len = 0;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3fa0f4dd6a2ce5114d54c29c338132624c60839d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++From fe5155cf047252d1c4cb91602048bfa682af0ea7 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 10 May 2021 11:18:59 +0200
++Subject: [PATCH] fixed #1783 (fuzz)
++
++---
++ src/isomedia/isom_intern.c | 1 +
++ 1 file changed, 1 insertion(+)
++
++Index: gpac-1.0.1+dfsg1/src/isomedia/isom_intern.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/isom_intern.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/isom_intern.c
++@@ -465,6 +465,7 @@ GF_Err gf_isom_parse_movie_boxes(GF_ISOF
++                                      gf_isom_box_del(a);
++                                      return GF_OK;
++                              }
+++                             gf_isom_box_del(a);
++                      }
++                      ((GF_MovieFragmentBox *)a)->mov = mov;
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..54c5e27a53a3e7284d1f174804e0f76c25b97967
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++From 984787de3d414a5f7d43d0b4584d9469dff2a5a5 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 10 May 2021 11:24:17 +0200
++Subject: [PATCH] fixed #1784 (fuzz)
++
++---
++ src/isomedia/isom_read.c | 12 +++++++++++-
++ 1 file changed, 11 insertions(+), 1 deletion(-)
++
++diff --git a/src/isomedia/isom_read.c b/src/isomedia/isom_read.c
++index 2f4feb95a..58e631f91 100644
++--- a/src/isomedia/isom_read.c
+++++ b/src/isomedia/isom_read.c
++@@ -694,7 +694,17 @@ GF_Descriptor *gf_isom_get_root_od(GF_ISOFile *movie)
++ 
++      //duplicate our descriptor
++      movie->LastError = gf_odf_desc_copy((GF_Descriptor *) movie->moov->iods->descriptor, &desc);
++-     if (movie->LastError) return NULL;
+++     if (movie->LastError) {
+++             if (od) {
+++                     gf_list_del(od->ESDescriptors);
+++                     gf_free(od);
+++             }
+++             if (iod) {
+++                     gf_list_del(iod->ESDescriptors);
+++                     gf_free(iod);
+++             }
+++             return NULL;
+++     }
++ 
++      if (!useIOD) {
++              isom_od = (GF_IsomObjectDescriptor *)desc;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9b2266f6364d6f7c1ba32411ca0bba563fdebde5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From 0a85029d694f992f3631e2f249e4999daee15cbf Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 10 May 2021 11:26:57 +0200
++Subject: [PATCH] fixed #1785 (fuzz)
++
++---
++ src/isomedia/avc_ext.c | 4 +++-
++ 1 file changed, 3 insertions(+), 1 deletion(-)
++
++diff --git a/src/isomedia/avc_ext.c b/src/isomedia/avc_ext.c
++index a3674510b..0e7d96a96 100644
++--- a/src/isomedia/avc_ext.c
+++++ b/src/isomedia/avc_ext.c
++@@ -3373,8 +3373,10 @@ GF_Err gf_isom_oinf_read_entry(void *entry, GF_BitStream *bs)
++              op->output_layer_set_idx = gf_bs_read_u16(bs);
++              op->max_temporal_id = gf_bs_read_u8(bs);
++              op->layer_count = gf_bs_read_u8(bs);
++-             if (op->layer_count > GF_ARRAY_LENGTH(op->layers_info))
+++             if (op->layer_count > GF_ARRAY_LENGTH(op->layers_info)) {
+++                     gf_free(op);
++                      return GF_NON_COMPLIANT_BITSTREAM;
+++             }
++              for (j = 0; j < op->layer_count; j++) {
++                      op->layers_info[j].ptl_idx = gf_bs_read_u8(bs);
++                      op->layers_info[j].layer_id = gf_bs_read_int(bs, 6);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3a7aac4d669f3b2fc30d030a076580c16c5bc41b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,32 @@@
++From 828188475084db87cebc34208b6bd2509709845e Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 5 Jul 2021 16:41:49 +0200
++Subject: [PATCH] fixed #1838
++
++---
++ src/ietf/rtp_pck_mpeg12.c | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/src/ietf/rtp_pck_mpeg12.c b/src/ietf/rtp_pck_mpeg12.c
++index c108522b9..7f2dffa83 100644
++--- a/src/ietf/rtp_pck_mpeg12.c
+++++ b/src/ietf/rtp_pck_mpeg12.c
++@@ -123,6 +123,7 @@ GF_Err gp_rtp_builder_do_mpeg12_video(GP_RTPPacketizer *builder, u8 *data, u32 d
++ 
++      /*no flsuh (no aggregation)*/
++      if (!data) return GF_OK;
+++     if (data_size<4) return GF_NON_COMPLIANT_BITSTREAM;
++ 
++      offset = 0;
++      have_seq = GF_FALSE;
++@@ -152,6 +153,7 @@ GF_Err gp_rtp_builder_do_mpeg12_video(GP_RTPPacketizer *builder, u8 *data, u32 d
++      mpv_hdr[3] = 0;
++ 
++      if ((pic_type==2) || (pic_type== 3)) {
+++             if (data_size<5) return GF_NON_COMPLIANT_BITSTREAM;
++              mpv_hdr[3] = (u8) ((((u32)payload[3]) << 5) & 0xf);
++              if ((payload[4] & 0x80) != 0) mpv_hdr[3] |= 0x10;
++              if (pic_type == 3) mpv_hdr[3] |= (payload[4] >> 3) & 0xf;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..50ff210d9d5d96e0c0a264b7a5816770a5abc0f1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++From 6007c7145eb0fcd29fe05b6e5983a065b42c6b21 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 5 Jul 2021 16:50:03 +0200
++Subject: [PATCH] fixed #1840
++
++---
++ src/isomedia/isom_write.c | 6 +++++-
++ src/isomedia/media.c      | 2 +-
++ 2 files changed, 6 insertions(+), 2 deletions(-)
++
++diff --git a/src/isomedia/isom_write.c b/src/isomedia/isom_write.c
++index 4f005764c..12d67dabe 100644
++--- a/src/isomedia/isom_write.c
+++++ b/src/isomedia/isom_write.c
++@@ -6863,7 +6863,11 @@ GF_Err gf_isom_set_ctts_v1(GF_ISOFile *file, u32 track, u32 ctts_shift)
++      if (!trak) return GF_BAD_PARAM;
++ 
++      ctts = trak->Media->information->sampleTable->CompositionOffset;
++-     shift = ctts->version ? ctts_shift : ctts->entries[0].decodingOffset;
+++     if (ctts->version) {
+++             shift = ctts_shift;
+++     } else {
+++             shift = ctts->nb_entries ? ctts->entries[0].decodingOffset : 0;
+++     }
++      leastCTTS = GF_INT_MAX;
++      greatestCTTS = 0;
++      for (i=0; i<ctts->nb_entries; i++) {
++diff --git a/src/isomedia/media.c b/src/isomedia/media.c
++index 7ce8d1d01..9197935da 100644
++--- a/src/isomedia/media.c
+++++ b/src/isomedia/media.c
++@@ -99,7 +99,7 @@ static GF_Err gf_isom_get_3gpp_audio_esd(GF_SampleTableBox *stbl, u32 type, GF_G
++              memset(szName, 0, 80);
++              strcpy(szName, "QCELP-13K(GPAC-emulated)");
++              gf_bs_write_data(bs, szName, 80);
++-             ent = &stbl->TimeToSample->entries[0];
+++             ent = stbl->TimeToSample->nb_entries ? &stbl->TimeToSample->entries[0] : NULL;
++              sample_rate = entry->samplerate_hi;
++              block_size = ent ? ent->sampleDelta : 160;
++              gf_bs_write_u16_le(bs, 8*sample_size*sample_rate/block_size);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8dd502984c786e2e91aab7cd58bb2edd42cec18e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,157 @@@
++Backported from https://github.com/gpac/gpac/commit/737e1f39da80e02912953269966d89afd196ad30
++
++diff --git a/src/isomedia/avc_ext.c b/src/isomedia/avc_ext.c
++index a234825fa..673951b19 100644
++--- a/src/isomedia/avc_ext.c
+++++ b/src/isomedia/avc_ext.c
++@@ -2286,7 +2286,7 @@ GF_AVCConfig *gf_isom_avc_config_get(GF_ISOFile *the_file, u32 trackNumber, u32
++ 
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex-1);
++      if (!entry) return NULL;
++-
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
++      if (!entry->avc_config) return NULL;
++      return AVC_DuplicateConfig(entry->avc_config->config);
++ }
++@@ -2309,6 +2309,7 @@ GF_HEVCConfig *gf_isom_hevc_config_get(GF_ISOFile *the_file, u32 trackNumber, u3
++              return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex-1);
++      if (!entry) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
++      if (!entry->hevc_config) return NULL;
++      return HEVC_DuplicateConfig(entry->hevc_config->config);
++ }
++@@ -2372,6 +2375,7 @@ GF_AVCConfig *gf_isom_svc_config_get(GF_ISOFile *the_file, u32 trackNumber, u32
++              return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex-1);
++      if (!entry) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
++      if (!entry->svc_config) return NULL;
++      return AVC_DuplicateConfig(entry->svc_config->config);
++ }
++@@ -2388,6 +2392,7 @@ GF_AVCConfig *gf_isom_mvc_config_get(GF_ISOFile *the_file, u32 trackNumber, u32
++              return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex-1);
++      if (!entry) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
++      if (!entry->mvc_config) return NULL;
++      return AVC_DuplicateConfig(entry->mvc_config->config);
++ }
++@@ -2407,7 +2412,9 @@ GF_AV1Config *gf_isom_av1_config_get(GF_ISOFile *the_file, u32 trackNumber, u32
++      trak = gf_isom_get_track_from_file(the_file, trackNumber);
++      if (!trak || !trak->Media || !DescriptionIndex) return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex - 1);
++-     if (!entry || !entry->av1_config|| !entry->av1_config->config) return NULL;
+++     if (!entry) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
+++     if (!entry->av1_config|| !entry->av1_config->config) return NULL;
++      return AV1_DuplicateConfig(entry->av1_config->config);
++ }
++ 
++@@ -2420,7 +2427,9 @@ GF_VPConfig *gf_isom_vp_config_get(GF_ISOFile *the_file, u32 trackNumber, u32 De
++      trak = gf_isom_get_track_from_file(the_file, trackNumber);
++      if (!trak || !trak->Media || !DescriptionIndex) return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex - 1);
++-     if (!entry || !entry->vp_config) return NULL;
+++     if (!entry) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
+++     if (!entry->vp_config || !entry->vp_config->config) return NULL;
++      return VP_DuplicateConfig(entry->vp_config->config);
++ }
++ 
++@@ -2432,7 +2441,9 @@ GF_DOVIDecoderConfigurationRecord *gf_isom_dovi_config_get(GF_ISOFile* the_file,
++      trak = gf_isom_get_track_from_file(the_file, trackNumber);
++      if (!trak || !trak->Media || !DescriptionIndex) return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex - 1);
++-     if (!entry || !entry->dovi_config) return NULL;
+++     if (!entry) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
+++     if (!entry->dovi_config) return NULL;
++      return DOVI_DuplicateConfig(&entry->dovi_config->DOVIConfig);
++ }
++ 
++@@ -2449,6 +2460,7 @@ GF_ISOMAVCType gf_isom_get_avc_svc_type(GF_ISOFile *the_file, u32 trackNumber, u
++ 
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex-1);
++      if (!entry) return GF_ISOM_AVCTYPE_NONE;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return GF_ISOM_AVCTYPE_NONE;
++ 
++      type = entry->type;
++ 
++@@ -2491,6 +2503,7 @@ GF_ISOMHEVCType gf_isom_get_hevc_lhvc_type(GF_ISOFile *the_file, u32 trackNumber
++              return GF_ISOM_HEVCTYPE_NONE;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex-1);
++      if (!entry) return GF_ISOM_HEVCTYPE_NONE;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return GF_ISOM_HEVCTYPE_NONE;
++      type = entry->type;
++ 
++      if (type == GF_ISOM_BOX_TYPE_ENCV) {
++@@ -2536,6 +2549,7 @@ GF_HEVCConfig *gf_isom_lhvc_config_get(GF_ISOFile *the_file, u32 trackNumber, u3
++              return NULL;
++      entry = (GF_MPEGVisualSampleEntryBox*)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, DescriptionIndex-1);
++      if (!entry) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
++      if (!entry->lhvc_config) return NULL;
++      lhvc = HEVC_DuplicateConfig(entry->lhvc_config->config);
++      if (!lhvc) return NULL;
++diff --git a/src/isomedia/sample_descs.c b/src/isomedia/sample_descs.c
++index b0b65aa77..fd1c57cb6 100644
++--- a/src/isomedia/sample_descs.c
+++++ b/src/isomedia/sample_descs.c
++@@ -314,10 +314,12 @@ GF_3GPConfig *gf_isom_3gp_config_get(GF_ISOFile *the_file, u32 trackNumber, u32
++      case GF_ISOM_SUBTYPE_3GP_EVRC:
++      case GF_ISOM_SUBTYPE_3GP_QCELP:
++      case GF_ISOM_SUBTYPE_3GP_SMV:
+++             if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_AUDIO) return NULL;
++              if (! ((GF_MPEGAudioSampleEntryBox*)entry)->cfg_3gpp) return NULL;
++              config = & ((GF_MPEGAudioSampleEntryBox*)entry)->cfg_3gpp->cfg;
++              break;
++      case GF_ISOM_SUBTYPE_3GP_H263:
+++             if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return NULL;
++              if (! ((GF_MPEGVisualSampleEntryBox*)entry)->cfg_3gpp) return NULL;
++              config = & ((GF_MPEGVisualSampleEntryBox*)entry)->cfg_3gpp->cfg;
++              break;
++@@ -342,8 +344,9 @@ GF_AC3Config *gf_isom_ac3_config_get(GF_ISOFile *the_file, u32 trackNumber, u32
++      if (!trak || !StreamDescriptionIndex) return NULL;
++ 
++      entry = (GF_MPEGAudioSampleEntryBox *)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, StreamDescriptionIndex-1);
++-     if (!entry || !entry->cfg_ac3) return NULL;
+++     if (!entry) return NULL;
++      if (!entry->cfg_ac3) return NULL;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_AUDIO) return NULL;
++      if ( (entry->cfg_ac3->type!=GF_ISOM_BOX_TYPE_DAC3) && (entry->cfg_ac3->type!=GF_ISOM_BOX_TYPE_DEC3) ) return NULL;
++ 
++      res = (GF_AC3Config*)gf_malloc(sizeof(GF_AC3Config));
++@@ -364,6 +367,8 @@ GF_Err gf_isom_flac_config_get(GF_ISOFile *the_file, u32 trackNumber, u32 Stream
++      if (!trak || !StreamDescriptionIndex) return GF_BAD_PARAM;
++ 
++      entry = (GF_MPEGAudioSampleEntryBox *)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, StreamDescriptionIndex-1);
+++     if (!entry) return GF_BAD_PARAM;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_AUDIO) return GF_BAD_PARAM;
++ 
++      type = entry->type;
++      if (type==GF_ISOM_BOX_TYPE_ENCA) {
++@@ -492,6 +498,8 @@ GF_Err gf_isom_opus_config_get(GF_ISOFile *the_file, u32 trackNumber, u32 Stream
++      if (!trak || !StreamDescriptionIndex) return GF_BAD_PARAM;
++ 
++      entry = (GF_MPEGAudioSampleEntryBox *)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, StreamDescriptionIndex-1);
+++     if (!entry) return GF_BAD_PARAM;
+++     if (entry->internal_type != GF_ISOM_SAMPLE_ENTRY_AUDIO) return GF_BAD_PARAM;
++ 
++      type = entry->type;
++      if (type==GF_ISOM_BOX_TYPE_ENCA) {
++@@ -634,9 +642,11 @@ GF_Err gf_isom_3gp_config_update(GF_ISOFile *the_file, u32 trackNumber, GF_3GPCo
++      case GF_ISOM_SUBTYPE_3GP_EVRC:
++      case GF_ISOM_SUBTYPE_3GP_QCELP:
++      case GF_ISOM_SUBTYPE_3GP_SMV:
+++             if (a_entry->internal_type != GF_ISOM_SAMPLE_ENTRY_AUDIO) return GF_ISOM_INVALID_FILE;
++              cfg = &a_entry->cfg_3gpp->cfg;
++              break;
++      case GF_ISOM_SUBTYPE_3GP_H263:
+++             if (v_entry->internal_type != GF_ISOM_SAMPLE_ENTRY_VIDEO) return GF_ISOM_INVALID_FILE;
++              cfg = & v_entry->cfg_3gpp->cfg;
++              break;
++      default:
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d183cdf2648e4e9d470a9b434b152e43172cdff2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,32 @@@
++From 64a2e1b799352ac7d7aad1989bc06e7b0f2b01db Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 1 Feb 2022 15:28:23 +0100
++Subject: [PATCH] fixed #2092
++
++---
++ src/isomedia/box_code_base.c | 8 +++++---
++ 1 file changed, 5 insertions(+), 3 deletions(-)
++
++diff --git a/src/isomedia/box_code_base.c b/src/isomedia/box_code_base.c
++index b3c38310a..126084b0e 100644
++--- a/src/isomedia/box_code_base.c
+++++ b/src/isomedia/box_code_base.c
++@@ -11083,10 +11083,12 @@ void gitn_box_del(GF_Box *s)
++      u32 i;
++      GroupIdToNameBox *ptr = (GroupIdToNameBox *)s;
++      if (ptr == NULL) return;
++-     for (i=0; i<ptr->nb_entries; i++) {
++-             if (ptr->entries[i].name) gf_free(ptr->entries[i].name);
+++     if (ptr->entries) {
+++             for (i=0; i<ptr->nb_entries; i++) {
+++                     if (ptr->entries[i].name) gf_free(ptr->entries[i].name);
+++             }
+++             gf_free(ptr->entries);
++      }
++-     if (ptr->entries) gf_free(ptr->entries);
++      gf_free(ptr);
++ }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c327a2533a80f4e54c25b68df8c2e09b40e0969a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++Origin: https://github.com/gpac/gpac/commit/70607fc71a671cf48a05e013a4e411429373dce7
++Reviewed-by: Aron Xu <aron@debian.org>
++
++From 70607fc71a671cf48a05e013a4e411429373dce7 Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Tue, 24 Aug 2021 18:16:50 +0200
++Subject: [PATCH] add some null guards to prevent segfaults
++
++closes #1884, #1886
++---
++ src/filters/reframe_nalu.c | 12 ++++++------
++ src/isomedia/isom_intern.c | 12 +++++++-----
++ 2 files changed, 13 insertions(+), 11 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/reframe_nalu.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_nalu.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_nalu.c
++@@ -314,7 +314,7 @@ GF_Err naludmx_configure_pid(GF_Filter *
++              ctx->ps_modified = GF_TRUE;
++              ctx->crc_cfg = ctx->crc_cfg_enh = 0;
++      }
++-     
+++
++      return GF_OK;
++ }
++ 
++@@ -694,7 +694,7 @@ GF_Err naludmx_set_hevc_oinf(GF_NALUDmxC
++      if (!vps_sl) return GF_SERVICE_ERROR;
++ 
++      vps = &ctx->hevc_state->vps[vps_sl->id];
++-     
+++
++      if (!vps->vps_extension_found) return GF_OK;
++      if (vps->max_layers<2) return GF_OK;
++ 
++@@ -836,7 +836,7 @@ static void naludmx_set_hevc_linf(GF_NAL
++              return;
++ 
++      bs = gf_bs_new(NULL, 0, GF_BITSTREAM_WRITE);
++-     
+++
++      gf_bs_write_int(bs, 0, 2);
++      gf_bs_write_int(bs, nb_layers, 6);
++      for (i=0; i<nb_layers; i++) {
++@@ -1881,7 +1881,7 @@ static s32 naludmx_parse_nal_avc(GF_NALU
++              *skip_nal = GF_TRUE;
++      }
++      ctx->nb_nalus++;
++-     
+++
++      switch (nal_type) {
++      case GF_AVC_NALU_SVC_SUBSEQ_PARAM:
++      case GF_AVC_NALU_SEQ_PARAM:
++@@ -1999,7 +1999,7 @@ static s32 naludmx_parse_nal_avc(GF_NALU
++                      u32 i;
++                      for (i = 0; i < gf_list_count(ctx->pps); i ++) {
++                              GF_AVCConfigSlot *slc = (GF_AVCConfigSlot*)gf_list_get(ctx->pps, i);
++-                             if (ctx->avc_state->s_info.pps->id == slc->id) {
+++                             if (ctx->avc_state->s_info.pps && ctx->avc_state->s_info.pps->id == slc->id) {
++                                      /* This PPS is used by an SVC NAL unit, it should be moved to the SVC Config Record) */
++                                      gf_list_rem(ctx->pps, i);
++                                      i--;
++@@ -2367,7 +2367,7 @@ naldmx_flush:
++              if (!ctx->opid && current) {
++                      assert(remain>=current);
++             assert((s32) current >= 0);
++-            
+++
++                      start += current;
++                      remain -= current;
++                      current = 0;
++Index: gpac-1.0.1+dfsg1/src/isomedia/isom_intern.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/isom_intern.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/isom_intern.c
++@@ -499,10 +499,12 @@ GF_Err gf_isom_parse_movie_boxes(GF_ISOF
++                                              //we should only parse senc/psec when no saiz/saio is present, otherwise we fetch the info directly
++                                              if (traf->trex && traf->tfhd && traf->trex->track && traf->sample_encryption) {
++                                                      GF_TrackBox *trak = GetTrackbyID(mov->moov, traf->tfhd->trackID);
++-                                                     trak->current_traf_stsd_idx = traf->tfhd->sample_desc_index ? traf->tfhd->sample_desc_index : traf->trex->def_sample_desc_index;
++-                                                     e = senc_Parse(mov->movieFileMap->bs, trak, traf, traf->sample_encryption);
++-                                                     if (e) return e;
++-                                                     trak->current_traf_stsd_idx = 0;
+++                                                     if (trak) {
+++                                                             trak->current_traf_stsd_idx = traf->tfhd->sample_desc_index ? traf->tfhd->sample_desc_index : traf->trex->def_sample_desc_index;
+++                                                             e = senc_Parse(mov->movieFileMap->bs, trak, traf, traf->sample_encryption);
+++                                                             if (e) return e;
+++                                                             trak->current_traf_stsd_idx = 0;
+++                                                     }
++                                              }
++                                      }
++                              } else {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8f6c7f82d2b0e5571e6db16f7051b343df02ca37
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From 5dd71c7201a3e5cf40732d585bfb21c906c171d3 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 17:26:28 +0200
++Subject: [PATCH] fixed #1901
++
++---
++ src/filters/reframe_nalu.c | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/src/filters/reframe_nalu.c b/src/filters/reframe_nalu.c
++index aad8ad964..812c8e1ec 100644
++--- a/src/filters/reframe_nalu.c
+++++ b/src/filters/reframe_nalu.c
++@@ -1352,9 +1352,9 @@ void naludmx_create_avc_decoder_config(GF_NALUDmxCtx *ctx, u8 **dsi, u32 *dsi_si
++                                      else
++                                              DeltaTfiDivisorIdx = (ctx->avc_state->sei.pic_timing.pic_struct+1) / 2;
++                              }
++-                             if (!ctx->timescale) {
+++                             if (!ctx->timescale && sps->vui.time_scale && sps->vui.num_units_in_tick) {
++                                      ctx->cur_fps.num = 2 * sps->vui.time_scale;
++-                                     ctx->cur_fps.den =  2 * sps->vui.num_units_in_tick * DeltaTfiDivisorIdx;
+++                                     ctx->cur_fps.den = 2 * sps->vui.num_units_in_tick * DeltaTfiDivisorIdx;
++ 
++                                      if (!ctx->fps.num && ctx->dts==ctx->fps.den)
++                                              ctx->dts = ctx->cur_fps.den;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b9b828128ee0c4b9bcf5adf924198d08edc08192
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From 5ce0c906ed8599d218036b18b78e8126a496f137 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 16:06:09 +0200
++Subject: [PATCH] fixed #1892
++
++---
++ src/filters/reframe_nalu.c | 6 ++++--
++ 1 file changed, 4 insertions(+), 2 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/reframe_nalu.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_nalu.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_nalu.c
++@@ -1414,8 +1414,10 @@ static void naludmx_queue_param_set(GF_N
++ {
++      GF_List *list = NULL, *alt_list = NULL;
++      GF_AVCConfigSlot *sl;
++-     u32 i, count;
++-     u32 crc = gf_crc_32(data, size);
+++     u32 i, count, crc;
+++
+++        if (!size) return;
+++        crc = gf_crc_32(data, size);
++ 
++      if (ctx->is_hevc) {
++              switch (ps_type) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d5b3900613764fa883d5dd816086e8235654f974
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++From cf6771c857eb9a290e2c19ddacfdd3ed98b27618 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 17:09:02 +0200
++Subject: [PATCH] fixed #1898
++
++---
++ src/media_tools/av_parsers.c | 8 ++++++--
++ 1 file changed, 6 insertions(+), 2 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/av_parsers.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++@@ -5559,7 +5559,7 @@ static s32 avc_parse_slice(GF_BitStream
++      if (si->slice_type > 9) return -1;
++ 
++      pps_id = gf_bs_get_ue(bs);
++-     if (pps_id > 255) return -1;
+++     if ((pps_id < 0) || (pps_id > 255)) return -1;
++      si->pps = &avc->pps[pps_id];
++      if (!si->pps->slice_group_count) return -2;
++      si->sps = &avc->sps[si->pps->sps_id];
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f96b7c150e3d587568915bf2433f2b40b377b241
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From 893fb99b606eebfae46cde151846a980e689039b Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 17:29:13 +0200
++Subject: [PATCH] fixed #1902
++
++---
++ src/media_tools/av_parsers.c | 3 ++-
++ 1 file changed, 2 insertions(+), 1 deletion(-)
++
++diff --git a/src/media_tools/av_parsers.c b/src/media_tools/av_parsers.c
++index 96d279742..1ab1a5373 100644
++--- a/src/media_tools/av_parsers.c
+++++ b/src/media_tools/av_parsers.c
++@@ -6113,7 +6113,8 @@ s32 gf_avc_parse_nalu(GF_BitStream *bs, AVCState *avc)
++                      ret = 1;
++                      break;
++              }
++-             assert(avc->s_info.sps);
+++             if (!avc->s_info.sps)
+++                     return -1;
++ 
++              if (avc->s_info.sps->poc_type == n_state.sps->poc_type) {
++                      if (!avc->s_info.sps->poc_type) {
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4802743a198bfe42eb1f58e16b7a5cc47da65a26
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,76 @@@
++From 96047e0e6166407c40cc19f4e94fb35cd7624391 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 15:46:16 +0200
++Subject: [PATCH] fixed #1887
++
++---
++ src/filters/dec_xvid.c       |  2 +-
++ src/filters/reframe_mpgvid.c | 30 ++++++++++++++++++++----------
++ 2 files changed, 21 insertions(+), 11 deletions(-)
++
++diff --git a/src/filters/dec_xvid.c b/src/filters/dec_xvid.c
++index dff56bf10..ab86d85b1 100644
++--- a/src/filters/dec_xvid.c
+++++ b/src/filters/dec_xvid.c
++@@ -181,7 +181,7 @@ static GF_Err xviddec_configure_pid(GF_Filter *filter, GF_FilterPid *pid, Bool i
++      /*decode DSI*/
++      e = gf_m4v_get_config(p->value.data.ptr, p->value.data.size, &dsi);
++      if (e) return e;
++-     if (!dsi.width || !dsi.height) return GF_NON_COMPLIANT_BITSTREAM;
+++     if (!dsi.width || (dsi.width%2) || !dsi.height) return GF_NON_COMPLIANT_BITSTREAM;
++ 
++      memset(&par, 0, sizeof(par));
++      par.width = dsi.width;
++diff --git a/src/filters/reframe_mpgvid.c b/src/filters/reframe_mpgvid.c
++index 308546f28..328db2855 100644
++--- a/src/filters/reframe_mpgvid.c
+++++ b/src/filters/reframe_mpgvid.c
++@@ -805,12 +805,17 @@ GF_Err mpgviddmx_process(GF_Filter *filter)
++                              //not enough data, accumulate until we can parse the full header
++                              if (e==GF_EOS) {
++                                      if (vosh_start<0) vosh_start = 0;
++-                                     if (ctx->hdr_store_alloc < ctx->hdr_store_size + pck_size - vosh_start) {
++-                                             ctx->hdr_store_alloc = (u32) (ctx->hdr_store_size + pck_size - vosh_start);
++-                                             ctx->hdr_store = gf_realloc(ctx->hdr_store, sizeof(char)*ctx->hdr_store_alloc);
+++                                     if (data == ctx->hdr_store) {
+++                                             memmove(ctx->hdr_store, start, remain);
+++                                             ctx->hdr_store_size = remain;
+++                                     } else {
+++                                             if (ctx->hdr_store_alloc < ctx->hdr_store_size + pck_size - vosh_start) {
+++                                                     ctx->hdr_store_alloc = (u32) (ctx->hdr_store_size + pck_size - vosh_start);
+++                                                     ctx->hdr_store = gf_realloc(ctx->hdr_store, sizeof(char)*ctx->hdr_store_alloc);
+++                                             }
+++                                             memcpy(ctx->hdr_store + ctx->hdr_store_size, data + vosh_start, (size_t) (pck_size - vosh_start) );
+++                                             ctx->hdr_store_size += pck_size - (u32) vosh_start;
++                                      }
++-                                     memcpy(ctx->hdr_store + ctx->hdr_store_size, data + vosh_start, (size_t) (pck_size - vosh_start) );
++-                                     ctx->hdr_store_size += pck_size - (u32) vosh_start;
++                                      gf_filter_pid_drop_packet(ctx->ipid);
++                                      return GF_OK;
++                              } else if (e != GF_OK) {
++@@ -844,12 +849,17 @@ GF_Err mpgviddmx_process(GF_Filter *filter)
++                              //not enough data, accumulate until we can parse the full header
++                              if (e==GF_EOS) {
++                                      if (vosh_start<0) vosh_start = 0;
++-                                     if (ctx->hdr_store_alloc < ctx->hdr_store_size + pck_size - vosh_start) {
++-                                             ctx->hdr_store_alloc = (u32) (ctx->hdr_store_size + pck_size - (u32) vosh_start);
++-                                             ctx->hdr_store = gf_realloc(ctx->hdr_store, sizeof(char)*ctx->hdr_store_alloc);
+++                                     if (data == ctx->hdr_store) {
+++                                             memmove(ctx->hdr_store, start, remain);
+++                                             ctx->hdr_store_size = remain;
+++                                     } else {
+++                                             if (ctx->hdr_store_alloc < ctx->hdr_store_size + pck_size - vosh_start) {
+++                                                     ctx->hdr_store_alloc = (u32) (ctx->hdr_store_size + pck_size - (u32) vosh_start);
+++                                                     ctx->hdr_store = gf_realloc(ctx->hdr_store, sizeof(char)*ctx->hdr_store_alloc);
+++                                             }
+++                                             memcpy(ctx->hdr_store + ctx->hdr_store_size, data + vosh_start, (size_t) (pck_size - vosh_start) );
+++                                             ctx->hdr_store_size += pck_size - (u32) vosh_start;
++                                      }
++-                                     memcpy(ctx->hdr_store + ctx->hdr_store_size, data + vosh_start, (size_t) (pck_size - vosh_start) );
++-                                     ctx->hdr_store_size += pck_size - (u32) vosh_start;
++                                      gf_filter_pid_drop_packet(ctx->ipid);
++                                      return GF_OK;
++                              } else if (e != GF_OK) {
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..565d57677b14d64d9477cc9816f9c73c07504d22
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++From f5a038e6893019ee471b6a57490cf7a495673816 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 14:53:51 +0200
++Subject: [PATCH] fixed #1885
++
++---
++ src/media_tools/isom_hinter.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++Index: gpac-1.0.1+dfsg1/src/media_tools/isom_hinter.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/isom_hinter.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/isom_hinter.c
++@@ -1237,6 +1237,7 @@ GF_Err gf_hinter_finalize(GF_ISOFile *fi
++                      samp = gf_isom_get_sample(file, sceneT, 1, &descIndex);
++                      if (gf_hinter_can_embbed_data(samp->data, samp->dataLength, GF_STREAM_SCENE)) {
++ 
+++                                InitSL_NULL(&slc);
++                              slc.timeScale = slc.timestampResolution = gf_isom_get_media_timescale(file, sceneT);
++                              slc.OCRResolution = 1000;
++                              slc.startCTS = samp->DTS+samp->CTS_Offset;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a314008a721f2b1da33644142955a697101bcf28
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++From f1ae01d745200a258cdf62622f71754c37cb6c30 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 17:20:00 +0200
++Subject: [PATCH] fixed #1900
++
++---
++ src/media_tools/av_parsers.c | 23 +++++++++++++----------
++ 1 file changed, 13 insertions(+), 10 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/av_parsers.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++@@ -5669,7 +5669,7 @@ static s32 svc_parse_slice(GF_BitStream
++      if (si->slice_type > 9) return -1;
++ 
++      pps_id = gf_bs_get_ue(bs);
++-     if (pps_id > 255)
+++     if ((pps_id < 0) || (pps_id > 255))
++              return -1;
++      si->pps = &avc->pps[pps_id];
++      si->pps->id = pps_id;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8eb549f11d3ed4f6c252c450e756db5bcd9b971c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++From b03c9f252526bb42fbd1b87b9f5e339c3cf2390a Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 15:55:13 +0200
++Subject: [PATCH] fixed #1890
++
++---
++ src/isomedia/box_code_meta.c | 6 ++++--
++ 1 file changed, 4 insertions(+), 2 deletions(-)
++
++diff --git a/src/isomedia/box_code_meta.c b/src/isomedia/box_code_meta.c
++index e3f0556c0..cdd0948a6 100644
++--- a/src/isomedia/box_code_meta.c
+++++ b/src/isomedia/box_code_meta.c
++@@ -282,7 +282,8 @@ GF_Err iloc_box_read(GF_Box *s, GF_BitStream *bs)
++      }
++ 
++      for (i = 0; i < item_count; i++) {
++-             GF_ItemLocationEntry *location_entry = (GF_ItemLocationEntry *)gf_malloc(sizeof(GF_ItemLocationEntry));
+++             GF_ItemLocationEntry *location_entry;
+++             GF_SAFEALLOC(location_entry, GF_ItemLocationEntry);
++              if (!location_entry) return GF_OUT_OF_MEM;
++ 
++              gf_list_add(ptr->location_entries, location_entry);
++@@ -311,7 +312,8 @@ GF_Err iloc_box_read(GF_Box *s, GF_BitStream *bs)
++              extent_count = gf_bs_read_u16(bs);
++              location_entry->extent_entries = gf_list_new();
++              for (j = 0; j < extent_count; j++) {
++-                     GF_ItemExtentEntry *extent_entry = (GF_ItemExtentEntry *)gf_malloc(sizeof(GF_ItemExtentEntry));
+++                     GF_ItemExtentEntry *extent_entry;
+++                     GF_SAFEALLOC(extent_entry, GF_ItemExtentEntry);
++                      if (!extent_entry) return GF_OUT_OF_MEM;
++                      
++                      gf_list_add(location_entry->extent_entries, extent_entry);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4409dc674e49388b8f054a41804365498ae5842d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++From 04dbf08bff4d61948bab80c3f9096ecc60c7f302 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 17:15:34 +0200
++Subject: [PATCH] fixed #1899
++
++---
++ src/media_tools/av_parsers.c | 1 +
++ 1 file changed, 1 insertion(+)
++
++Index: gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/av_parsers.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++@@ -5087,6 +5087,7 @@ static s32 gf_media_avc_read_sps_bs_inte
++              sps->offset_for_top_to_bottom_field = gf_bs_get_se(bs);
++              sps->poc_cycle_length = gf_bs_get_ue(bs);
++              if (sps->poc_cycle_length > GF_ARRAY_LENGTH(sps->offset_for_ref_frame)) {
+++                     sps->poc_cycle_length = 255;
++                      GF_LOG(GF_LOG_ERROR, GF_LOG_CODING, ("[avc-h264] offset_for_ref_frame overflow from poc_cycle_length\n"));
++                      return -1;
++              }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9d373fbab995bf7c43bd456e94cb9486d4cbe12a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++From a69b567b8c95c72f9560c873c5ab348be058f340 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 16:24:05 +0200
++Subject: [PATCH] fixed #1895
++
++---
++ src/odf/descriptors.c | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/src/odf/descriptors.c b/src/odf/descriptors.c
++index afc623729..c1970e820 100644
++--- a/src/odf/descriptors.c
+++++ b/src/odf/descriptors.c
++@@ -1613,6 +1613,7 @@ GF_AV1Config *gf_odf_av1_cfg_read_bs_size(GF_BitStream *bs, u32 size)
++              size -= (u32) obu_size;
++      }
++      gf_av1_reset_state(& state, GF_TRUE);
+++     gf_bs_align(bs);
++      return cfg;
++ #else
++      return NULL;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cb2d55f98eaede3604c9100fe450f993cd02ff57
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,29 @@@
++From 7bb1b4a4dd23c885f9db9f577dfe79ecc5433109 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 16:15:32 +0200
++Subject: [PATCH] fixed #1893
++
++---
++ src/media_tools/av_parsers.c | 6 ++----
++ 1 file changed, 2 insertions(+), 4 deletions(-)
++
++diff --git a/src/media_tools/av_parsers.c b/src/media_tools/av_parsers.c
++index 3ce9a9015..4ea0db8a9 100644
++--- a/src/media_tools/av_parsers.c
+++++ b/src/media_tools/av_parsers.c
++@@ -3980,10 +3980,8 @@ void gf_av1_reset_state(AV1State *state, Bool is_destroy)
++              gf_list_del(l1);
++              gf_list_del(l2);
++              if (state->bs) {
++-                     if (gf_bs_get_position(state->bs)) {
++-                             u32 size;
++-                             gf_bs_get_content_no_truncate(state->bs, &state->frame_obus, &size, &state->frame_obus_alloc);
++-                     }
+++                     u32 size;
+++                     gf_bs_get_content_no_truncate(state->bs, &state->frame_obus, &size, &state->frame_obus_alloc);
++                      gf_bs_del(state->bs);
++              }
++              state->bs = NULL;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cc6037fe9eb662dd329ffdac74931b1f5ca9a4f2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++From 30ac5e5236b790accd1f25347eebf2dc8c6c1bcb Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 16:57:38 +0200
++Subject: [PATCH] fixed #1897
++
++---
++ src/filters/load_text.c | 6 ++++--
++ 1 file changed, 4 insertions(+), 2 deletions(-)
++
++diff --git a/src/filters/load_text.c b/src/filters/load_text.c
++index 4f41d2d3b..b82d2991b 100644
++--- a/src/filters/load_text.c
+++++ b/src/filters/load_text.c
++@@ -255,7 +255,7 @@ char *gf_text_get_utf8_line(char *szLine, u32 lineSize, FILE *txt_in, s32 unicod
++ {
++      u32 i, j, len;
++      char *sOK;
++-     char szLineConv[1024];
+++     char szLineConv[2048];
++      unsigned short *sptr;
++ 
++      memset(szLine, 0, sizeof(char)*lineSize);
++@@ -328,7 +328,7 @@ char *gf_text_get_utf8_line(char *szLine, u32 lineSize, FILE *txt_in, s32 unicod
++              }
++      }
++      sptr = (u16 *)szLine;
++-     i = (u32) gf_utf8_wcstombs(szLineConv, 1024, (const unsigned short **) &sptr);
+++     i = (u32) gf_utf8_wcstombs(szLineConv, 2048, (const unsigned short **) &sptr);
++      szLineConv[i] = 0;
++      strcpy(szLine, szLineConv);
++      /*this is ugly indeed: since input is UTF16-LE, there are many chances the gf_fgets never reads the \0 after a \n*/
++@@ -2338,6 +2338,8 @@ static GF_Err gf_text_process_sub(GF_Filter *filter, GF_TXTIn *ctx)
++              while (szLine[i+1] && szLine[i+1]!='}') {
++                      szTime[i] = szLine[i+1];
++                      i++;
+++                     if (i>=19)
+++                             break;
++              }
++              szTime[i] = 0;
++              ctx->start = atoi(szTime);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c71f8bdbc7bd7b1eca6073954a79f19396ae6b61
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,29 @@@
++From 5f2c2a16d30229b6241f02fa28e3d6b810d64858 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 1 Sep 2021 13:50:54 +0200
++Subject: [PATCH] fixed #1905
++
++---
++ src/filters/reframe_mpgvid.c | 8 +++++++-
++ 1 file changed, 7 insertions(+), 1 deletion(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/reframe_mpgvid.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_mpgvid.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_mpgvid.c
++@@ -760,8 +760,14 @@ GF_Err mpgviddmx_process(GF_Filter *filt
++                      mpgviddmx_enqueue_or_dispatch(ctx, dst_pck, GF_FALSE, GF_FALSE);
++              }
++ 
++-             //parse headers
+++             //not enough bytes to parse start code
+++                if (remain<5) {
+++                        memcpy(ctx->hdr_store, start, remain);
+++                        ctx->bytes_in_header = remain;
+++                        break;
+++                }
++ 
+++             //parse headers
++              //we have a start code loaded, eg the data packet does not have a full start code at the begining
++              if (sc_type_forced) {
++                      gf_bs_reassign_buffer(ctx->bs, start + hdr_offset, remain - hdr_offset);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fa9defa915c546f14aa530145d773a716c56aede
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++From ad18ece95fa064efc0995c4ab2c985f77fb166ec Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 1 Sep 2021 13:45:04 +0200
++Subject: [PATCH] fixed #1904
++
++---
++ src/isomedia/hint_track.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++Index: gpac-1.0.1+dfsg1/src/isomedia/hint_track.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/hint_track.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/hint_track.c
++@@ -43,6 +43,9 @@ Bool IsHintTrack(GF_TrackBox *trak)
++ u32 GetHintFormat(GF_TrackBox *trak)
++ {
++      GF_HintMediaHeaderBox *hmhd = (GF_HintMediaHeaderBox *)trak->Media->information->InfoHeader;
+++        if (!hmhd || (hmhd->type != GF_ISOM_BOX_TYPE_HMHD))
+++                return 0;
+++
++      if (!hmhd || !hmhd->subType) {
++              GF_Box *a = (GF_Box *)gf_list_get(trak->Media->information->sampleTable->SampleDescription->child_boxes, 0);
++              if (!hmhd) return a ? a->type : 0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fa68b0acc278ee490362cba4d0a47b0a8b5cc5eb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++From 71460d72ec07df766dab0a4d52687529f3efcf0a Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 14:27:49 +0200
++Subject: [PATCH] fixed #1876
++
++---
++ src/filters/isoffin_read.c    | 7 +++++++
++ src/filters/isoffin_read_ch.c | 4 ++++
++ 2 files changed, 11 insertions(+)
++
++diff --git a/src/filters/isoffin_read.c b/src/filters/isoffin_read.c
++index 899d3508a..1f0d3742b 100644
++--- a/src/filters/isoffin_read.c
+++++ b/src/filters/isoffin_read.c
++@@ -1453,6 +1453,13 @@ static GF_Err isoffin_process(GF_Filter *filter)
++                                      gf_filter_pid_set_eos(ch->pid);
++                              }
++                              break;
+++                     } else if (ch->last_state==GF_ISOM_INVALID_FILE) {
+++                             if (!ch->eos_sent) {
+++                                     ch->eos_sent = GF_TRUE;
+++                                     read->eos_signaled = GF_TRUE;
+++                                     gf_filter_pid_set_eos(ch->pid);
+++                             }
+++                             return ch->last_state;
++                      } else {
++                              read->force_fetch = GF_TRUE;
++                              break;
++diff --git a/src/filters/isoffin_read_ch.c b/src/filters/isoffin_read_ch.c
++index c9bde6387..90f5972eb 100644
++--- a/src/filters/isoffin_read_ch.c
+++++ b/src/filters/isoffin_read_ch.c
++@@ -479,6 +479,10 @@ void isor_reader_get_sample(ISOMChannel *ch)
++                              if (!ch->has_edit_list && ch->sample_num)
++                                      ch->sample_num--;
++                      } else {
+++                             if (ch->to_init && ch->sample_num) {
+++                                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[IsoMedia] Failed to fetch initial sample %d for track %d\n"));
+++                                     ch->last_state = GF_ISOM_INVALID_FILE;
+++                             }
++                              if (ch->sample_num >= gf_isom_get_sample_count(ch->owner->mov, ch->track)) {
++                                      ch->last_state = GF_EOS;
++                              }
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b03fddc6e69d11b5c50a11a94e543312b6431d1c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From f19668964bf422cf5a63e4dbe1d3c6c75edadcbb Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 14:34:37 +0200
++Subject: [PATCH] fixed #1879
++
++---
++ src/isomedia/box_code_drm.c | 3 ++-
++ 1 file changed, 2 insertions(+), 1 deletion(-)
++
++diff --git a/src/isomedia/box_code_drm.c b/src/isomedia/box_code_drm.c
++index 3bedb3995..23c19c604 100644
++--- a/src/isomedia/box_code_drm.c
+++++ b/src/isomedia/box_code_drm.c
++@@ -145,9 +145,10 @@ GF_Err schm_box_read(GF_Box *s, GF_BitStream *bs)
++ 
++      if (ptr->size && (ptr->flags & 0x000001)) {
++              u32 len = (u32) (ptr->size);
++-             ptr->URI = (char*)gf_malloc(sizeof(char)*len);
+++             ptr->URI = (char*)gf_malloc(sizeof(char)*(len+1));
++              if (!ptr->URI) return GF_OUT_OF_MEM;
++              gf_bs_read_data(bs, ptr->URI, len);
+++             ptr->URI[len] = 0;
++      }
++      return GF_OK;
++ }
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c509214be036d63c0608482b00e7b1a0efba7b6b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,55 @@@
++From b09c75dc2d4bf68ac447daa71e72365aa30231a9 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 30 Aug 2021 14:43:17 +0200
++Subject: [PATCH] fixed #1883
++
++---
++ src/isomedia/tx3g.c           | 4 ++--
++ src/media_tools/isom_hinter.c | 7 ++++++-
++ 2 files changed, 8 insertions(+), 3 deletions(-)
++
++diff --git a/src/isomedia/tx3g.c b/src/isomedia/tx3g.c
++index e63610785..7ff1a3353 100644
++--- a/src/isomedia/tx3g.c
+++++ b/src/isomedia/tx3g.c
++@@ -920,6 +920,8 @@ GF_Err gf_isom_text_get_encoded_tx3g(GF_ISOFile *file, u32 track, u32 sidx, u32
++      GF_TrackBox *trak;
++      GF_Tx3gSampleEntryBox *a;
++ 
+++     *tx3g = NULL;
+++     *tx3g_size = 0;
++      trak = gf_isom_get_track_from_file(file, track);
++      if (!trak) return GF_BAD_PARAM;
++ 
++@@ -929,8 +931,6 @@ GF_Err gf_isom_text_get_encoded_tx3g(GF_ISOFile *file, u32 track, u32 sidx, u32
++ 
++      bs = gf_bs_new(NULL, 0, GF_BITSTREAM_WRITE);
++      gf_isom_write_tx3g(a, bs, sidx, sidx_offset);
++-     *tx3g = NULL;
++-     *tx3g_size = 0;
++      gf_bs_get_content(bs, tx3g, tx3g_size);
++      gf_bs_del(bs);
++      return GF_OK;
++diff --git a/src/media_tools/isom_hinter.c b/src/media_tools/isom_hinter.c
++index a3a8205ca..eacef641f 100644
++--- a/src/media_tools/isom_hinter.c
+++++ b/src/media_tools/isom_hinter.c
++@@ -949,9 +949,14 @@ GF_Err gf_hinter_track_finalize(GF_RTPHinter *tkHint, Bool AddSystemInfo)
++              strcat(sdpLine, "; tx3g=");
++              for (i=0; i<gf_isom_get_sample_description_count(tkHint->file, tkHint->TrackNum); i++) {
++                      u8 *tx3g;
+++                     GF_Err e;
++                      char buffer[2000];
++                      u32 tx3g_len, len;
++-                     gf_isom_text_get_encoded_tx3g(tkHint->file, tkHint->TrackNum, i+1, GF_RTP_TX3G_SIDX_OFFSET, &tx3g, &tx3g_len);
+++                     e = gf_isom_text_get_encoded_tx3g(tkHint->file, tkHint->TrackNum, i+1, GF_RTP_TX3G_SIDX_OFFSET, &tx3g, &tx3g_len);
+++                     if (e) {
+++                             if (i) continue;
+++                             return GF_ISOM_INVALID_FILE;
+++                     }
++                      len = gf_base64_encode(tx3g, tx3g_len, buffer, 2000);
++                      gf_free(tx3g);
++                      buffer[len] = 0;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..022cb4aba18ad60a826756fec29ba6d7add1399a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,40 @@@
++From 44fdc3d972c31c56efe73e1a3b63438d46087652 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 1 Sep 2021 14:04:10 +0200
++Subject: [PATCH] fixed #1906
++
++---
++ src/filter_core/filter_session.c | 16 ++++++++++++++--
++ 1 file changed, 14 insertions(+), 2 deletions(-)
++
++diff --git a/src/filter_core/filter_session.c b/src/filter_core/filter_session.c
++index 2b138b30c..e69bb1bcf 100644
++--- a/src/filter_core/filter_session.c
+++++ b/src/filter_core/filter_session.c
++@@ -1176,9 +1176,21 @@ GF_Filter *gf_fs_load_filter(GF_FilterSession *fsess, const char *name, GF_Err *
++                      filter = gf_filter_new(fsess, f_reg, args, NULL, argtype, err_code, NULL, GF_FALSE);
++                      if (!filter) return NULL;
++                      if (!filter->num_output_pids) {
+++                             //check we have a src specified for the filter
++                              const char *src_url = strstr(name, "src");
++-                             if (src_url && (src_url[3]==fsess->sep_name))
++-                                     gf_filter_post_process_task(filter);
+++                             if (src_url && (src_url[3]==fsess->sep_name)) {
+++                                     const GF_FilterArgs *args = filter->instance_args ? filter->instance_args : f_reg->args;
+++                                     //check the filter has an src argument
+++                                     //we don't want to call process on a filter not acting as source until at least one input is connected
+++                                     i=0;
+++                                     while (args && args[i].arg_name) {
+++                                             if (!strcmp(args[i].arg_name, "src")) {
+++                                                     gf_filter_post_process_task(filter);
+++                                                     break;
+++                                             }
+++                                             i++;
+++                                     }
+++                             }
++                      }
++                      return filter;
++              }
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4042ad2f479aa30788592cdc9fe78f62d30c518e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++From 74695dea7278e78af3db467e586233fe8773c07e Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@github.com>
++Date: Thu, 9 Sep 2021 14:36:47 +0200
++Subject: [PATCH] fixed #1910 #1911
++
++---
++ src/filters/dmx_nhml.c | 11 +++++++++--
++ 1 file changed, 9 insertions(+), 2 deletions(-)
++
++diff --git a/src/filters/dmx_nhml.c b/src/filters/dmx_nhml.c
++index 82cad5909..20f43f421 100644
++--- a/src/filters/dmx_nhml.c
+++++ b/src/filters/dmx_nhml.c
++@@ -999,10 +999,17 @@ static GF_Err nhmldmx_send_sample(GF_Filter *filter, GF_NHMLDmxCtx *ctx)
++                                      } else {
++                                              base_data = att->value;
++                                      }
+++                             } else if (!strnicmp(att->value, "gmem://", 7)) {
+++                                     GF_LOG(GF_LOG_WARNING, GF_LOG_PARSER, ("[NHMLDmx] Invalid url %s for NHML import\n", att->value));
++                              } else {
++                                      char *url = gf_url_concatenate(ctx->src_url, att->value);
++-                                     strcpy(szMediaTemp, url ? url : att->value);
++-                                     if (url) gf_free(url);
+++                                     if (!url) {
+++                                             GF_LOG(GF_LOG_WARNING, GF_LOG_PARSER, ("[NHMLDmx] Failed to get full url for %s\n", att->value));
+++                                     } else {
+++                                             strncpy(szMediaTemp, url, GF_MAX_PATH-1);
+++                                             szMediaTemp[GF_MAX_PATH-1] = 0;
+++                                             gf_free(url);
+++                                     }
++                              }
++                      }
++                      else if (!stricmp(att->name, "xmlFrom")) strcpy(szXmlFrom, att->value);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8878d2fbfcc505b1603d5db06bbb73030e0e9e42
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,193 @@@
++From ae2828284f2fc0381548aaa991958f1eb9b90619 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@github.com>
++Date: Thu, 9 Sep 2021 14:57:35 +0200
++Subject: [PATCH] fixed #1909
++
++---
++ src/filters/dmx_nhml.c | 56 +++++++++++++++++++++++++-----------------
++ 1 file changed, 33 insertions(+), 23 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/dmx_nhml.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/dmx_nhml.c
+++++ gpac-1.0.1+dfsg1/src/filters/dmx_nhml.c
++@@ -59,7 +59,7 @@ typedef struct
++      u32 sample_num;
++ 
++      FILE *mdia;
++-     char szMedia[GF_MAX_PATH];
+++     char *media_file;
++ 
++      GF_DOMParser *parser;
++      GF_XMLNode *root;
++@@ -457,7 +457,7 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++      FILE *nhml;
++      const GF_PropertyValue *p;
++      char *auxiliary_mime_types = NULL;
++-     char *ext, szName[1000], szInfo[GF_MAX_PATH], szXmlFrom[1000], szXmlHeaderEnd[1000];
+++     char *ext, *init_name=NULL, szXmlFrom[1000], szXmlHeaderEnd[1000];
++      u8 *specInfo;
++      char compressor_name[100];
++      GF_XMLNode *node;
++@@ -481,25 +481,26 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++              return GF_URL_ERROR;
++      }
++ 
++-     szName[0] = 0;
++      if (!strncmp(ctx->src_url, "gfio://", 7)) {
++              char *base = gf_file_basename( gf_fileio_translate_url(ctx->src_url) );
++-             if (base) strcpy(szName, base);
+++             if (base) gf_dynstrcat(&init_name, base, NULL);
++      } else {
++-             strcpy(szName, ctx->src_url);
+++             gf_dynstrcat(&init_name, ctx->src_url, NULL);
++      }
++-     ext = gf_file_ext_start(szName);
+++     if (!init_name) return GF_OUT_OF_MEM;
+++     ext = gf_file_ext_start(init_name);
++      if (ext) ext[0] = 0;
++-     strcpy(ctx->szMedia, szName);
++-     strcpy(szInfo, szName);
++-     strcat(ctx->szMedia, ".media");
++-     strcat(szInfo, ".info");
+++     if (ctx->media_file) gf_free(ctx->media_file);
+++     ctx->media_file = gf_strdup(init_name);
+++     gf_dynstrcat(&ctx->media_file, ".media", NULL);
+++     gf_dynstrcat(&init_name, ".info", NULL);
++ 
++      ctx->parser = gf_xml_dom_new();
++      e = gf_xml_dom_parse(ctx->parser, p->value.string, NULL, NULL);
++      if (e) {
++              gf_fclose(nhml);
++              GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[NHMLDmx] Error parsing %s file: Line %d - %s", szImpName, gf_xml_dom_get_line(ctx->parser), gf_xml_dom_get_error(ctx->parser) ));
+++             if (init_name) gf_free(init_name);
++              return GF_NON_COMPLIANT_BITSTREAM;
++      }
++      gf_fclose(nhml);
++@@ -507,6 +508,7 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++      ctx->root = gf_xml_dom_get_root(ctx->parser);
++      if (!ctx->root) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[NHMLDmx] Error parsing %s file - no root node found", szImpName ));
+++             if (init_name) gf_free(init_name);
++              return GF_NON_COMPLIANT_BITSTREAM;
++      }
++ 
++@@ -521,6 +523,7 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++ 
++      if (stricmp(ctx->root->name, szRootName)) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[NHMLDmx] Error parsing %s file - \"%s\" root expected, got \"%s\"", szImpName, szRootName, ctx->root->name));
+++             if (init_name) gf_free(init_name);
++              return GF_NON_COMPLIANT_BITSTREAM;
++      }
++ 
++@@ -565,12 +568,12 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++                      NHML_SCAN_INT("%u", nb_channels)
++              } else if (!stricmp(att->name, "baseMediaFile")) {
++                      char *url = gf_url_concatenate(ctx->src_url, att->value);
++-                     strcpy(ctx->szMedia, url ? url : att->value);
++-                     if (url) gf_free(url);
+++                     if (ctx->media_file) gf_free(ctx->media_file);
+++                     ctx->media_file = url;
++              } else if (!stricmp(att->name, "specificInfoFile")) {
++                      char *url = gf_url_concatenate(ctx->src_url, att->value);
++-                     strcpy(szInfo, url ? url : att->value);
++-                     if (url) gf_free(url);
+++                     if (init_name) gf_free(init_name);
+++                     init_name = url;
++              } else if (!stricmp(att->name, "headerEnd")) {
++                      NHML_SCAN_INT("%u", ctx->header_end)
++              } else if (!stricmp(att->name, "trackID")) {
++@@ -686,8 +689,8 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++              codecid = GF_CODECID_DIMS;
++              streamType = GF_STREAM_SCENE;
++      }
++-     if (gf_file_exists_ex(ctx->szMedia, ctx->src_url))
++-             ctx->mdia = gf_fopen_ex(ctx->szMedia, ctx->src_url, "rb");
+++     if (gf_file_exists_ex(ctx->media_file, ctx->src_url))
+++             ctx->mdia = gf_fopen_ex(ctx->media_file, ctx->src_url, "rb");
++ 
++      specInfoSize = 0;
++      if (!streamType && !mtype && !codec_tag) {
++@@ -696,13 +699,16 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++      }
++ 
++      finfo = NULL;
++-     if (gf_file_exists_ex(szInfo, ctx->src_url))
++-             finfo = gf_fopen_ex(szInfo, ctx->src_url, "rb");
+++     if (gf_file_exists_ex(init_name, ctx->src_url))
+++             finfo = gf_fopen_ex(init_name, ctx->src_url, "rb");
++ 
++      if (finfo) {
++              e = gf_file_load_data_filep(finfo, (u8 **)&specInfo, &specInfoSize);
++              gf_fclose(finfo);
++-             if (e) return e;
+++             if (e) {
+++                     if (init_name) gf_free(init_name);
+++                     return e;
+++             }
++      } else if (ctx->header_end) {
++              /* for text based streams, the decoder specific info can be at the beginning of the file */
++              specInfoSize = ctx->header_end;
++@@ -714,9 +720,10 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++              /* for XML based streams, the decoder specific info can be up to some element in the file */
++              strcpy(szXmlFrom, "doc.start");
++              ctx->samp_buffer_size = 0;
++-             e = nhml_sample_from_xml(ctx, ctx->szMedia, szXmlFrom, szXmlHeaderEnd);
+++             e = nhml_sample_from_xml(ctx, ctx->media_file, szXmlFrom, szXmlHeaderEnd);
++              if (e) {
++                      GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[NHMLDmx] failed to load XML header: %s", gf_error_to_string(e) ));
+++                     if (init_name) gf_free(init_name);
++                      return e;
++              }
++ 
++@@ -734,6 +741,7 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++              e = gf_xml_parse_bit_sequence(node, ctx->src_url, &specInfo, &specInfoSize);
++              if (e) {
++                      if (specInfo) gf_free(specInfo);
+++                     if (init_name) gf_free(init_name);
++                      return e;
++              }
++              break;
++@@ -858,7 +866,7 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++      ctx->current_child_idx = 0;
++      ctx->last_dts = GF_FILTER_NO_TS;
++ 
++-     gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_FILEPATH, & PROP_STRING(ctx->szMedia));
+++     gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_FILEPATH, & PROP_STRING(ctx->media_file));
++ 
++      if (ctx->mdia) {
++              media_size = gf_fsize(ctx->mdia);
++@@ -914,6 +922,7 @@ static GF_Err nhmldmx_init_parsing(GF_Fi
++              ctx->is_img = GF_TRUE;
++              ctx->duration.num =ctx->duration.den;
++      }
+++     if (init_name) gf_free(init_name);
++ 
++      gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_DURATION, & PROP_FRAC64(ctx->duration) );
++ 
++@@ -1053,7 +1062,7 @@ static GF_Err nhmldmx_send_sample(GF_Fil
++              if (strlen(szXmlFrom) && strlen(szXmlTo)) {
++                      char *xml_file;
++                      if (strlen(szMediaTemp)) xml_file = szMediaTemp;
++-                     else xml_file = ctx->szMedia;
+++                     else xml_file = ctx->media_file;
++                      ctx->samp_buffer_size = 0;
++                      e = nhml_sample_from_xml(ctx, xml_file, szXmlFrom, szXmlTo);
++              } else if (ctx->is_dims && !strlen(szMediaTemp)) {
++@@ -1107,7 +1116,7 @@ static GF_Err nhmldmx_send_sample(GF_Fil
++                      if (strlen(szMediaTemp)) {
++                              f = gf_fopen(szMediaTemp, "rb");
++                              if (!f) {
++-                                     GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[NHMLDmx] import failure in sample %d: file %s not found", ctx->sample_num, close ? szMediaTemp : ctx->szMedia));
+++                                     GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[NHMLDmx] import failure in sample %d: file %s not found", ctx->sample_num, close ? szMediaTemp : ctx->media_file));
++                                      return GF_NON_COMPLIANT_BITSTREAM;
++                              }
++                              close = GF_TRUE;
++@@ -1374,6 +1383,7 @@ void nhmldmx_finalize(GF_Filter *filter)
++      if (ctx->bs_w) gf_bs_del(ctx->bs_w);
++      if (ctx->samp_buffer) gf_free(ctx->samp_buffer);
++      if (ctx->zlib_buffer) gf_free(ctx->zlib_buffer);
+++     if (ctx->media_file) gf_free(ctx->media_file);
++ }
++ 
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..81f4f4297aecec01993b54ba74b35267ba974c90
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,33 @@@
++From 7d4538e104f2b3ff6a65a41394795654e6972339 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@github.com>
++Date: Thu, 9 Sep 2021 15:04:12 +0200
++Subject: [PATCH] fixed #1912
++
++---
++ src/filters/dmx_nhml.c | 10 ++++++++--
++ 1 file changed, 8 insertions(+), 2 deletions(-)
++
++diff --git a/src/filters/dmx_nhml.c b/src/filters/dmx_nhml.c
++index c35cbcc49..8ca7beed0 100644
++--- a/src/filters/dmx_nhml.c
+++++ b/src/filters/dmx_nhml.c
++@@ -1021,8 +1021,14 @@ static GF_Err nhmldmx_send_sample(GF_Filter *filter, GF_NHMLDmxCtx *ctx)
++                                      }
++                              }
++                      }
++-                     else if (!stricmp(att->name, "xmlFrom")) strcpy(szXmlFrom, att->value);
++-                     else if (!stricmp(att->name, "xmlTo")) strcpy(szXmlTo, att->value);
+++                     else if (!stricmp(att->name, "xmlFrom")) {
+++                             strncpy(szXmlFrom, att->value, 999);
+++                             szXmlFrom[999]=0;
+++                     }
+++                     else if (!stricmp(att->name, "xmlTo")) {
+++                             strncpy(szXmlTo, att->value, 999);
+++                             szXmlTo[999]=0;
+++                     }
++                      /*DIMS flags*/
++                      else if (!stricmp(att->name, "is-Scene") && !stricmp(att->value, "yes"))
++                              dims_flags |= GF_DIMS_UNIT_S;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fa5ac150f354d1262c122fa032a6ebafaa98e179
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,67 @@@
++From ef86a8eba3b166b885dec219066dd3a47501e03a Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 13 Dec 2021 14:21:50 +0100
++Subject: [PATCH] fixed #1980
++
++---
++ include/gpac/svg_types.h    | 3 +++
++ src/laser/lsr_dec.c         | 1 +
++ src/scenegraph/svg_types.c  | 2 ++
++ src/scenegraph/vrml_tools.c | 2 +-
++ 4 files changed, 7 insertions(+), 1 deletion(-)
++
++diff --git a/include/gpac/svg_types.h b/include/gpac/svg_types.h
++index fa48485ec..a32a21fbb 100644
++--- a/include/gpac/svg_types.h
+++++ b/include/gpac/svg_types.h
++@@ -177,6 +177,9 @@ enum {
++      LASeR_Size_datatype,
++ 
++      SVG_Matrix2D_datatype,
+++
+++     /*internal type for node list*/
+++     SVG_NodeList_datatype
++ };
++ 
++ //! @cond Doxygen_Suppress
++diff --git a/src/laser/lsr_dec.c b/src/laser/lsr_dec.c
++index 6b9ad05b6..bb8305623 100644
++--- a/src/laser/lsr_dec.c
+++++ b/src/laser/lsr_dec.c
++@@ -5250,6 +5250,7 @@ static GF_Err lsr_read_add_replace_insert(GF_LASeRCodec *lsr, GF_List *com_list,
++                              gf_node_register(field->new_node, NULL);
++                              if (att_type>=0) field->fieldIndex = gf_lsr_anim_type_to_attribute(att_type);
++                      } else {
+++                             field->fieldType = SVG_NodeList_datatype;
++                              field->field_ptr = &field->node_list;
++                              while (count) {
++                                      GF_Node *new_node = lsr_read_update_content_model(lsr, (SVG_Element *) n);
++diff --git a/src/scenegraph/svg_types.c b/src/scenegraph/svg_types.c
++index 667c9ab16..827f51d0f 100644
++--- a/src/scenegraph/svg_types.c
+++++ b/src/scenegraph/svg_types.c
++@@ -491,6 +491,8 @@ void gf_svg_delete_attribute_value(u32 type, void *value, GF_SceneGraph *sg)
++              if (*(SVG_String *)value) gf_free(*(SVG_String *)value);
++              gf_free(value);
++              break;
+++     case SVG_NodeList_datatype:
+++             break;
++      case SMIL_RepeatCount_datatype:
++      case SMIL_Duration_datatype:
++      case SVG_Length_datatype:
++diff --git a/src/scenegraph/vrml_tools.c b/src/scenegraph/vrml_tools.c
++index 0166cd890..6fd08b669 100644
++--- a/src/scenegraph/vrml_tools.c
+++++ b/src/scenegraph/vrml_tools.c
++@@ -1129,7 +1129,7 @@ GF_Err gf_sg_vrml_mf_reset(void *mf, u32 FieldType)
++              gf_sg_mfurl_del( * ((MFURL *) mf));
++              break;
++      case GF_SG_VRML_MFSCRIPT:
++-             gf_sg_mfscript_del( * ((MFScript *) mf));
+++             gf_sg_mfscript_del( * ((MFScript *) mf));       
++              break;
++      default:
++              if (mffield->array) gf_free(mffield->array);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a9232f0e69282bb2edb0ab2b4b1d1ace06ea6507
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++From b232648da3b111a0efe500501ee8ca8f32b616e9 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 13 Dec 2021 13:18:49 +0100
++Subject: [PATCH] fixed #1975
++
++---
++ src/laser/lsr_dec.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/src/laser/lsr_dec.c b/src/laser/lsr_dec.c
++index 35ff1c7c6..21b066e13 100644
++--- a/src/laser/lsr_dec.c
+++++ b/src/laser/lsr_dec.c
++@@ -2511,7 +2511,7 @@ static void lsr_read_anim_values_ex(GF_LASeRCodec *lsr, GF_Node *n, u32 *tr_type
++ 
++      GF_LSR_READ_INT(lsr, coded_type, 4, "type");
++      values->type = coded_type;
++-     values->laser_strings = 1;
+++     values->laser_strings = 0;
++ 
++      count = lsr_read_vluimsbf5(lsr, "count");
++      for (i=0; i<count; i++) {
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1dd4bf468c82c70c0485613b1253bed60304795c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++From 29f31f431b18278b94c659452562e8a027436487 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 13 Dec 2021 11:21:26 +0100
++Subject: [PATCH] fixed #1965
++
++---
++ src/scene_manager/loader_svg.c | 4 ++++
++ 1 file changed, 4 insertions(+)
++
++diff --git a/src/scene_manager/loader_svg.c b/src/scene_manager/loader_svg.c
++index 650ac2327..314dbb41f 100644
++--- a/src/scene_manager/loader_svg.c
+++++ b/src/scene_manager/loader_svg.c
++@@ -1426,6 +1426,10 @@ static void svg_node_start(void *sax_cbck, const char *name, const char *name_sp
++                      Bool rap;
++                      time = 0;
++                      rap =  GF_FALSE;
+++                     if (!parser->laser_es) {
+++                             svg_report(parser, GF_BAD_PARAM, "No LASER stream specified");
+++                             return;
+++                     }
++                      if (!gf_list_count(parser->laser_es->AUs)) rap = GF_TRUE;
++                      for (i=0; i<nb_attributes; i++) {
++                              GF_XMLAttribute *att = (GF_XMLAttribute *) &attributes[i];
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cb5e5a2e40de39c53b1718db37a68ba64b88b4bc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++From a07c64979af592aad56bc175157b7397e43fa9cc Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 10 Dec 2021 09:10:49 +0100
++Subject: [PATCH] fixed #1955
++
++---
++ src/scene_manager/scene_dump.c | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/src/scene_manager/scene_dump.c b/src/scene_manager/scene_dump.c
++index 0e9f377a8..ee7ef075d 100644
++--- a/src/scene_manager/scene_dump.c
+++++ b/src/scene_manager/scene_dump.c
++@@ -240,6 +240,7 @@ static void gf_dump_setup(GF_SceneDumper *sdump, GF_Descriptor *root_od)
++                      for (i=0; i<count; i++) {
++                              GF_LASERConfig lsrcfg;
++                              GF_ESD *esd = (GF_ESD *)gf_list_get(iod->ESDescriptors, i);
+++                             if (!esd || !esd->decoderConfig) continue;
++                              if (esd->decoderConfig->streamType != GF_STREAM_SCENE) continue;
++                              if (esd->decoderConfig->objectTypeIndication != 0x09) continue;
++                              if (!esd->decoderConfig->decoderSpecificInfo || !esd->decoderConfig->decoderSpecificInfo->data) continue;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..54a73ae0e46eebceba85e6ce5a1ba35e5fd5a1d0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,37 @@@
++From 3dafcb5e71e9ffebb50238784dcad8b105da81f6 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 10 Dec 2021 10:02:48 +0100
++Subject: [PATCH] fixed #1958
++
++---
++ src/isomedia/box_funcs.c | 1 +
++ src/isomedia/hinting.c   | 1 +
++ 2 files changed, 2 insertions(+)
++
++diff --git a/src/isomedia/box_funcs.c b/src/isomedia/box_funcs.c
++index 3701351d2..cbe4c5c29 100644
++--- a/src/isomedia/box_funcs.c
+++++ b/src/isomedia/box_funcs.c
++@@ -133,6 +133,7 @@ GF_Err gf_isom_box_parse_ex(GF_Box **outBox, GF_BitStream *bs, u32 parent_type,
++                      } else {
++                              if (!skip_logs) {
++                                      GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Read Box type %s (0x%08X) at position "LLU" has size 0 but is not at root/file level, skipping\n", gf_4cc_to_str(type), type, start));
+++                                     return GF_EOS;
++                              }
++                              return GF_OK;
++                      }
++diff --git a/src/isomedia/hinting.c b/src/isomedia/hinting.c
++index 5ce1a8b8a..5b6989b11 100644
++--- a/src/isomedia/hinting.c
+++++ b/src/isomedia/hinting.c
++@@ -678,6 +678,7 @@ GF_Err gf_isom_hint_rtp_read(GF_RTPPacket *ptr, GF_BitStream *bs)
++              while (tempSize < TLVsize) {
++                      e = gf_isom_box_parse(&a, bs);
++                      if (e) return e;
+++                     if (!a) continue;
++                      gf_list_add(ptr->TLV, a);
++                      tempSize += (u32) a->size;
++              }
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7d85523eae4ac99c6dce2b91cd4eb01f5228ccb2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From fb13af36286b9d898e332e8762a286eb83bd1770 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 14 Dec 2021 11:34:46 +0100
++Subject: [PATCH] fixed #1973
++
++---
++ src/utils/math.c | 3 ++-
++ 1 file changed, 2 insertions(+), 1 deletion(-)
++
++diff --git a/src/utils/math.c b/src/utils/math.c
++index 10fc2dcf7..4d16ce5f6 100644
++--- a/src/utils/math.c
+++++ b/src/utils/math.c
++@@ -35,7 +35,8 @@ GF_EXPORT
++ u32 gf_get_bit_size(u32 MaxVal)
++ {
++      u32 k=0;
++-     while ((s32) MaxVal > ((1<<k)-1) ) k+=1;
+++     while (MaxVal > (((u32)1<<k)-1) )
+++             k+=1;
++      return k;
++ }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f645d9744d9ecc604cd3d01e02a4a8351e34cac6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++From 5041fcbaa904a89d280561905a163171b3828cea Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 13 Dec 2021 11:23:01 +0100
++Subject: [PATCH] fixed #1966
++
++---
++ src/scene_manager/scene_dump.c | 4 +++-
++ 1 file changed, 3 insertions(+), 1 deletion(-)
++
++diff --git a/src/scene_manager/scene_dump.c b/src/scene_manager/scene_dump.c
++index d5fce6cc0..436878dd7 100644
++--- a/src/scene_manager/scene_dump.c
+++++ b/src/scene_manager/scene_dump.c
++@@ -3223,7 +3223,9 @@ static void dump_od_to_saf(GF_SceneDumper *dumper, GF_AUContext *au, u32 indent)
++ 
++ 
++                      gf_fprintf(dumper->trace, "<saf:mediaHeader streamID=\"stream%d\"", esd->ESID);
++-                     gf_fprintf(dumper->trace, " streamType=\"%d\" objectTypeIndication=\"%d\" timeStampResolution=\"%d\"", esd->decoderConfig->streamType, esd->decoderConfig->objectTypeIndication, au->owner->timeScale);
+++                     if (esd->decoderConfig) {
+++                             gf_fprintf(dumper->trace, " streamType=\"%d\" objectTypeIndication=\"%d\" timeStampResolution=\"%d\"", esd->decoderConfig->streamType, esd->decoderConfig->objectTypeIndication, au->owner->timeScale);
+++                     }
++                      if (au->timing) gf_fprintf(dumper->trace, " time=\""LLD"\"", au->timing);
++                      if (mux && mux->file_name) gf_fprintf(dumper->trace, " source=\"%s\"", mux->file_name);
++                      gf_fprintf(dumper->trace, "/>\n");
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9427d64cace793e1e33559c734d7cf149221069d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,64 @@@
++From 6d647f6e458c9b727eae1a8077d27fa433ced788 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 13 Dec 2021 13:31:01 +0100
++Subject: [PATCH] fixed #1978
++
++---
++ src/bifs/com_dec.c          | 3 ++-
++ src/bifs/field_decode.c     | 5 +++--
++ src/scenegraph/vrml_tools.c | 2 +-
++ 3 files changed, 6 insertions(+), 4 deletions(-)
++
++diff --git a/src/bifs/com_dec.c b/src/bifs/com_dec.c
++index 87c6e7b20..b99ea4e17 100644
++--- a/src/bifs/com_dec.c
+++++ b/src/bifs/com_dec.c
++@@ -812,7 +812,8 @@ static GF_Err BD_DecFieldReplace(GF_BifsDecoder * codec, GF_BitStream *bs)
++      }
++      /*regular field*/
++      else if (!gf_sg_vrml_is_sf_field(field.fieldType)) {
++-             gf_sg_vrml_mf_reset(field.far_ptr, field.fieldType);
+++             e = gf_sg_vrml_mf_reset(field.far_ptr, field.fieldType);
+++             if (e) return e;
++      }
++ 
++      /*parse the field*/
++diff --git a/src/bifs/field_decode.c b/src/bifs/field_decode.c
++index a97212ab2..b5cd6e827 100644
++--- a/src/bifs/field_decode.c
+++++ b/src/bifs/field_decode.c
++@@ -506,7 +506,8 @@ GF_Err gf_bifs_dec_field(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node
++                              * (GF_ChildNodeItem **)field->far_ptr = NULL;
++                      } else {
++                              //remove all items of the MFField
++-                             gf_sg_vrml_mf_reset(field->far_ptr, field->fieldType);
+++                             e = gf_sg_vrml_mf_reset(field->far_ptr, field->fieldType);
+++                             if (e) return e;
++                      }
++              }
++ 
++@@ -538,7 +539,7 @@ GF_Err gf_bifs_dec_field(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node
++                      } else {
++                              e = BD_DecMFFieldVec(codec, bs, node, field, is_mem_com);
++                      }
++-                     if (e) return e;
+++                     if (e) return codec->LastError = e;
++              }
++      }
++      return GF_OK;
++diff --git a/src/scenegraph/vrml_tools.c b/src/scenegraph/vrml_tools.c
++index c3c85daab..0166cd890 100644
++--- a/src/scenegraph/vrml_tools.c
+++++ b/src/scenegraph/vrml_tools.c
++@@ -1115,7 +1115,7 @@ GF_EXPORT
++ GF_Err gf_sg_vrml_mf_reset(void *mf, u32 FieldType)
++ {
++      GenMFField *mffield = (GenMFField *)mf;
++-     if (!mffield->array) return GF_OK;
+++     if (!mffield || !mffield->array) return GF_OK;
++ 
++      //field we can't copy
++      if (gf_sg_vrml_is_sf_field(FieldType)) return GF_BAD_PARAM;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..527dbc982ac2ef29c8f63661d50b1e5f34352296
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,111 @@@
++From d2f74e49f2cb8d687c0dc38f66b99e3c5c7d7fec Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 13 Dec 2021 13:04:59 +0100
++Subject: [PATCH] fixed #1974
++
++---
++ src/bifs/com_dec.c      | 13 +++----------
++ src/bifs/field_decode.c | 33 ++++++++++++++++++++-------------
++ 2 files changed, 23 insertions(+), 23 deletions(-)
++
++diff --git a/src/bifs/com_dec.c b/src/bifs/com_dec.c
++index 113152efc..87c6e7b20 100644
++--- a/src/bifs/com_dec.c
+++++ b/src/bifs/com_dec.c
++@@ -789,7 +789,7 @@ static GF_Err BD_DecFieldReplace(GF_BifsDecoder * codec, GF_BitStream *bs)
++ {
++      GF_Err e;
++      u32 NodeID, ind, field_ind, NumBits;
++-     GF_Node *node, *prev_node;
+++     GF_Node *node;
++      GF_ChildNodeItem *prev_child;
++      GF_FieldInfo field;
++ 
++@@ -804,14 +804,9 @@ static GF_Err BD_DecFieldReplace(GF_BifsDecoder * codec, GF_BitStream *bs)
++      e = gf_node_get_field(node, field_ind, &field);
++      if (e) return e;
++ 
++-     prev_node = NULL;
++      prev_child = NULL;
++-     /*store prev SF node*/
++-     if (field.fieldType == GF_SG_VRML_SFNODE) {
++-             prev_node = *((GF_Node **) field.far_ptr);
++-     }
++      /*store prev MFNode content*/
++-     else if (field.fieldType == GF_SG_VRML_MFNODE) {
+++     if (field.fieldType == GF_SG_VRML_MFNODE) {
++              prev_child = * ((GF_ChildNodeItem **) field.far_ptr);
++              * ((GF_ChildNodeItem **) field.far_ptr) = NULL;
++      }
++@@ -825,9 +820,7 @@ static GF_Err BD_DecFieldReplace(GF_BifsDecoder * codec, GF_BitStream *bs)
++      e = gf_bifs_dec_field(codec, bs, node, &field, GF_FALSE);
++      codec->is_com_dec = GF_FALSE;
++      /*remove prev nodes*/
++-     if (field.fieldType == GF_SG_VRML_SFNODE) {
++-             if (prev_node) e = gf_node_unregister(prev_node, node);
++-     } else if (field.fieldType == GF_SG_VRML_MFNODE) {
+++     if (field.fieldType == GF_SG_VRML_MFNODE) {
++              gf_node_unregister_children(node, prev_child);
++      }
++      if (!e) gf_bifs_check_field_change(node, &field);
++diff --git a/src/bifs/field_decode.c b/src/bifs/field_decode.c
++index 7dc9a64cd..a97212ab2 100644
++--- a/src/bifs/field_decode.c
+++++ b/src/bifs/field_decode.c
++@@ -238,6 +238,14 @@ GF_Err gf_bifs_dec_sf_field(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *n
++      }
++      break;
++      case GF_SG_VRML_SFNODE:
+++             //if not memory dec mode, unregister previous node
+++             //otherwise the field points to the memory command internal field
+++             if (!is_mem_com) {
+++                     if ( *((GF_Node **) field->far_ptr) != NULL) {
+++                             gf_node_unregister(*((GF_Node **) field->far_ptr), node);
+++                              *((GF_Node **) field->far_ptr) = NULL;
+++                     }
+++             }
++              //for nodes the field ptr is a ptr to the field, which is a node ptr ;)
++              new_node = gf_bifs_dec_node(codec, bs, field->NDTtype);
++              if (new_node) {
++@@ -870,19 +878,6 @@ GF_Node *gf_bifs_dec_node(GF_BifsDecoder * codec, GF_BitStream *bs, u32 NDT_Tag)
++              return NULL;
++      }
++ 
++-     /*VRML: "The transformation hierarchy shall be a directed acyclic graph; results are undefined if a node
++-     in the transformation hierarchy is its own ancestor"
++-     that's good, because the scene graph can't handle cyclic graphs (destroy will never be called).
++-     We therefore only register the node once parsed*/
++-     if (nodeID) {
++-             if (strlen(name)) {
++-                     gf_node_set_id(new_node, nodeID, name);
++-             } else {
++-                     gf_node_set_id(new_node, nodeID, NULL);
++-             }
++-     }
++-
++-
++      /*update default time fields except in proto parsing*/
++      if (!codec->pCurrentProto) UpdateTimeNode(codec, new_node);
++      /*nodes are only init outside protos, nodes internal to protos are never intialized */
++@@ -917,6 +912,18 @@ GF_Node *gf_bifs_dec_node(GF_BifsDecoder * codec, GF_BitStream *bs, u32 NDT_Tag)
++              return NULL;
++      }
++ 
+++     /*VRML: "The transformation hierarchy shall be a directed acyclic graph; results are undefined if a node
+++     in the transformation hierarchy is its own ancestor"
+++     that's good, because the scene graph can't handle cyclic graphs (destroy will never be called).
+++     We therefore only register the node once parsed*/
+++     if (nodeID) {
+++             if (strlen(name)) {
+++                     gf_node_set_id(new_node, nodeID, name);
+++             } else {
+++                     gf_node_set_id(new_node, nodeID, NULL);
+++             }
+++     }
+++
++      if (!skip_init)
++              gf_node_init(new_node);
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..584227d6fdf3b43de6b5b2cf4b3ee9e029522f63
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++Origin: https://github.com/gpac/gpac/commit/e54df17892bee983d09d9437e44e6a1528fb46cb
++Reviewed-by: Aron Xu <aron@debian.org>
++
++From e54df17892bee983d09d9437e44e6a1528fb46cb Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 13 Dec 2021 11:42:13 +0100
++Subject: [PATCH] fixed #1971
++
++---
++ src/isomedia/isom_store.c | 2 ++
++ 1 file changed, 2 insertions(+)
++
++Index: gpac-1.0.1+dfsg1/src/isomedia/isom_store.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/isom_store.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/isom_store.c
++@@ -253,6 +253,7 @@ static GF_Err ShiftOffset(GF_ISOFile *fi
++ 
++      i=0;
++      while ((writer = (TrackWriter *)gf_list_enum(writers, &i))) {
+++                if (!writer->stsc || !writer->stco) return GF_ISOM_INVALID_FILE;
++              if (writer->mdia->mediaTrack->meta) ShiftMetaOffset(writer->mdia->mediaTrack->meta, offset);
++ 
++              //we have to proceed entry by entry in case a part of the media is not self-contained...
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fef4f174077fe73bf635ca9882abf7213c0048db
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++From 830548acd030467e857f4cf0b79af8ebf1e04dde Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 14 Dec 2021 10:00:33 +0100
++Subject: [PATCH] fixed #1982
++
++---
++ src/laser/lsr_dec.c | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/src/laser/lsr_dec.c b/src/laser/lsr_dec.c
++index bb8305623..c771f1ca1 100644
++--- a/src/laser/lsr_dec.c
+++++ b/src/laser/lsr_dec.c
++@@ -675,6 +675,8 @@ static void lsr_read_paint(GF_LASeRCodec *lsr, SVG_Paint *paint, const char *nam
++                      iri.type = 0xFF;
++                      lsr_read_any_uri(lsr, &iri, name);
++                      gf_node_unregister_iri(lsr->sg, &iri);
+++                     gf_list_del_item(lsr->deferred_hrefs, &iri);
+++
++                      paint->type = SVG_PAINT_URI;
++                      if (iri.string) {
++                              paint->type = SVG_PAINT_URI;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d8a717f9bb9486477657bdd760e03756e4d054b1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++From 4613a35362e15a6df90453bd632d083645e5a765 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 15 Dec 2021 09:49:28 +0100
++Subject: [PATCH] fixed #1990
++
++---
++ src/scenegraph/svg_attributes.c | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/src/scenegraph/svg_attributes.c b/src/scenegraph/svg_attributes.c
++index 4cee6f7ab..64145b9e8 100644
++--- a/src/scenegraph/svg_attributes.c
+++++ b/src/scenegraph/svg_attributes.c
++@@ -4580,7 +4580,7 @@ char *gf_svg_dump_attribute(GF_Node *elt, GF_FieldInfo *info)
++      case SVG_FontFamily_datatype:
++      {
++              SVG_FontFamily *f = (SVG_FontFamily *)info->far_ptr;
++-             return gf_strdup( (f->type==SVG_FONTFAMILY_INHERIT) ? "inherit" : (const char *) f->value);
+++             return gf_strdup( (!f->value || (f->type==SVG_FONTFAMILY_INHERIT)) ? "inherit" : (const char *) f->value);
++      }
++ 
++      case SVG_PreserveAspectRatio_datatype:
++@@ -4924,7 +4924,7 @@ char *gf_svg_dump_attribute_indexed(GF_Node *elt, GF_FieldInfo *info)
++      case SVG_PointerEvents_datatype:
++              break;
++      case XMLRI_List_datatype:
++-             return gf_strdup( (char *) info->far_ptr);
+++             return gf_strdup(info->far_ptr ? (char *) info->far_ptr : "");
++ 
++      case SVG_Points_datatype:
++      {
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a72d60215b094077e01ca7728b9a694901a381f8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++Origin: https://github.com/gpac/gpac/commit/f5a778edd1febd574ff9558d2faa57133bdb4a5f
++Reviewed-by: Aron Xu <aron@debian.org>
++
++From f5a778edd1febd574ff9558d2faa57133bdb4a5f Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 3 Jan 2022 11:12:21 +0100
++Subject: [PATCH] fixed #1999
++
++---
++ src/isomedia/isom_store.c | 4 ++++
++ 1 file changed, 4 insertions(+)
++
++Index: gpac-1.0.1+dfsg1/src/isomedia/isom_store.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/isom_store.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/isom_store.c
++@@ -270,6 +270,8 @@ static GF_Err ShiftOffset(GF_ISOFile *fi
++                              //be carefull for the last entry, nextChunk is set to 0 in edit mode...
++                              last = ent->nextChunk ? ent->nextChunk : stco->nb_entries + 1;
++                              for (k = ent->firstChunk; k < last; k++) {
+++                                        if (stco->nb_entries < k)
+++                                                return GF_ISOM_INVALID_FILE;
++ 
++                                      //we need to rewrite the table: only allocate co64 if not done previously and convert all offsets
++                                      //to co64. Then (whether co64 was created or not) adjust the offset
++@@ -303,6 +305,8 @@ static GF_Err ShiftOffset(GF_ISOFile *fi
++                              //be carefull for the last entry ...
++                              last = ent->nextChunk ? ent->nextChunk : stco64->nb_entries + 1;
++                              for (k = ent->firstChunk; k < last; k++) {
+++                                        if (stco64->nb_entries < k)
+++                                                return GF_ISOM_INVALID_FILE;
++                                      stco64->offsets[k-1] += offset;
++                              }
++                      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e03caaf06840f5654ede9a757ec8403901f84d82
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,33 @@@
++From dd2e8b1b9378a9679de8e7e5dcb2d7841acd5dbd Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 3 Jan 2022 11:24:15 +0100
++Subject: [PATCH] fixed #2008
++
++---
++ src/media_tools/isom_hinter.c | 9 ++++++---
++ 1 file changed, 6 insertions(+), 3 deletions(-)
++
++diff --git a/src/media_tools/isom_hinter.c b/src/media_tools/isom_hinter.c
++index d35e887ec..083f6713a 100644
++--- a/src/media_tools/isom_hinter.c
+++++ b/src/media_tools/isom_hinter.c
++@@ -1288,10 +1288,13 @@ GF_Err gf_hinter_finalize(GF_ISOFile *file, GF_SDP_IODProfile IOD_Profile, u32 b
++                      }
++                      gf_isom_sample_del(&samp);
++              }
++-             if (remove_ocr) esd->OCRESID = 0;
++-             else if (esd->OCRESID == esd->ESID) esd->OCRESID = 0;
++ 
++-             gf_list_add(iod->ESDescriptors, esd);
+++             if (esd) {
+++                     if (remove_ocr) esd->OCRESID = 0;
+++                     else if (esd->OCRESID == esd->ESID) esd->OCRESID = 0;
+++
+++                     gf_list_add(iod->ESDescriptors, esd);
+++             }
++ 
++              if (is_ok) {
++                      u32 has_a, has_v, has_i_a, has_i_v;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..39c0634ce7510d2c5574f080d0960c1c0a0817e2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From 3718d583c6ade191dc7979c64f48c001ca6f0243 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 17 Mar 2022 12:00:55 +0100
++Subject: [PATCH] fixed #2146
++
++---
++ src/scene_manager/scene_dump.c | 3 +--
++ 1 file changed, 1 insertion(+), 2 deletions(-)
++
++diff --git a/src/scene_manager/scene_dump.c b/src/scene_manager/scene_dump.c
++index 3104d23c3..6fe250f52 100644
++--- a/src/scene_manager/scene_dump.c
+++++ b/src/scene_manager/scene_dump.c
++@@ -755,8 +755,7 @@ static void gf_dump_vrml_simple_field(GF_SceneDumper *sdump, GF_FieldInfo field,
++ 
++      switch (field.fieldType) {
++      case GF_SG_VRML_SFNODE:
++-             assert ( *(GF_Node **)field.far_ptr);
++-             gf_dump_vrml_node(sdump, *(GF_Node **)field.far_ptr, 0, NULL);
+++             gf_dump_vrml_node(sdump, field.far_ptr ? *(GF_Node **)field.far_ptr : NULL, 0, NULL);
++              return;
++      case GF_SG_VRML_MFNODE:
++              list = * ((GF_ChildNodeItem **) field.far_ptr);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..42f7f5531a1ef8f3508260a43b5539137e197f30
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++From 7f060bbb72966cae80d6fee338d0b07fa3fc06e1 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 31 Mar 2022 13:57:05 +0200
++Subject: [PATCH] fixed #2159
++
++---
++ src/media_tools/avilib.c | 7 +++++--
++ 1 file changed, 5 insertions(+), 2 deletions(-)
++
++diff --git a/src/media_tools/avilib.c b/src/media_tools/avilib.c
++index 71e751d19..14febb365 100644
++--- a/src/media_tools/avilib.c
+++++ b/src/media_tools/avilib.c
++@@ -1884,8 +1884,8 @@ avi_t *AVI_open_fd(FILE *fd, int getIndex)
++ 
++ int avi_parse_input_file(avi_t *AVI, int getIndex)
++ {
++-     int i, rate, scale, idx_type;
++-     s64 n;
+++     int rate, scale, idx_type;
+++     s64 n, i;
++      unsigned char *hdrl_data;
++      u64 header_offset=0;
++      int hdrl_len=0;
++@@ -1939,6 +1939,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex)
++                              n -= 4;
++                      if(strnicmp(data,"hdrl",4) == 0)
++                      {
+++                             if (n>0xFFFFFFFF) ERR_EXIT(AVI_ERR_READ)
++                              hdrl_len = (u32) n;
++                              hdrl_data = (unsigned char *) gf_malloc((u32)n);
++                              if(hdrl_data==0) ERR_EXIT(AVI_ERR_NO_MEM);
++@@ -2091,8 +2092,10 @@ int avi_parse_input_file(avi_t *AVI, int getIndex)
++                                              AVI->compressor2[4] = 0;
++ 
++                                              if (n>40) {
+++                                                     if (n>0xFFFFFFFF) ERR_EXIT(AVI_ERR_READ)
++                                                      AVI->extradata_size = (u32) (n - 40);
++                                                      AVI->extradata = gf_malloc(sizeof(u8)* AVI->extradata_size);
+++                                                     if (!AVI->extradata) ERR_EXIT(AVI_ERR_NO_MEM)
++                                                      memcpy(AVI->extradata, hdrl_data + i + 40, AVI->extradata_size);
++                                              }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..34da4b96d3d31f13c39b95bcb91c4ffc0c8eac84
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,41 @@@
++From 3dbe11b37d65c8472faf0654410068e5500b3adb Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 19 Apr 2022 09:15:58 +0200
++Subject: [PATCH] fixed #2175
++
++---
++ src/isomedia/box_code_3gpp.c | 16 ++++------------
++ 1 file changed, 4 insertions(+), 12 deletions(-)
++
++diff --git a/src/isomedia/box_code_3gpp.c b/src/isomedia/box_code_3gpp.c
++index 3f9ff0569..928a5575f 100644
++--- a/src/isomedia/box_code_3gpp.c
+++++ b/src/isomedia/box_code_3gpp.c
++@@ -1128,20 +1128,12 @@ void diST_box_del(GF_Box *s)
++ 
++ GF_Err diST_box_read(GF_Box *s, GF_BitStream *bs)
++ {
++-     u32 i;
++-     char str[1024];
++      GF_DIMSScriptTypesBox *p = (GF_DIMSScriptTypesBox *)s;
++ 
++-     i=0;
++-     str[0]=0;
++-     while (1) {
++-             str[i] = gf_bs_read_u8(bs);
++-             if (!str[i]) break;
++-             i++;
++-     }
++-     ISOM_DECREASE_SIZE(p, i);
++-
++-     p->content_script_types = gf_strdup(str);
+++     p->content_script_types = gf_malloc(sizeof(char) * (s->size+1));
+++     if (!p->content_script_types) return GF_OUT_OF_MEM;
+++     gf_bs_read_data(bs, p->content_script_types, s->size);
+++     p->content_script_types[s->size] = 0;
++      return GF_OK;
++ }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bd67c4e80568aa211da8e869d51e326d3381efbd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,40 @@@
++From c535bad50d5812d27ee5b22b54371bddec411514 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 18 May 2022 11:49:49 +0200
++Subject: [PATCH] fixed #2194
++
++---
++ src/bifs/memory_decoder.c | 10 ++++++++--
++ 1 file changed, 8 insertions(+), 2 deletions(-)
++
++diff --git a/src/bifs/memory_decoder.c b/src/bifs/memory_decoder.c
++index 74d635750..1fc8c9963 100644
++--- a/src/bifs/memory_decoder.c
+++++ b/src/bifs/memory_decoder.c
++@@ -178,7 +178,12 @@ static GF_Err BM_ParseGlobalQuantizer(GF_BifsDecoder *codec, GF_BitStream *bs, G
++      codec->scenegraph->global_qp = NULL;
++ 
++      if (gf_node_get_tag(node) != TAG_MPEG4_QuantizationParameter) {
++-             gf_node_unregister(node, NULL);
+++             //if node was just created (num_instances == 0), unregister
+++             //otherwise (USE node) don't do anything
+++             if (!node->sgprivate->num_instances) {
+++                     node->sgprivate->num_instances = 1;
+++                     gf_node_unregister(node, NULL);
+++             }
++              return GF_NON_COMPLIANT_BITSTREAM;
++      }
++ 
++@@ -188,7 +193,8 @@ static GF_Err BM_ParseGlobalQuantizer(GF_BifsDecoder *codec, GF_BitStream *bs, G
++      codec->scenegraph->global_qp = node;
++ 
++      /*register TWICE: once for the command, and for the scenegraph globalQP*/
++-     node->sgprivate->num_instances = 2;
+++     gf_node_unregister(node, NULL);
+++     gf_node_unregister(node, NULL);
++ 
++      com = gf_sg_command_new(codec->current_graph, GF_SG_GLOBAL_QUANTIZER);
++      inf = gf_sg_command_field_new(com);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c7cd4e00f6c0faed7eeb9218b4baaee581984fe7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++From faa75edde3dfeba1e2cf6ffa48e45a50f1042096 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 12 Jul 2022 18:00:35 +0200
++Subject: [PATCH] fixed #2213
++
++---
++ src/laser/lsr_dec.c | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/src/laser/lsr_dec.c b/src/laser/lsr_dec.c
++index 99d16aaa7..488babb10 100644
++--- a/src/laser/lsr_dec.c
+++++ b/src/laser/lsr_dec.c
++@@ -838,6 +838,8 @@ static void lsr_read_id(GF_LASeRCodec *lsr, GF_Node *n)
++ 
++ static Fixed lsr_translate_coords(GF_LASeRCodec *lsr, u32 val, u32 nb_bits)
++ {
+++     if (!nb_bits) return 0;
+++     
++ #ifdef GPAC_FIXED_POINT
++      if (val >> (nb_bits-1) ) {
++              s32 neg = (s32) val - (1<<nb_bits);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ba95da85da27903ef8d46408a6be1a86958c65f7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,99 @@@
++Origin: https://github.com/gpac/gpac/commit/9f8510835b97a729baf3646a3171bf51b4a8592e
++Reviewed-by: Aron Xu <aron@debian.org>
++
++
++From 9f8510835b97a729baf3646a3171bf51b4a8592e Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 19 Jan 2022 12:12:43 +0100
++Subject: [PATCH] fixed #2055
++
++---
++ src/filters/isoffin_read_ch.c  | 10 +++++++---
++ src/media_tools/media_export.c |  5 +++++
++ src/scene_manager/scene_dump.c | 22 +++++++++++++---------
++ 3 files changed, 24 insertions(+), 11 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/isoffin_read_ch.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/isoffin_read_ch.c
+++++ gpac-1.0.1+dfsg1/src/filters/isoffin_read_ch.c
++@@ -365,10 +365,10 @@ void isor_reader_get_sample(ISOMChannel
++                                      ch->sample_num--;
++                      } else {
++                              if (ch->to_init && ch->sample_num) {
++-                                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[IsoMedia] Failed to fetch initial sample %d for track %d\n"));
+++                                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[IsoMedia] Failed to fetch initial sample %d for track %d\n", ch->sample_num, ch->track));
++                                      ch->last_state = GF_ISOM_INVALID_FILE;
++-                             }
++-                             if (ch->sample_num >= gf_isom_get_sample_count(ch->owner->mov, ch->track)) {
+++                             } else {
+++                                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[IsoMedia] File truncated, aborting read for track %d\n", ch->track));
++                                      ch->last_state = GF_EOS;
++                              }
++                      }
++@@ -391,6 +391,9 @@ void isor_reader_get_sample(ISOMChannel
++                      }
++              } else {
++                      GF_LOG(GF_LOG_DEBUG, GF_LOG_DASH, ("[IsoMedia] Track #%d fail to fetch sample %d / %d: %s\n", ch->track, ch->sample_num, gf_isom_get_sample_count(ch->owner->mov, ch->track), gf_error_to_string(gf_isom_last_error(ch->owner->mov)) ));
+++                        if ((e<GF_OK) && (e!=GF_ISOM_INCOMPLETE_FILE)) {
+++                                ch->last_state = GF_EOS;
+++                        }
++              }
++              return;
++      }
++Index: gpac-1.0.1+dfsg1/src/media_tools/media_export.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/media_export.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/media_export.c
++@@ -1038,6 +1038,11 @@ GF_Err gf_media_export_saf(GF_MediaExpor
++                      GF_ISOSample *samp;
++                      if (safs[i].last_sample==safs[i].nb_samp) continue;
++                      samp = gf_isom_get_sample(dumper->file, safs[i].track_num, safs[i].last_sample + 1, &di);
+++                     if (!samp) {
+++                             gf_saf_mux_del(mux);
+++                             return gf_isom_last_error(dumper->file);
+++                     }
+++
++                      gf_saf_mux_add_au(mux, safs[i].stream_id, (u32) (samp->DTS+samp->CTS_Offset), samp->data, samp->dataLength, (samp->IsRAP==RAP) ? 1 : 0);
++                      /*data is kept by muxer!!*/
++                      gf_free(samp);
++Index: gpac-1.0.1+dfsg1/src/scene_manager/scene_dump.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/scene_manager/scene_dump.c
+++++ gpac-1.0.1+dfsg1/src/scene_manager/scene_dump.c
++@@ -937,10 +937,12 @@ static void gf_dump_vrml_field(GF_SceneD
++              }
++ 
++              if (!sdump->XMLDump) gf_fprintf(sdump->trace, "[");
++-             for (i=0; i<mffield->count; i++) {
++-                     if (i) gf_fprintf(sdump->trace, " ");
++-                     gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
++-                     gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, 1, node);
+++             if (mffield) {
+++                     for (i=0; i<mffield->count; i++) {
+++                             if (i) gf_fprintf(sdump->trace, " ");
+++                             gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
+++                             gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, 1, node);
+++                     }
++              }
++              if (!sdump->XMLDump) gf_fprintf(sdump->trace, "]");
++ 
++@@ -1258,11 +1260,13 @@ static void gf_dump_vrml_proto_field(GF_
++                              } else {
++                                      gf_fprintf(sdump->trace, " %s=\"", GetXMTFieldTypeValueName(field.fieldType));
++                              }
++-                             for (i=0; i<mffield->count; i++) {
++-                                     if (i) gf_fprintf(sdump->trace, " ");
++-                                     if (field.fieldType != GF_SG_VRML_MFNODE) {
++-                                             gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
++-                                             gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, (mffield->count>1) ? 1 : 0, node);
+++                             if (mffield) {
+++                                     for (i=0; i<mffield->count; i++) {
+++                                             if (i) gf_fprintf(sdump->trace, " ");
+++                                             if (field.fieldType != GF_SG_VRML_MFNODE) {
+++                                                     gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
+++                                                     gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, (mffield->count>1) ? 1 : 0, node);
+++                                             }
++                                      }
++                              }
++                              gf_fprintf(sdump->trace, "\"/>\n");
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d42857510e1a69fc784157a213c0aae54aa7bb21
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,89 @@@
++From 586e817dcd531bb3e75438390f1f753cfe6e940a Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 17 Jan 2022 10:40:43 +0100
++Subject: [PATCH] fixed #2046
++
++---
++ src/isomedia/box_code_base.c | 38 +++++++++++++++++++++++++++++++++++-
++ src/isomedia/isom_write.c    |  2 +-
++ 2 files changed, 38 insertions(+), 2 deletions(-)
++
++diff --git a/src/isomedia/box_code_base.c b/src/isomedia/box_code_base.c
++index c52c3a0c8..eb6e7571b 100644
++--- a/src/isomedia/box_code_base.c
+++++ b/src/isomedia/box_code_base.c
++@@ -2835,7 +2835,17 @@ GF_Err iods_box_read(GF_Box *s, GF_BitStream *bs)
++      e = gf_odf_desc_read(desc, descSize, &ptr->descriptor);
++      //OK, free our desc
++      gf_free(desc);
++-     return e;
+++
+++     if (e) return e;
+++     switch (ptr->descriptor->tag) {
+++     case GF_ODF_ISOM_OD_TAG:
+++     case GF_ODF_ISOM_IOD_TAG:
+++             break;
+++     default:
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid descriptor in iods, tag %u found but only %u or %u allowed\n", ptr->descriptor->tag, GF_ODF_ISOM_IOD_TAG, GF_ODF_ISOM_OD_TAG ));
+++             return GF_ISOM_INVALID_FILE;
+++     }
+++     return GF_OK;
++ }
++ 
++ GF_Box *iods_box_new()
++@@ -5080,6 +5090,32 @@ GF_Err stbl_box_read(GF_Box *s, GF_BitStream *bs)
++              if (!ptr->TimeToSample->nb_entries || !ptr->SampleToChunk->nb_entries)
++                      return GF_ISOM_INVALID_FILE;
++      }
+++     u32 i, max_chunks=0;
+++     if (ptr->ChunkOffset->type == GF_ISOM_BOX_TYPE_STCO) {
+++             max_chunks = ((GF_ChunkOffsetBox *)ptr->ChunkOffset)->nb_entries;
+++     }
+++     else if (ptr->ChunkOffset->type == GF_ISOM_BOX_TYPE_CO64) {
+++             max_chunks = ((GF_ChunkOffsetBox *)ptr->ChunkOffset)->nb_entries;
+++     }
+++
+++     //sanity check on stsc vs chunk offset tables
+++     for (i=0; i<ptr->SampleToChunk->nb_entries; i++) {
+++             GF_StscEntry *ent = &ptr->SampleToChunk->entries[i];
+++             if (!i && (ent->firstChunk!=1)) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] first_chunk of first entry shall be 1 but is %u\n", ent->firstChunk));
+++                     return GF_ISOM_INVALID_FILE;
+++             }
+++             if (ptr->SampleToChunk->entries[i].firstChunk > max_chunks) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] first_chunk is %u but number of chunks defined %u\n", ptr->SampleToChunk->entries[i].firstChunk, max_chunks));
+++                     return GF_ISOM_INVALID_FILE;
+++             }
+++             if (i+1 == ptr->SampleToChunk->nb_entries) break;
+++             GF_StscEntry *next_ent = &ptr->SampleToChunk->entries[i+1];
+++             if (next_ent->firstChunk < ent->firstChunk) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] first_chunk (%u) for entry %u is greater than first_chunk (%u) for entry %u\n", i+1, ent->firstChunk, i+2, next_ent->firstChunk));
+++                     return GF_ISOM_INVALID_FILE;
+++             }
+++     }
++      return GF_OK;
++ }
++ 
++diff --git a/src/isomedia/isom_write.c b/src/isomedia/isom_write.c
++index 69f9c9ebc..832526841 100644
++--- a/src/isomedia/isom_write.c
+++++ b/src/isomedia/isom_write.c
++@@ -2822,6 +2822,7 @@ GF_Err gf_isom_remove_track(GF_ISOFile *movie, u32 trackNumber)
++      i=0;
++      while ((trak = (GF_TrackBox *)gf_list_enum(movie->moov->trackList, &i))) {
++              if (trak->Media->handler->handlerType != GF_ISOM_MEDIA_OD) continue;
+++
++              //this is an OD track...
++              j = gf_isom_get_sample_count(movie, i);
++              for (k=0; k < j; k++) {
++@@ -2845,7 +2846,6 @@ GF_Err gf_isom_remove_track(GF_ISOFile *movie, u32 trackNumber)
++      //note that we don't touch scal references, as we don't want to rewrite AVC/HEVC samples ...
++      i=0;
++      while ((trak = (GF_TrackBox *)gf_list_enum(movie->moov->trackList, &i))) {
++-             if (trak == the_trak) continue;
++              if (! trak->References || ! gf_list_count(trak->References->child_boxes)) continue;
++ 
++              j=0;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0e4bc80680e789c76d1ff956cd3d3edb165a495c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,32 @@@
++From b5741da08e88e8dcc8da0a7669b92405b9862850 Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Mon, 17 Jan 2022 15:35:59 +0100
++Subject: [PATCH] fix overflow on script_dec (#2052)
++
++---
++ src/bifs/script_dec.c | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/src/bifs/script_dec.c b/src/bifs/script_dec.c
++index 36265cf0f..c4cb67c19 100644
++--- a/src/bifs/script_dec.c
+++++ b/src/bifs/script_dec.c
++@@ -72,13 +72,13 @@ static void SFS_AddString(ScriptParser *parser, char *str)
++      char *new_str;
++      if (!str) return;
++      if (strlen(parser->string) + strlen(str) >= parser->length) {
++-             parser->length += PARSER_STEP_ALLOC;
+++             parser->length = strlen(parser->string) + strlen(str) + PARSER_STEP_ALLOC;
++              new_str = (char *)gf_malloc(sizeof(char)*parser->length);
++              strcpy(new_str, parser->string);
++              gf_free(parser->string);
++              parser->string = new_str;
++      }
++-     strcat(parser->string, str);
+++     strncat(parser->string, str, parser->length - strlen(parser->string) - 1);
++ }
++ 
++ static void SFS_AddInt(ScriptParser *parser, s32 val)
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..53a470ed14556f862ebe9a17c8f2b9b87aea8cf6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,244 @@@
++From ea1eca00fd92fa17f0e25ac25652622924a9a6a0 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Thu, 10 Mar 2022 15:43:11 +0100
++Subject: [PATCH] fixed #2138
++
++---
++ include/gpac/base_coding.h       |  4 ++--
++ src/filters/dasher.c             |  4 ++--
++ src/filters/write_generic.c      |  5 +++--
++ src/filters/write_nhml.c         |  4 ++--
++ src/isomedia/box_dump.c          |  4 ++--
++ src/jsmods/core.c                |  7 ++++---
++ src/media_tools/crypt_tools.c    |  2 +-
++ src/media_tools/media_export.c   | 12 +++++-------
++ src/scene_manager/loader_svg.c   |  8 ++++----
++ src/scene_manager/scene_dump.c   |  6 +++---
++ src/scene_manager/scene_engine.c |  5 +++--
++ src/utils/base_encoding.c        |  6 +++---
++ src/utils/xml_parser.c           |  5 +++--
++ 13 files changed, 37 insertions(+), 35 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/include/gpac/base_coding.h
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/include/gpac/base_coding.h
+++++ gpac-1.0.1+dfsg1/include/gpac/base_coding.h
++@@ -56,7 +56,7 @@ Encodes a data buffer to Base64
++ \param in_buffer_size input data buffer size
++ \param out_buffer output Base64 buffer location
++ \param out_buffer_size output Base64 buffer allocated size
++-\return size of the encoded Base64 buffer
+++\return size of the encoded Base64 buffer, 0 if error
++ \note the encoded data buffer is not NULL-terminated.
++  */
++ u32 gf_base64_encode(const u8 *in_buffer, u32 in_buffer_size, u8 *out_buffer, u32 out_buffer_size);
++@@ -80,7 +80,7 @@ Encodes a data buffer to Base16
++ \param in_buffer_size input data buffer size
++ \param out_buffer output Base16 buffer location
++ \param out_buffer_size output Base16 buffer allocated size
++-\return size of the encoded Base16 buffer
+++\return size of the encoded Base16 buffer, 0 if error
++ \note the encoded data buffer is not NULL-terminated.
++  */
++ u32 gf_base16_encode(u8 *in_buffer, u32 in_buffer_size, u8 *out_buffer, u32 out_buffer_size);
++Index: gpac-1.0.1+dfsg1/src/filters/dasher.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/dasher.c
+++++ gpac-1.0.1+dfsg1/src/filters/dasher.c
++@@ -1627,8 +1627,8 @@ static GF_List *dasher_get_content_prote
++                                              pnode->type = GF_XML_TEXT_TYPE;
++                                              gf_list_add(node->content, pnode);
++ 
++-                                             size_64 = 2*pssh_len;
++-                                             pnode->name = gf_malloc(size_64);
+++                                             size_64 = 2*pssh_len + 3;
+++                                             pnode->name = gf_malloc(sizeof(char) * size_64);
++                                              if (pnode->name) {
++                                                      size_64 = gf_base64_encode((const char *)pssh_data, pssh_len, (char *)pnode->name, size_64);
++                                                      pnode->name[size_64] = 0;
++Index: gpac-1.0.1+dfsg1/src/filters/write_nhml.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/write_nhml.c
+++++ gpac-1.0.1+dfsg1/src/filters/write_nhml.c
++@@ -760,8 +760,8 @@ static void nhmldump_send_frame(GF_NHMLD
++                                      gf_bs_write_data(ctx->bs_w, nhml, (u32) strlen(nhml));
++                              } else {
++                                      u32 d_size;
++-                                     if (ctx->b64_buffer_size<2*s_size) {
++-                                             ctx->b64_buffer_size = 2 * s_size;
+++                                     if (ctx->b64_buffer_size < 2*s_size + 3) {
+++                                             ctx->b64_buffer_size = 2 * s_size + 3;
++                                              ctx->b64_buffer = gf_realloc(ctx->b64_buffer, ctx->b64_buffer_size);
++                                      }
++                                      d_size = gf_base64_encode(data + offset_in_sample, s_size, ctx->b64_buffer, ctx->b64_buffer_size);
++Index: gpac-1.0.1+dfsg1/src/isomedia/box_dump.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/box_dump.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/box_dump.c
++@@ -5089,8 +5089,8 @@ GF_Err colr_box_dump(GF_Box *a, FILE * t
++                      gf_fprintf(trace, "colour_type=\"%s\">\n", gf_4cc_to_str(ptr->colour_type));
++                      if (ptr->opaque != NULL) {
++                              gf_fprintf(trace, "<profile><![CDATA[");
++-                             size_64 = 2*ptr->opaque_size;
++-                             prof_data_64 = gf_malloc(size_64);
+++                             size_64 = 2*ptr->opaque_size+3;
+++                             prof_data_64 = gf_malloc(sizeof(char) * size_64);
++                              size_64 = gf_base64_encode((const char *) ptr->opaque, ptr->opaque_size, (char *)prof_data_64, size_64);
++                              prof_data_64[size_64] = 0;
++                              gf_fprintf(trace, "%s", prof_data_64);
++Index: gpac-1.0.1+dfsg1/src/jsmods/core.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/jsmods/core.c
+++++ gpac-1.0.1+dfsg1/src/jsmods/core.c
++@@ -1361,14 +1361,15 @@ static JSValue js_sys_basecode_ex(JSCont
++              size_t data_size;
++              data = JS_GetArrayBuffer(ctx, &data_size, argv[0] );
++              if (!data) return JS_EXCEPTION;
++-             out_ptr = gf_malloc(sizeof(u8) * (1 + data_size * 2) );
+++                u32 size64 = (u32) data_size * 2 + 3;
+++                out_ptr = gf_malloc(sizeof(char) * size64);
++              if (!out_ptr) {
++                      e = GF_OUT_OF_MEM;
++              } else if (is_16) {
++-                     out_size = gf_base16_encode((u8*) data, (u32) data_size, out_ptr, 1 + (u32) data_size * 2);
+++                        out_size = gf_base16_encode((u8*) data, (u32) data_size, out_ptr, size64);
++                      e = out_size ? GF_OK : GF_NON_COMPLIANT_BITSTREAM;
++              } else {
++-                     out_size = gf_base64_encode((u8*) data, (u32) data_size, out_ptr, 1 + (u32) data_size * 2);
+++                        out_size = gf_base64_encode((u8*) data, (u32) data_size, out_ptr, size64);
++                      e = out_size ? GF_OK : GF_NON_COMPLIANT_BITSTREAM;
++              }
++      }
++Index: gpac-1.0.1+dfsg1/src/media_tools/crypt_tools.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/crypt_tools.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/crypt_tools.c
++@@ -240,7 +240,7 @@ static void cryptinfo_node_start(void *s
++                              }
++                      }
++                      else if (!stricmp(att->name, "metadata")) {
++-                             u32 l = 2 * (u32) strlen(att->value);
+++                             u32 l = 2 * (u32) strlen(att->value) + 3;
++                              tkc->metadata = gf_malloc(sizeof(char) * l);
++                              l = gf_base64_encode(att->value, (u32) strlen(att->value), tkc->metadata, l);
++                              tkc->metadata[l] = 0;
++Index: gpac-1.0.1+dfsg1/src/media_tools/media_export.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/media_export.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/media_export.c
++@@ -800,14 +800,12 @@ GF_Err gf_media_export_webvtt_metadata(G
++                              samp->data[samp->dataLength] = 0;
++                              gf_fprintf(vtt, "%s\n", samp->data);
++                      } else {
++-                             u32 b64_size;
+++                             u32 b64_size = samp->dataLength*2 + 3;
++                              char *b64;
++-                             b64 = (char *)gf_malloc(samp->dataLength*3);
++-                             b64_size = gf_base64_encode(samp->data, samp->dataLength, b64, samp->dataLength*3);
++-                             if (b64_size != (u32)-1) {
++-                                     b64[b64_size] = 0;
++-                                     gf_fprintf(vtt, "%s\n", b64);
++-                             }
+++                             b64 = (char *)gf_malloc(sizeof(char)*b64_size);
+++                             b64_size = gf_base64_encode(samp->data, samp->dataLength, b64, b64_size);
+++                             b64[b64_size] = 0;
+++                             gf_fprintf(vtt, "%s\n", b64);
++                              gf_free(b64);
++                      }
++              }
++Index: gpac-1.0.1+dfsg1/src/scene_manager/loader_svg.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/scene_manager/loader_svg.c
+++++ gpac-1.0.1+dfsg1/src/scene_manager/loader_svg.c
++@@ -2,7 +2,7 @@
++  *                   GPAC - Multimedia Framework C SDK
++  *
++  *                   Authors: Jean Le Feuvre, Cyril Concolato
++- *                   Copyright (c) Telecom ParisTech 2000-2012
+++ *                   Copyright (c) Telecom ParisTech 2000-2022
++  *                                   All rights reserved
++  *
++  *  This file is part of GPAC / Scene Management sub-project
++@@ -259,10 +259,10 @@ static void svg_process_media_href(GF_SV
++              } else {
++                      char *mtype;
++                      char *buf64;
++-                     u64 size64;
+++                     u32 size64 = size*2 + 3;
++                      char *ext;
++-                     buf64 = (char *)gf_malloc((size_t)size*2);
++-                     size64 = gf_base64_encode(buffer, (u32)size, buf64, (u32)size*2);
+++                     buf64 = (char *)gf_malloc(sizeof(char) * size64);
+++                     size64 = gf_base64_encode(buffer, (u32)size, buf64, size64);
++                      buf64[size64] = 0;
++                      mtype = "application/data";
++                      ext = strchr(iri->string, '.');
++Index: gpac-1.0.1+dfsg1/src/scene_manager/scene_dump.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/scene_manager/scene_dump.c
+++++ gpac-1.0.1+dfsg1/src/scene_manager/scene_dump.c
++@@ -2,7 +2,7 @@
++  *                   GPAC - Multimedia Framework C SDK
++  *
++  *                   Authors: Jean Le Feuvre
++- *                   Copyright (c) Telecom ParisTech 2000-2012
+++ *                   Copyright (c) Telecom ParisTech 2000-2022
++  *                                   All rights reserved
++  *
++  *  This file is part of GPAC / Scene Management sub-project
++@@ -649,8 +649,8 @@ static void gf_dump_vrml_sffield(GF_Scen
++              str = ((SFString *)ptr)->buffer;
++ 
++              if (node && (gf_node_get_tag(node)==TAG_MPEG4_BitWrapper)) {
++-                     u32 bufsize = 50+ ((M_BitWrapper*)node)->buffer_len * 2;
++-                     str = gf_malloc(sizeof(char)* bufsize);
+++                     u32 bufsize = 37 + ((M_BitWrapper*)node)->buffer_len * 2 + 3;
+++                     str = gf_malloc(sizeof(char) * bufsize);
++                      if (str) {
++                              s32 res;
++                              strcpy(str, "data:application/octet-string;base64,");
++Index: gpac-1.0.1+dfsg1/src/scene_manager/scene_engine.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/scene_manager/scene_engine.c
+++++ gpac-1.0.1+dfsg1/src/scene_manager/scene_engine.c
++@@ -1105,8 +1105,9 @@ char *gf_seng_get_base64_iod(GF_SceneEng
++ 
++      size = 0;
++      gf_odf_desc_write((GF_Descriptor *) seng->ctx->root_od, &buffer, &size);
++-     buf64 = gf_malloc(size*2);
++-     size64 = gf_base64_encode( buffer, size, buf64, size*2);
+++     size64 = size*2 + 3;
+++     buf64 = gf_malloc(sizeof(char) * size64);
+++     size64 = gf_base64_encode( buffer, size, buf64, size64);
++      buf64[size64] = 0;
++      gf_free(buffer);
++      return buf64;
++Index: gpac-1.0.1+dfsg1/src/utils/base_encoding.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/utils/base_encoding.c
+++++ gpac-1.0.1+dfsg1/src/utils/base_encoding.c
++@@ -42,6 +42,8 @@ u32 gf_base64_encode(const u8 *_in, u32
++ 
++      while (i < inSize) {
++              padding = 3 - (inSize - i);
+++             if (j+4>=outSize)
+++                     return 0;
++              if (padding == 2) {
++                      out[j] = base_64[in[i]>>2];
++                      out[j+1] = base_64[(in[i] & 0x03) << 4];
++@@ -147,14 +149,12 @@ u32 gf_base16_encode(u8 *_in, u32 inSize
++      unsigned char *in = (unsigned char *)_in;
++      unsigned char *out = (unsigned char *)_out;
++ 
++-     if (outSize < (inSize * 2)+1) return 0;
+++     if (outSize < (inSize * 2)) return 0;
++ 
++      for (i=0; i<inSize; i++) {
++              out[2*i] = base_16[((in[i] & 0xf0) >> 4)];
++              out[2*i+1] = base_16[(in[i] & 0x0f)];
++      }
++-     out[(inSize * 2)] = 0;
++-
++      return inSize * 2;
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..56df4bcb85e3360b2713cd9dad65c9153370cb3a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,32 @@@
++From d7daa8aeb6df4b6c3ec102622e1599279310a19e Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 8 Feb 2022 16:10:15 +0100
++Subject: [PATCH] fixed #2108
++
++---
++ src/isomedia/isom_read.c | 9 +++++++--
++ 1 file changed, 7 insertions(+), 2 deletions(-)
++
++diff --git a/src/isomedia/isom_read.c b/src/isomedia/isom_read.c
++index a1a5516b0..a212dcc56 100644
++--- a/src/isomedia/isom_read.c
+++++ b/src/isomedia/isom_read.c
++@@ -2361,8 +2361,13 @@ GF_Err gf_isom_get_sample_for_movie_time(GF_ISOFile *the_file, u32 trackNumber,
++                              return e;
++ #endif
++ 
++-                     if (nextMediaTime && (nextMediaTime-1 != movieTime))
++-                             return gf_isom_get_sample_for_movie_time(the_file, trackNumber, nextMediaTime-1, StreamDescriptionIndex, SearchMode, sample, sampleNumber, data_offset);
+++                     if ((SearchMode==GF_ISOM_SEARCH_SYNC_BACKWARD) || (SearchMode==GF_ISOM_SEARCH_BACKWARD)) {
+++                             if (nextMediaTime && (nextMediaTime-1 < movieTime))
+++                                     return gf_isom_get_sample_for_movie_time(the_file, trackNumber, nextMediaTime-1, StreamDescriptionIndex, SearchMode, sample, sampleNumber, data_offset);
+++                     } else {
+++                             if (nextMediaTime && (nextMediaTime-1 > movieTime))
+++                                     return gf_isom_get_sample_for_movie_time(the_file, trackNumber, nextMediaTime-1, StreamDescriptionIndex, SearchMode, sample, sampleNumber, data_offset);
+++                     }
++              }
++              return e;
++      }
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..94dc6c87eb7a1bb24ca31bcf6b8289062e25fd4e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++From 9723dd0955894f2cb7be13b94cf7a47f2754b893 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 8 Feb 2022 16:23:12 +0100
++Subject: [PATCH] fixed #2109
++
++---
++ include/gpac/internal/scenegraph_dev.h | 2 +-
++ src/scenegraph/base_scenegraph.c       | 4 ++--
++ src/scenegraph/dom_events.c            | 8 ++++++--
++ 3 files changed, 9 insertions(+), 5 deletions(-)
++
++diff --git a/include/gpac/internal/scenegraph_dev.h b/include/gpac/internal/scenegraph_dev.h
++index e718c3a0b..d8f2a10a6 100644
++--- a/include/gpac/internal/scenegraph_dev.h
+++++ b/include/gpac/internal/scenegraph_dev.h
++@@ -945,7 +945,7 @@ GF_Err gf_dom_listener_del(GF_Node *listener, GF_DOMEventTarget *target);
++ GF_DOMHandler *gf_dom_listener_build_ex(GF_Node *node, u32 event_type, u32 event_parameter, GF_Node *handler, GF_Node **out_listener);
++ 
++ void gf_dom_event_dump_listeners(GF_Node *n, FILE *f);
++-void gf_dom_event_remove_all_listeners(GF_DOMEventTarget *event_target);
+++void gf_dom_event_remove_all_listeners(GF_DOMEventTarget *event_target, GF_SceneGraph *sg);
++ void gf_dom_event_target_del(GF_DOMEventTarget *target);
++ GF_Err       gf_dom_event_remove_listener_from_parent(GF_DOMEventTarget *event_target, GF_Node *listener);
++ 
++diff --git a/src/scenegraph/base_scenegraph.c b/src/scenegraph/base_scenegraph.c
++index b403d5f40..40f30260b 100644
++--- a/src/scenegraph/base_scenegraph.c
+++++ b/src/scenegraph/base_scenegraph.c
++@@ -367,7 +367,7 @@ void gf_sg_reset(GF_SceneGraph *sg)
++ 
++      gf_mx_p(sg->dom_evt_mx);
++      /*remove listeners attached to the doc*/
++-     gf_dom_event_remove_all_listeners(sg->dom_evt);
+++     gf_dom_event_remove_all_listeners(sg->dom_evt, sg);
++      /*flush any pending add_listener*/
++      gf_dom_listener_reset_deferred(sg);
++      gf_mx_v(sg->dom_evt_mx);
++@@ -1598,7 +1598,7 @@ void gf_node_free(GF_Node *node)
++              }
++ #ifndef GPAC_DISABLE_SVG
++              if (node->sgprivate->interact->dom_evt) {
++-                     gf_dom_event_remove_all_listeners(node->sgprivate->interact->dom_evt);
+++                     gf_dom_event_remove_all_listeners(node->sgprivate->interact->dom_evt, node->sgprivate->scenegraph);
++                      gf_dom_event_target_del(node->sgprivate->interact->dom_evt);
++              }
++              if (node->sgprivate->interact->animations) {
++diff --git a/src/scenegraph/dom_events.c b/src/scenegraph/dom_events.c
++index 210b001ad..257f534a4 100644
++--- a/src/scenegraph/dom_events.c
+++++ b/src/scenegraph/dom_events.c
++@@ -189,11 +189,15 @@ GF_Err gf_dom_event_remove_listener_from_parent(GF_DOMEventTarget *event_target,
++      return GF_OK;
++ }
++ 
++-void gf_dom_event_remove_all_listeners(GF_DOMEventTarget *event_target)
+++void gf_dom_event_remove_all_listeners(GF_DOMEventTarget *event_target, GF_SceneGraph *sg)
++ {
++      while (gf_list_count(event_target->listeners)) {
++              GF_Node *n = (GF_Node *)gf_list_get(event_target->listeners, 0);
++-             gf_dom_listener_del(n, event_target);
+++             if (gf_list_find(sg->exported_nodes, n)>=0) {
+++                     gf_list_rem(event_target->listeners, 0);
+++             } else {
+++                     gf_dom_listener_del(n, event_target);
+++             }
++      }
++ }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cd8cb3434183b468ecbb57de579f04667d61de65
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,29 @@@
++From 1773b7a34bc08734aee7d3f5dfe65d06389fe15a Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 19 Apr 2022 09:08:45 +0200
++Subject: [PATCH] fixed #2173
++
++---
++ src/ietf/rtp_pck_mpeg4.c | 3 +++
++ 1 file changed, 3 insertions(+)
++
++Index: gpac-1.0.1+dfsg1/src/ietf/rtp_pck_mpeg4.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/ietf/rtp_pck_mpeg4.c
+++++ gpac-1.0.1+dfsg1/src/ietf/rtp_pck_mpeg4.c
++@@ -421,6 +421,7 @@ GF_Err gp_rtp_builder_do_avc(GP_RTPPacke
++      }
++ 
++      if (!nalu) return GF_OK;
+++     if (nalu_size<1) return GF_NON_COMPLIANT_BITSTREAM;
++ 
++      /*need a new RTP packet*/
++      if (!builder->bytesInPacket) {
++@@ -559,6 +560,7 @@ GF_Err gp_rtp_builder_do_hevc(GP_RTPPack
++      }
++ 
++      if (!nalu) return GF_OK;
+++     if (nalu_size<2) return GF_NON_COMPLIANT_BITSTREAM;
++ 
++      /*need a new RTP packet*/
++      if (!builder->bytesInPacket) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c7b2f1d5bc2166e6413c0cc2d2deefee08702fb2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,113 @@@
++Origin: https://github.com/gpac/gpac/commit/4e7736d7ec7bf64026daa611da951993bb42fdaf
++Reviewed-by: Aron Xu <aron@debian.org>
++
++From 4e7736d7ec7bf64026daa611da951993bb42fdaf Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 12 Sep 2022 10:54:16 +0200
++Subject: [PATCH] fixed #2238
++
++---
++ src/bifs/script_dec.c                      | 22 +++++++++++++++++++++-
++ 1 file changed, 21 insertions(+), 1 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/bifs/script_dec.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/bifs/script_dec.c
+++++ gpac-1.0.1+dfsg1/src/bifs/script_dec.c
++@@ -40,6 +40,7 @@ typedef struct
++      GF_List *identifiers;
++      char *new_line;
++      u32 indent;
+++     u32 expr_stack_size;
++ } ScriptParser;
++ 
++ 
++@@ -169,6 +170,7 @@ GF_Err SFScript_Parse(GF_BifsDecoder *co
++      e = GF_OK;
++      if (gf_node_get_tag(n) != TAG_MPEG4_Script) return GF_NON_COMPLIANT_BITSTREAM;
++ 
+++     memset(&parser, 0, sizeof(ScriptParser));
++      parser.codec = codec;
++      parser.script = n;
++      parser.bs = bs;
++@@ -209,6 +211,10 @@ GF_Err SFScript_Parse(GF_BifsDecoder *co
++              SFS_Space(&parser);
++              SFS_StatementBlock(&parser, GF_TRUE);
++              SFS_Line(&parser);
+++             if (codec->LastError) {
+++                     e = codec->LastError;
+++                     goto exit;
+++             }
++      }
++ 
++      SFS_Line(&parser);
++@@ -418,6 +424,7 @@ void SFS_CompoundExpression(ScriptParser
++      if (parser->codec->LastError) return;
++      SFS_Expression(parser);
++      if (! gf_bs_read_int(parser->bs, 1)) return;
+++     if (parser->codec->LastError) return;
++      SFS_AddString(parser, ",");
++      SFS_CompoundExpression(parser);
++ }
++@@ -430,12 +437,20 @@ void SFS_OptionalExpression(ScriptParser
++      }
++ }
++ 
++-
+++#define MAX_EXPR_STACK       500
++ void SFS_Expression(ScriptParser *parser)
++ {
++      u32 val = gf_bs_read_int(parser->bs, NUMBITS_EXPR_TYPE);
++      if (parser->codec->LastError) return;
++ 
+++     //limit max expression stack size
+++     parser->expr_stack_size++;
+++     if (parser->expr_stack_size>MAX_EXPR_STACK) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CODEC, ("[BIFS] Max stack size %d reached for expressions, not supported\n", MAX_EXPR_STACK))
+++             parser->codec->LastError = GF_NON_COMPLIANT_BITSTREAM;
+++             return;
+++     }
+++
++      switch(val) {
++      case ET_CURVED_EXPR:
++              SFS_AddString(parser, "(");
++@@ -675,6 +690,7 @@ void SFS_Expression(ScriptParser *parser
++              assert(0);
++              break;
++      }
+++     parser->expr_stack_size--;
++ }
++ 
++ void SFS_NewObject(ScriptParser *parser)
++@@ -691,6 +707,7 @@ void SFS_ArrayDeref(ScriptParser *parser
++ {
++      if (parser->codec->LastError) return;
++      SFS_Expression(parser);
+++     if (parser->codec->LastError) return;
++      SFS_AddString(parser, "[");
++      SFS_CompoundExpression(parser);
++      SFS_AddString(parser, "]");
++@@ -709,6 +726,7 @@ void SFS_ObjectMemberAccess(ScriptParser
++ {
++      if (parser->codec->LastError) return;
++      SFS_Expression(parser);
+++     if (parser->codec->LastError) return;
++      SFS_AddString(parser, ".");
++      SFS_Identifier(parser);
++ }
++@@ -718,6 +736,7 @@ void SFS_ObjectMethodCall(ScriptParser *
++ {
++      if (parser->codec->LastError) return;
++      SFS_Expression(parser);
+++     if (parser->codec->LastError) return;
++      SFS_AddString(parser, ".");
++      SFS_Identifier(parser);
++      SFS_AddString(parser, "(");
++@@ -732,6 +751,7 @@ void SFS_Params(ScriptParser *parser)
++      val = gf_bs_read_int(parser->bs, 1);
++      while (val) {
++              SFS_Expression(parser);
+++             if (parser->codec->LastError) return;
++              val = gf_bs_read_int(parser->bs, 1);
++              if(val) SFS_AddString(parser, ",");
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0906edc6677793aaedcccd51aab15ed319cf25d9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++From fef6242c69be4f7ba22b32578e4b62648a3d4ed3 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 12 Jul 2022 18:43:33 +0200
++Subject: [PATCH] fixed #2218
++
++---
++ include/gpac/internal/isomedia_dev.h | 39 +++++++++++++---------------
++ 1 file changed, 18 insertions(+), 21 deletions(-)
++
++diff --git a/include/gpac/internal/isomedia_dev.h b/include/gpac/internal/isomedia_dev.h
++index 8b62f9e94..df6262594 100644
++--- a/include/gpac/internal/isomedia_dev.h
+++++ b/include/gpac/internal/isomedia_dev.h
++@@ -1522,7 +1522,7 @@ typedef struct
++      GF_ColourInformationBox *colr;
++ } GF_J2KHeaderBox;
++ 
++-typedef struct
+++typedef struct __full_video_sample_entry
++ {
++      GF_ISOM_VISUAL_SAMPLE_ENTRY
++      GF_ESDBox *esd;
++@@ -1556,6 +1556,14 @@ typedef struct
++      /*iPod's hack*/
++      GF_UnknownUUIDBox *ipod_ext;
++ 
+++     //for generic video sample entry
+++
+++     //box type as specified in the file (not this box's type!!)
+++     u32 EntryType;
+++     //opaque description data (ESDS in MP4, SMI in SVQ3, ...)
+++     u8 *data;
+++     u32 data_size;
+++
++ } GF_MPEGVisualSampleEntryBox;
++ 
++ static const u8 GF_ISOM_IPOD_EXT[][16] = { { 0x6B, 0x68, 0x40, 0xF2, 0x5F, 0x24, 0x4F, 0xC5, 0xBA, 0x39, 0xA5, 0x1B, 0xCF, 0x03, 0x23, 0xF3} };
++@@ -1563,16 +1571,7 @@ static const u8 GF_ISOM_IPOD_EXT[][16] = { { 0x6B, 0x68, 0x40, 0xF2, 0x5F, 0x24,
++ Bool gf_isom_is_nalu_based_entry(GF_MediaBox *mdia, GF_SampleEntryBox *_entry);
++ GF_Err gf_isom_nalu_sample_rewrite(GF_MediaBox *mdia, GF_ISOSample *sample, u32 sampleNumber, GF_MPEGVisualSampleEntryBox *entry);
++ 
++-/*this is the default visual sdst (to handle unknown media)*/
++-typedef struct
++-{
++-     GF_ISOM_VISUAL_SAMPLE_ENTRY
++-     /*box type as specified in the file (not this box's type!!)*/
++-     u32 EntryType;
++-     /*opaque description data (ESDS in MP4, SMI in SVQ3, ...)*/
++-     u8 *data;
++-     u32 data_size;
++-} GF_GenericVisualSampleEntryBox;
+++typedef struct __full_video_sample_entry GF_GenericVisualSampleEntryBox;
++ 
++ enum
++ {
++@@ -1702,7 +1701,7 @@ typedef struct
++ } GF_PCMConfigBox;
++ 
++ 
++-typedef struct
+++typedef struct __full_audio_sample_entry
++ {
++      GF_ISOM_AUDIO_SAMPLE_ENTRY
++      //for MPEG4 audio
++@@ -1726,18 +1725,16 @@ typedef struct
++      //for FLAC
++      GF_FLACConfigBox *cfg_flac;
++ 
++-} GF_MPEGAudioSampleEntryBox;
++-
++-/*this is the default visual sdst (to handle unknown media)*/
++-typedef struct
++-{
++-     GF_ISOM_AUDIO_SAMPLE_ENTRY
++-     /*box type as specified in the file (not this box's type!!)*/
+++     //for generic audio sample entry
+++     //box type as specified in the file (not this box's type!!)
++      u32 EntryType;
++-     /*opaque description data (ESDS in MP4, ...)*/
+++     //opaque description data (ESDS in MP4, ...)
++      u8 *data;
++      u32 data_size;
++-} GF_GenericAudioSampleEntryBox;
+++
+++} GF_MPEGAudioSampleEntryBox;
+++
+++typedef struct __full_audio_sample_entry GF_GenericAudioSampleEntryBox;
++ 
++ 
++ typedef struct
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..74f18e2a8737ffaa540f58f23182dcab2ff43e78
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++Origin: https://github.com/gpac/gpac/commit/4e56ad72ac1afb4e049a10f2d99e7512d7141f9d
++Reviewed-by: Aron Xu <aron@debian.org>
++
++From 4e56ad72ac1afb4e049a10f2d99e7512d7141f9d Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 12 Jul 2022 18:29:36 +0200
++Subject: [PATCH] fixed #2216
++
++---
++ applications/mp4box/mp4box.c |  2 +-
++ src/odf/desc_private.c       | 14 ++++++++++++--
++ 2 files changed, 13 insertions(+), 3 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/odf/desc_private.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/odf/desc_private.c
+++++ gpac-1.0.1+dfsg1/src/odf/desc_private.c
++@@ -273,7 +273,7 @@ GF_Err gf_odf_delete_descriptor(GF_Descr
++ //
++ //           READERS
++ //
++-GF_Err gf_odf_read_descriptor(GF_BitStream *bs, GF_Descriptor *desc, u32 DescSize)
+++static GF_Err gf_odf_read_descriptor_internal(GF_BitStream *bs, GF_Descriptor *desc, u32 DescSize)
++ {
++      switch (desc->tag) {
++      case GF_ODF_IOD_TAG :
++@@ -368,7 +368,17 @@ GF_Err gf_odf_read_descriptor(GF_BitStre
++      return GF_OK;
++ }
++ 
++-
+++GF_Err gf_odf_read_descriptor(GF_BitStream *bs, GF_Descriptor *desc, u32 DescSize)
+++{
+++     u64 cookie = gf_bs_get_cookie(bs);
+++     //we allow 100 max desc in a hierarchy - see issue 2216
+++     if (cookie>100)
+++             return GF_NON_COMPLIANT_BITSTREAM;
+++     gf_bs_set_cookie(bs, cookie+1);
+++     GF_Err e = gf_odf_read_descriptor_internal(bs, desc, DescSize);
+++     gf_bs_set_cookie(bs, cookie);
+++     return e;
+++}
++ 
++ 
++ 
++Index: gpac-1.0.1+dfsg1/applications/mp4box/main.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/applications/mp4box/main.c
+++++ gpac-1.0.1+dfsg1/applications/mp4box/main.c
++@@ -1359,7 +1359,7 @@ GF_Err HintFile(GF_ISOFile *file, u32 MT
++ 
++              if (e) {
++                      fprintf(stderr, "Error while hinting (%s)\n", gf_error_to_string(e));
++-                     if (!nb_done) return e;
+++                     return e;
++              }
++              init_payt++;
++              nb_done ++;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..55cc13394739890dd8110271b34a3d9fed9b8f5c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,91 @@@
++Origin: https://github.com/gpac/gpac/commit/2191e66aa7df750e8ef01781b1930bea87b713bb
++Reviewed-by: Aron Xu <aron@debian.org>
++
++From 2191e66aa7df750e8ef01781b1930bea87b713bb Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 7 Nov 2022 08:59:52 +0100
++Subject: [PATCH] fixed mem leak in sgv parse error
++
++---
++ src/scene_manager/loader_svg.c  | 10 +++++++---
++ src/scenegraph/svg_attributes.c | 11 +++++++----
++ testsuite                       |  2 +-
++ 3 files changed, 15 insertions(+), 8 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/scene_manager/loader_svg.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/scene_manager/loader_svg.c
+++++ gpac-1.0.1+dfsg1/src/scene_manager/loader_svg.c
++@@ -446,6 +446,7 @@ static Bool svg_parse_animation(GF_SVG_P
++              if (anim->to) {
++                      /* now that we have a target, if there is a to value to parse, create the attribute and parse it */
++                      gf_node_get_attribute_by_tag((GF_Node *)anim->animation_elt, TAG_SVG_ATT_to, GF_TRUE, GF_FALSE, &info);
+++                     if (!info.name) info.name = "to";
++                      gf_svg_parse_attribute((GF_Node *)anim->animation_elt, &info, anim->to, anim_value_type);
++                      if (anim_value_type==XMLRI_datatype) {
++                              svg_post_process_href(parser, (GF_Node *) anim->target, (XMLRI*)((SMIL_AnimateValue *)info.far_ptr)->value);
++@@ -454,6 +455,7 @@ static Bool svg_parse_animation(GF_SVG_P
++              if (anim->from) {
++                      /* now that we have a target, if there is a from value to parse, create the attribute and parse it */
++                      gf_node_get_attribute_by_tag((GF_Node *)anim->animation_elt, TAG_SVG_ATT_from, GF_TRUE, GF_FALSE, &info);
+++                     if (!info.name) info.name = "from";
++                      gf_svg_parse_attribute((GF_Node *)anim->animation_elt, &info, anim->from, anim_value_type);
++                      if (anim_value_type==XMLRI_datatype)
++                              svg_post_process_href(parser,  (GF_Node *) anim->target, (XMLRI*)((SMIL_AnimateValue *)info.far_ptr)->value);
++@@ -461,6 +463,7 @@ static Bool svg_parse_animation(GF_SVG_P
++              if (anim->by) {
++                      /* now that we have a target, if there is a by value to parse, create the attribute and parse it */
++                      gf_node_get_attribute_by_tag((GF_Node *)anim->animation_elt, TAG_SVG_ATT_by, GF_TRUE, GF_FALSE, &info);
+++                     if (!info.name) info.name = "by";
++                      gf_svg_parse_attribute((GF_Node *)anim->animation_elt, &info, anim->by, anim_value_type);
++                      if (anim_value_type==XMLRI_datatype)
++                              svg_post_process_href(parser,  (GF_Node *) anim->target, (XMLRI*)((SMIL_AnimateValue *)info.far_ptr)->value);
++@@ -468,6 +471,7 @@ static Bool svg_parse_animation(GF_SVG_P
++              if (anim->values) {
++                      /* now that we have a target, if there is a 'values' value to parse, create the attribute and parse it */
++                      gf_node_get_attribute_by_tag((GF_Node *)anim->animation_elt, TAG_SVG_ATT_values, GF_TRUE, GF_FALSE, &info);
+++                     if (!info.name) info.name = "values";
++                      gf_svg_parse_attribute((GF_Node *)anim->animation_elt, &info, anim->values, anim_value_type);
++                      if (anim_value_type==XMLRI_datatype) {
++                              u32 i, count;
++@@ -2110,13 +2114,13 @@ GF_Err load_svg_run(GF_SceneLoader *load
++ 
++      in_time = gf_sys_clock();
++      e = gf_xml_sax_parse_file(parser->sax_parser, (const char *)load->fileName, svg_progress);
+++     svg_flush_animations(parser);
+++     gf_sm_svg_flush_state(parser);
++      if (parser->last_error<0) e = parser->last_error;
++-     
+++
++      if (e<0) return svg_report(parser, e, "Unable to parse file %s: %s", load->fileName, gf_xml_sax_get_error(parser->sax_parser) );
++      GF_LOG(GF_LOG_INFO, GF_LOG_PARSER, ("[Parser] Scene parsed and Scene Graph built in %d ms\n", gf_sys_clock() - in_time));
++ 
++-     svg_flush_animations(parser);
++-     gf_sm_svg_flush_state(parser);
++      return e;
++ 
++ }
++Index: gpac-1.0.1+dfsg1/src/scenegraph/svg_attributes.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/scenegraph/svg_attributes.c
+++++ gpac-1.0.1+dfsg1/src/scenegraph/svg_attributes.c
++@@ -2906,7 +2906,7 @@ static void svg_parse_preserveaspectrati
++      while (*content == ' ') content++;
++      if (strstr(content, "defer")) {
++              par->defer = 1;
++-             content += 4;
+++             content += 5;
++      } else {
++              content = attribute_content;
++      }
++@@ -3446,8 +3446,8 @@ GF_Err gf_svg_parse_attribute(GF_Node *n
++              *(SVG_String *)info->far_ptr = gf_strdup(attribute_content);
++              break;
++      default:
++-             GF_LOG(GF_LOG_WARNING, GF_LOG_PARSER, ("[SVG Parsing] Cannot parse attribute %s\n", info->name, gf_svg_attribute_type_to_string(info->fieldType)));
++-             break;
+++             GF_LOG(GF_LOG_WARNING, GF_LOG_PARSER, ("[SVG Parsing] Cannot parse attribute \"%s\"\n", info->name, gf_svg_attribute_type_to_string(info->fieldType)));
+++             return GF_OK;
++      }
++      return GF_OK;
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..855a9e228bed107fe6b5ede8b8d629a405225ca6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,78 @@@
++From b3d821c4ae9ba62b3a194d9dcb5e99f17bd56908 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 12 Dec 2022 09:35:12 +0100
++Subject: [PATCH] fixed #2333
++
++---
++ src/laser/lsr_dec.c | 29 ++++++++++++++++++++---------
++ 1 file changed, 20 insertions(+), 9 deletions(-)
++
++diff --git a/src/laser/lsr_dec.c b/src/laser/lsr_dec.c
++index 488babb10..283092f2a 100644
++--- a/src/laser/lsr_dec.c
+++++ b/src/laser/lsr_dec.c
++@@ -300,11 +300,21 @@ static void lsr_read_extension(GF_LASeRCodec *lsr, const char *name)
++ 
++ static void lsr_read_extend_class(GF_LASeRCodec *lsr, char **out_data, u32 *out_len, const char *name)
++ {
++-     u32 len;
+++     u32 len, blen;
++      GF_LSR_READ_INT(lsr, len, lsr->info->cfg.extensionIDBits, "reserved");
++      len = lsr_read_vluimsbf5(lsr, "len");
++-//   while (len) gf_bs_read_int(lsr->bs, 1);
++-     gf_bs_read_long_int(lsr->bs, len);
+++     while (len && !gf_bs_is_align(lsr->bs)) {
+++             gf_bs_read_int(lsr->bs, len);
+++             len--;
+++     }
+++     blen = len / 8;
+++     gf_bs_skip_bytes(lsr->bs, blen);
+++     len -= blen*8;
+++
+++     while (len) {
+++             gf_bs_read_int(lsr->bs, 1);
+++             len--;
+++     }
++      if (out_data) *out_data = NULL;
++      if (out_len) *out_len = 0;
++ }
++@@ -839,10 +849,11 @@ static void lsr_read_id(GF_LASeRCodec *lsr, GF_Node *n)
++ static Fixed lsr_translate_coords(GF_LASeRCodec *lsr, u32 val, u32 nb_bits)
++ {
++      if (!nb_bits) return 0;
++-     
+++     if (nb_bits>=32) return 0;
+++
++ #ifdef GPAC_FIXED_POINT
++      if (val >> (nb_bits-1) ) {
++-             s32 neg = (s32) val - (1<<nb_bits);
+++             s64 neg = (s64) val - (0x00000001UL << nb_bits);
++              if (neg < -FIX_ONE / 2)
++                      return 2 * gf_divfix(INT2FIX(neg/2), lsr->res_factor);
++              return gf_divfix(INT2FIX(neg), lsr->res_factor);
++@@ -853,10 +864,10 @@ static Fixed lsr_translate_coords(GF_LASeRCodec *lsr, u32 val, u32 nb_bits)
++      }
++ #else
++      if (val >> (nb_bits-1) ) {
++-             s32 neg = (s32) val - (1<<nb_bits);
++-             return gf_divfix(INT2FIX(neg), lsr->res_factor);
+++             s64 neg = (s64) val - (0x00000001UL << nb_bits);
+++             return ((Fixed)neg) / lsr->res_factor;
++      } else {
++-             return gf_divfix(INT2FIX(val), lsr->res_factor);
+++             return ((Fixed)val) / lsr->res_factor;
++      }
++ #endif
++ }
++@@ -864,7 +875,7 @@ static Fixed lsr_translate_coords(GF_LASeRCodec *lsr, u32 val, u32 nb_bits)
++ static Fixed lsr_translate_scale(GF_LASeRCodec *lsr, u32 val)
++ {
++      if (val >> (lsr->coord_bits-1) ) {
++-             s32 v = val - (1<<lsr->coord_bits);
+++             s64 v = val - (0x00000001UL << lsr->coord_bits);
++              return INT2FIX(v) / 256 ;
++      } else {
++              return INT2FIX(val) / 256;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..737bd56317b8965fdb44b99f76fa4e6d12aab92e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From d82e1340d7fd5ceea205e0f173500102f3237eb4 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Tue, 11 Oct 2022 10:37:25 +0200
++Subject: [PATCH] fixed #2285
++
++---
++ src/scene_manager/loader_xmt.c | 5 +++++
++ 1 file changed, 5 insertions(+)
++
++diff --git a/src/scene_manager/loader_xmt.c b/src/scene_manager/loader_xmt.c
++index e5941d5b0..25e712680 100644
++--- a/src/scene_manager/loader_xmt.c
+++++ b/src/scene_manager/loader_xmt.c
++@@ -3176,6 +3176,11 @@ static void load_xmt_done(GF_SceneLoader *load)
++      }
++      if (parser->x3d_root) gf_free(parser->x3d_root);
++      gf_list_del(parser->nodes);
+++     //we may have one root desc remaining if error
+++     if (gf_list_count(parser->descriptors)) {
+++             GF_Descriptor *desc = gf_list_get(parser->descriptors, 0);
+++             gf_odf_desc_del(desc);
+++     }
++      gf_list_del(parser->descriptors);
++      gf_list_del(parser->def_nodes);
++      gf_list_del(parser->peeked_nodes);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fcd3df38faedb2babafc882b05574b97217e2685
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++From 74e53280dad7b29f85386c6a1286fb92643465da Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 4 Nov 2022 09:18:47 +0100
++Subject: [PATCH] fixed #2294
++
++---
++ src/isomedia/box_code_3gpp.c | 22 ++++++++++++++++++----
++ 1 file changed, 18 insertions(+), 4 deletions(-)
++
++diff --git a/src/isomedia/box_code_3gpp.c b/src/isomedia/box_code_3gpp.c
++index d75eae60a..cee178fcf 100644
++--- a/src/isomedia/box_code_3gpp.c
+++++ b/src/isomedia/box_code_3gpp.c
++@@ -1046,8 +1046,7 @@ void dimC_box_del(GF_Box *s)
++ 
++ GF_Err dimC_box_read(GF_Box *s, GF_BitStream *bs)
++ {
++-     char str[1024];
++-     u32 i;
+++     u32 i, msize;
++      GF_DIMSSceneConfigBox *p = (GF_DIMSSceneConfigBox *)s;
++ 
++      ISOM_DECREASE_SIZE(p, 3);
++@@ -1058,27 +1057,42 @@ GF_Err dimC_box_read(GF_Box *s, GF_BitStream *bs)
++      p->streamType = gf_bs_read_int(bs, 1);
++      p->containsRedundant = gf_bs_read_int(bs, 2);
++ 
+++     char *str = gf_malloc(sizeof(char)*(p->size+1));
+++     if (!str) return GF_OUT_OF_MEM;
+++     msize = p->size;
+++     str[msize] = 0;
++      i=0;
++      str[0]=0;
++-     while (i < GF_ARRAY_LENGTH(str)) {
+++     while (i < msize) {
++              str[i] = gf_bs_read_u8(bs);
++              if (!str[i]) break;
++              i++;
++      }
++      ISOM_DECREASE_SIZE(p, i);
+++     if (i == msize) {
+++             gf_free(str);
+++             return GF_ISOM_INVALID_FILE;
+++     }
++ 
++      p->textEncoding = gf_strdup(str);
++ 
++      i=0;
++      str[0]=0;
++-     while (i < GF_ARRAY_LENGTH(str)) {
+++     while (i < msize) {
++              str[i] = gf_bs_read_u8(bs);
++              if (!str[i]) break;
++              i++;
++      }
++      ISOM_DECREASE_SIZE(p, i);
+++     if (i == msize) {
+++             gf_free(str);
+++             return GF_ISOM_INVALID_FILE;
+++     }
++ 
++      p->contentEncoding = gf_strdup(str);
+++     gf_free(str);
+++     if (p->textEncoding || !p->contentEncoding)
+++             return GF_OUT_OF_MEM;
++      return GF_OK;
++ }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b25bea00c739f12de1597bb29bc12dea7f72e315
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,40 @@@
++From 0fc714872ba4536a1190f93aa278b6e08f8c60df Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Fri, 4 Nov 2022 09:26:34 +0100
++Subject: [PATCH] fixed #2295
++
++---
++ src/scenegraph/svg_attributes.c | 7 ++++++-
++ 1 file changed, 6 insertions(+), 1 deletion(-)
++
++diff --git a/src/scenegraph/svg_attributes.c b/src/scenegraph/svg_attributes.c
++index bf861cc5d..0dbe20a7d 100644
++--- a/src/scenegraph/svg_attributes.c
+++++ b/src/scenegraph/svg_attributes.c
++@@ -2467,17 +2467,22 @@ static void svg_parse_boolean(SVG_Boolean *value, char *value_string)
++ static void smil_parse_time_list(GF_Node *e, GF_List *values, char *begin_or_end_list)
++ {
++      SMIL_Time *value;
++-     char value_string[500];
+++     char value_string[1025];
++      char *str = begin_or_end_list, *tmp;
++      u32 len;
++ 
++      /* get rid of leading spaces */
++      while (*str == ' ') str++;
++ 
+++     value_string[1024] = 0;
++      while (1) {
++              tmp = strchr(str, ';');
++              if (tmp) len = (u32) (tmp-str);
++              else len = (u32) strlen(str);
+++             if (len>1024) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_PARSER, ("[SVG Parsing] SMIL time list attribute too long, max supported 1024 bytes\n"));
+++                     goto err;
+++             }
++              memcpy(value_string, str, len);
++              while ((len > 0) && (value_string[len - 1] == ' '))
++                      len--;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8dedb32714f5cd6e445bd492c318f13beabb00f0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,81 @@@
++From 1016912db5408b6f38e8eb715279493ae380d1c4 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 14 Nov 2022 14:45:13 +0100
++Subject: [PATCH] fixed #2315
++
++---
++ src/bifs/field_decode.c | 19 ++++++++++++-------
++ 1 file changed, 12 insertions(+), 7 deletions(-)
++
++diff --git a/src/bifs/field_decode.c b/src/bifs/field_decode.c
++index f0235147a..d3a4fbe2e 100644
++--- a/src/bifs/field_decode.c
+++++ b/src/bifs/field_decode.c
++@@ -302,7 +302,7 @@ GF_Err gf_bifs_dec_sf_field(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *n
++ GF_Err BD_DecMFFieldList(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node, GF_FieldInfo *field, Bool is_mem_com)
++ {
++      GF_Node *new_node;
++-     GF_Err e;
+++     GF_Err e=GF_OK;
++      u8 endFlag, qp_local, qp_on, initial_qp;
++      GF_ChildNodeItem *last = NULL;
++      u32 nbF;
++@@ -323,15 +323,15 @@ GF_Err BD_DecMFFieldList(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node
++      while (!endFlag  && (codec->LastError>=0)) {
++              if (field->fieldType != GF_SG_VRML_MFNODE) {
++                      e = gf_sg_vrml_mf_append(field->far_ptr, field->fieldType, & sffield.far_ptr);
++-                     if (e) return e;
+++                     if (e) goto exit;
++                      e = gf_bifs_dec_sf_field(codec, bs, node, &sffield, GF_FALSE);
++-                     if (e) return e;
+++                     if (e) goto exit;
++              } else {
++                      new_node = gf_bifs_dec_node(codec, bs, field->NDTtype);
++                      //append
++                      if (new_node) {
++                              e = gf_node_register(new_node, is_mem_com ? NULL : node);
++-                             if (e) return e;
+++                             if (e) goto exit;
++ 
++                              //regular coding
++                              if (node) {
++@@ -341,7 +341,7 @@ GF_Err BD_DecMFFieldList(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node
++                                              //we have a QP in the same scope, remove previous
++                                              if (qp_on) gf_bifs_dec_qp_remove(codec, GF_FALSE);
++                                              e = gf_bifs_dec_qp_set(codec, new_node);
++-                                             if (e) return e;
+++                                             if (e) goto exit;
++                                              qp_on = 1;
++                                              if (qp_local) qp_local = 2;
++                                              if (codec->force_keep_qp) {
++@@ -361,10 +361,11 @@ GF_Err BD_DecMFFieldList(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node
++                                      e = gf_node_list_add_child_last( (GF_ChildNodeItem **)field->far_ptr, new_node, &last);
++                              }
++                      } else {
++-                             return codec->LastError;
+++                             e = codec->LastError;
+++                             goto exit;
++                      }
++              }
++-             if (e) return e;
+++             if (e) goto exit;
++ 
++              endFlag = gf_bs_read_int(bs, 1);
++ 
++@@ -382,9 +383,13 @@ GF_Err BD_DecMFFieldList(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node
++              }
++              nbF += 1;
++      }
+++
+++exit:
++      /*finally delete the QP if any (local or not) as we get out of this node
++      and reactivate previous one*/
++      if (qp_on) gf_bifs_dec_qp_remove(codec, initial_qp);
+++     if (e) return e;
+++
++      /*this is for QP 14*/
++      gf_bifs_dec_qp14_set_length(codec, nbF);
++      return GF_OK;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..74f8e8e1d2b223c445aaac2a6874c1ef9a818297
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,44 @@@
++From 15e3aece44f24a1c4e8cc0622c59008b1b9ab683 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 12 Dec 2022 09:42:30 +0100
++Subject: [PATCH] fixed #2337
++
++---
++ src/scene_manager/swf_parse.c | 7 ++++---
++ 1 file changed, 4 insertions(+), 3 deletions(-)
++
++diff --git a/src/scene_manager/swf_parse.c b/src/scene_manager/swf_parse.c
++index c50959ec2..6ae7b2439 100644
++--- a/src/scene_manager/swf_parse.c
+++++ b/src/scene_manager/swf_parse.c
++@@ -2568,7 +2568,7 @@ SWFReader *gf_swf_reader_new(const char *localPath, const char *inputName)
++      read->inputName = gf_strdup(inputName);
++      read->input = input;
++      read->bs = gf_bs_from_file(input, GF_BITSTREAM_READ);
++-     gf_bs_set_eos_callback(read->bs, swf_io_error, &read);
+++     gf_bs_set_eos_callback(read->bs, swf_io_error, read);
++      read->display_list = gf_list_new();
++      read->fonts = gf_list_new();
++      read->apps = gf_list_new();
++@@ -2612,7 +2612,7 @@ GF_Err gf_swf_read_header(SWFReader *read)
++      sig[2] = gf_bs_read_u8(read->bs);
++      /*"FWS" or "CWS"*/
++      if ( ((sig[0] != 'F') && (sig[0] != 'C')) || (sig[1] != 'W') || (sig[2] != 'S') ) {
++-             return GF_URL_ERROR;
+++             return GF_NON_COMPLIANT_BITSTREAM;
++      }
++      /*version = */gf_bs_read_u8(read->bs);
++      read->length = swf_get_32(read);
++@@ -2663,7 +2663,8 @@ GF_Err gf_sm_load_init_swf(GF_SceneLoader *load)
++      read->flat_limit = FLT2FIX(load->swf_flatten_limit);
++      load->loader_priv = read;
++ 
++-     gf_swf_read_header(read);
+++     e = gf_swf_read_header(read);
+++     if (e) goto exit;
++      load->ctx->scene_width = FIX2INT(read->width);
++      load->ctx->scene_height = FIX2INT(read->height);
++      load->ctx->is_pixel_metrics = 1;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7ab438d58ac5a6e54f2dc1ff344f184175242bd9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++From 65d089bcb5dad6fda668ee61e38a8394ed8bdf1f Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 12 Dec 2022 10:14:43 +0100
++Subject: [PATCH] fixed #2343
++
++---
++ src/filters/load_text.c | 6 +++---
++ 1 file changed, 3 insertions(+), 3 deletions(-)
++
++diff --git a/src/filters/load_text.c b/src/filters/load_text.c
++index 8010aea32..a0e455d1a 100644
++--- a/src/filters/load_text.c
+++++ b/src/filters/load_text.c
++@@ -2508,7 +2508,7 @@ static GF_Err gf_text_process_sub(GF_Filter *filter, GF_TXTIn *ctx, GF_FilterPac
++      u32 i, j, len, line;
++      GF_TextSample *samp;
++      Double ts_scale;
++-     char szLine[2048], szTime[20], szText[2048];
+++     char szLine[2048], szTime[41], szText[2048];
++ 
++      //same setup as for srt
++      if (!ctx->is_setup) {
++@@ -2550,8 +2550,7 @@ static GF_Err gf_text_process_sub(GF_Filter *filter, GF_TXTIn *ctx, GF_FilterPac
++              while (szLine[i+1] && szLine[i+1]!='}') {
++                      szTime[i] = szLine[i+1];
++                      i++;
++-                     if (i>=19)
++-                             break;
+++                     if (i>=40) break;
++              }
++              szTime[i] = 0;
++              ctx->start = atoi(szTime);
++@@ -2568,6 +2567,7 @@ static GF_Err gf_text_process_sub(GF_Filter *filter, GF_TXTIn *ctx, GF_FilterPac
++              while (szLine[i+1+j] && szLine[i+1+j]!='}') {
++                      szTime[i] = szLine[i+1+j];
++                      i++;
+++                     if (i>=40) break;
++              }
++              szTime[i] = 0;
++              ctx->end = atoi(szTime);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6f547cd8fae2b9fff5e026d3b9a95536f6927a00
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++From 6ddedfb85e617f5e935cb490d5b51f141e13a937 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 12 Dec 2022 10:35:51 +0100
++Subject: [PATCH] fixed #2345
++
++---
++ src/filters/dmx_m2ts.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/src/filters/dmx_m2ts.c b/src/filters/dmx_m2ts.c
++index 9c58e0d1d..b4e5ff254 100644
++--- a/src/filters/dmx_m2ts.c
+++++ b/src/filters/dmx_m2ts.c
++@@ -340,7 +340,7 @@ static void m2tsdmx_declare_pid(GF_M2TSDmxCtx *ctx, GF_M2TS_PES *stream, GF_ESD
++              case GF_M2TS_SYSTEMS_MPEG4_PES:
++                      if (!esd) {
++                              m4sys_iod_stream = GF_TRUE;
++-                             count = gf_list_count(stream->program->pmt_iod->ESDescriptors);
+++                             count = stream->program->pmt_iod ? gf_list_count(stream->program->pmt_iod->ESDescriptors) : 0;
++                              for (i=0; i<count; i++) {
++                                      esd = gf_list_get(stream->program->pmt_iod->ESDescriptors, i);
++                                      if (esd->ESID == stream->mpeg4_es_id) break;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ac6fd7b7918a3f0fe79abb8b5bdb13bc14fa5b6a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++From 1918a58bd0c9789844cf6a377293161506ee312c Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 12 Dec 2022 10:45:38 +0100
++Subject: [PATCH] fixed #2346
++
++---
++ src/media_tools/av_parsers.c | 22 ++++++++++++----------
++ 1 file changed, 12 insertions(+), 10 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/av_parsers.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++@@ -7060,18 +7060,20 @@ static Bool hevc_parse_vps_extension(HEV
++              num_scalability_types = 16;
++      }
++      dimension_id_len[0] = 0;
++-     for (i = 0; i < (num_scalability_types - splitting_flag); i++) {
++-             dimension_id_len[i] = 1 + gf_bs_read_int(bs, 3);
++-     }
+++        if (num_scalability_types) {
+++             for (i = 0; i < (num_scalability_types - splitting_flag); i++) {
+++                     dimension_id_len[i] = 1 + gf_bs_read_int(bs, 3);
+++             }
++ 
++-     if (splitting_flag) {
++-             for (i = 0; i < num_scalability_types; i++) {
++-                     dim_bit_offset[i] = 0;
++-                     for (j = 0; j < i; j++)
++-                             dim_bit_offset[i] += dimension_id_len[j];
++-             }
++-             dimension_id_len[num_scalability_types - 1] = 1 + (5 - dim_bit_offset[num_scalability_types - 1]);
++-             dim_bit_offset[num_scalability_types] = 6;
+++             if (splitting_flag) {
+++                     for (i = 0; i < num_scalability_types; i++) {
+++                             dim_bit_offset[i] = 0;
+++                             for (j = 0; j < i; j++)
+++                                     dim_bit_offset[i] += dimension_id_len[j];
+++                     }
+++                     dimension_id_len[num_scalability_types - 1] = 1 + (5 - dim_bit_offset[num_scalability_types - 1]);
+++                     dim_bit_offset[num_scalability_types] = 6;
+++                }
++      }
++ 
++      vps_nuh_layer_id_present_flag = gf_bs_read_int(bs, 1);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5bdabcd180756ad85d81028d794626f5785bf9ca
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From 9f1e633184904fffc315bd35ebce76b4b42f9097 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Sat, 17 Dec 2022 12:11:34 +0100
++Subject: [PATCH] fixed #2355
++
++---
++ src/media_tools/av_parsers.c | 5 +++++
++ 1 file changed, 5 insertions(+)
++
++diff --git a/src/media_tools/av_parsers.c b/src/media_tools/av_parsers.c
++index 4b63b4d69..126f825b5 100644
++--- a/src/media_tools/av_parsers.c
+++++ b/src/media_tools/av_parsers.c
++@@ -7659,6 +7659,11 @@ static Bool hevc_parse_vps_extension(HEVC_VPS *vps, GF_BitStream *bs)
++              else {
++                      vps->layer_id_in_nuh[i] = i;
++              }
+++             if (vps->layer_id_in_nuh[i] > MAX_LHVC_LAYERS) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CODING, ("[HEVC] %d layers in VPS ext but only %d supported in GPAC\n", vps->layer_id_in_nuh[i], MAX_LHVC_LAYERS));
+++                     vps->layer_id_in_nuh[i] = 0;
+++                     return -1;
+++             }
++              vps->layer_id_in_vps[vps->layer_id_in_nuh[i]] = i;
++ 
++              if (!splitting_flag) {
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f03086ff032d889641d1d91347c18fdae57b0b57
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++From 348d7722c1e90c7811b43b0eed5c2aca2cb8a717 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Sat, 17 Dec 2022 12:06:16 +0100
++Subject: [PATCH] fixed #2354
++
++---
++ src/filters/reframe_latm.c | 8 +++++---
++ 1 file changed, 5 insertions(+), 3 deletions(-)
++
++diff --git a/src/filters/reframe_latm.c b/src/filters/reframe_latm.c
++index 3128104b2..b332c3f42 100644
++--- a/src/filters/reframe_latm.c
+++++ b/src/filters/reframe_latm.c
++@@ -30,6 +30,8 @@
++ 
++ #ifndef GPAC_DISABLE_AV_PARSERS
++ 
+++#define LATM_DMX_MAX_SIZE    8192
+++
++ typedef struct
++ {
++      u64 pos;
++@@ -157,7 +159,7 @@ static Bool latm_dmx_sync_frame_bs(GF_BitStream *bs, GF_M4ADecSpecInfo *acfg, u3
++                      size += tmp;
++                      if (tmp!=255) break;
++              }
++-             if (gf_bs_available(bs) < size) {
+++             if ((gf_bs_available(bs) < size) || (size > LATM_DMX_MAX_SIZE)){
++                      gf_bs_seek(bs, pos-3);
++                      return GF_FALSE;
++              }
++@@ -521,8 +523,8 @@ GF_Err latm_dmx_process(GF_Filter *filter)
++ 
++      while (1) {
++              pos = (u32) gf_bs_get_position(ctx->bs);
++-             u8 latm_buffer[4096];
++-             u32 latm_frame_size = 4096;
+++             u8 latm_buffer[LATM_DMX_MAX_SIZE];
+++             u32 latm_frame_size = LATM_DMX_MAX_SIZE;
++              if (!latm_dmx_sync_frame_bs(ctx->bs,&ctx->acfg, &latm_frame_size, latm_buffer, NULL)) break;
++ 
++              if (ctx->in_seek) {
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0c8be40fc4957292b3f7933cb3342f292c653d8d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++From a8f438d201fb165961ba1d5d3b80daa3637735f4 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Sat, 17 Dec 2022 12:28:51 +0100
++Subject: [PATCH] fixed #2357
++
++---
++ src/isomedia/isom_write.c      | 23 +++++++++++++++++------
++ src/media_tools/media_import.c |  2 +-
++ 2 files changed, 18 insertions(+), 7 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/isomedia/isom_write.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/isom_write.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/isom_write.c
++@@ -4605,10 +4605,19 @@ GF_Err gf_isom_shift_cts_offset(GF_ISOFi
++      if (!trak->Media->information->sampleTable->CompositionOffset) return GF_BAD_PARAM;
++      if (!trak->Media->information->sampleTable->CompositionOffset->unpack_mode) return GF_BAD_PARAM;
++ 
++-     for (i=0; i<trak->Media->information->sampleTable->CompositionOffset->nb_entries; i++) {
+++        GF_CompositionOffsetBox *ctso = trak->Media->information->sampleTable->CompositionOffset;
+++        for (i=0; i<ctso->nb_entries; i++) {
+++                s64 new_ts = ctso->entries[i].decodingOffset;
+++                new_ts -= offset_shift;
++              /*we're in unpack mode: one entry per sample*/
++-             trak->Media->information->sampleTable->CompositionOffset->entries[i].decodingOffset -= offset_shift;
+++                ctso->entries[i].decodingOffset = (s32) new_ts;
++      }
+++        if (trak->Media->mediaHeader->duration >= -offset_shift) {
+++                s64 new_dur = trak->Media->mediaHeader->duration;
+++                new_dur -= offset_shift;
+++                if (new_dur<0) new_dur = 0;
+++                trak->Media->mediaHeader->duration = (u32) new_dur;
+++        }
++      return GF_OK;
++ }
++ 
++@@ -6526,7 +6535,9 @@ static GF_Err gf_isom_set_ctts_v0(GF_ISO
++              if (shift > 0)
++              {
++                      for (i=0; i<ctts->nb_entries; i++) {
++-                             ctts->entries[i].decodingOffset += shift;
+++                             s64 new_ts = ctts->entries[i].decodingOffset;
+++                             new_ts += shift;
+++                             ctts->entries[i].decodingOffset = (u32) shift;
++                      }
++              }
++      }
++@@ -6535,7 +6546,9 @@ static GF_Err gf_isom_set_ctts_v0(GF_ISO
++              cslg = trak->Media->information->sampleTable->CompositionToDecode;
++              shift = cslg->compositionToDTSShift;
++              for (i=0; i<ctts->nb_entries; i++) {
++-                     ctts->entries[i].decodingOffset += shift;
+++                     s64 new_ts = ctts->entries[i].decodingOffset;
+++                     new_ts += shift;
+++                     ctts->entries[i].decodingOffset = (u32) shift;
++              }
++              gf_isom_box_del_parent(&trak->Media->information->sampleTable->child_boxes, (GF_Box *)cslg);
++              trak->Media->information->sampleTable->CompositionToDecode = NULL;
++Index: gpac-1.0.1+dfsg1/src/media_tools/media_import.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/media_import.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/media_import.c
++@@ -99,7 +99,7 @@ static void gf_media_update_bitrate_ex(G
++ 
++      br = (Double) (s64) gf_isom_get_media_duration(file, track);
++      br /= timescale;
++-     if (br) {
+++     if (br>0) {
++              GF_ESD *esd = NULL;
++              if (!csize || !cdur) {
++                      bitrate = (u32) ((Double) (s64)avg_rate / br);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..adcaa3ac88b69c92088ac8536e9775ac06938ddd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++Origin: https://github.com/gpac/gpac/commit/aa8fbec874b5e040854effff5309aa445c234618
++Reviewed-by: Aron Xu <aron@debian.org>
++
++From aa8fbec874b5e040854effff5309aa445c234618 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 19 Dec 2022 11:50:31 +0100
++Subject: [PATCH] fixed #2358
++
++diff --git a/src/media_tools/av_parsers.c b/src/media_tools/av_parsers.c
++index caffb63b5..38429382f 100644
++--- a/src/media_tools/av_parsers.c
+++++ b/src/media_tools/av_parsers.c
++@@ -6335,7 +6335,10 @@ u32 gf_avc_reformat_sei(u8 *buffer, u32 nal_size, Bool isobmf_rewrite, AVCState
++              if (gf_bs_available(bs) <= 2) {
++                      var = gf_bs_read_int(bs, 8);
++                      if (var != 0x80) {
++-                             GF_LOG(GF_LOG_WARNING, GF_LOG_CODING, ("[avc-h264] SEI user message has less than 2 bytes remaining but no end of sei found\n"));
+++                             GF_LOG(GF_LOG_WARNING, GF_LOG_CODING, ("[avc-h264] SEI user message has less than 2 bytes remaining but no end of sei found, keeping full SEI untouched\n"));
+++                             if (bs_dest) gf_bs_del(bs_dest);
+++                             gf_bs_del(bs);
+++                             return nal_size;
++                      }
++                      if (bs_dest) gf_bs_write_int(bs_dest, 0x80, 8);
++                      break;
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9aa827009ea2a22c7d7f653e5b4f1a912b2f6957
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,199 @@@
++From 080a62728ccd251a7f20eaac3fda21b0716e3c9b Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 19 Dec 2022 12:25:50 +0100
++Subject: [PATCH] fixed #2359
++
++---
++ include/gpac/internal/isomedia_dev.h |  2 +-
++ src/isomedia/avc_ext.c               | 51 +++++++++++++++++++++-------
++ src/media_tools/isom_tools.c         |  4 +++
++ 3 files changed, 44 insertions(+), 13 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/include/gpac/internal/isomedia_dev.h
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/include/gpac/internal/isomedia_dev.h
+++++ gpac-1.0.1+dfsg1/include/gpac/internal/isomedia_dev.h
++@@ -922,7 +922,7 @@ typedef struct __tag_media_box
++ 
++      GF_ISOSample *extracted_samp;
++      GF_BitStream *extracted_bs;
++-
+++     Bool in_nalu_rewrite;
++ } GF_MediaBox;
++ 
++ typedef struct
++Index: gpac-1.0.1+dfsg1/src/isomedia/avc_ext.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/avc_ext.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/avc_ext.c
++@@ -410,7 +410,6 @@ static void nalu_merge_ps(GF_BitStream *
++      }
++ }
++ 
++-
++ GF_Err gf_isom_nalu_sample_rewrite(GF_MediaBox *mdia, GF_ISOSample *sample, u32 sampleNumber, GF_MPEGVisualSampleEntryBox *entry)
++ {
++      Bool is_hevc = GF_FALSE;
++@@ -430,6 +429,10 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++      GF_ISOFile *file = mdia->mediaTrack->moov->mov;
++      GF_TrackReferenceTypeBox *scal = NULL;
++ 
+++     if (mdia->in_nalu_rewrite)
+++             return GF_ISOM_INVALID_FILE;
+++     mdia->in_nalu_rewrite = GF_TRUE;
+++
++      Track_FindRef(mdia->mediaTrack, GF_ISOM_REF_SCAL, &scal);
++ 
++      rewrite_ps = (mdia->mediaTrack->extractor_mode & GF_ISOM_NALU_EXTRACT_INBAND_PS_FLAG) ? GF_TRUE : GF_FALSE;
++@@ -461,10 +464,14 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++ 
++                                              if (!mdia->extracted_samp) {
++                                                      mdia->extracted_samp = gf_isom_sample_new();
++-                                                     if (!mdia->extracted_samp) return GF_OUT_OF_MEM;
+++                                                     if (!mdia->extracted_samp) {
+++                                                                     mdia->in_nalu_rewrite = GF_FALSE;
+++                                                                     return GF_OUT_OF_MEM;
+++                                                     }
++                                              }
++ 
++                                              base_samp = gf_isom_get_sample_ex(mdia->mediaTrack->moov->mov, ref_track, sampleNumber + mdia->mediaTrack->sample_count_at_seg_start, &di, mdia->extracted_samp, NULL);
+++                                             //base sample may be null (track split)
++                                              if (base_samp && base_samp->data) {
++                                                      if (!sample->alloc_size || (sample->alloc_size<sample->dataLength+base_samp->dataLength) ) {
++                                                              sample->data = gf_realloc(sample->data, sample->dataLength+base_samp->dataLength);
++@@ -490,10 +497,14 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++ 
++                              if (!mdia->extracted_samp) {
++                                      mdia->extracted_samp = gf_isom_sample_new();
++-                                     if (!mdia->extracted_samp) return GF_OUT_OF_MEM;
+++                                     if (!mdia->extracted_samp) {
+++                                             mdia->in_nalu_rewrite = GF_FALSE;
+++                                             return GF_OUT_OF_MEM;
+++                                     }
++                              }
++ 
++                              tile_samp = gf_isom_get_sample_ex(mdia->mediaTrack->moov->mov, ref_track, sampleNumber + mdia->mediaTrack->sample_count_at_seg_start, &di, mdia->extracted_samp, NULL);
+++                             //tile sample may be NULL (removal of tracks, ...)
++                              if (tile_samp  && tile_samp ->data) {
++                                      if (!sample->alloc_size || (sample->alloc_size<sample->dataLength+tile_samp->dataLength) ) {
++                                              sample->data = gf_realloc(sample->data, sample->dataLength+tile_samp->dataLength);
++@@ -502,7 +513,7 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++                                      memcpy(sample->data + sample->dataLength, tile_samp->data, tile_samp->dataLength);
++                                      sample->dataLength += tile_samp->dataLength;
++                              }
++-                     }
+++                     }
++              }
++      }
++ 
++@@ -527,15 +538,19 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++      if (extractor_mode != GF_ISOM_NALU_EXTRACT_LAYER_ONLY)
++              insert_vdrd_code = GF_FALSE;
++ 
++-     if (!entry) return GF_BAD_PARAM;
++-
+++     if (!entry) {
+++             mdia->in_nalu_rewrite = GF_FALSE;
+++             return GF_BAD_PARAM;
+++     }
++      //this is a compatible HEVC, don't insert VDRD, insert NALU delim
++      if (entry->lhvc_config && entry->hevc_config)
++              insert_vdrd_code = GF_FALSE;
++ 
++      if (extractor_mode == GF_ISOM_NALU_EXTRACT_INSPECT) {
++-             if (!rewrite_ps && !rewrite_start_codes)
+++             if (!rewrite_ps && !rewrite_start_codes) {
+++                     mdia->in_nalu_rewrite = GF_FALSE;
++                      return GF_OK;
+++             }
++      }
++ 
++      nal_unit_size_field = 0;
++@@ -554,6 +569,7 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++ 
++      /*otherwise do nothing*/
++      else if (!rewrite_ps && !rewrite_start_codes && !scal && !force_sei_inspect) {
+++             mdia->in_nalu_rewrite = GF_FALSE;
++              return GF_OK;
++      }
++ 
++@@ -570,8 +586,10 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++              }
++      }
++ 
++-     if (!nal_unit_size_field) return GF_ISOM_INVALID_FILE;
++-
+++     if (!nal_unit_size_field) {
+++             mdia->in_nalu_rewrite = GF_FALSE;
+++             return GF_ISOM_INVALID_FILE;
+++     }
++      //setup PS rewriter
++      if (!mdia->nalu_ps_bs)
++              mdia->nalu_ps_bs = gf_bs_new(NULL, 0, GF_BITSTREAM_WRITE);
++@@ -586,10 +604,16 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++ 
++      if (!mdia->nalu_parser) {
++              mdia->nalu_parser = gf_bs_new(mdia->in_sample_buffer, sample->dataLength, GF_BITSTREAM_READ);
++-             if (!mdia->nalu_parser && sample->data) return GF_ISOM_INVALID_FILE;
+++             if (!mdia->nalu_parser && sample->data) {
+++                     mdia->in_nalu_rewrite = GF_FALSE;
+++                     return GF_ISOM_INVALID_FILE;
+++             }
++      } else {
++              e = gf_bs_reassign_buffer(mdia->nalu_parser, mdia->in_sample_buffer, sample->dataLength);
++-             if (e) return e;
+++             if (e) {
+++                     mdia->in_nalu_rewrite = GF_FALSE;
+++                     return e;
+++             }
++      }
++      //setup ouput
++      if (!mdia->nalu_out_bs) {
++@@ -677,7 +701,7 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++                              }
++                              gf_bs_write_data(mdia->nalu_out_bs, mdia->in_sample_buffer, sample->dataLength);
++                              gf_bs_get_content_no_truncate(mdia->nalu_out_bs, &sample->data, &sample->dataLength, &sample->alloc_size);
++-
+++                             mdia->in_nalu_rewrite = GF_FALSE;
++                              return GF_OK;
++                      }
++              }
++@@ -693,6 +717,7 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++              }
++              gf_bs_write_data(mdia->nalu_out_bs, mdia->in_sample_buffer, sample->dataLength);
++              gf_bs_get_content_no_truncate(mdia->nalu_out_bs, &sample->data, &sample->dataLength, &sample->alloc_size);
+++             mdia->in_nalu_rewrite = GF_FALSE;
++              return GF_OK;
++      }
++ 
++@@ -770,6 +795,7 @@ GF_Err gf_isom_nalu_sample_rewrite(GF_Me
++                              if (check_cra_bla && !sample->IsRAP) {
++                                      sample->IsRAP = sap_type_from_nal_type(nal_type);
++                                      if (sei_suffix_bs) gf_bs_del(sei_suffix_bs);
+++                                     mdia->in_nalu_rewrite = GF_FALSE;
++                                      return gf_isom_nalu_sample_rewrite(mdia, sample, sampleNumber, entry);
++                              }
++                      default:
++@@ -852,6 +878,7 @@ exit:
++      if (sei_suffix_bs)
++              gf_bs_del(sei_suffix_bs);
++ 
+++     mdia->in_nalu_rewrite = GF_FALSE;
++      return e;
++ }
++ 
++Index: gpac-1.0.1+dfsg1/src/media_tools/isom_tools.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/isom_tools.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/isom_tools.c
++@@ -3225,6 +3225,10 @@ GF_Err gf_media_split_hevc_tiles(GF_ISOF
++              u32 size, nb_nalus=0, nb_nal_entries=0, last_tile_group=(u32) -1;
++              GF_BitStream *bs=NULL;
++              GF_ISOSample *sample = gf_isom_get_sample(file, track, i+1, &di);
+++             if (!sample) {
+++                     e = gf_isom_last_error(file);
+++                     goto err_exit;
+++             }
++ 
++              data = (u8 *) sample->data;
++              size = sample->dataLength;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..433ceead907ede3b7834e9094172924eef13543b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,50 @@@
++From e7e8745f677010a5cb3366d5cbf39df7cffaaa2d Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 19 Dec 2022 12:26:02 +0100
++Subject: [PATCH] fixed #2360
++
++---
++ src/filters/reframe_h263.c | 19 +++++++++++++++++--
++ 1 file changed, 17 insertions(+), 2 deletions(-)
++
++diff --git a/src/filters/reframe_h263.c b/src/filters/reframe_h263.c
++index 40cf40699..e79b388b1 100644
++--- a/src/filters/reframe_h263.c
+++++ b/src/filters/reframe_h263.c
++@@ -510,7 +510,14 @@ GF_Err h263dmx_process(GF_Filter *filter)
++              if (current>0) {
++                      if (!ctx->opid) {
++                              if (ctx->bytes_in_header) {
++-                                     ctx->bytes_in_header -= current;
+++                                     if (ctx->bytes_in_header<current) {
+++                                             current-=ctx->bytes_in_header;
+++                                             ctx->bytes_in_header = 0;
+++                                             start += current;
+++                                             remain -= current;
+++                                     } else {
+++                                             ctx->bytes_in_header -= current;
+++                                     }
++                              } else {
++                                      start += current;
++                                      remain -= current;
++@@ -531,8 +538,16 @@ GF_Err h263dmx_process(GF_Filter *filter)
++                              if (byte_offset != GF_FILTER_NO_BO) {
++                                      gf_filter_pck_set_byte_offset(dst_pck, byte_offset - ctx->bytes_in_header);
++                              }
++-                             ctx->bytes_in_header -= current;
++                              memcpy(pck_data, ctx->hdr_store, current);
+++                             //we may have a partial startcode
+++                             if (current>ctx->bytes_in_header) {
+++                                     current -= ctx->bytes_in_header;
+++                                     start += current;
+++                                     remain -= current;
+++                                     ctx->bytes_in_header = 0;
+++                             } else {
+++                                     ctx->bytes_in_header -= current;
+++                             }
++                      } else {
++                              if (byte_offset != GF_FILTER_NO_BO) {
++                                      gf_filter_pck_set_byte_offset(dst_pck, byte_offset);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ebfc51131a43f2b34a7b691c9c9baf76c4a75d15
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From c31941822ee275a35bc148382bafef1c53ec1c26 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 23 Nov 2022 15:59:43 +0100
++Subject: [PATCH] fixed #2316
++
++---
++ src/scenegraph/vrml_proto.c | 5 ++++-
++ 1 file changed, 4 insertions(+), 1 deletion(-)
++
++diff --git a/src/scenegraph/vrml_proto.c b/src/scenegraph/vrml_proto.c
++index df30ed0df..02b92b576 100644
++--- a/src/scenegraph/vrml_proto.c
+++++ b/src/scenegraph/vrml_proto.c
++@@ -1292,7 +1292,10 @@ Bool gf_sg_proto_field_is_sftime_offset(GF_Node *node, GF_FieldInfo *field)
++ 
++              gf_node_get_field(r->ToNode, r->ToField.fieldIndex, &inf);
++              /*IS to another proto*/
++-             if (r->ToNode->sgprivate->tag == TAG_ProtoNode) return gf_sg_proto_field_is_sftime_offset(r->ToNode, &inf);
+++             if (r->ToNode->sgprivate->tag == TAG_ProtoNode) {
+++                     if (r->ToNode==node) continue;
+++                     return gf_sg_proto_field_is_sftime_offset(r->ToNode, &inf);
+++             }
++              /*IS to a startTime/stopTime field*/
++              if (!stricmp(inf.name, "startTime") || !stricmp(inf.name, "stopTime")) return 1;
++      }
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fe90694874cdd157bde8e508e8a4df4aeb4a10a5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,65 @@@
++From 377ab25f3e502db2934a9cf4b54739e1c89a02ff Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Mon, 13 Feb 2023 15:42:10 +0100
++Subject: [PATCH] fix a5efec8 to cover more cases (#2397)
++
++---
++ src/filters/load_text.c | 20 ++++++++++++++++----
++ 1 file changed, 16 insertions(+), 4 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/load_text.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/load_text.c
+++++ gpac-1.0.1+dfsg1/src/filters/load_text.c
++@@ -246,18 +246,24 @@ char *gf_text_get_utf8_line(char *szLine
++                      if (!unicode_type && (szLine[i] & 0x80)) {
++                              /*non UTF8 (likely some win-CP)*/
++                              if ((szLine[i+1] & 0xc0) != 0x80) {
+++                                     if (j >= GF_ARRAY_LENGTH(szLineConv))
+++                                             break;
++                                      szLineConv[j] = 0xc0 | ( (szLine[i] >> 6) & 0x3 );
++                                      j++;
++                                      szLine[i] &= 0xbf;
++                              }
++                              /*UTF8 2 bytes char*/
++                              else if ( (szLine[i] & 0xe0) == 0xc0) {
+++                                     if (j >= GF_ARRAY_LENGTH(szLineConv))
+++                                             break;
++                                      szLineConv[j] = szLine[i];
++                                      i++;
++                                      j++;
++                              }
++                              /*UTF8 3 bytes char*/
++                              else if ( (szLine[i] & 0xf0) == 0xe0) {
+++                                     if (j+1 >= GF_ARRAY_LENGTH(szLineConv))
+++                                             break;
++                                      szLineConv[j] = szLine[i];
++                                      i++;
++                                      j++;
++@@ -267,6 +273,8 @@ char *gf_text_get_utf8_line(char *szLine
++                              }
++                              /*UTF8 4 bytes char*/
++                              else if ( (szLine[i] & 0xf8) == 0xf0) {
+++                                     if (j+2 >= GF_ARRAY_LENGTH(szLineConv))
+++                                             break;
++                                      szLineConv[j] = szLine[i];
++                                      i++;
++                                      j++;
++@@ -281,9 +289,17 @@ char *gf_text_get_utf8_line(char *szLine
++                                      continue;
++                              }
++                      }
+++
+++                        if (j >= GF_ARRAY_LENGTH(szLineConv))
+++                                break;
+++
++                      szLineConv[j] = szLine[i];
++                      j++;
++              }
+++                if ( j >= GF_ARRAY_LENGTH(szLineConv) ) {
+++                        GF_LOG(GF_LOG_DEBUG, GF_LOG_PARSER, ("[TXTIn] Line too long to convert to utf8 (len: %d)\n", len));
+++                        j = GF_ARRAY_LENGTH(szLineConv) -1 ;
+++                }
++              szLineConv[j] = 0;
++              strcpy(szLine, szLineConv);
++              return sOK;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e90ce49889107497e9b510f88c1e8abc9ddd43d2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++From d067ab3ccdeaa340e8c045a0fd5bcfc22b809e8f Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Mon, 13 Feb 2023 15:41:48 +0100
++Subject: [PATCH] mpeg2ts: add section size check (#2395)
++
++---
++ src/media_tools/mpegts.c | 5 +++++
++ 1 file changed, 5 insertions(+)
++
++diff --git a/src/media_tools/mpegts.c b/src/media_tools/mpegts.c
++index 30fb2bb3f..7deabb630 100644
++--- a/src/media_tools/mpegts.c
+++++ b/src/media_tools/mpegts.c
++@@ -946,6 +946,11 @@ static void gf_m2ts_process_tdt_tot(GF_M2TS_Demuxer *ts, GF_M2TS_SECTION_ES *tdt
++              return;
++      }
++ 
+++     if (data_size < 5) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[MPEG-2 TS] Section data size too small to read date (len: %u)\n", data_size));
+++             return;
+++     }
+++
++      /*UTC_time - see annex C of DVB-SI ETSI EN 300468*/
++ /* decodes an Modified Julian Date (MJD) into a Co-ordinated Universal Time (UTC)
++ See annex C of DVB-SI ETSI EN 300468 */
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ff965eacd2954117c8d537a3fa5bab1f752b19c2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++From b964fe4226f1424cf676d5822ef898b6b01f5937 Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Thu, 16 Feb 2023 17:34:58 +0100
++Subject: [PATCH] rfadts: add size guard on dmx (#2400)
++
++---
++ src/filters/reframe_adts.c | 8 +++++++-
++ 1 file changed, 7 insertions(+), 1 deletion(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/reframe_adts.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_adts.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_adts.c
++@@ -256,7 +256,7 @@ static void adts_dmx_check_dur(GF_Filter
++                      gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_DURATION, & PROP_FRAC64(ctx->duration));
++              }
++      }
++-     
+++
++      p = gf_filter_pid_get_property(ctx->ipid, GF_PROP_PID_FILE_CACHED);
++      if (p && p->value.boolean) ctx->file_loaded = GF_TRUE;
++      gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_CAN_DATAREF, & PROP_BOOL(GF_TRUE ) );
++@@ -715,6 +715,12 @@ GF_Err adts_dmx_process(GF_Filter *filte
++              }
++ 
++              if (!ctx->in_seek) {
+++
+++                     if (sync_pos + offset + size > remain) {
+++                             GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[ADTSDmx] truncated frame\n"));
+++                             break;
+++                     }
+++
++                      dst_pck = gf_filter_pck_new_alloc(ctx->opid, size, &output);
++                      if (ctx->src_pck) gf_filter_pck_merge_properties(ctx->src_pck, dst_pck);
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bef7fb2c322272596dcab23b3122f42022974309
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From 8db20cb634a546c536c31caac94e1f74b778b463 Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Tue, 7 Feb 2023 18:27:19 +0100
++Subject: [PATCH] m2ts: check descs_size read from input to prevent overflow
++ (#2388)
++
++---
++ src/media_tools/mpegts.c | 7 ++++++-
++ 1 file changed, 6 insertions(+), 1 deletion(-)
++
++Index: gpac-1.0.1+dfsg1/src/media_tools/mpegts.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/mpegts.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/mpegts.c
++@@ -807,6 +807,11 @@ static void gf_m2ts_process_sdt(GF_M2TS_
++              descs_size = ((data[pos+3]&0xf)<<8) | data[pos+4];
++              pos += 5;
++ 
+++             if (pos+descs_size > data_size) {
+++                     GF_LOG(GF_LOG_WARNING, GF_LOG_CONTAINER, ("[MPEG-2 TS] Invalid descriptors size read from data (%u)\n"));
+++                     return;
+++             }
+++
++              d_pos = 0;
++              while (d_pos < descs_size) {
++                      u8 d_tag = data[pos+d_pos];
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..82320bcab50853caebc79ac509b62ae8c4b7a615
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,41 @@@
++From 8ebbfd61c73d61a2913721a492e5a81fb8d9f9a9 Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Fri, 10 Feb 2023 15:36:49 +0100
++Subject: [PATCH] av1: flush samples on parse error (#2387)
++
++---
++ src/filters/reframe_av1.c | 12 ++++++++----
++ 1 file changed, 8 insertions(+), 4 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/reframe_av1.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_av1.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_av1.c
++@@ -720,7 +720,7 @@ static GF_Err av1dmx_parse_flush_sample(
++ 
++      if (!ctx->opid)
++              return GF_NON_COMPLIANT_BITSTREAM;
++-             
+++
++      gf_bs_get_content_no_truncate(ctx->state.bs, &ctx->state.frame_obus, &pck_size, &ctx->state.frame_obus_alloc);
++ 
++      if (!pck_size) {
++@@ -804,7 +804,12 @@ GF_Err av1dmx_parse_av1(GF_Filter *filte
++      //check pid state
++      av1dmx_check_pid(filter, ctx);
++ 
++-     if (e) return e;
+++     if (e) {
+++             if (e!=GF_EOS && e!=GF_BUFFER_TOO_SMALL) {
+++                     av1dmx_parse_flush_sample(filter, ctx);
+++             }
+++             return e;
+++     }
++ 
++ 
++      if (!ctx->opid) {
++@@ -1114,4 +1119,3 @@ const GF_FilterRegister *av1dmx_register
++      return NULL;
++ }
++ #endif // GPAC_DISABLE_AV_PARSERS
++-
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7cd60d9efa1fbe90a6619f8867d6d56ac630f35c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++From a5efec8187de02d1f0a412140b0bf030a6747d3f Mon Sep 17 00:00:00 2001
++From: Aurelien David <aurelien.david@telecom-paristech.fr>
++Date: Tue, 7 Feb 2023 16:01:42 +0100
++Subject: [PATCH] load_text: prevent overflow on long lines conversion to utf8
++ (#2386)
++
++---
++ src/filters/load_text.c | 6 ++++++
++ 1 file changed, 6 insertions(+)
++
++Index: gpac-1.0.1+dfsg1/src/filters/load_text.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/load_text.c
+++++ gpac-1.0.1+dfsg1/src/filters/load_text.c
++@@ -295,6 +295,12 @@ char *gf_text_get_utf8_line(char *szLine
++ 
++                      szLineConv[j] = szLine[i];
++                      j++;
+++
+++                     if (j >= GF_ARRAY_LENGTH(szLineConv) - 1) {
+++                             GF_LOG(GF_LOG_DEBUG, GF_LOG_PARSER, ("[TXTIn] Line too long to convert to utf8 (len: %d)\n", len));
+++                             break;
+++                     }
+++
++              }
++                 if ( j >= GF_ARRAY_LENGTH(szLineConv) ) {
++                         GF_LOG(GF_LOG_DEBUG, GF_LOG_PARSER, ("[TXTIn] Line too long to convert to utf8 (len: %d)\n", len));
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d96c6714858f04799ecab24ae8ccbd2002895304
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,63 @@@
++From 2c055153d401b8c49422971e3a0159869652d3da Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 27 Mar 2023 11:58:57 +0200
++Subject: [PATCH] fixed #2429
++
++---
++ src/filter_core/filter_pid.c | 29 ++++++++++++++++++++---------
++ 1 file changed, 20 insertions(+), 9 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filter_core/filter_pid.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filter_core/filter_pid.c
+++++ gpac-1.0.1+dfsg1/src/filter_core/filter_pid.c
++@@ -59,13 +59,17 @@ void gf_filter_pid_inst_del(GF_FilterPid
++      gf_list_del(pidinst->pck_reassembly);
++      if (pidinst->props) {
++              assert(pidinst->props->reference_count);
++-             if (safe_int_dec(&pidinst->props->reference_count) == 0) {
++-                     //see \ref gf_filter_pid_merge_properties_internal for mutex
++-                     gf_mx_p(pidinst->pid->filter->tasks_mx);
++-                     gf_list_del_item(pidinst->pid->properties, pidinst->props);
++-                     gf_mx_v(pidinst->pid->filter->tasks_mx);
++-                     gf_props_del(pidinst->props);
+++             gf_mx_p(pidinst->pid->filter->tasks_mx);
+++             //not in parent pid, may happen when reattaching a pid inst to a different pid
+++             //in this case do NOT delete the props
+++             if (gf_list_find(pidinst->pid->properties, pidinst->props)>=0) {
+++                     if (safe_int_dec(&pidinst->props->reference_count) == 0) {
+++                             //see \ref gf_filter_pid_merge_properties_internal for mutex
+++                             gf_list_del_item(pidinst->pid->properties, pidinst->props);
+++                             gf_props_del(pidinst->props);
+++                     }
++              }
+++             gf_mx_v(pidinst->pid->filter->tasks_mx);
++      }
++      gf_free(pidinst);
++ }
++@@ -855,8 +859,15 @@ static GF_Err gf_filter_pid_configure(GF
++                                              if (!target->detached_pid_inst) {
++                                                      target->detached_pid_inst = gf_list_new();
++                                              }
++-                                             //detach props but don't delete them
+++                                             //detach props
++                                              if (filter->swap_pidinst_dst->props) {
+++                                                     GF_FilterPidInst *swap_pidi = filter->swap_pidinst_dst;
+++                                                     if (safe_int_dec(&swap_pidi->props->reference_count)==0) {
+++                                                             gf_mx_p(swap_pidi->pid->filter->tasks_mx);
+++                                                             gf_list_del_item(swap_pidi->pid->properties, pidinst->props);
+++                                                             gf_mx_v(swap_pidi->pid->filter->tasks_mx);
+++                                                             gf_props_del(pidinst->props);
+++                                                     }
++                                                      filter->swap_pidinst_dst->props = NULL;
++                                              }
++                                              filter->swap_pidinst_dst->pid = NULL;
++@@ -1045,7 +1056,7 @@ void gf_filter_pid_detach_task(GF_FSTask
++      //first connection of this PID to this filter
++      if (!pidinst) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_FILTER, ("Trying to detach PID %s not found in filter %s inputs\n",  pid->name, filter->name));
++-             assert(!new_chain_input->swap_pidinst_dst);
+++                //when swaping encoder, we may have swap_pidinst_dst not NULL so only check swap_pidinst_src
++              assert(!new_chain_input->swap_pidinst_src);
++              new_chain_input->swap_needs_init = GF_FALSE;
++              return;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c53acae0568991cc066c7a83ee5abb465bca8368
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++From af6a5e7a96ee01a139cce6c9e4edfc069aad17a6 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 4 Jan 2023 10:56:03 +0100
++Subject: [PATCH] fixed #2366
++
++---
++ src/media_tools/av_parsers.c | 6 +++---
++ 1 file changed, 3 insertions(+), 3 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/media_tools/av_parsers.c
+++++ gpac-1.0.1+dfsg1/src/media_tools/av_parsers.c
++@@ -5558,9 +5558,10 @@ static s32 avc_parse_slice(GF_BitStream
++      if (si->slice_type > 9) return -1;
++ 
++      pps_id = gf_bs_get_ue(bs);
++-     if ((pps_id < 0) || (pps_id > 255)) return -1;
+++     if ((pps_id < 0) || (pps_id >= 255)) return -1;
++      si->pps = &avc->pps[pps_id];
++      if (!si->pps->slice_group_count) return -2;
+++        if (si->pps->sps_id>=32) return -1;
++      si->sps = &avc->sps[si->pps->sps_id];
++      if (!si->sps->log2_max_frame_num) return -2;
++      avc->sps_active_idx = si->pps->sps_id;
++@@ -5668,7 +5669,7 @@ static s32 svc_parse_slice(GF_BitStream
++      if (si->slice_type > 9) return -1;
++ 
++      pps_id = gf_bs_get_ue(bs);
++-     if ((pps_id < 0) || (pps_id > 255))
+++     if ((pps_id < 0) || (pps_id >= 255))
++              return -1;
++      si->pps = &avc->pps[pps_id];
++      si->pps->id = pps_id;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..16d84182ce542e5578dadfacd8e8ecd071ca53bf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++From 3a2458a49b3e6399709d456d7b35e7a6f50cfb86 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 4 Jan 2023 11:25:11 +0100
++Subject: [PATCH] fixed #2364
++
++---
++ src/bifs/unquantize.c | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/src/bifs/unquantize.c b/src/bifs/unquantize.c
++index a43df12f0..008a83098 100644
++--- a/src/bifs/unquantize.c
+++++ b/src/bifs/unquantize.c
++@@ -2,7 +2,7 @@
++  *                   GPAC - Multimedia Framework C SDK
++  *
++  *                   Authors: Jean Le Feuvre
++- *                   Copyright (c) Telecom ParisTech 2000-2012
+++ *                   Copyright (c) Telecom ParisTech 2000-2023
++  *                                   All rights reserved
++  *
++  *  This file is part of GPAC / BIFS codec sub-project
++@@ -284,7 +284,7 @@ GF_Err Q_DecCoordOnUnitSphere(GF_BifsDecoder *codec, GF_BitStream *bs, u32 NbBit
++      s32 value;
++      Fixed tang[4], delta;
++      s32 dir;
++-
+++     if (NbBits>32) return GF_NON_COMPLIANT_BITSTREAM;
++      if (NbComp != 2 && NbComp != 3) return GF_BAD_PARAM;
++ 
++      //only 2 or 3 comp in the quantized version
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..45ad6bc2cb29ff42624949968473aaf0e60d6672
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++From 4ade98128cbc41d5115b97a41ca2e59529c8dd5f Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Wed, 4 Jan 2023 11:31:29 +0100
++Subject: [PATCH] fixed #2365
++
++---
++ src/laser/lsr_dec.c | 6 +++---
++ 1 file changed, 3 insertions(+), 3 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/laser/lsr_dec.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/laser/lsr_dec.c
+++++ gpac-1.0.1+dfsg1/src/laser/lsr_dec.c
++@@ -1483,8 +1483,8 @@ static void lsr_read_rare_full(GF_LASeRC
++                      } else {
++                              da->type=SVG_STROKEDASHARRAY_ARRAY;
++                              da->array.count = lsr_read_vluimsbf5(lsr, "len");
++-                             da->array.vals = (Fixed*)gf_malloc(sizeof(Fixed)*da->array.count);
++-                             da->array.units = (u8*)gf_malloc(sizeof(u8)*da->array.count);
+++                                da->array.vals = (Fixed*)gf_realloc(da->array.vals, sizeof(Fixed)*da->array.count);
+++                                da->array.units = (u8*)gf_realloc(da->array.units, sizeof(u8)*da->array.count);
++                              for (j=0; j<da->array.count; j++) {
++                                      da->array.vals[j] = lsr_read_fixed_16_8(lsr, "dash");
++                                      da->array.units[j] = 0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0f3e2e32747006bc12cba3b7677588745c6766ac
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,51 @@@
++From 6f28c4cd607d83ce381f9b4a9f8101ca1e79c611 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 22 May 2023 17:35:19 +0200
++Subject: [PATCH] fixed #2473
++
++---
++ src/utils/xml_parser.c | 13 +++++++++++--
++ 1 file changed, 11 insertions(+), 2 deletions(-)
++
++diff --git a/src/utils/xml_parser.c b/src/utils/xml_parser.c
++index b1b149152..49df33816 100644
++--- a/src/utils/xml_parser.c
+++++ b/src/utils/xml_parser.c
++@@ -191,6 +191,7 @@ struct _tag_sax_parser
++      GF_XMLAttribute *attrs;
++      GF_XMLSaxAttribute *sax_attrs;
++      u32 nb_attrs, nb_alloc_attrs;
+++     u32 ent_rec_level;
++ };
++ 
++ static GF_XMLSaxAttribute *xml_get_sax_attribute(GF_SAXParser *parser)
++@@ -902,7 +903,14 @@ restart:
++                                              parser->line_size = 0;
++                                              parser->elt_start_pos = 0;
++                                              parser->sax_state = SAX_STATE_TEXT_CONTENT;
++-                                             e = gf_xml_sax_parse_intern(parser, orig_buf);
+++                                             parser->ent_rec_level++;
+++                                             if (parser->ent_rec_level>100) {
+++                                                     GF_LOG(GF_LOG_WARNING, GF_LOG_CORE, ("[XML] Too many recursions in entity solving, max 100 allowed\n"));
+++                                                     e = GF_NOT_SUPPORTED;
+++                                             } else {
+++                                                     e = gf_xml_sax_parse_intern(parser, orig_buf);
+++                                                     parser->ent_rec_level--;
+++                                             }
++                                              gf_free(orig_buf);
++                                              return e;
++                                      }
++@@ -1075,8 +1083,9 @@ static GF_Err gf_xml_sax_parse_intern(GF_SAXParser *parser, char *current)
++              /*append entity*/
++              line_num = parser->line;
++              xml_sax_append_string(parser, ent->value);
++-             xml_sax_parse(parser, GF_TRUE);
+++             GF_Err e = xml_sax_parse(parser, GF_TRUE);
++              parser->line = line_num;
+++             if (e) return e;
++ 
++      }
++      xml_sax_append_string(parser, current);
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..56b1a92f3c68c9a772412c2fca85d4c85dd0e5ae
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From c88df2e202efad214c25b4e586f243b2038779ba Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 22 May 2023 17:40:44 +0200
++Subject: [PATCH] fixed #2475
++
++---
++ src/filter_core/filter_session.c | 3 +++
++ 1 file changed, 3 insertions(+)
++
++diff --git a/src/filter_core/filter_session.c b/src/filter_core/filter_session.c
++index 1cee6fd45..bcef8cfc0 100644
++--- a/src/filter_core/filter_session.c
+++++ b/src/filter_core/filter_session.c
++@@ -4145,6 +4145,9 @@ GF_Err gf_filter_get_stats(GF_Filter *f, GF_FilterStats *stats)
++              if ((f->num_input_pids!=1) && f->num_output_pids)
++                      continue;
++ 
+++             if (!pidi->pid)
+++                     continue;
+++
++              if (!stats->codecid)
++                      stats->codecid = pidi->pid->codecid;
++              if (!stats->stream_type)
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0c978455f92410ffb0814a19ec71f8dfc1266be1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++From 047f96fb39e6bf70cb9f344093f5886e51dce0ac Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 22 May 2023 17:48:08 +0200
++Subject: [PATCH] fixed #2476
++
++---
++ src/filters/reframe_nalu.c | 11 +++++++----
++ 1 file changed, 7 insertions(+), 4 deletions(-)
++
++Index: gpac-1.0.1+dfsg1/src/filters/reframe_nalu.c
++===================================================================
++--- gpac-1.0.1+dfsg1.orig/src/filters/reframe_nalu.c
+++++ gpac-1.0.1+dfsg1/src/filters/reframe_nalu.c
++@@ -1105,10 +1105,14 @@ void naludmx_create_avc_decoder_config(G
++                                      else
++                                              DeltaTfiDivisorIdx = (ctx->avc_state->sei.pic_timing.pic_struct+1) / 2;
++                              }
++-                             if (!ctx->timescale && sps->vui.time_scale && sps->vui.num_units_in_tick) {
++-                                     ctx->cur_fps.num = 2 * sps->vui.time_scale;
++-                                     ctx->cur_fps.den = 2 * sps->vui.num_units_in_tick * DeltaTfiDivisorIdx;
++ 
+++                             if (!ctx->timescale) {
+++                                        u32 fps_num = 2 * sps->vui.time_scale;
+++                                        u32 fps_den = 2 * sps->vui.num_units_in_tick * DeltaTfiDivisorIdx;
+++                                        if (fps_num && fps_den) {
+++                                                ctx->cur_fps.num = fps_num;
+++                                                ctx->cur_fps.den = fps_den;
+++                                        }
++                                      if (!ctx->fps.num && ctx->dts==ctx->fps.den)
++                                              ctx->dts = ctx->cur_fps.den;
++                              }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..221dccd1f8544beb326109d98620f1ec90fdb9b1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From ba59206b3225f0e8e95a27eff41cb1c49ddf9a37 Mon Sep 17 00:00:00 2001
++From: jeanlf <jeanlf@gpac.io>
++Date: Mon, 22 May 2023 17:37:24 +0200
++Subject: [PATCH] fixed #2474
++
++---
++ src/isomedia/movie_fragments.c | 3 ++-
++ 1 file changed, 2 insertions(+), 1 deletion(-)
++
++diff --git a/src/isomedia/movie_fragments.c b/src/isomedia/movie_fragments.c
++index b742078d1..41d0717a4 100644
++--- a/src/isomedia/movie_fragments.c
+++++ b/src/isomedia/movie_fragments.c
++@@ -2876,7 +2876,8 @@ GF_Err gf_isom_fragment_add_sample_ex(GF_ISOFile *movie, GF_ISOTrackID TrackID,
++      //rewrite OD frames
++      if (traf->trex->track->Media->handler->handlerType == GF_ISOM_MEDIA_OD) {
++              //this may fail if dependencies are not well done ...
++-             Media_ParseODFrame(traf->trex->track->Media, sample, &od_sample);
+++             GF_Err e = Media_ParseODFrame(traf->trex->track->Media, sample, &od_sample);
+++             if (!od_sample) return e;
++              sample = od_sample;
++      }
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bf66a6f2f24713db7d2b31b096ca885d5176087b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,16 @@@
++Description: Don't fail build intentionally on unknown systems
++Author: Balint Reczey <balint@balintreczey.hu>
++
++--- a/include/gpac/configuration.h
+++++ b/include/gpac/configuration.h
++@@ -188,8 +188,8 @@
++ #define GPAC_HAS_JPEG
++ #define GPAC_HAS_PNG
++ 
++-#else
++-#error "Unknown target platform used with static configuration file"
+++//#else
+++//#error "Unknown target platform used with static configuration file"
++ #endif
++ 
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9900a01608f6fddaafe75c86988eb0d7303fced0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++Subject: Add -O2 to CFLAGS by default, -O0 if noopt is set.
++Author: Alessio Treglia <alessio@debian.org>
++Forwarded: not-needed
++---
++ configure |    4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++--- a/configure
+++++ b/configure
++@@ -365,7 +365,7 @@
++             ;;
++         --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
++             ;;
++-        --enable-debug) debuginfo="yes"; no_gcc_opt="yes"
+++        --enable-debug) debuginfo="yes";
++             ;;
++         --disable-opt) no_gcc_opt="yes"
++             ;;
++@@ -708,7 +708,7 @@
++ 
++ #GCC opt
++ if test "$no_gcc_opt" = "no"; then
++-    CFLAGS="-O3 $CFLAGS"
+++    CFLAGS="-O2 $CFLAGS"
++ else
++     CFLAGS="-O0 $CFLAGS"
++ fi
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8a8811684e392da12aaaf150245197cc21efdf1c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,114 @@@
++gcc-optflags.patch
++dont-err-build-on-uknown-system.patch
++CVE-2021-30014_CVE-2021-30020_CVE-2021-30022.patch
++CVE-2020-35979.patch
++CVE-2020-35980.patch
++CVE-2020-35981.patch
++CVE-2020-35982.patch
++CVE-2021-28300.patch
++CVE-2021-29279.patch
++CVE-2021-31255.patch
++CVE-2021-31256.patch
++CVE-2021-31261.patch
++CVE-2021-30015.patch
++CVE-2021-30019.patch
++CVE-2021-30199.patch
++CVE-2021-31257.patch
++CVE-2021-31258.patch
++CVE-2021-31260.patch
++CVE-2021-31262.patch
++talos-2021-1297.patch
++talos-2021-1298.patch
++talos-2021-1299.patch
++talos-2021-1297-2.patch
++CVE-2021-4043.patch
++CVE-2021-36412.patch
++CVE-2021-36414.patch
++CVE-2021-36417.patch
++CVE-2021-40559.patch
++CVE-2021-40562.patch
++CVE-2021-40563.patch
++CVE-2021-40564.patch
++CVE-2021-40565.patch
++CVE-2021-40566.patch
++CVE-2021-40567.patch
++CVE-2021-40568.patch
++CVE-2022-47659.patch
++CVE-2021-40569.patch
++CVE-2021-40570.patch
++CVE-2021-40571.patch
++CVE-2021-40572.patch
++CVE-2021-40574.patch
++CVE-2021-40575.patch
++CVE-2021-40576_40606_40609.patch
++CVE-2021-40592.patch
++CVE-2021-40607.patch
++CVE-2021-40608.patch
++CVE-2021-40944.patch
++CVE-2021-41456.patch
++CVE-2021-41457.patch
++CVE-2021-41459.patch
++CVE-2021-33361.patch
++CVE-2021-33363.patch
++CVE-2021-33364.patch
++CVE-2021-33365.patch
++CVE-2021-33366.patch
++CVE-2021-45262.patch
++CVE-2021-45263.patch
++CVE-2021-45267.patch
++CVE-2021-45291.patch
++CVE-2021-45292.patch
++CVE-2021-45297.patch
++CVE-2021-45760.patch
++CVE-2021-45762.patch
++CVE-2021-45763.patch
++CVE-2021-45764.patch
++CVE-2021-45767.patch
++CVE-2021-45831.patch
++CVE-2021-46038to46046_46049_46051.patch
++CVE-2021-46047.patch
++CVE-2022-45202.patch
++CVE-2022-1035.patch
++CVE-2022-1222.patch
++CVE-2022-1441.patch
++CVE-2022-1795.patch
++CVE-2022-2454.patch
++CVE-2022-3222.patch
++CVE-2022-3957.patch
++CVE-2022-4202.patch
++CVE-2022-24574.patch
++CVE-2022-24577.patch
++CVE-2022-24578.patch
++CVE-2022-26967_partial.patch
++CVE-2022-27145.patch
++CVE-2022-27147.patch
++CVE-2022-29537.patch
++CVE-2022-36190_36191.patch
++CVE-2022-38530.patch
++CVE-2022-43255.patch
++CVE-2022-45283.patch
++CVE-2022-45343.patch
++CVE-2022-47086.patch
++CVE-2022-47091.patch
++CVE-2022-47094.patch
++CVE-2022-47095.patch
++CVE-2022-47657.patch
++CVE-2022-47660.patch
++CVE-2022-47661.patch
++CVE-2022-47662.patch
++CVE-2022-47663.patch
++CVE-2023-0770.patch
++CVE-2023-0818.patch
++CVE-2023-0819.patch
++CVE-2023-0866.patch
++CVE-2023-1448.patch
++CVE-2023-1449.patch
++CVE-2023-1452.patch
++CVE-2023-1654.patch
++CVE-2023-2837.patch
++CVE-2023-2838.patch
++CVE-2023-2839.patch
++CVE-2023-2840.patch
++CVE-2023-23143.patch
++CVE-2023-23144.patch
++CVE-2023-23145.patch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..43b69e139a4966b64d865bd02528df125cdaef42
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++Backport of https://github.com/gpac/gpac/commit/592ba2689a3f2fc787371eda490fde4f84e60315
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/box_code_base.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/box_code_base.c
++@@ -5509,7 +5509,7 @@ GF_Err stss_box_read(GF_Box *s, GF_BitSt
++ 
++      ISOM_DECREASE_SIZE(ptr, 4);
++      ptr->nb_entries = gf_bs_read_u32(bs);
++-     if (ptr->size <  ptr->nb_entries * 4) {
+++     if (ptr->size <  ptr->nb_entries * 4 || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(u32)) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in stss\n", ptr->nb_entries));
++              return GF_ISOM_INVALID_FILE;
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e275d40c0adf601d464e894f94e02d38413d39e5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,152 @@@
++Backport of https://github.com/gpac/gpac/commit/b515fd04f5f00f4a99df741042f1efb31ad56351
++https://talosintelligence.com/vulnerability_reports/TALOS-2021-1297
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/box_code_base.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/box_code_base.c
++@@ -46,7 +46,7 @@ GF_Err co64_box_read(GF_Box *s,GF_BitStr
++ 
++      ISOM_DECREASE_SIZE(ptr, 4)
++ 
++-     if (ptr->nb_entries > ptr->size / 8) {
+++     if ((u64)ptr->nb_entries > ptr->size / 8 || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(u64)) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in co64\n", ptr->nb_entries));
++              return GF_ISOM_INVALID_FILE;
++      }
++@@ -392,7 +392,7 @@ GF_Err ctts_box_read(GF_Box *s, GF_BitSt
++      ISOM_DECREASE_SIZE(ptr, 4);
++      ptr->nb_entries = gf_bs_read_u32(bs);
++ 
++-     if (ptr->nb_entries > ptr->size / 8) {
+++     if (ptr->nb_entries > ptr->size / 8 || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(GF_DttsEntry) ) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in ctts\n", ptr->nb_entries));
++              return GF_ISOM_INVALID_FILE;
++      }
++@@ -3194,6 +3194,10 @@ GF_Err tfra_box_read(GF_Box *s, GF_BitSt
++      }
++ 
++      if (ptr->nb_entries) {
+++             if ((u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(GF_RandomAccessEntry)) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in traf\n", ptr->nb_entries));
+++                     return GF_ISOM_INVALID_FILE;
+++             }
++              p = (GF_RandomAccessEntry *) gf_malloc(sizeof(GF_RandomAccessEntry) * ptr->nb_entries);
++              if (!p) return GF_OUT_OF_MEM;
++      }
++@@ -5104,7 +5108,7 @@ GF_Err stco_box_read(GF_Box *s, GF_BitSt
++ 
++      ISOM_DECREASE_SIZE(ptr, 4);
++      ptr->nb_entries = gf_bs_read_u32(bs);
++-     if (ptr->nb_entries > ptr->size / 4) {
+++     if (ptr->nb_entries > ptr->size / 4 || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(u32)) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in stco\n", ptr->nb_entries));
++              return GF_ISOM_INVALID_FILE;
++      }
++@@ -5236,7 +5240,7 @@ GF_Err stsc_box_read(GF_Box *s, GF_BitSt
++      ISOM_DECREASE_SIZE(ptr, 4);
++      ptr->nb_entries = gf_bs_read_u32(bs);
++ 
++-     if (ptr->nb_entries > ptr->size / 12) {
+++     if (ptr->nb_entries > ptr->size / 12 || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(GF_StscEntry)) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in stsc\n", ptr->nb_entries));
++              return GF_ISOM_INVALID_FILE;
++      }
++@@ -5575,6 +5579,10 @@ GF_Err stsz_box_read(GF_Box *s, GF_BitSt
++                      }
++              }
++      }
+++     if (ptr->sampleCount && (u64)ptr->sampleCount > (u64)SIZE_MAX/sizeof(u32)) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in stsz\n", ptr->sampleCount));
+++             return GF_ISOM_INVALID_FILE;
+++     }
++      if (s->type == GF_ISOM_BOX_TYPE_STSZ) {
++              if (! ptr->sampleSize && ptr->sampleCount) {
++                      if (ptr->sampleCount > ptr->size / 4) {
++@@ -5779,7 +5787,7 @@ GF_Err stts_box_read(GF_Box *s, GF_BitSt
++ 
++      ISOM_DECREASE_SIZE(ptr, 4);
++      ptr->nb_entries = gf_bs_read_u32(bs);
++-     if (ptr->size < ptr->nb_entries * 8) {
+++     if (ptr->size / 8 < ptr->nb_entries || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(GF_SttsEntry)) {
++              GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in stts\n", ptr->nb_entries));
++              return GF_ISOM_INVALID_FILE;
++      }
++@@ -7276,6 +7284,10 @@ GF_Err trun_box_read(GF_Box *s, GF_BitSt
++              if (ptr->sample_count * 4 > ptr->size) {
++                      ISOM_DECREASE_SIZE(ptr, ptr->sample_count*4);
++              }
+++             if ((u64)ptr->sample_count > (u64)SIZE_MAX/sizeof(GF_TrunEntry)) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of samples %d in trun\n", ptr->sample_count));
+++                     return GF_ISOM_INVALID_FILE;
+++             }
++              ptr->samples = gf_malloc(sizeof(GF_TrunEntry) * ptr->sample_count);
++              if (!ptr->samples) return GF_OUT_OF_MEM;
++              ptr->sample_alloc = ptr->nb_samples = ptr->sample_count;
++@@ -8786,7 +8798,7 @@ GF_Err ssix_box_read(GF_Box *s, GF_BitSt
++      ISOM_DECREASE_SIZE(ptr, 4)
++      ptr->subsegment_count = gf_bs_read_u32(bs);
++      //each subseg has at least one range_count (4 bytes), abort if not enough bytes (broken box)
++-     if (ptr->size < ptr->subsegment_count*4)
+++     if (ptr->size / 4 < ptr->subsegment_count || (u64)ptr->subsegment_count > (u64)SIZE_MAX/sizeof(GF_SubsegmentInfo))
++              return GF_ISOM_INVALID_FILE;
++ 
++      GF_SAFE_ALLOC_N(ptr->subsegments, ptr->subsegment_count, GF_SubsegmentInfo);
++@@ -8797,7 +8809,7 @@ GF_Err ssix_box_read(GF_Box *s, GF_BitSt
++              ISOM_DECREASE_SIZE(ptr, 4)
++              subseg->range_count = gf_bs_read_u32(bs);
++              //each range is 4 bytes, abort if not enough bytes
++-             if (ptr->size < subseg->range_count*4)
+++             if (ptr->size / 4 < subseg->range_count || (u64)subseg->range_count > (u64)SIZE_MAX/sizeof(GF_SubsegmentRangeInfo))
++                      return GF_ISOM_INVALID_FILE;
++              subseg->ranges = (GF_SubsegmentRangeInfo*) gf_malloc(sizeof(GF_SubsegmentRangeInfo) * subseg->range_count);
++              if (!subseg->ranges) return GF_OUT_OF_MEM;
++@@ -8979,6 +8991,11 @@ GF_Err pcrb_box_read(GF_Box *s,GF_BitStr
++      ISOM_DECREASE_SIZE(ptr, 4);
++      ptr->subsegment_count = gf_bs_read_u32(bs);
++ 
+++     if ((u64)ptr->subsegment_count > ptr->size / 8 || (u64)ptr->subsegment_count > (u64)SIZE_MAX/sizeof(u64)) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of subsegment %d in pcrb\n", ptr->subsegment_count));
+++             return GF_ISOM_INVALID_FILE;
+++     }
+++
++      ptr->pcr_values = gf_malloc(sizeof(u64)*ptr->subsegment_count);
++      if (!ptr->pcr_values) return GF_OUT_OF_MEM;
++      for (i=0; i<ptr->subsegment_count; i++) {
++@@ -9303,7 +9320,7 @@ GF_Err sbgp_box_read(GF_Box *s, GF_BitSt
++      }
++      ptr->entry_count = gf_bs_read_u32(bs);
++ 
++-     if (ptr->size < sizeof(GF_SampleGroupEntry)*ptr->entry_count)
+++     if (ptr->size < sizeof(GF_SampleGroupEntry)*ptr->entry_count || (u64)ptr->entry_count > (u64)SIZE_MAX/sizeof(GF_SampleGroupEntry))
++          return GF_ISOM_INVALID_FILE;
++ 
++      ptr->sample_entries = gf_malloc(sizeof(GF_SampleGroupEntry)*ptr->entry_count);
++@@ -9860,7 +9877,7 @@ GF_Err saio_box_read(GF_Box *s, GF_BitSt
++ 
++      if (ptr->entry_count) {
++              u32 i;
++-             if (ptr->size < (ptr->version == 0 ? 4 : 8) * ptr->entry_count)
+++             if (ptr->size / (ptr->version == 0 ? 4 : 8) < ptr->entry_count || (u64)ptr->entry_count > (u64)SIZE_MAX/sizeof(u64))
++                      return GF_ISOM_INVALID_FILE;
++              ptr->offsets = gf_malloc(sizeof(u64)*ptr->entry_count);
++              if (!ptr->offsets)
++@@ -10368,7 +10385,7 @@ GF_Err fpar_box_read(GF_Box *s, GF_BitSt
++ 
++      ISOM_DECREASE_SIZE(ptr, (ptr->version ? 4 : 2) );
++      ptr->nb_entries = gf_bs_read_int(bs, ptr->version ? 32 : 16);
++-     if (ptr->nb_entries > UINT_MAX / 6)
+++     if (ptr->nb_entries > ptr->size / 6 || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(FilePartitionEntry))
++              return GF_ISOM_INVALID_FILE;
++ 
++      ISOM_DECREASE_SIZE(ptr, ptr->nb_entries * 6 );
++@@ -10454,6 +10471,11 @@ GF_Err fecr_box_read(GF_Box *s, GF_BitSt
++      ISOM_DECREASE_SIZE(ptr, (ptr->version ? 4 : 2) );
++      ptr->nb_entries = gf_bs_read_int(bs, ptr->version ? 32 : 16);
++ 
+++     if (ptr->nb_entries > ptr->size / (ptr->version ? 8 : 6) || (u64)ptr->nb_entries > (u64)SIZE_MAX/sizeof(FECReservoirEntry) ) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid number of entries %d in fecr\n", ptr->nb_entries));
+++             return GF_ISOM_INVALID_FILE;
+++     }
+++
++      ISOM_DECREASE_SIZE(ptr, ptr->nb_entries * (ptr->version ? 8 : 6) );
++      GF_SAFE_ALLOC_N(ptr->entries, ptr->nb_entries, FECReservoirEntry);
++      if (!ptr->entries) return GF_OUT_OF_MEM;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..573b6c57b7236b734974810f22863c75d708a7b7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,57 @@@
++Backport of https://github.com/gpac/gpac/commit/8cd33e8977fd5f4215e4b67c309fd403762bfeb7
++
++https://talosintelligence.com/vulnerability_reports/TALOS-2021-1298
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/box_code_base.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/box_code_base.c
++@@ -1653,17 +1653,23 @@ GF_Err hdlr_box_read(GF_Box *s, GF_BitSt
++      gf_bs_set_cookie(bs, cookie);
++ 
++      if (ptr->size) {
++-             ptr->nameUTF8 = (char*)gf_malloc((u32) ptr->size);
+++             u32 name_size = (u32) ptr->size;
+++             if (name_size < 1) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid size %llu in hdlr\n", ptr->size));
+++                     return GF_ISOM_INVALID_FILE;
+++             }
+++             ptr->nameUTF8 = (char*)gf_malloc(name_size);
++              if (!ptr->nameUTF8) return GF_OUT_OF_MEM;
++-             gf_bs_read_data(bs, ptr->nameUTF8, (u32) ptr->size);
+++             gf_bs_read_data(bs, ptr->nameUTF8, name_size);
++ 
++              //patch for old QT files - we cannot rely on checking if str[0]==len(str+1) since we may have
++              //cases where the first character of the string decimal value is indeed the same as the string length!!
++              //we had this issue with encryption_import test
++              //we therefore only check if last char is null, and if not so assume old QT style
++-             if (ptr->nameUTF8[ptr->size-1]) {
++-                     memmove(ptr->nameUTF8, ptr->nameUTF8+1, sizeof(char) * (u32) (ptr->size-1) );
++-                     ptr->nameUTF8[ptr->size-1] = 0;
+++             if (ptr->nameUTF8[name_size-1]) {
+++                     if (name_size > 1)
+++                             memmove(ptr->nameUTF8, ptr->nameUTF8+1, sizeof(char) * (u32) (name_size-1) );
+++                     ptr->nameUTF8[name_size-1] = 0;
++                      ptr->store_counted_string = GF_TRUE;
++              }
++      }
++@@ -6687,6 +6693,10 @@ GF_Err stri_box_read(GF_Box *s, GF_BitSt
++      ptr->alternate_group = gf_bs_read_u16(bs);
++      ptr->sub_track_id = gf_bs_read_u32(bs);
++      ptr->attribute_count = ptr->size / 4;
+++     if ((u64)ptr->attribute_count > (u64)SIZE_MAX/sizeof(u32)) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid size %llu in stri\n", ptr->size));
+++             return GF_ISOM_INVALID_FILE;
+++     }
++      GF_SAFE_ALLOC_N(ptr->attribute_list, (size_t)ptr->attribute_count, u32);
++      if (!ptr->attribute_list) return GF_OUT_OF_MEM;
++      for (i = 0; i < ptr->attribute_count; i++) {
++@@ -10972,6 +10982,10 @@ GF_Err trik_box_read(GF_Box *s,GF_BitStr
++      u32 i;
++      GF_TrickPlayBox *ptr = (GF_TrickPlayBox *) s;
++      ptr->entry_count = (u32) ptr->size;
+++     if ((u64)ptr->entry_count > (u64)SIZE_MAX/sizeof(GF_TrickPlayBoxEntry)) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid size %llu in trik\n", ptr->size));
+++             return GF_ISOM_INVALID_FILE;
+++     }
++      ptr->entries = (GF_TrickPlayBoxEntry *) gf_malloc(ptr->entry_count * sizeof(GF_TrickPlayBoxEntry) );
++      if (!ptr->entries) return GF_OUT_OF_MEM;
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..51f5378a0d9fefd034dce363bbf71ab20cafc588
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,75 @@@
++Backport of https://github.com/gpac/gpac/commit/bbd741e0e5a6e7e1e90a73c350acc061dde9450b
++
++NOTE: https://talosintelligence.com/vulnerability_reports/TALOS-2021-1299
++
++--- gpac-1.0.1+dfsg1.orig/src/isomedia/box_code_base.c
+++++ gpac-1.0.1+dfsg1/src/isomedia/box_code_base.c
++@@ -577,10 +577,15 @@ GF_Err url_box_read(GF_Box *s, GF_BitStr
++      GF_DataEntryURLBox *ptr = (GF_DataEntryURLBox *)s;
++ 
++      if (ptr->size) {
++-             ptr->location = (char*)gf_malloc((u32) ptr->size);
+++             u32 location_size = (u32) ptr->size;
+++             if (location_size < 1) {
+++                     GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid size %llu in svhd box\n", ptr->size));
+++                     return GF_ISOM_INVALID_FILE;
+++             }
+++             ptr->location = (char*)gf_malloc(location_size);
++              if (! ptr->location) return GF_OUT_OF_MEM;
++-             gf_bs_read_data(bs, ptr->location, (u32)ptr->size);
++-             if (ptr->location[ptr->size-1]) {
+++             gf_bs_read_data(bs, ptr->location, location_size);
+++             if (ptr->location[location_size-1]) {
++                      GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] url box location is not 0-terminated\n" ));
++                      return GF_ISOM_INVALID_FILE;
++              }
++@@ -1894,6 +1899,12 @@ GF_Err sdp_box_read(GF_Box *s, GF_BitStr
++      if (ptr == NULL) return GF_BAD_PARAM;
++ 
++      length = (u32) (ptr->size);
+++
+++     if (length >= (u32)0xFFFFFFFF) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid length %lu in sdp box\n", length));
+++             return GF_ISOM_INVALID_FILE;
+++     }
+++
++      //sdp text has no delimiter !!!
++      ptr->sdpText = (char*)gf_malloc(sizeof(char) * (length+1));
++      if (!ptr->sdpText) return GF_OUT_OF_MEM;
++@@ -1951,6 +1962,12 @@ GF_Err rtp_hnti_box_read(GF_Box *s, GF_B
++      ptr->subType = gf_bs_read_u32(bs);
++ 
++      length = (u32) (ptr->size);
+++
+++     if (length >= (u32)0xFFFFFFFF) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid length %lu in rtp_hnti box\n", length));
+++             return GF_ISOM_INVALID_FILE;
+++     }
+++
++      //sdp text has no delimiter !!!
++      ptr->sdpText = (char*)gf_malloc(sizeof(char) * (length+1));
++      if (!ptr->sdpText) return GF_OUT_OF_MEM;
++@@ -2614,6 +2631,12 @@ GF_Err name_box_read(GF_Box *s, GF_BitSt
++      GF_NameBox *ptr = (GF_NameBox *)s;
++ 
++      length = (u32) (ptr->size);
+++
+++     if (length >= (u32)0xFFFFFFFF) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid length %lu in name box\n", length));
+++             return GF_ISOM_INVALID_FILE;
+++     }
+++
++      ptr->string = (char*)gf_malloc(sizeof(char) * (length+1));
++      if (! ptr->string) return GF_OUT_OF_MEM;
++ 
++@@ -8437,6 +8460,10 @@ void txtc_box_del(GF_Box *s)
++ GF_Err txtc_box_read(GF_Box *s, GF_BitStream *bs)
++ {
++      GF_TextConfigBox *ptr = (GF_TextConfigBox*)s;
+++     if ((u32)ptr->size >= (u32)0xFFFFFFFF) {
+++             GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[iso file] Invalid size %llu in txtc box\n", ptr->size));
+++             return GF_ISOM_INVALID_FILE;
+++     }
++      ptr->config = (char *)gf_malloc(sizeof(char)*((u32) ptr->size+1));
++      if (!ptr->config) return GF_OUT_OF_MEM;
++      gf_bs_read_data(bs, ptr->config, (u32) ptr->size);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5718cd7c930bda37289149b72fdb8f3d67c2bf90
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++SUFFIX=~dfsg1
++rm debian/
++rm build/
++rm \
++ applications/hbbtvplayer \
++ applications/mp4box_android/ \
++ applications/osmo4_android/ \
++ applications/osmo4_ios/ \
++ applications/osmo4_sym/ \
++ applications/osmo4_w32/ \
++ applications/osmo4_wce/ \
++ applications/osmo4_wx/ \
++ applications/osmophone/ \
++ applications/osmozilla/ \
++ applications/GPAX/ \
++ applications/v4studio/ \
++ extra_lib/include/ \
++ modules/xvid_dec/xvid_wce/ \
++ gui/mpegu-core.js \
++ gui/mpegu-wm.js \
++ regression_tests/xmlin4/anim.swf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7639187e54975e8a79b8f696bc6951ac2211db5f
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,165 @@@
++#!/bin/sh
++
++# see the repack.stub for how to use
++
++# TODO: provide example watch files and repack.locals
++# TODO: test suite. problems fixed that need to be tested:
++# * globbing
++# * whitespace and then comments in the MANIFEST
++# TODO: does / in weird places work? test suite too.
++# TODO: I actually broke stuff with the MANIFEST change not thinking..
++# TODO: allow for a sepearate (and multiple) MANIFEST files, then
++# de-uglify libsyntax-highlight-engine-kate-perl.
++# TODO: have each mv and rm check that something actually changed, and
++# if not, die
++
++set -e
++set -u
++
++usage() {
++    echo "Usage: repack.sh --upstream-version <ver> <downloaded file>"
++    exit 1
++}
++
++if [ "$#" != "3" ]; then
++    usage
++fi
++if [ "$1" != "--upstream-version" ]; then
++    usage
++fi
++if [ ! -f "$3" ]; then
++    if [ -n "$3" ]; then
++        echo "$3 doesn't exist"
++    fi
++    usage
++fi
++VER="$2"
++FILE="$3"
++PKG=`dpkg-parsechangelog|grep ^Source:|sed 's/^Source: //'`
++
++SUFFIX="+dfsg"
++
++echo
++echo "Repackaging $FILE"
++echo
++
++DIR=`mktemp -d ./tmpRepackXXXXXX`
++DIR=$(readlink -f "$DIR")
++trap "/bin/rm -rf \"$DIR\"" QUIT INT EXIT
++
++# Create an extra directory to cope with rootless tarballs
++UP_BASE="$DIR/unpack"
++mkdir "$UP_BASE"
++tar xf "$FILE" -C "$UP_BASE" || unzip "$FILE" -d "$UP_BASE"
++
++if [ `ls -1 "$UP_BASE" | wc -l` -eq 1 ]; then
++      # Tarball does contain a root directory
++      UP_BASE="$UP_BASE/`ls -1 "$UP_BASE"`"
++fi
++
++RM_OPTS="-vrf"
++
++real_rm(){
++    /bin/rm "$@"
++}
++
++real_mv(){
++    /bin/mv "$@"
++}
++
++rm(){
++    set +f
++    MYOLDPWD=$(pwd)
++    cd "$UP_BASE"
++    if [ "$MANIFEST" = "1" ]; then
++        PERM=$(stat --format=%a "MANIFEST")
++        chmod u+w "MANIFEST"
++    fi
++    for i in $@; do
++        if [ "$MANIFEST" = "1" ]; then
++            PATTERN="^$i"
++            if [ -d "$i" ]; then
++                if ! { echo "$PATTERN" | grep -q "/$" ; }; then
++                    PATTERN="${PATTERN}/"
++                fi
++            else
++                PATTERN="${PATTERN}\s?"
++            fi
++            grep -Ev "$PATTERN" "MANIFEST" > "$DIR/MANIFEST"
++            real_mv "$DIR/MANIFEST" "MANIFEST"
++        fi
++        real_rm "$RM_OPTS" "$i"
++    done
++    if [ "$MANIFEST" = "1" ]; then
++        chmod $PERM "MANIFEST"
++    fi
++    cd $MYOLDPWD
++    set -f
++}
++
++mv(){
++    set +f
++    OLD=$(pwd)
++    cd $UP_BASE
++    real_mv "$@"
++    cd $OLD
++    if [ "$MANIFEST" = "1" ]; then
++        echo "MANIFEST cannot be manipulated with mv yet, patches welcome"
++        exit 1
++    fi
++    set -f
++}
++
++# bump with incompatible changes
++REPACK_VERSION=3
++
++requires_version(){
++    if [ $REPACK_VERSION -lt $1 ]; then
++        echo "repack.sh is not up to date enough for this package. you need at least version $1, while this script is only version $REPACK_VERSION"
++        exit 1
++    fi
++}
++
++MANIFEST=0
++## Remove stuff
++set -f
++MYORIGPWD=$(pwd)
++cd "$UP_BASE"
++. "$MYORIGPWD/debian/repack.local"
++cd $MYORIGPWD
++set +f
++## End
++
++REPACK_DIR="$PKG-${VER}${SUFFIX}.orig" # DevRef ยง 6.7.8.2
++DFSG_TAR="$(dirname $FILE)/${PKG}_${VER}${SUFFIX}.orig.tar"
++
++real_mv "$UP_BASE" "$DIR/$REPACK_DIR"
++
++# .gz or .bz2?
++FILETYPE=$(file --brief --mime-type --dereference "$FILE")
++case "$FILETYPE" in
++    application/x-gzip|application/zip)
++        C_PROGRAM="gzip"
++        C_SUFFIX="gz"
++        ;;
++    application/x-xz)
++        C_PROGRAM="xz"
++        C_SUFFIX="xz"
++        ;;
++    application/x-bzip2)
++        C_PROGRAM="bzip2"
++        C_SUFFIX="bz2"
++        ;;
++    *)
++        echo "E: Unknown filetye $FILETYPE"
++        exit 1
++        ;;
++esac
++    
++# Using a pipe hides tar errors!
++tar cfC "$DIR/repacked.tar" "$DIR" "$REPACK_DIR"
++$C_PROGRAM -9 < "$DIR/repacked.tar" > "$DIR/repacked.tar.$C_SUFFIX"
++
++real_mv "$DIR/repacked.tar.$C_SUFFIX" "$DFSG_TAR.$C_SUFFIX"
++
++echo "*** $DFSG_TAR.$C_SUFFIX ready"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ac56520a0b0d9bd9e6413fe9c86b76408a2f46a5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,82 @@@
++#!/bin/sh
++
++: <<=cut
++=pod
++
++=head1 NAME
++
++repack.stub - script to repack upstream tarballs from uscan
++
++=head1 INSTRUCTIONS
++
++put this in debian/repack.stub and add "debian sh debian/repack.stub" to
++the end of the line in debian/watch. you will also need to add a version
++mangle to debian/watch.
++
++then create a debian/repack.local. this is a shell script that is
++sources under "set -e", so be careful to check returns codes.
++
++=head1 FUNCTIONS
++
++=over 4
++
++=item rm
++
++rm is replaced by a function that does some magic ("rm -rv" by default), but also changes MANIFEST if $MANIFEST is 1
++
++=item mv
++
++mv is replaced by a function that just does mv (by default), but also changes MANIFEST if $MANIFEST is 1
++
++=item requires_version
++
++requires_version is there for future usage for requiring certain versions of the script
++
++=back
++
++=head1 VARIABLES
++
++=over 4
++
++=item SUFFIX
++
++defaults to +dfsg
++
++what to append to the upstream version
++
++=item RM_OPTS
++
++defaults to -vrf
++
++options to pass to rm
++
++=item MANIFEST
++
++defaults to 0, set to 1 to turn on.
++
++this will manipulate MANIFEST files in CPAN tarballs.
++
++=item UP_BASE
++
++this is the directory where the upstream source is.
++
++=back
++
++=cut
++
++if [ -z "$REPACK_SH" ]; then
++    if [ -f ../../scripts/repack.sh ]; then
++        REPACK_SH=../../scripts/repack.sh
++    fi
++    if [ -z "$REPACK_SH" ] && which repack.sh > /dev/null; then
++        REPACK_SH=$(which repack.sh)
++    fi
++fi
++
++if [ ! -f "$REPACK_SH" ]; then
++    echo "Couldn't find a repack.sh. please put it in your PATH, put it at ../../scripts/repack.sh, or put it somewhere else and set the REPACK_SH variable"
++    echo "You can get it from http://svn.debian.org/viewsvn/pkg-perl/scripts/repack.sh"
++    exit 1
++fi
++
++exec "$REPACK_SH" "$@"
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2e15493276a3a30509cc01998c3b1aa5c48a0f28
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,55 @@@
++#!/usr/bin/make -f
++
++include /usr/share/dpkg/architecture.mk
++include /usr/share/dpkg/buildflags.mk
++include /usr/share/dpkg/pkg-info.mk
++
++ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
++DEB_CONFIGURE_EXTRA_FLAGS = --disable-opt
++endif
++
++ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
++DEB_EXTRA_CONFIGURE_FLAGS += --cross-prefix=${DEB_HOST_GNU_TYPE}-
++endif
++
++ifneq (,$(filter $(DEB_HOST_ARCH), armel riscv64))
++  export DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed -latomic -Wl,--as-needed
++endif
++
++%:
++      dh $@
++
++override_dh_auto_configure:
++      dh_auto_configure -- \
++          --prefix=/usr \
++          --libdir=lib/$(DEB_HOST_MULTIARCH) \
++          --mandir=\$${prefix}/share/man \
++          --extra-cflags="-Wall -fPIC -DPIC -I/usr/include/mozjs -DXP_UNIX $(CPPFLAGS) $(CFLAGS)" \
++          --extra-ldflags="$(LDFLAGS)" \
++          --enable-joystick \
++          --enable-debug \
++          --disable-ssl \
++          --verbose \
++          $(DEB_EXTRA_CONFIGURE_FLAGS)
++      echo "#define GPAC_GIT_REVISION \"$(DEB_VERSION)\"" > include/gpac/revision.h
++      # workaround broken libav detection
++      sed -i 's,CONFIG_LIBAV=no,CONFIG_LIBAV=yes,' config.mak
++
++override_dh_auto_install:
++      $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
++      $(MAKE) install-lib DESTDIR=$(CURDIR)/debian/tmp
++
++override_dh_auto_clean:
++      dh_auto_clean || true
++
++override_dh_clean:
++      ## Remove Files-Excluded (when built from checkout or non-DFSG tarball):
++      $(RM) -rv `perl -0nE 'say $$1 if m{^Files\-Excluded\:\s*(.*?)(?:\n\n|Files:|Comment:)}sm;' debian/copyright | grep -v 'debian'`
++      dh_clean config.h bin/gcc/libgpac*
++      dh_clean gpac.pc include/gpac/revision.h share/gpac.desktop
++      find $(CURDIR) -name *.opic -delete
++
++get-orig-source:
++# Use external script
++      sh debian/repack.stub `$(dir $_)gpac-$@`
++#     uscan --force-download
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ce3cde2b4e09f4df64c516ccb1e406203125463b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++# The disclaimer in the source file is actually for the rfc2640.txt document, not the source file itself.
++gpac source: license-problem-non-free-RFC src/utils/unicode.c
++
++# This file does come with full source, just has an absurdly long line
++gpac source: source-is-missing share/vis/extern/BrowserLib/Core/Code/Convert.js line length is 2028 characters (>512)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..adf11285361ded0df9af66ee09b69a66583fef5a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++Bug-Database: https://github.com/gpac/gpac/issues
++Bug-Submit: https://github.com/gpac/gpac/issues/new
++Repository: https://github.com/gpac/gpac.git
++Repository-Browse: https://github.com/gpac/gpac
diff --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..31c7cd6cf144d32eb5a81ddd0bf529b8cde3410e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++version=4
++opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%gpac-$1.tar.gz%,\
++      dversionmangle=s/\.dfsg\d+//" \
++    https://github.com/gpac/gpac/tags \
++    (?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate