Files
gst-jpeg/gstjpeg_src/nv_headers/jpeglib.h
svcmobrel-release 6e35398c8b Updating prebuilts and/or headers
346e9b8b6d0a96f5bad1ac0e0f7f8ebc7cd510bd - gstjpeg_src/gst-jpeg/Makefile.umbrella.tmk
e24bdc385a587270eb801fffc818f334f785f737 - gstjpeg_src/gst-jpeg/README
14c13c2106a25f52b9220288add50989f483f79e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/missing
9ef8db6e7d0c85438248f392924368c83c09f800 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/gst-plugins-good.doap
1502fd3b57842d2693028f3d48dc5e1b36ba092b - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/configure
0ec08c5146b1d31c728c3ceb7ba90ac45a9f3972 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/config.rpath
acdf064749f4094ac83731d1ffe8cb2d86723682 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/RELEASE
35d3e80984baebe92302b12765c0ff086caa33fc - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/libgstnvjpeg.export
f42e42f9218a7c6e840bffe6004f963603fa57a2 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/Makefile.interface.tmk
7c32e10fed5a62435cda77ea2b1dccbc3d487569 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/configure.ac
f45e76a07ea4fb4fcd04e9f3d0013b4eb30042e4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/REQUIREMENTS
abe4c4205ad738bbfb5cbcd5a3191416ac5e4b58 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/test-driver
71e07f3be78211e06de8267a4d1eb417ecd56705 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/depcomp
840ee15a7cf4a4c13da75b0be23e55471f2668ea - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/gst-plugins-good.spec.in
8e5113f6f47ce34e0437c2105441dbb70f01491a - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/stamp-h.in
a44487c7be05b379700ff586c98fa92606594d66 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/Makefile.in
3a725fd4910c9b541a68992570459ec3c1e49504 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/autoregen.sh
ba05b9b5706647c270b76d9bad66485c1a61720e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/compile
ac33d77fa2fed4d2ea00546a4c8d6f365ddc84e8 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/autogen.sh
2afe6cf833176124cdb4a682269c56f55f799fa7 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/config.h.in
1b3b27c94812820968ac46dbffbdcca3a5f46e62 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/config.sub
7bd6824268f577a25b2eb06aa303f2622612f7c3 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ChangeLog
b50287b75a3b098301455e34c8d8e52a09fa8938 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ABOUT-NLS
e34ed57310337f2cf075e5950fde79882e4f2652 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/aclocal.m4
545f380fb332eb41236596500913ff8d582e3ead - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/COPYING
35261ee493b6e344e6e2fad6941b500b4ca731a5 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/gst-plugins-good.spec
017409759df2e86cfaeb2739970bef91a03ef852 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ltmain.sh
63a9c73c3c5854496318f8199cc05dc5263e6880 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/Makefile.tmk
b35a5c3fd2b1a5a55a3320c7cd12f17c2c8224b7 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/config.guess
664bbfb27be6eb13791003c4114d95a9c3d51ea1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/install-sh
016d81ea69d45c242ec7c4c47051da97d199aeb2 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/INSTALL
292df2da37730ec02aacdf86d5746cba14a5945f - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/Makefile.am
57201229cc2aebff6031ac85bfef7c8fc9d99152 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/README
afb78ca1253cd324b78fb8cee8ce7932199e24b8 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/NEWS
efb98b956bfd4500c84b080fe8821350c2bcc5fa - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/config.log
1039690ed2504e7d6ce6d594ae7fac4157482100 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/AUTHORS
b3d841322fe712862a95363182dd7d224f5ee8e7 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gtk-doc-plugins.mak
ffd85134520f03ab04f78d692ac43d447d5a333d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/check-exports
458997fe37773a676425af72a0c93251202c09b5 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/mangle-tmpl.py
6e7de85a067e4226c9e514d9f3632313b7da8cfb - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/extract-release-date-from-doap-file
a73cfcb8cb5dedc37cbe2bf101f60963428e10d0 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/c-to-xml.py
6a022f9d4213fef139ded46e9def02fc9568dba4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/scangobj-merge.py
30905c2891a7cefc183c15ac7e2f3df7fef050ce - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gst.supp
abd136152f2237ca77c4b7250ab25a891e37980e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gettext.patch
9f7ce930effb4edd1d6115e485fa9a85c9ff4b51 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/po.mak
7830a264b72884719cb0dfc49fb1c8002acec098 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/check.mak
8793fae1e41f0e817ba9d0b16bf6b22e535cd257 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/orc.mak
1578c0786417b5842499d845b61807b10f725cfe - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/parallel-subdirs.mak
38e131585e34cf73aaf5f3b7ad71d6f1c3a5789d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/release.mak
eb49c9cb7d744b949dd4f3c5eff05ea143cf1610 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/Makefile.in
1a6e3dd8d4c539e4e432251481da67baa1ea052e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gstdoc-scangobj
d939aa50f779c58ed162c02eafe85f14f396e04c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/win32.mak
ca9ec76873d7e5efcf0d8368b7266b51e1b8ca6d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/glib-gen.mak
c4f2a5f3407f4f36bf44a0a5efabe0b47ee1f7ff - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gst-autogen.sh
18682468d79c49bead6766e9c5862e4df74c01bf - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/ChangeLog
3410954e26e4c6ce8a486469ffcf3e3ffb7d9c70 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/upload-doc.mak
075de51935a7bf1467e25385fbba357d1909c0e2 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/cruft.mak
0677527e2e4691bf3a00051dda367bcc7f2be39c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/download-translations
0fc9d51ba37498b031af0d6d7708efecf48c89d4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gst-glib-gen.mak
288d571a3c69d2b7713ab7eb947557b3eab3e996 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/Makefile.am
197095691158025a9e9cadaeb840f9563d5ff867 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/README
13128372367f1615ec3cf1ace3894aaba4f69a9a - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gtk-doc.mak
eb61af55b4a055ae9c4d8d73ee044606e6d83433 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/gst-indent
4b16dd6416ddf1f69c77e5103703299d382dcb28 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/plugins.xsl
24b553f6168fba90313f2a48a8db7d033729f6ab - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/coverage/lcov.mak
3eb1de3555c0b8db592c6688a2906050695bc79c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/coverage/coverage-report.xsl
b2ce9d717992c7ee590ef18515bf77c873d06b7c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/coverage/coverage-report.pl
a1f778c2542a12364580737e6896b2c7d4fb3785 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/coverage/coverage-report-entry.pl
9e0e0bfdb0c150d6a42bcbce4e5f990275f3e2c4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-default.m4
5599ba5c7936730b1eba8d15db41864a7b54aa29 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-doc.m4
6f1b3fc7b9e4e780a85c8eb6daf55ab8479443ba - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gtk-doc.m4
0e3e9f3254b1594258e870527099eac9dc23d2a9 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-libtool-tags.m4
bff661fe0b2cad854a10975b9dc901c78a36b2dd - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/glib-gettext.m4
ec04a8826224476f2ea3566c397ba26ce4066d13 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-dowhile.m4
29703c5ede63ad1a151e28704bb00609fa30c6a0 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-scrub-include.m4
eca5f41dfa67e0c3ff0f2c10e5d5f5488b9c8112 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-package-release-datetime.m4
36ceb1b5014b55df700b79442c04db6755f3c365 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/pkg.m4
a99e3594884d3ded4272d47a57f3cb1454cfa0e4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-gcc-inline-assembly.m4
c3a624a9ef403e35de8cbb90fcc8d39a37aa84db - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-docbook.m4
874d72b3d5bee4accf5b2356a2427219561d984d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-error.m4
72f9aba8227597bbeae7b34e71485cc9436ef7b3 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-compiler.m4
bca900e4552a466994e5e70db40cc33cbd511d1e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-arch.m4
3742d4aaf2630513cfd1c0f8f7ccde8745990676 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/Makefile.in
a885b85918475992b96804347da9d2fdd584eea0 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-compiler-flag.m4
24cde09af4b0008787d51cfe79de45614077ee3b - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-glib2.m4
20d42715d48c34a41f34aaee5ec69dbc2110980d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/introspection.m4
167307eb9933b10f6e8ed4b1c3123c505950892f - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-parser.m4
ae8e72d314b4d0f45ae63d394a47ff6d8eeb8a90 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-libtool.m4
d9e18190b9400343c7b5648ba6098a35695786c4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-ac-expand.m4
63d4cba7e78f2d963a331b42a9479ea3eb6419f9 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-plugin-docs.m4
2210f6d7378bc47b569204766b144979e2a56743 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-feature.m4
812653280cbe49e322c92bb87055a9c3dcee585f - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-plugindir.m4
cc5c2f9b4182b33aed4c2c95119c505426568e17 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-valgrind.m4
fe032bdd61e17c15d32b4b55bec0a05a6715b6cc - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst.m4
d091605bd13b043b261fe35b694bcc0018a40296 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-auto-alt.m4
6bb666042ba9c6d1d2d59cc9b25b6e5a8faa8463 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-gettext.m4
e8ca19f83745223d9c08240868ffcb0f1ed0974c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-platform.m4
ae76ac53db46f6d4e4adf864c67aaa38802ed49a - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-x11.m4
4f5bb978b35d3f979180cc1f0cb245047763f183 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-function.m4
934b87475134e79cb57f715e66eefc6b15707eb4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-check.m4
04c9953a59beb0849e4b5201abce3976c853158d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/check.m4
7ca73f4afd8a18d79ec24f1ff66f5c5a2a55cd80 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-libxml2.m4
35b2cdff58f172361c07759fe1c5c7e4a2ca53f7 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/ax_create_stdint_h.m4
3185909cef1f8278f84d7015eca6a987e9221a71 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-version.m4
23c4427e98431a619577c709271869fc8eabdb2a - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/orc.m4
f44576689b80d449820786fbd44d59c20a7de148 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-debuginfo.m4
ef1870ced60e75dfa6eb026d27baa1c353945416 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/gst-args.m4
5c573d78bd6b47c9bb4b96fa815fb6b88407a073 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/Makefile.am
357537cdacedff967d5a458626ecc857c00594f6 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/README
851b18a4046c0ff5274138913bcee5f994ac6025 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/common/m4/as-python.m4
8cdeeee31ce0486e4415ed89e3d41a9ea842b780 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/Makefile.in
2fa7a2f1d4708ce84f5cb7ab197232e7192ac1d5 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/Makefile.am
7bfd631aa45a43967c95e30511da82621b3c86d7 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/gstjpeg.c
a1ce7a903c649662ac0c5addf770844a93b859b5 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/Makefile
ac1afda6e3491423588da811f157e6ea3787b3f1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/Makefile.in
7d07a567f048561b01d8a69566a5696610188a10 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/gstjpeg.h
47c504f893bbbe0bbfd34aec7cddcee5ae301dbd - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/gstjpegenc.c
754ff2132b199f06a81e46ec880f66f8a8445439 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/gstjpegenc.h
a92cd41a8001631db64af5110bd100c6d3499b7e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/gstjpegdec.h
c92c986dc3af640d97f459b1bffe67fe682f779c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/gstjpegdec.c
1890efc86015d4bd253fb0415d71819c1d975bf8 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/Makefile.am
5cc8c6abe8ac099c573cf572d3982dcf9e6ddf52 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/ext/jpeg/README
3f30a5d1d7eb717c7001de349cc85f78c6b77fa8 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen-source/config.h
00af72858870bbd0756be1c259cf386e2e3dc4fd - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen-source_64/config.h
aeef20c1028a7ac4b904dd51b4c40376eba21350 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/missing
0da19033c0c784c694a90b2e93838fb797f54036 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/configure
0ec08c5146b1d31c728c3ceb7ba90ac45a9f3972 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/config.rpath
6749a6b5ab2b3edd45d38ac560759c641cd50200 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/depcomp
967c9b4acd94a288632b1414c831b4551a1a7660 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/Makefile.in
4d16aed27a00c1a5012ce14897562dfbfbe162cd - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/config.h.in
9b846e1aa37b44bd0876d5b848ec4409721f870d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/config.sub
132495ec7d6b5e2fa215ba535c35d9118a46c8aa - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/aclocal.m4
939b93ec4ba99039c71cab7f902b918deb0cd00f - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/ltmain.sh
b6f1d63f8ba9f8725c0690e2b0d233a6e5d95181 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/config.guess
d30e962a3de2da09ab0a9a7979bee787922464a1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/install-sh
4421be07a4f4daa24218df175597ea1b5fbbe5a7 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/src/Makefile.in
62607ed98426f5dad7f97677228862928919f460 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/gettext.m4
b47c4dc99957307b2cf3e48e04446ed4c35e5ed0 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/codeset.m4
66f7a1b546fa2dd200c136e3fc3475bfaa26fee1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/inttypes_h.m4
c0c6afe569131b4015d221bc853053cf884b2699 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/lt~obsolete.m4
33afa7777184315ffceecb7f8d15423639b6b9e4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/progtest.m4
d6d1ea1fd251ced66ba87ceb6f9e3846124691c1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/ltsugar.m4
249554965989045ce952e9a7fc6ad68d7ccc281f - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/lib-prefix.m4
63755f3a62281a5aedc127b25fbf0fb4e6684ddc - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/stdint_h.m4
2184b6fb58b7a3dc7c55491395ec82184f26544d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/intdiv0.m4
33c63aa7930a3f40991e89422b96127efc66646a - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/libtool.m4
3c519bc90c64d4ee5bd1935eda2b9285b1924bc0 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/Makefile.in
40abd1f0e6e2e5c98147301c2025f2e3d3568f69 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/ltoptions.m4
393030ac10902d389e2ea993490cc4c36491f9ea - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/lib-link.m4
9fbec988b8b273fdaccf403cebaf345aad020bdb - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/iconv.m4
27a9f5f884d564142136dcf4975b4c708e62a275 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/inttypes-pri.m4
353ce963e2c5a2a6313522479a0df096b11969b2 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/glibc21.m4
3bd011b3dc0b4dd6435e992c5992f67695e772e5 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/uintmax_t.m4
de22971af750306001cdc60beab8003411f9e549 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/lcmessage.m4
8b72b8f5f76e41e4ca0f2521c06c568490894a84 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/lib-ld.m4
944969360e63c72182725fe82155057ba44e7460 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/.nvtegra/pre-gen/m4/ltversion.m4
201eb58c2b3f3c5395dacd3913a4fb9d950d3276 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/glib.m4
581e2927dfc83ae4fb8c5506c31e826e5871872a - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-sid.m4
b48471c5904b0d92e8f5749113edf8b67d0912d2 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-alsa.m4
c83589db9512bf0e194d3106a27ea4a46894f96e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/as-slurp-ffmpeg.m4
62607ed98426f5dad7f97677228862928919f460 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gettext.m4
b47c4dc99957307b2cf3e48e04446ed4c35e5ed0 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/codeset.m4
1081a235ac54f71fb6cce3c806bda9c2e1205813 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/as-liblame.m4
66f7a1b546fa2dd200c136e3fc3475bfaa26fee1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/inttypes_h.m4
c0c6afe569131b4015d221bc853053cf884b2699 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/lt~obsolete.m4
3fe03a7db27a4dc57c56244e2d27d82c4740ad93 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/a52.m4
0248c9a4479822bf4c45b72c92f0f017c662bbf9 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gtk.m4
33afa7777184315ffceecb7f8d15423639b6b9e4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/progtest.m4
2f17e47cd7b91e27ed9a966d4237e669263b251e - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-sdl.m4
d6d1ea1fd251ced66ba87ceb6f9e3846124691c1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/ltsugar.m4
249554965989045ce952e9a7fc6ad68d7ccc281f - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/lib-prefix.m4
fac0d12ab5f50afbf17eb40b8d92f9c0602898e9 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/vorbis.m4
63755f3a62281a5aedc127b25fbf0fb4e6684ddc - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/stdint_h.m4
0ba197512975fcebaa79022bd904b672ce207a3c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-shout2.m4
c16c7478a2ad06fad39890cb221a07eed8c6a5c4 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/aalib.m4
2184b6fb58b7a3dc7c55491395ec82184f26544d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/intdiv0.m4
712147ce28e80f623cd5e01cda44e14f367777d9 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-artsc.m4
4c430f990925e7483679cb8882a0915c16e9ff22 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/libtool.m4
b8ad2cf2facc9a831ded53b2d93aca6fea27877c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-fionread.m4
2a3770fa6a7e2cbd6ffb0826dfff7effa5ba490c - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/freetype2.m4
ead3514f1a6ae29053a1dd9a3c9fd1c8d2c7ce41 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/Makefile.in
05ec66892c8b30f20aa5278e1671ae4925a9c063 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/ltoptions.m4
393030ac10902d389e2ea993490cc4c36491f9ea - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/lib-link.m4
9fbec988b8b273fdaccf403cebaf345aad020bdb - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/iconv.m4
09b1f0083d3d98b9b41849386dfb16bc595b7748 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/libmikmod.m4
27a9f5f884d564142136dcf4975b4c708e62a275 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/inttypes-pri.m4
e611327cf332685bc5b8ca4bd149e7227bed75a0 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/ogg.m4
353ce963e2c5a2a6313522479a0df096b11969b2 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/glibc21.m4
3bd011b3dc0b4dd6435e992c5992f67695e772e5 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/uintmax_t.m4
6735755edb13cd18f04d5f0a7d6e8626f6cf2bb6 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/libfame.m4
6ad67edced3162e33abe230a1ea8ee0791e8b146 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-matroska.m4
05cbee5b7c42d1ca19644a4da42e294c19d245d8 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/check-libheader.m4
de22971af750306001cdc60beab8003411f9e549 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/lcmessage.m4
1a827e3e7e5dd41dc224f815ded4a13c158eb867 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/as-ffmpeg.m4
d324d2883cc1e7679455b54c0a0531670eda1a6f - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/po.m4
8b72b8f5f76e41e4ca0f2521c06c568490894a84 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/lib-ld.m4
25c2435fa4cb5dc86ffad28bf9b1a6a14dd53a68 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/ltversion.m4
cb8eca5f2dc5586e7043c395e4aa0bf02b327aa7 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/Makefile.am
a8c68e296e1671567afd5cd238a9992b81c7d7fe - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/README
f3cda49613ef0c9261efc246221ee3b1be2ac421 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/nls.m4
2c28ab42454fab0d0d4b56204c0732ca5b176f11 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/intlmacosx.m4
4a0a8f5cc426592bd721ef5a634af27e2bb404ed - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/m4/gst-ivorbis.m4
e864ee6647f3572b144403d799f68152e9900da1 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/gst-libs/gst/gettext.h
20c4f7c0cb89c83256650bc3353ed82154cf3a9d - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/gst-libs/gst/gst-i18n-plugin.h
499a9feb17ceabf1f1443923dffa1e0180bf5972 - gstjpeg_src/gst-jpeg/gst-jpeg-1.0/gst-libs/gst/glib-compat-private.h
862fc2901639eff2493b9987d0df81128088f217 - gstjpeg_src/nv_headers/jmorecfg.h
895f0ba75938e772a7e890d2176849b62b36babc - gstjpeg_src/nv_headers/jerror.h
913bb5d5d2d50dff9cbab5f3f3eb7ae5aa37e8c4 - gstjpeg_src/nv_headers/jconfig.h
9a1d25c1ed797bc48d94ce4beb9736c06551fa7c - gstjpeg_src/nv_headers/jpeglib.h

