Package: libevas-loaders Version: 1.8.1-2s1 Severity: normal Dear Maintainer,
*** Reporter, please consider answering these questions, where appropriate *** * When compiling the package, the loaders pdf and gst are disabled. * I corrected the dependencies, rules and patched sources. -- System Information: Debian Release: 9.0 APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 4.9.0-3-amd64 (SMP w/4 CPU cores) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages libevas-loaders depends on: ii libc6 2.24-11+deb9u1 ii libcairo2 1.14.8-1 ii libeina1 1.8.6-2.5s1 ii libgcc1 1:6.3.0-18 ii libgdk-pixbuf2.0-0 2.36.5-2 ii libglib2.0-0 2.50.3-2 ii libgomp1 6.3.0-18 ii libgstreamer1.0-0 1.10.4-1 ii liblcms2-2 2.8-4 ii libpoppler64 0.48.0-2 ii libraw15 0.17.2-6+b1 ii librsvg2-2 2.40.16-1+b1 ii libspectre1 0.2.8-1 ii libstdc++6 6.3.0-18 ii zlib1g 1:1.2.8.dfsg-5 libevas-loaders recommends no packages. libevas-loaders suggests no packages. -- no debconf information *** /home/ordissimo/control Source: evas-loaders Section: libs Priority: optional Maintainer: Debian Pkg-e Team <[email protected]> Uploaders: Albin Tonnerre <[email protected]> Build-Depends: debhelper (>= 9), dh-autoreconf, libeina-dev (>= 1.7.7), librsvg2-dev, libspectre-dev, libraw-dev, libpoppler-private-dev, libgstreamer-plugins-base1.0-dev, libgstreamer1.0-dev Standards-Version: 3.9.5 Vcs-Git: git://anonscm.debian.org/pkg-e/libs/evas-loaders.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-e/libs/evas-loaders.git Homepage: http://www.enlightenment.org Package: libevas-loaders Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: libevas1 (<< 1.7.7-5) Description: Additional file format loaders for libevas This package contains programs that allow libevas to load various images and documents formats for which it has no built-in support: - XCF - SVG *** /home/ordissimo/rules #!/usr/bin/make -f %: dh $@ --with autoreconf *** /home/ordissimo/compatibility_with_poppler_and_gstreamer.patch Index: evas-loaders-1.8.1+ordissimo/src/bin/pdf/main.cpp =================================================================== --- evas-loaders-1.8.1+ordissimo.orig/src/bin/pdf/main.cpp +++ evas-loaders-1.8.1+ordissimo/src/bin/pdf/main.cpp @@ -62,11 +62,6 @@ Eina_Bool poppler_init(const char *file, if (!eina_init()) goto del_global_param; - if (globalParams->getAntialias()) - globalParams->setAntialias((char *)"yes"); - if (globalParams->getVectorAntialias()) - globalParams->setVectorAntialias((char *)"yes"); - pdfdoc = new PDFDoc(new GooString(file), NULL); if (!pdfdoc) goto del_global_param; @@ -202,8 +197,8 @@ void poppler_load_image(int size_w, int int main(int argc, char **argv) { - Eina_Tmpstr *tmpdir = NULL; - Eina_Tmpstr *generated = NULL; + char tmpdir[PATH_MAX]; + char generated[PATH_MAX]; char *extension; char *dir; char *file; @@ -253,49 +248,51 @@ main(int argc, char **argv) extension = strrchr(file, '.'); dir = dirname(argv[0]); if (extension && dir && strcmp(extension, ".pdf")) + { + strcpy(tmpdir, "evas_generic_pdf_loaderXXXXXX"); + mktemp(tmpdir); + if (*tmpdir != 0) { - if (eina_file_mkdtemp("evas_generic_pdf_loaderXXXXXX", &tmpdir)) - { - Eina_Strbuf *tmp; - FILE *cmd; + Eina_Strbuf *tmp; + FILE *cmd; - tmp = eina_strbuf_new(); - eina_strbuf_append_printf(tmp, "%s/evas_generic_pdf_loader.%s '%s' %s", dir, extension + 1, file, tmpdir); + tmp = eina_strbuf_new(); + eina_strbuf_append_printf(tmp, "%s/evas_generic_pdf_loader.%s '%s' %s", dir, extension + 1, file, tmpdir); - cmd = popen(eina_strbuf_string_get(tmp), "r"); - D("running preprocessing process '%s'...\n", eina_strbuf_string_get(tmp)); - eina_strbuf_reset(tmp); - - if (cmd) - { - struct stat st; - const char *filename; - char buf[1024]; - - while (fgets(buf, sizeof (buf), cmd)) - ; - pclose(cmd); - - filename = basename(file); - generated = eina_tmpstr_add_length(filename, strlen(filename) - strlen(extension)); - - eina_strbuf_append_printf(tmp, "%s/%s.pdf", tmpdir, generated); - - eina_tmpstr_del(generated); - generated = NULL; - - if (stat(eina_strbuf_string_get(tmp), &st) == 0) - { - generated = eina_tmpstr_add_length(eina_strbuf_string_get(tmp), - eina_strbuf_length_get(tmp)); - file = (char*) generated; - } - } + cmd = popen(eina_strbuf_string_get(tmp), "r"); + D("running preprocessing process '%s'...\n", eina_strbuf_string_get(tmp)); + eina_strbuf_reset(tmp); + + if (cmd) + { + struct stat st; + const char *filename; + char buf[1024]; + + while (fgets(buf, sizeof (buf), cmd)) + ; + pclose(cmd); + + filename = basename(file); + snprintf (generated, sizeof (generated) , "%s", filename); + generated[strlen(filename) - strlen(extension) - 1] = 0; + + eina_strbuf_append_printf(tmp, "%s/%s.pdf", tmpdir, generated); + + *generated = 0; + + if (stat(eina_strbuf_string_get(tmp), &st) == 0) + { + snprintf (generated, sizeof (generated) , "%s", eina_strbuf_string_get(tmp)); + generated[eina_strbuf_length_get(tmp) - 1] = 0; + file = strdup (generated); + } + } - D("generated file: '%s'\n", generated); - eina_strbuf_free(tmp); - } + D("generated file: '%s'\n", generated); + eina_strbuf_free(tmp); } + } // Let's force a timeout if things go wrong timeout_init(10); @@ -303,7 +300,13 @@ main(int argc, char **argv) // Now process the pdf (or the generated pdf) D("poppler_file_init\n"); if (!poppler_init(file, page, size_w, size_h)) + { + if (file) + free (file); return -1; + } + if (file) + free (file); D("poppler_file_init done\n"); D("dpi2...: %f\n", dpi); @@ -340,9 +343,6 @@ main(int argc, char **argv) { if (generated) unlink(generated); rmdir(tmpdir); - - eina_tmpstr_del(tmpdir); - eina_tmpstr_del(generated); } return 0; Index: evas-loaders-1.8.1+ordissimo/configure.ac =================================================================== --- evas-loaders-1.8.1+ordissimo.orig/configure.ac +++ evas-loaders-1.8.1+ordissimo/configure.ac @@ -82,6 +82,26 @@ if test "x${want_poppler}" = "xyes" ; th [have_poppler="no"]) fi + if test "x${have_poppler}" = "xno" ; then + PKG_CHECK_EXISTS([poppler >= 0.31 poppler < 0.38], + [ + poppler_pc="poppler >= 0.31" + AC_DEFINE(HAVE_POPPLER_031, 1, [Have poppler 0.31]) + have_poppler="yes" + ], + [have_poppler="no"]) + fi + + if test "x${have_poppler}" = "xno" ; then + PKG_CHECK_EXISTS([poppler >= 0.38 poppler < 0.49], + [ + poppler_pc="poppler >= 0.38" + AC_DEFINE(HAVE_POPPLER_038, 1, [Have poppler 0.38]) + have_poppler="yes" + ], + [have_poppler="no"]) + fi + if test "x${have_poppler}" = "xyes" ; then PKG_CHECK_MODULES([POPPLER], [${poppler_pc}], [have_poppler="yes"], @@ -147,9 +167,9 @@ if test "x$want_svg" = "xyes" ; then else have_svg=no fi -GST_REQS=0.10.13 -GSTPLUG_REQS=0.10.13 -GST_MAJORMINOR=0.10 +GST_REQS=1.10.4 +GSTPLUG_REQS=1.10.4 +GST_MAJORMINOR=1.0 AC_ARG_ENABLE([gstreamer], [AC_HELP_STRING([--disable-gstreamer], [disable gstreamer support @<:@default==enabled@:>@])], Index: evas- loaders-1.8.1+ordissimo/src/bin/pdf/evas_generic_pdf_loader.libreoffice =================================================================== --- evas- loaders-1.8.1+ordissimo.orig/src/bin/pdf/evas_generic_pdf_loader.libreoffice +++ evas- loaders-1.8.1+ordissimo/src/bin/pdf/evas_generic_pdf_loader.libreoffice @@ -1,2 +1,10 @@ #!/bin/sh -/usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf --outdir "$2" "$1" +LOBIN=soffice +if [ -x /usr/lib/libreoffice/program/soffice.bin ]; then + LOBIN=/usr/lib/libreoffice/program/soffice.bin +elif [ -x /usr/lib64/libreoffice/program/soffice.bin ]; then + LOBIN=/usr/lib64/libreoffice/program/soffice.bin +elif [ -x /opt/libreoffice4.4/program/soffice.bin ]; then + LOBIN=/opt/libreoffice4.4/program/soffice.bin +fi +$LOBIN --headless --convert-to pdf --outdir "$2" "$1" Index: evas-loaders-1.8.1+ordissimo/src/bin/gst/main.c =================================================================== --- evas-loaders-1.8.1+ordissimo.orig/src/bin/gst/main.c +++ evas-loaders-1.8.1+ordissimo/src/bin/gst/main.c @@ -23,7 +23,11 @@ #define D(fmt, args...) #endif -#define CAPS "video/x-raw- rgb,bpp=(int)32,depth=(int)32,endianness=(int)4321,red_mask=(int)0x0000ff00, green_mask=(int)0x00ff0000, blue_mask=(int)0xff000000" +#ifdef WORDS_BIGENDIAN +# define CAPS "video/x-raw,format=ARGB" +#else +# define CAPS "video/x-raw,format=BGRA" +#endif static GstElement *pipeline = NULL; static GstElement *sink = NULL; @@ -45,7 +49,7 @@ _gst_init(const char *filename) GError *error = NULL; GstFormat format; GstStateChangeReturn ret; - int vidstr = 0; +// int vidstr = 0; if (!filename || !*filename) return EINA_FALSE; @@ -67,7 +71,7 @@ _gst_init(const char *filename) D("Setting file %s\n", uri); - descr = g_strdup_printf("uridecodebin uri=%s ! typefind ! ffmpegcolorspace ! " + descr = g_strdup_printf("uridecodebin uri=%s ! typefind ! videoconvert ! " " appsink name=sink caps=\"" CAPS "\"", uri); pipeline = gst_parse_launch(descr, &error); free(uri); @@ -79,6 +83,7 @@ _gst_init(const char *filename) goto gst_shutdown; } /* needs gst 1.0+ + * also only works on playbin objects!!! this is a uridecodebin! g_object_get(G_OBJECT(pipeline), "n-video", &vidstr, NULL); @@ -106,26 +111,27 @@ _gst_init(const char *filename) ret = gst_element_get_state((pipeline), NULL, NULL, GST_CLOCK_TIME_NONE); if (ret == GST_STATE_CHANGE_FAILURE) { - D("could not complete pause\n"); + D("could not complete pause\n"); goto unref_pipeline; } format = GST_FORMAT_TIME; - gst_element_query_duration (pipeline, &format, &duration); + gst_element_query_duration (pipeline, format, &duration); if (duration == -1) { - D("could not retrieve the duration, set it to 1s\n"); + fprintf(stderr, "duration fetch err\n"); + D("could not retrieve the duration, set it to 1s\n"); duration = 1 * GST_SECOND; } pad = gst_element_get_static_pad(sink, "sink"); if (!pad) { - D("could not retrieve the sink pad\n"); + D("could not retrieve the sink pad\n"); goto unref_pipeline; } - caps = gst_pad_get_negotiated_caps(pad); + caps = gst_pad_get_current_caps(pad); if (!caps) goto unref_pad; @@ -163,31 +169,42 @@ _gst_shutdown() } static void -_gst_load_image(int size_w EINA_UNUSED, int size_h EINA_UNUSED) +_gst_load_image(int size_w EINA_UNUSED, int size_h EINA_UNUSED, double pos) { GstBuffer *buffer; + GstMapInfo info; + GstSample *sample; D("load image\n"); - gst_element_seek_simple(pipeline, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, - duration / 2); - g_signal_emit_by_name(sink, "pull-preroll", &buffer, NULL); - D("load image : %p %d\n", GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer)); + if (pos >= 0.0) + gst_element_seek_simple(pipeline, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, + pos); + else + gst_element_seek_simple(pipeline, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, + duration / 2); + g_signal_emit_by_name(sink, "pull-preroll", &sample, NULL); shm_alloc(width * height * sizeof(DATA32)); if (!shm_addr) return; data = shm_addr; - memcpy(data, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer)); + buffer = gst_sample_get_buffer (sample); + gst_buffer_map (buffer, &info, GST_MAP_READ); + D("load image: %p %d\n", info.data, info.size); + + memcpy(data, info.data, info.size); + + gst_buffer_unmap(buffer, &info); } int main(int argc, char **argv) { - char *file; - int i; + char *file, *p; + int i, numonly; int size_w = 0, size_h = 0; int head_only = 0; - int page = 0; + long long pos = -1.0; if (argc < 2) return -1; // file is ALWAYS first arg, other options come after @@ -200,7 +217,16 @@ main(int argc, char **argv) else if (!strcmp(argv[i], "-key")) { i++; - page = atoi(argv[i]); + numonly = 1; + for (p = argv[i]; *p; p++) + { + if ((*p < '0') || (*p > '9')) + { + numonly = 0; + break; + } + } + if (numonly) pos = atoll(argv[i]) * 1000000; i++; } else if (!strcmp(argv[i], "-opt-scale-down-by")) @@ -222,16 +248,18 @@ main(int argc, char **argv) } timeout_init(10); - + D("_gst_init_file\n"); if (!_gst_init(file)) return -1; D("_gst_init done\n"); + if ((pos >= 0) && (pos > duration)) return -1; + if (!head_only) { - _gst_load_image(size_w, size_h); + _gst_load_image(size_w, size_h, pos); } D("size...: %ix%i\n", width, height); @@ -259,6 +287,7 @@ main(int argc, char **argv) printf("done\n"); _gst_shutdown(); - + fflush(stdout); return 0;