Change-Id: Ida6added200dc1b248f54f0c10a8c71b91c2ef3f
2024-02-26 22:27:40 -08:00

1370 lines
56 KiB
C++

/*
* jpeglib.h
*
* Copyright (C) 1991-1998, Thomas G. Lane.
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
* Modified 2002-2009 by Guido Vollbeding.
* Copyright (c) 2016-2024, NVIDIA CORPORATION. All rights reserved.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file defines the application interface for the JPEG library.
* Most applications using the library need only include this file,
* and perhaps jerror.h if they want to know the exact error codes.
*/
#ifndef JPEGLIB_H
#define JPEGLIB_H
/*
* First we include the configuration files that record how this
* installation of the JPEG library is set up. jconfig.h can be
* generated automatically for many systems. jmorecfg.h contains
* manual configuration options that most people need not worry about.
*/
#ifndef JCONFIG_INCLUDED /* in case jinclude.h already did */
#include "jconfig.h" /* widely used configuration options */
#endif
#include "jmorecfg.h" /* seldom changed options */
#ifdef GPU_ACCELERATE
using namespace std;
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <cstdlib>
#include <cuda.h>
#include <jerror.h>
#include <glib.h>
#include "cuda_runtime.h"
#include "nvjpeg.h"
#include "nvbufsurface.h"
inline bool CHECK_(cudaError_t e, int iLine, const char *szFile) {
if (e != cudaSuccess) {
std::cout << "CUDA runtime error " << e << " " << cudaGetErrorName(e) << " at line " << iLine << " in file " << szFile << std::endl;
abort ();
return false;
}
return true;
}
#define ck(call) CHECK_((call), __LINE__, __FILE__)
#define cudaCheckError() { \
cudaError_t e=cudaGetLastError(); \
if(e!=cudaSuccess) { \
std::cout << "Cuda failure: '" << cudaGetErrorString(e) << "'\n"; \
return 1; \
} \
}
#define nvjpegCheckError(call) { \
nvjpegStatus_t e = (call); \
if(e != NVJPEG_STATUS_SUCCESS) { \
std::cout << "nvjpeg failure: error #" << e << "\n"; \
return 1; \
} \
}
#endif
#ifdef __cplusplus
#ifndef DONT_USE_EXTERN_C
extern "C" {
#endif
#endif
/* Version ID for the JPEG library.
* Might be useful for tests like "#if JPEG_LIB_VERSION >= 80".
*/
#define JPEG_LIB_VERSION 80 /* Version 8.0 */
/* Various constants determining the sizes of things.
* All of these are specified by the JPEG standard, so don't change them
* if you want to be compatible.
*/
#define DCTSIZE 8 /* The basic DCT block is 8x8 samples */
#define DCTSIZE2 64 /* DCTSIZE squared; # of elements in a block */
#define NUM_QUANT_TBLS 4 /* Quantization tables are numbered 0..3 */
#define NUM_HUFF_TBLS 4 /* Huffman tables are numbered 0..3 */
#define NUM_ARITH_TBLS 16 /* Arith-coding tables are numbered 0..15 */
#define MAX_COMPS_IN_SCAN 4 /* JPEG limit on # of components in one scan */
#define MAX_SAMP_FACTOR 4 /* JPEG limit on sampling factors */
/* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard;
* the PostScript DCT filter can emit files with many more than 10 blocks/MCU.
* If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU
* to handle it. We even let you do this from the jconfig.h file. However,
* we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe
* sometimes emits noncompliant files doesn't mean you should too.
*/
#define C_MAX_BLOCKS_IN_MCU 10 /* compressor's limit on blocks per MCU */
#ifndef D_MAX_BLOCKS_IN_MCU
#define D_MAX_BLOCKS_IN_MCU 10 /* decompressor's limit on blocks per MCU */
#endif
/* Data structures for images (arrays of samples and of DCT coefficients).
* On 80x86 machines, the image arrays are too big for near pointers,
* but the pointer arrays can fit in near memory.
*/
typedef JSAMPLE FAR *JSAMPROW; /* ptr to one image row of pixel samples. */
typedef JSAMPROW *JSAMPARRAY; /* ptr to some rows (a 2-D sample array) */
typedef JSAMPARRAY *JSAMPIMAGE; /* a 3-D sample array: top index is color */
typedef JCOEF JBLOCK[DCTSIZE2]; /* one block of coefficients */
typedef JBLOCK FAR *JBLOCKROW; /* pointer to one row of coefficient blocks */
typedef JBLOCKROW *JBLOCKARRAY; /* a 2-D array of coefficient blocks */
typedef JBLOCKARRAY *JBLOCKIMAGE; /* a 3-D array of coefficient blocks */
typedef JCOEF FAR *JCOEFPTR; /* useful in a couple of places */
/* Types for JPEG compression parameters and working tables. */
/* DCT coefficient quantization tables. */
typedef struct {
/* This array gives the coefficient quantizers in natural array order
* (not the zigzag order in which they are stored in a JPEG DQT marker).
* CAUTION: IJG versions prior to v6a kept this array in zigzag order.
*/
UINT16 quantval[DCTSIZE2]; /* quantization step for each coefficient */
/* This field is used only during compression. It's initialized FALSE when
* the table is created, and set TRUE when it's been output to the file.
* You could suppress output of a table by setting this to TRUE.
* (See jpeg_suppress_tables for an example.)
*/
boolean sent_table; /* TRUE when table has been output */
} JQUANT_TBL;
/* Huffman coding tables. */
typedef struct {
/* These two fields directly represent the contents of a JPEG DHT marker */
UINT8 bits[17]; /* bits[k] = # of symbols with codes of */
/* length k bits; bits[0] is unused */
UINT8 huffval[256]; /* The symbols, in order of incr code length */
/* This field is used only during compression. It's initialized FALSE when
* the table is created, and set TRUE when it's been output to the file.
* You could suppress output of a table by setting this to TRUE.
* (See jpeg_suppress_tables for an example.)
*/
boolean sent_table; /* TRUE when table has been output */
} JHUFF_TBL;
/* Basic info about one component (color channel). */
typedef struct {
/* These values are fixed over the whole image. */
/* For compression, they must be supplied by parameter setup; */
/* for decompression, they are read from the SOF marker. */
int component_id; /* identifier for this component (0..255) */
int component_index; /* its index in SOF or cinfo->comp_info[] */
int h_samp_factor; /* horizontal sampling factor (1..4) */
int v_samp_factor; /* vertical sampling factor (1..4) */
int quant_tbl_no; /* quantization table selector (0..3) */
/* These values may vary between scans. */
/* For compression, they must be supplied by parameter setup; */
/* for decompression, they are read from the SOS marker. */
/* The decompressor output side may not use these variables. */
int dc_tbl_no; /* DC entropy table selector (0..3) */
int ac_tbl_no; /* AC entropy table selector (0..3) */
/* Remaining fields should be treated as private by applications. */
/* These values are computed during compression or decompression startup: */
/* Component's size in DCT blocks.
* Any dummy blocks added to complete an MCU are not counted; therefore
* these values do not depend on whether a scan is interleaved or not.
*/
JDIMENSION width_in_blocks;
JDIMENSION height_in_blocks;
/* Size of a DCT block in samples,
* reflecting any scaling we choose to apply during the DCT step.
* Values from 1 to 16 are supported.
* Note that different components may receive different DCT scalings.
*/
int DCT_h_scaled_size;
int DCT_v_scaled_size;
/* The downsampled dimensions are the component's actual, unpadded number
* of samples at the main buffer (preprocessing/compression interface);
* DCT scaling is included, so
* downsampled_width = ceil(image_width * Hi/Hmax * DCT_h_scaled_size/DCTSIZE)
* and similarly for height.
*/
JDIMENSION downsampled_width; /* actual width in samples */
JDIMENSION downsampled_height; /* actual height in samples */
/* This flag is used only for decompression. In cases where some of the
* components will be ignored (eg grayscale output from YCbCr image),
* we can skip most computations for the unused components.
*/
boolean component_needed; /* do we need the value of this component? */
/* These values are computed before starting a scan of the component. */
/* The decompressor output side may not use these variables. */
int MCU_width; /* number of blocks per MCU, horizontally */
int MCU_height; /* number of blocks per MCU, vertically */
int MCU_blocks; /* MCU_width * MCU_height */
int MCU_sample_width; /* MCU width in samples: MCU_width * DCT_h_scaled_size */
int last_col_width; /* # of non-dummy blocks across in last MCU */
int last_row_height; /* # of non-dummy blocks down in last MCU */
/* Saved quantization table for component; NULL if none yet saved.
* See jdinput.c comments about the need for this information.
* This field is currently used only for decompression.
*/
JQUANT_TBL * quant_table;
/* Private per-component storage for DCT or IDCT subsystem. */
void * dct_table;
} jpeg_component_info;
/* The script for encoding a multiple-scan file is an array of these: */
typedef struct {
int comps_in_scan; /* number of components encoded in this scan */
int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */
int Ss, Se; /* progressive JPEG spectral selection parms */
int Ah, Al; /* progressive JPEG successive approx. parms */
} jpeg_scan_info;
/* The decompressor can save APPn and COM markers in a list of these: */
typedef struct jpeg_marker_struct FAR * jpeg_saved_marker_ptr;
struct jpeg_marker_struct {
jpeg_saved_marker_ptr next; /* next in list, or NULL */
UINT8 marker; /* marker code: JPEG_COM, or JPEG_APP0+n */
unsigned int original_length; /* # bytes of data in the file */
unsigned int data_length; /* # bytes of data saved at data[] */
JOCTET FAR * data; /* the data contained in the marker */
/* the marker length word is not counted in data_length or original_length */
};
/* Known color spaces. */
typedef enum {
JCS_UNKNOWN, /* error/unspecified */
JCS_GRAYSCALE, /* monochrome */
JCS_RGB, /* red/green/blue */
JCS_YCbCr, /* Y/Cb/Cr (also known as YUV) */
JCS_CMYK, /* C/M/Y/K */
JCS_YCCK, /* Y/Cb/Cr/K */
#ifdef ANDROID_RGB
JCS_RGBA_8888, /* red/green/blue/alpha */
JCS_RGB_565 /* red/green/blue in 565 format */
#else
#ifdef TEGRA_ACCELERATE
JCS_RGBA_8888, /* red/green/blue/alpha */
JCS_RGB_565 /* red/green/blue in 565 format */
#endif
#endif
} J_COLOR_SPACE;
/* DCT/IDCT algorithm options. */
typedef enum {
JDCT_ISLOW, /* slow but accurate integer algorithm */
JDCT_IFAST, /* faster, less accurate integer method */
JDCT_FLOAT /* floating-point: accurate, fast on fast HW */
} J_DCT_METHOD;
#ifndef JDCT_DEFAULT /* may be overridden in jconfig.h */
#define JDCT_DEFAULT JDCT_ISLOW
#endif
#ifndef JDCT_FASTEST /* may be overridden in jconfig.h */
#define JDCT_FASTEST JDCT_IFAST
#endif
/* Dithering options for decompression. */
typedef enum {
JDITHER_NONE, /* no dithering */
JDITHER_ORDERED, /* simple ordered dither */
JDITHER_FS /* Floyd-Steinberg error diffusion dither */
} J_DITHER_MODE;
/* Tegra acceleration data structure */
#ifdef TEGRA_ACCELERATE
struct jpeg_tegra_mgr {
unsigned char *buff[3];
unsigned int pitch[3];
unsigned int mcu_type; // 0: Y=2x2, U,V=1x1
// 1: Y=2x1, U,V=1x1
// 2: Y=1x2, U,V=1x1
// 3: Y=1x1, U,V=1x1
// 4: Y=1x1, U,V not present
};
typedef struct jpeg_tegra_mgr j_tegra_mgr;
typedef struct jpeg_tegra_mgr * j_tegra_mgr_ptr;
#endif
#ifdef GPU_ACCELERATE
struct encode_params_t {
std::string input_dir;
std::string output_dir;
std::string format;
std::string subsampling;
int quality;
int huf;
int dev;
};
#endif
/* Common fields between JPEG compression and decompression master structs. */
#ifdef TEGRA_ACCELERATE
#define jpeg_common_fields \
struct jpeg_error_mgr * err; /* Error handler module */\
struct jpeg_memory_mgr * mem; /* Memory manager module */\
struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
struct jpeg_tegra_mgr * jpegTegraMgr; /* Tegra related manager */\
void * client_data; /* Available for use by application */\
boolean is_decompressor; /* So common code can tell which is which */\
boolean tegra_acceleration; /* Enable Tegra based hardware acceleration*/\
boolean mjpeg_decode; /* Enable MJPEG decoding in hardware acceleration*/\
boolean buffer_in_use; /* Buffer provided to the caller is still in use*/\
unsigned int initWidth; /* Initial width for hardware acceleration */ \
void *nvbufsurfptr; /* */\
unsigned int initHeight; /* Initial height for hardware acceleration */ \
unsigned int initBitstreamBuffer; /* Initial bitstream buffer size */ \
unsigned int inputBuffSize; /* Maximum input buffer size */ \
unsigned int outputBuffSize; /* Maximum output buffer size */ \
boolean rgb565; /* Force output color to red/green/blue in 565 format */ \
boolean IsVendorbuf; /* check if input buffer is vendor specific buffer */ \
unsigned char *pVendor_buf; /* pointer to vendor specific buffer */ \
unsigned int Vendorbuf_Size; /* size of vendor buffer */ \
int global_state; /* For checking call sequence validity */ \
int fd; \
boolean bMeasure_ImageProcessTime; /* Measure image process time */
#elif GPU_ACCELERATE
#define jpeg_common_fields \
struct jpeg_error_mgr * err; /* Error handler module */\
struct jpeg_memory_mgr * mem; /* Memory manager module */\
struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
void * client_data; /* Available for use by application */\
boolean is_decompressor; /* So common code can tell which is which */\
int global_state; /* For checking call sequence validity */\
unsigned int inputBuffSize; /* Maximum input buffer size */ \
unsigned char *start_of_data; \
boolean IsVendorbuf; /* check if input buffer is vendor specific buffer */ \
unsigned char *pVendor_buf; /* pointer to vendor specific buffer */ \
unsigned int Vendorbuf_Size; /* size of vendor buffer */ \
unsigned int outputBuffSize; /* Maximum output buffer size */ \
void *surf_ptr; \
int batch_size; \
int gpu_id; \
unsigned char *alpha; \
unsigned int quality; \
boolean grayscale; \
nvjpegJpegState_t nvjpeg_state; \
nvjpegJpegState_t nvjpegenc_state; \
nvjpegEncoderState_t encoder_state; \
nvjpegHandle_t nvjpeg_handle; \
nvjpegHandle_t nvjpegenc_handle; \
cudaStream_t stream; \
nvjpegOutputFormat_t fmt; \
bool write_decoded; \
std::string output_dir; \
bool pipelined; \
bool batched; \
vector<size_t> file_len; \
vector<int> widths; \
vector<int> heights; \
vector<nvjpegImage_t> iout; \
vector<nvjpegImage_t> isz; \
GQueue *buf_q;\
GMutex q_lck;\
cudaStream_t cuda_stream; \
NvBufSurface *surf1; \
unsigned int nvjpegdec_init; \
boolean nvjpegenc_init;
#else
#define jpeg_common_fields \
struct jpeg_error_mgr * err; /* Error handler module */\
struct jpeg_memory_mgr * mem; /* Memory manager module */\
struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
void * client_data; /* Available for use by application */\
boolean is_decompressor; /* So common code can tell which is which */\
int global_state /* For checking call sequence validity */
#endif
/* Routines that are to be used by both halves of the library are declared
* to receive a pointer to this structure. There are no actual instances of
* jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct.
*/
struct jpeg_common_struct {
jpeg_common_fields; /* Fields common to both master struct types */
/* Additional fields follow in an actual jpeg_compress_struct or
* jpeg_decompress_struct. All three structs must agree on these
* initial fields! (This would be a lot cleaner in C++.)
*/
};
typedef struct jpeg_common_struct * j_common_ptr;
typedef struct jpeg_compress_struct * j_compress_ptr;
typedef struct jpeg_decompress_struct * j_decompress_ptr;
#ifdef TEGRA_ACCELERATE
typedef struct {
unsigned int left, top; /* ROI coordinates */
unsigned int width, height; /* ROI coordinates */
}jpeg_rect_struct;
#endif
/* Master record for a compression instance */
struct jpeg_compress_struct {
jpeg_common_fields; /* Fields shared with jpeg_decompress_struct */
/* Destination for compressed data */
struct jpeg_destination_mgr * dest;
/* Description of source image --- these fields must be filled in by
* outer application before starting compression. in_color_space must
* be correct before you can even call jpeg_set_defaults().
*/
JDIMENSION image_width; /* input image width */
JDIMENSION image_height; /* input image height */
int input_components; /* # of color components in input image */
J_COLOR_SPACE in_color_space; /* colorspace of input image */
double input_gamma; /* image gamma of input image */
/* Compression parameters --- these fields must be set before calling
* jpeg_start_compress(). We recommend calling jpeg_set_defaults() to
* initialize everything to reasonable defaults, then changing anything
* the application specifically wants to change. That way you won't get
* burnt when new parameters are added. Also note that there are several
* helper routines to simplify changing parameters.
*/
unsigned int scale_num, scale_denom; /* fraction by which to scale image */
JDIMENSION jpeg_width; /* scaled JPEG image width */
JDIMENSION jpeg_height; /* scaled JPEG image height */
/* Dimensions of actual JPEG image that will be written to file,
* derived from input dimensions by scaling factors above.
* These fields are computed by jpeg_start_compress().
* You can also use jpeg_calc_jpeg_dimensions() to determine these values
* in advance of calling jpeg_start_compress().
*/
int data_precision; /* bits of precision in image data */
int num_components; /* # of color components in JPEG image */
J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
jpeg_component_info * comp_info;
/* comp_info[i] describes component that appears i'th in SOF */
JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
int q_scale_factor[NUM_QUANT_TBLS];
/* ptrs to coefficient quantization tables, or NULL if not defined,
* and corresponding scale factors (percentage, initialized 100).
*/
JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
/* ptrs to Huffman coding tables, or NULL if not defined */
UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
int num_scans; /* # of entries in scan_info array */
const jpeg_scan_info * scan_info; /* script for multi-scan file, or NULL */
/* The default value of scan_info is NULL, which causes a single-scan
* sequential JPEG file to be emitted. To create a multi-scan file,
* set num_scans and scan_info to point to an array of scan definitions.
*/
boolean raw_data_in; /* TRUE=caller supplies downsampled data */
boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */
boolean optimize_coding; /* TRUE=optimize entropy encoding parms */
boolean CCIR601_sampling; /* TRUE=first samples are cosited */
boolean do_fancy_downsampling; /* TRUE=apply fancy downsampling */
int smoothing_factor; /* 1..100, or 0 for no input smoothing */
J_DCT_METHOD dct_method; /* DCT algorithm selector */
/* The restart interval can be specified in absolute MCUs by setting
* restart_interval, or in MCU rows by setting restart_in_rows
* (in which case the correct restart_interval will be figured
* for each scan).
*/
unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */
int restart_in_rows; /* if > 0, MCU rows per restart interval */
/* Parameters controlling emission of special markers. */
boolean write_JFIF_header; /* should a JFIF marker be written? */
UINT8 JFIF_major_version; /* What to write for the JFIF version number */
UINT8 JFIF_minor_version;
/* These three values are not used by the JPEG code, merely copied */
/* into the JFIF APP0 marker. density_unit can be 0 for unknown, */
/* 1 for dots/inch, or 2 for dots/cm. Note that the pixel aspect */
/* ratio is defined by X_density/Y_density even when density_unit=0. */
UINT8 density_unit; /* JFIF code for pixel size units */
UINT16 X_density; /* Horizontal pixel density */
UINT16 Y_density; /* Vertical pixel density */
boolean write_Adobe_marker; /* should an Adobe marker be written? */
/* State variable: index of next scanline to be written to
* jpeg_write_scanlines(). Application may use this to control its
* processing loop, e.g., "while (next_scanline < image_height)".
*/
JDIMENSION next_scanline; /* 0 .. image_height-1 */
/* Remaining fields are known throughout compressor, but generally
* should not be touched by a surrounding application.
*/
/*
* These fields are computed during compression startup
*/
boolean progressive_mode; /* TRUE if scan script uses progressive mode */
int max_h_samp_factor; /* largest h_samp_factor */
int max_v_samp_factor; /* largest v_samp_factor */
int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */
int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */
JDIMENSION total_iMCU_rows; /* # of iMCU rows to be input to coef ctlr */
/* The coefficient controller receives data in units of MCU rows as defined
* for fully interleaved scans (whether the JPEG file is interleaved or not).
* There are v_samp_factor * DCTSIZE sample rows of each component in an
* "iMCU" (interleaved MCU) row.
*/
/*
* These fields are valid during any one scan.
* They describe the components and MCUs actually appearing in the scan.
*/
int comps_in_scan; /* # of JPEG components in this scan */
jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
/* *cur_comp_info[i] describes component that appears i'th in SOS */
JDIMENSION MCUs_per_row; /* # of MCUs across the image */
JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
int blocks_in_MCU; /* # of DCT blocks per MCU */
int MCU_membership[C_MAX_BLOCKS_IN_MCU];
/* MCU_membership[i] is index in cur_comp_info of component owning */
/* i'th block in an MCU */
int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */
int block_size; /* the basic DCT block size: 1..16 */
const int * natural_order; /* natural-order position array */
int lim_Se; /* min( Se, DCTSIZE2-1 ) */
boolean frame_to_encode; /* make sure that hw encoding takes place only once */
unsigned int buf_size_to_encode; /* full frame buffer size to be encoded */
unsigned char *pOutputSurface; /* moving pointer inside output surface.
* Need to increment after every row component
* RGB to RGBA conversion to keep track of current
* location to be updated inside output surface.
*/
boolean init_encMgr; /* check if encoder manager is already initialised */
/*
* Links to compression subobjects (methods and private variables of modules)
*/
struct jpeg_comp_master * master;
struct jpeg_c_main_controller * main;
struct jpeg_c_prep_controller * prep;
struct jpeg_c_coef_controller * coef;
struct jpeg_marker_writer * marker;
struct jpeg_color_converter * cconvert;
struct jpeg_downsampler * downsample;
struct jpeg_forward_dct * fdct;
struct jpeg_entropy_encoder * entropy;
jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
int script_space_size;
#ifdef TEGRA_ACCELERATE
boolean skip_SOI;
boolean exif_data;
boolean header_len;
boolean crop_region;
jpeg_rect_struct crop_rect;
boolean image_scale;
JDIMENSION scaled_image_width; /* scaled image width */
JDIMENSION scaled_image_height; /* scaled image height */
#endif
};
/* Master record for a decompression instance */
struct jpeg_decompress_struct {
jpeg_common_fields; /* Fields shared with jpeg_compress_struct */
/* Source of compressed data */
struct jpeg_source_mgr * src;
/* Basic description of image --- filled in by jpeg_read_header(). */
/* Application may inspect these values to decide how to process image. */
JDIMENSION image_width; /* nominal image width (from SOF marker) */
JDIMENSION image_height; /* nominal image height */
int num_components; /* # of color components in JPEG image */
J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
/* Decompression processing parameters --- these fields must be set before
* calling jpeg_start_decompress(). Note that jpeg_read_header() initializes
* them to default values.
*/
J_COLOR_SPACE out_color_space; /* colorspace for output */
unsigned int scale_num, scale_denom; /* fraction by which to scale image */
double output_gamma; /* image gamma wanted in output */
boolean buffered_image; /* TRUE=multiple output passes */
boolean raw_data_out; /* TRUE=downsampled data wanted */
J_DCT_METHOD dct_method; /* IDCT algorithm selector */
boolean do_fancy_upsampling; /* TRUE=apply fancy upsampling */
boolean do_block_smoothing; /* TRUE=apply interblock smoothing */
boolean quantize_colors; /* TRUE=colormapped output wanted */
/* the following are ignored if not quantize_colors: */
J_DITHER_MODE dither_mode; /* type of color dithering to use */
boolean two_pass_quantize; /* TRUE=use two-pass color quantization */
int desired_number_of_colors; /* max # colors to use in created colormap */
/* these are significant only in buffered-image mode: */
boolean enable_1pass_quant; /* enable future use of 1-pass quantizer */
boolean enable_external_quant;/* enable future use of external colormap */
boolean enable_2pass_quant; /* enable future use of 2-pass quantizer */
/* Description of actual output image that will be returned to application.
* These fields are computed by jpeg_start_decompress().
* You can also use jpeg_calc_output_dimensions() to determine these values
* in advance of calling jpeg_start_decompress().
*/
JDIMENSION output_width; /* scaled image width */
JDIMENSION output_height; /* scaled image height */
int out_color_components; /* # of color components in out_color_space */
int output_components; /* # of color components returned */
/* output_components is 1 (a colormap index) when quantizing colors;
* otherwise it equals out_color_components.
*/
int rec_outbuf_height; /* min recommended height of scanline buffer */
/* If the buffer passed to jpeg_read_scanlines() is less than this many rows
* high, space and time will be wasted due to unnecessary data copying.
* Usually rec_outbuf_height will be 1 or 2, at most 4.
*/
/* When quantizing colors, the output colormap is described by these fields.
* The application can supply a colormap by setting colormap non-NULL before
* calling jpeg_start_decompress; otherwise a colormap is created during
* jpeg_start_decompress or jpeg_start_output.
* The map has out_color_components rows and actual_number_of_colors columns.
*/
int actual_number_of_colors; /* number of entries in use */
JSAMPARRAY colormap; /* The color map as a 2-D pixel array */
/* State variables: these variables indicate the progress of decompression.
* The application may examine these but must not modify them.
*/
/* Row index of next scanline to be read from jpeg_read_scanlines().
* Application may use this to control its processing loop, e.g.,
* "while (output_scanline < output_height)".
*/
JDIMENSION output_scanline; /* 0 .. output_height-1 */
/* Current input scan number and number of iMCU rows completed in scan.
* These indicate the progress of the decompressor input side.
*/
int input_scan_number; /* Number of SOS markers seen so far */
JDIMENSION input_iMCU_row; /* Number of iMCU rows completed */
/* The "output scan number" is the notional scan being displayed by the
* output side. The decompressor will not allow output scan/row number
* to get ahead of input scan/row, but it can fall arbitrarily far behind.
*/
int output_scan_number; /* Nominal scan number being displayed */
JDIMENSION output_iMCU_row; /* Number of iMCU rows read */
/* Current progression status. coef_bits[c][i] indicates the precision
* with which component c's DCT coefficient i (in zigzag order) is known.
* It is -1 when no data has yet been received, otherwise it is the point
* transform (shift) value for the most recent scan of the coefficient
* (thus, 0 at completion of the progression).
* This pointer is NULL when reading a non-progressive file.
*/
int (*coef_bits)[DCTSIZE2]; /* -1 or current Al value for each coef */
/* Internal JPEG parameters --- the application usually need not look at
* these fields. Note that the decompressor output side may not use
* any parameters that can change between scans.
*/
/* Quantization and Huffman tables are carried forward across input
* datastreams when processing abbreviated JPEG datastreams.
*/
JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
/* ptrs to coefficient quantization tables, or NULL if not defined */
JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
/* ptrs to Huffman coding tables, or NULL if not defined */
/* These parameters are never carried across datastreams, since they
* are given in SOF/SOS markers or defined to be reset by SOI.
*/
int data_precision; /* bits of precision in image data */
jpeg_component_info * comp_info;
/* comp_info[i] describes component that appears i'th in SOF */
boolean is_baseline; /* TRUE if Baseline SOF0 encountered */
boolean progressive_mode; /* TRUE if SOFn specifies progressive mode */
boolean arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */
UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */
/* These fields record data obtained from optional markers recognized by
* the JPEG library.
*/
boolean saw_JFIF_marker; /* TRUE iff a JFIF APP0 marker was found */
/* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */
UINT8 JFIF_major_version; /* JFIF version number */
UINT8 JFIF_minor_version;
UINT8 density_unit; /* JFIF code for pixel size units */
UINT16 X_density; /* Horizontal pixel density */
UINT16 Y_density; /* Vertical pixel density */
boolean saw_Adobe_marker; /* TRUE iff an Adobe APP14 marker was found */
UINT8 Adobe_transform; /* Color transform code from Adobe marker */
boolean CCIR601_sampling; /* TRUE=first samples are cosited */
/* Aside from the specific data retained from APPn markers known to the
* library, the uninterpreted contents of any or all APPn and COM markers
* can be saved in a list for examination by the application.
*/
jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */
/* Remaining fields are known throughout decompressor, but generally
* should not be touched by a surrounding application.
*/
/*
* These fields are computed during decompression startup
*/
int max_h_samp_factor; /* largest h_samp_factor */
int max_v_samp_factor; /* largest v_samp_factor */
int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */
int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */
JDIMENSION total_iMCU_rows; /* # of iMCU rows in image */
/* The coefficient controller's input and output progress is measured in
* units of "iMCU" (interleaved MCU) rows. These are the same as MCU rows
* in fully interleaved JPEG scans, but are used whether the scan is
* interleaved or not. We define an iMCU row as v_samp_factor DCT block
* rows of each component. Therefore, the IDCT output contains
* v_samp_factor*DCT_v_scaled_size sample rows of a component per iMCU row.
*/
JSAMPLE * sample_range_limit; /* table for fast range-limiting */
/*
* These fields are valid during any one scan.
* They describe the components and MCUs actually appearing in the scan.
* Note that the decompressor output side must not use these fields.
*/
int comps_in_scan; /* # of JPEG components in this scan */
jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
/* *cur_comp_info[i] describes component that appears i'th in SOS */
JDIMENSION MCUs_per_row; /* # of MCUs across the image */
JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
int blocks_in_MCU; /* # of DCT blocks per MCU */
int MCU_membership[D_MAX_BLOCKS_IN_MCU];
/* MCU_membership[i] is index in cur_comp_info of component owning */
/* i'th block in an MCU */
int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */
/* These fields are derived from Se of first SOS marker.
*/
int block_size; /* the basic DCT block size: 1..16 */
const int * natural_order; /* natural-order position array for entropy decode */
int lim_Se; /* min( Se, DCTSIZE2-1 ) for entropy decode */
/* This field is shared between entropy decoder and marker parser.
* It is either zero or the code of a JPEG marker that has been
* read from the data source, but has not yet been processed.
*/
int unread_marker;
boolean b_frametodecode; /* make sure that hw decoding takes place only once though
* jpeg_read_raw_data is called on MCU row basis.
*/
boolean b_surface_alloc_done; /* make sure that surfaces are created only when
* jpegTegraDecoderMgrCreate() is called.
*/
void * tegra_surf; /*Surface handle of the output buffers*/
unsigned char * input_frame_buf; /* Buffer to hold encoded input frame */
unsigned int pixel_row_cnt; /* number of Y pixel rows to be copied in one MCU row */
unsigned int u_pixel_row_cnt; /* number of U pixel rows to be copied in one MCU row */
unsigned int v_pixel_row_cnt; /* number of V pixel rows to be copied in one MCU row */
#ifdef TEGRA_ACCELERATE
int hw_error_status;
#endif
/*
* Links to decompression subobjects (methods, private variables of modules)
*/
struct jpeg_decomp_master * master;
struct jpeg_d_main_controller * main;
struct jpeg_d_coef_controller * coef;
struct jpeg_d_post_controller * post;
struct jpeg_input_controller * inputctl;
struct jpeg_marker_reader * marker;
struct jpeg_entropy_decoder * entropy;
struct jpeg_inverse_dct * idct;
struct jpeg_upsampler * upsample;
struct jpeg_color_deconverter * cconvert;
struct jpeg_color_quantizer * cquantize;
};
/* "Object" declarations for JPEG modules that may be supplied or called
* directly by the surrounding application.
* As with all objects in the JPEG library, these structs only define the
* publicly visible methods and state variables of a module. Additional
* private fields may exist after the public ones.
*/
/* Error handler object */
struct jpeg_error_mgr {
/* Error exit handler: does not return to caller */
JMETHOD(void, error_exit, (j_common_ptr cinfo));
/* Conditionally emit a trace or warning message */
JMETHOD(void, emit_message, (j_common_ptr cinfo, int msg_level));
/* Routine that actually outputs a trace or error message */
JMETHOD(void, output_message, (j_common_ptr cinfo));
/* Format a message string for the most recent JPEG error or message */
JMETHOD(void, format_message, (j_common_ptr cinfo, char * buffer));
#define JMSG_LENGTH_MAX 200 /* recommended size of format_message buffer */
/* Reset error state variables at start of a new image */
JMETHOD(void, reset_error_mgr, (j_common_ptr cinfo));
/* The message ID code and any parameters are saved here.
* A message can have one string parameter or up to 8 int parameters.
*/
int msg_code;
#define JMSG_STR_PARM_MAX 80
union {
int i[8];
char s[JMSG_STR_PARM_MAX];
} msg_parm;
/* Standard state variables for error facility */
int trace_level; /* max msg_level that will be displayed */
/* For recoverable corrupt-data errors, we emit a warning message,
* but keep going unless emit_message chooses to abort. emit_message
* should count warnings in num_warnings. The surrounding application
* can check for bad data by seeing if num_warnings is nonzero at the
* end of processing.
*/
long num_warnings; /* number of corrupt-data warnings */
/* These fields point to the table(s) of error message strings.
* An application can change the table pointer to switch to a different
* message list (typically, to change the language in which errors are
* reported). Some applications may wish to add additional error codes
* that will be handled by the JPEG library error mechanism; the second
* table pointer is used for this purpose.
*
* First table includes all errors generated by JPEG library itself.
* Error code 0 is reserved for a "no such error string" message.
*/
const char * const * jpeg_message_table; /* Library errors */
int last_jpeg_message; /* Table contains strings 0..last_jpeg_message */
/* Second table can be added by application (see cjpeg/djpeg for example).
* It contains strings numbered first_addon_message..last_addon_message.
*/
const char * const * addon_message_table; /* Non-library errors */
int first_addon_message; /* code for first string in addon table */
int last_addon_message; /* code for last string in addon table */
};
/* Progress monitor object */
struct jpeg_progress_mgr {
JMETHOD(void, progress_monitor, (j_common_ptr cinfo));
long pass_counter; /* work units completed in this pass */
long pass_limit; /* total number of work units in this pass */
int completed_passes; /* passes completed so far */
int total_passes; /* total number of passes expected */
};
/* Data destination object for compression */
struct jpeg_destination_mgr {
JOCTET * next_output_byte; /* => next byte to write in buffer */
size_t free_in_buffer; /* # of byte spaces remaining in buffer */
JMETHOD(void, init_destination, (j_compress_ptr cinfo));
JMETHOD(boolean, empty_output_buffer, (j_compress_ptr cinfo));
JMETHOD(void, term_destination, (j_compress_ptr cinfo));
};
/* Data source object for decompression */
struct jpeg_source_mgr {
const JOCTET * next_input_byte; /* => next byte to read from buffer */
size_t bytes_in_buffer; /* # of bytes remaining in buffer */
JMETHOD(void, init_source, (j_decompress_ptr cinfo));
JMETHOD(boolean, fill_input_buffer, (j_decompress_ptr cinfo));
JMETHOD(void, skip_input_data, (j_decompress_ptr cinfo, long num_bytes));
JMETHOD(boolean, resync_to_restart, (j_decompress_ptr cinfo, int desired));
JMETHOD(void, term_source, (j_decompress_ptr cinfo));
};
/* Memory manager object.
* Allocates "small" objects (a few K total), "large" objects (tens of K),
* and "really big" objects (virtual arrays with backing store if needed).
* The memory manager does not allow individual objects to be freed; rather,
* each created object is assigned to a pool, and whole pools can be freed
* at once. This is faster and more convenient than remembering exactly what
* to free, especially where malloc()/free() are not too speedy.
* NB: alloc routines never return NULL. They exit to error_exit if not
* successful.
*/
#define JPOOL_PERMANENT 0 /* lasts until master record is destroyed */
#define JPOOL_IMAGE 1 /* lasts until done with image/datastream */
#define JPOOL_NUMPOOLS 2
typedef struct jvirt_sarray_control * jvirt_sarray_ptr;
typedef struct jvirt_barray_control * jvirt_barray_ptr;
struct jpeg_memory_mgr {
/* Method pointers */
JMETHOD(void *, alloc_small, (j_common_ptr cinfo, int pool_id,
size_t sizeofobject));
JMETHOD(void FAR *, alloc_large, (j_common_ptr cinfo, int pool_id,
size_t sizeofobject));
JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,
JDIMENSION samplesperrow,
JDIMENSION numrows));
JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id,
JDIMENSION blocksperrow,
JDIMENSION numrows));
JMETHOD(jvirt_sarray_ptr, request_virt_sarray, (j_common_ptr cinfo,
int pool_id,
boolean pre_zero,
JDIMENSION samplesperrow,
JDIMENSION numrows,
JDIMENSION maxaccess));
JMETHOD(jvirt_barray_ptr, request_virt_barray, (j_common_ptr cinfo,
int pool_id,
boolean pre_zero,
JDIMENSION blocksperrow,
JDIMENSION numrows,
JDIMENSION maxaccess));
JMETHOD(void, realize_virt_arrays, (j_common_ptr cinfo));
JMETHOD(JSAMPARRAY, access_virt_sarray, (j_common_ptr cinfo,
jvirt_sarray_ptr ptr,
JDIMENSION start_row,
JDIMENSION num_rows,
boolean writable));
JMETHOD(JBLOCKARRAY, access_virt_barray, (j_common_ptr cinfo,
jvirt_barray_ptr ptr,
JDIMENSION start_row,
JDIMENSION num_rows,
boolean writable));
JMETHOD(void, free_pool, (j_common_ptr cinfo, int pool_id));
JMETHOD(void, self_destruct, (j_common_ptr cinfo));
/* Limit on memory allocation for this JPEG object. (Note that this is
* merely advisory, not a guaranteed maximum; it only affects the space
* used for virtual-array buffers.) May be changed by outer application
* after creating the JPEG object.
*/
long max_memory_to_use;
/* Maximum allocation request accepted by alloc_large. */
long max_alloc_chunk;
};
/* Routine signature for application-supplied marker processing methods.
* Need not pass marker code since it is stored in cinfo->unread_marker.
*/
typedef JMETHOD(boolean, jpeg_marker_parser_method, (j_decompress_ptr cinfo));
/* Declarations for routines called by application.
* The JPP macro hides prototype parameters from compilers that can't cope.
* Note JPP requires double parentheses.
*/
#ifdef HAVE_PROTOTYPES
#define JPP(arglist) arglist
#else
#define JPP(arglist) ()
#endif
/* Short forms of external names for systems with brain-damaged linkers.
* We shorten external names to be unique in the first six letters, which
* is good enough for all known systems.
* (If your compiler itself needs names to be unique in less than 15
* characters, you are out of luck. Get a better compiler.)
*/
#ifdef NEED_SHORT_EXTERNAL_NAMES
#define jpeg_std_error jStdError
#define jpeg_CreateCompress jCreaCompress
#define jpeg_CreateDecompress jCreaDecompress
#define jpeg_destroy_compress jDestCompress
#define jpeg_destroy_decompress jDestDecompress
#define jpeg_destroy_surface jDestSurf
#define jpeg_stdio_dest jStdDest
#define jpeg_stdio_src jStdSrc
#define jpeg_mem_dest jMemDest
#define jpeg_mem_src jMemSrc
#define jpeg_set_defaults jSetDefaults
#define jpeg_set_colorspace jSetColorspace
#define jpeg_default_colorspace jDefColorspace
#define jpeg_set_quality jSetQuality
#define jpeg_set_linear_quality jSetLQuality
#define jpeg_default_qtables jDefQTables
#define jpeg_add_quant_table jAddQuantTable
#define jpeg_quality_scaling jQualityScaling
#define jpeg_simple_progression jSimProgress
#define jpeg_suppress_tables jSuppressTables
#define jpeg_alloc_quant_table jAlcQTable
#define jpeg_alloc_huff_table jAlcHTable
#define jpeg_start_compress jStrtCompress
#define jpeg_write_scanlines jWrtScanlines
#define jpeg_finish_compress jFinCompress
#define jpeg_calc_jpeg_dimensions jCjpegDimensions
#define jpeg_write_raw_data jWrtRawData
#define jpeg_write_marker jWrtMarker
#define jpeg_write_m_header jWrtMHeader
#define jpeg_write_m_byte jWrtMByte
#define jpeg_write_tables jWrtTables
#define jpeg_read_header jReadHeader
#define jpeg_start_decompress jStrtDecompress
#define jpeg_read_scanlines jReadScanlines
#define jpeg_finish_decompress jFinDecompress
#define jpeg_read_raw_data jReadRawData
#define jpeg_has_multiple_scans jHasMultScn
#define jpeg_start_output jStrtOutput
#define jpeg_finish_output jFinOutput
#define jpeg_input_complete jInComplete
#define jpeg_new_colormap jNewCMap
#define jpeg_consume_input jConsumeInput
#define jpeg_core_output_dimensions jCoreDimensions
#define jpeg_calc_output_dimensions jCalcDimensions
#define jpeg_save_markers jSaveMarkers
#define jpeg_set_marker_processor jSetMarker
#define jpeg_read_coefficients jReadCoefs
#define jpeg_write_coefficients jWrtCoefs
#define jpeg_copy_critical_parameters jCopyCrit
#define jpeg_abort_compress jAbrtCompress
#define jpeg_abort_decompress jAbrtDecompress
#define jpeg_abort jAbort
#define jpeg_destroy jDestroy
#define jpeg_resync_to_restart jResyncRestart
#endif /* NEED_SHORT_EXTERNAL_NAMES */
/* Default error-management setup */
EXTERN(struct jpeg_error_mgr *) jpeg_std_error
JPP((struct jpeg_error_mgr * err));
/* Initialization of JPEG compression objects.
* jpeg_create_compress() and jpeg_create_decompress() are the exported
* names that applications should call. These expand to calls on
* jpeg_CreateCompress and jpeg_CreateDecompress with additional information
* passed for version mismatch checking.
* NB: you must set up the error-manager BEFORE calling jpeg_create_xxx.
*/
#define jpeg_create_compress(cinfo) \
jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \
(size_t) sizeof(struct jpeg_compress_struct))
#define jpeg_create_decompress(cinfo) \
jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
(size_t) sizeof(struct jpeg_decompress_struct))
EXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo,
int version, size_t structsize));
EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo,
int version, size_t structsize));
/* Destruction of JPEG compression objects */
EXTERN(void) jpeg_destroy_compress JPP((j_compress_ptr cinfo));
EXTERN(void) jpeg_destroy_decompress JPP((j_decompress_ptr cinfo));
/* Destruction of JPEG output surface */
EXTERN(void) jpeg_destroy_surface JPP((void* surf));
/* Standard data source and destination managers: stdio streams. */
/* Caller is responsible for opening the file before and closing after. */
EXTERN(void) jpeg_stdio_dest JPP((j_compress_ptr cinfo, FILE * outfile));
EXTERN(void) jpeg_stdio_src JPP((j_decompress_ptr cinfo, FILE * infile));
/* Data source and destination managers: memory buffers. */
EXTERN(void) jpeg_mem_dest JPP((j_compress_ptr cinfo,
unsigned char ** outbuffer,
unsigned long * outsize));
EXTERN(void) jpeg_mem_src JPP((j_decompress_ptr cinfo,
unsigned char * inbuffer,
unsigned long insize));
/* Default parameter setup for compression */
EXTERN(void) jpeg_set_defaults JPP((j_compress_ptr cinfo));
/* Compression parameter setup aids */
EXTERN(void) jpeg_set_colorspace JPP((j_compress_ptr cinfo,
J_COLOR_SPACE colorspace));
EXTERN(void) jpeg_default_colorspace JPP((j_compress_ptr cinfo));
EXTERN(void) jpeg_set_quality JPP((j_compress_ptr cinfo, int quality,
boolean force_baseline));
EXTERN(void) jpeg_set_linear_quality JPP((j_compress_ptr cinfo,
int scale_factor,
boolean force_baseline));
EXTERN(void) jpeg_default_qtables JPP((j_compress_ptr cinfo,
boolean force_baseline));
EXTERN(void) jpeg_add_quant_table JPP((j_compress_ptr cinfo, int which_tbl,
const unsigned int *basic_table,
int scale_factor,
boolean force_baseline));
EXTERN(int) jpeg_quality_scaling JPP((int quality));
EXTERN(void) jpeg_simple_progression JPP((j_compress_ptr cinfo));
EXTERN(void) jpeg_suppress_tables JPP((j_compress_ptr cinfo,
boolean suppress));
EXTERN(JQUANT_TBL *) jpeg_alloc_quant_table JPP((j_common_ptr cinfo));
EXTERN(JHUFF_TBL *) jpeg_alloc_huff_table JPP((j_common_ptr cinfo));
/* Main entry points for compression */
EXTERN(void) jpeg_start_compress JPP((j_compress_ptr cinfo,
boolean write_all_tables));
EXTERN(JDIMENSION) jpeg_write_scanlines JPP((j_compress_ptr cinfo,
JSAMPARRAY scanlines,
JDIMENSION num_lines));
EXTERN(void) jpeg_finish_compress JPP((j_compress_ptr cinfo));
/* Precalculate JPEG dimensions for current compression parameters. */
EXTERN(void) jpeg_calc_jpeg_dimensions JPP((j_compress_ptr cinfo));
/* Replaces jpeg_write_scanlines when writing raw downsampled data. */
EXTERN(JDIMENSION) jpeg_write_raw_data JPP((j_compress_ptr cinfo,
JSAMPIMAGE data,
JDIMENSION num_lines));
/* Write a special marker. See libjpeg.txt concerning safe usage. */
EXTERN(void) jpeg_write_marker
JPP((j_compress_ptr cinfo, int marker,
const JOCTET * dataptr, unsigned int datalen));
/* Same, but piecemeal. */
EXTERN(void) jpeg_write_m_header
JPP((j_compress_ptr cinfo, int marker, unsigned int datalen));
EXTERN(void) jpeg_write_m_byte
JPP((j_compress_ptr cinfo, int val));
/* Alternate compression function: just write an abbreviated table file */
EXTERN(void) jpeg_write_tables JPP((j_compress_ptr cinfo));
/* Decompression startup: read start of JPEG datastream to see what's there */
EXTERN(int) jpeg_read_header JPP((j_decompress_ptr cinfo,
boolean require_image));
/* Return value is one of: */
#define JPEG_SUSPENDED 0 /* Suspended due to lack of input data */
#define JPEG_HEADER_OK 1 /* Found valid image datastream */
#define JPEG_HEADER_TABLES_ONLY 2 /* Found valid table-specs-only datastream */
/* If you pass require_image = TRUE (normal case), you need not check for
* a TABLES_ONLY return code; an abbreviated file will cause an error exit.
* JPEG_SUSPENDED is only possible if you use a data source module that can
* give a suspension return (the stdio source module doesn't).
*/
/* Main entry points for decompression */
EXTERN(boolean) jpeg_start_decompress JPP((j_decompress_ptr cinfo));
EXTERN(JDIMENSION) jpeg_read_scanlines JPP((j_decompress_ptr cinfo,
JSAMPARRAY scanlines,
JDIMENSION max_lines));
EXTERN(boolean) jpeg_finish_decompress JPP((j_decompress_ptr cinfo));
/* Replaces jpeg_read_scanlines when reading raw downsampled data. */
EXTERN(JDIMENSION) jpeg_read_raw_data JPP((j_decompress_ptr cinfo,
JSAMPIMAGE data,
JDIMENSION max_lines));
/* Additional entry points for buffered-image mode. */
EXTERN(boolean) jpeg_has_multiple_scans JPP((j_decompress_ptr cinfo));
EXTERN(boolean) jpeg_start_output JPP((j_decompress_ptr cinfo,
int scan_number));
EXTERN(boolean) jpeg_finish_output JPP((j_decompress_ptr cinfo));
EXTERN(boolean) jpeg_input_complete JPP((j_decompress_ptr cinfo));
EXTERN(void) jpeg_new_colormap JPP((j_decompress_ptr cinfo));
EXTERN(int) jpeg_consume_input JPP((j_decompress_ptr cinfo));
/* Return value is one of: */
/* #define JPEG_SUSPENDED 0 Suspended due to lack of input data */
#define JPEG_REACHED_SOS 1 /* Reached start of new scan */
#define JPEG_REACHED_EOI 2 /* Reached end of image */
#define JPEG_ROW_COMPLETED 3 /* Completed one iMCU row */
#define JPEG_SCAN_COMPLETED 4 /* Completed last iMCU row of a scan */
/* Precalculate output dimensions for current decompression parameters. */
EXTERN(void) jpeg_core_output_dimensions JPP((j_decompress_ptr cinfo));
EXTERN(void) jpeg_calc_output_dimensions JPP((j_decompress_ptr cinfo));
/* Control saving of COM and APPn markers into marker_list. */
EXTERN(void) jpeg_save_markers
JPP((j_decompress_ptr cinfo, int marker_code,
unsigned int length_limit));
/* Install a special processing method for COM or APPn markers. */
EXTERN(void) jpeg_set_marker_processor
JPP((j_decompress_ptr cinfo, int marker_code,
jpeg_marker_parser_method routine));
/* Read or write raw DCT coefficients --- useful for lossless transcoding. */
EXTERN(jvirt_barray_ptr *) jpeg_read_coefficients JPP((j_decompress_ptr cinfo));
EXTERN(void) jpeg_write_coefficients JPP((j_compress_ptr cinfo,
jvirt_barray_ptr * coef_arrays));
EXTERN(void) jpeg_copy_critical_parameters JPP((j_decompress_ptr srcinfo,
j_compress_ptr dstinfo));
/* If you choose to abort compression or decompression before completing
* jpeg_finish_(de)compress, then you need to clean up to release memory,
* temporary files, etc. You can just call jpeg_destroy_(de)compress
* if you're done with the JPEG object, but if you want to clean it up and
* reuse it, call this:
*/
EXTERN(void) jpeg_abort_compress JPP((j_compress_ptr cinfo));
EXTERN(void) jpeg_abort_decompress JPP((j_decompress_ptr cinfo));
/* Generic versions of jpeg_abort and jpeg_destroy that work on either
* flavor of JPEG object. These may be more convenient in some places.
*/
EXTERN(void) jpeg_abort JPP((j_common_ptr cinfo));
EXTERN(void) jpeg_destroy JPP((j_common_ptr cinfo));
/* Default restart-marker-resync procedure for use by data source modules */
EXTERN(boolean) jpeg_resync_to_restart JPP((j_decompress_ptr cinfo,
int desired));
#ifdef TEGRA_ACCELERATE
EXTERN(void) jpeg_set_hardware_acceleration_parameters_enc JPP((j_compress_ptr cinfo,
boolean hw_acceleration,
unsigned int defaultBuffSize,
unsigned int defaultWidth,
unsigned int defaultHeight
));
EXTERN(void) jpeg_set_hardware_acceleration_parameters_dec JPP((j_decompress_ptr cinfo,
boolean hw_acceleration,
unsigned int defaultBuffSize,
unsigned int defaultWidth,
unsigned int defaultHeight,
unsigned int defaultBitstreamBuffSize,
boolean rgb565
));
#endif
/* These marker codes are exported since applications and data source modules
* are likely to want to use them.
*/
#define JPEG_RST0 0xD0 /* RST0 marker code */
#define JPEG_EOI 0xD9 /* EOI marker code */
#define JPEG_APP0 0xE0 /* APP0 marker code */
#define JPEG_COM 0xFE /* COM marker code */
/* If we have a brain-damaged compiler that emits warnings (or worse, errors)
* for structure definitions that are never filled in, keep it quiet by
* supplying dummy definitions for the various substructures.
*/
#ifdef INCOMPLETE_TYPES_BROKEN
#ifndef JPEG_INTERNALS /* will be defined in jpegint.h */
struct jvirt_sarray_control { long dummy; };
struct jvirt_barray_control { long dummy; };
struct jpeg_comp_master { long dummy; };
struct jpeg_c_main_controller { long dummy; };
struct jpeg_c_prep_controller { long dummy; };
struct jpeg_c_coef_controller { long dummy; };
struct jpeg_marker_writer { long dummy; };
struct jpeg_color_converter { long dummy; };
struct jpeg_downsampler { long dummy; };
struct jpeg_forward_dct { long dummy; };
struct jpeg_entropy_encoder { long dummy; };
struct jpeg_decomp_master { long dummy; };
struct jpeg_d_main_controller { long dummy; };
struct jpeg_d_coef_controller { long dummy; };
struct jpeg_d_post_controller { long dummy; };
struct jpeg_input_controller { long dummy; };
struct jpeg_marker_reader { long dummy; };
struct jpeg_entropy_decoder { long dummy; };
struct jpeg_inverse_dct { long dummy; };
struct jpeg_upsampler { long dummy; };
struct jpeg_color_deconverter { long dummy; };
struct jpeg_color_quantizer { long dummy; };
#endif /* JPEG_INTERNALS */
#endif /* INCOMPLETE_TYPES_BROKEN */
/*
* The JPEG library modules define JPEG_INTERNALS before including this file.
* The internal structure declarations are read only when that is true.
* Applications using the library should not include jpegint.h, but may wish
* to include jerror.h.
*/
#ifdef JPEG_INTERNALS
#include "jpegint.h" /* fetch private declarations */
#include "jerror.h" /* fetch error codes too */
#endif
#ifdef __cplusplus
#ifndef DONT_USE_EXTERN_C
}
#endif
#endif
#endif /* JPEGLIB_H */