31 January 2012

ImageMagick Win32 Pack

This package contain numerous file format command-line converter (all are open source software). The main package is ImageMagick (I think it's more complete than official build) with dozens other additions. While most are image format conversion, I put several addition to handle other documents (DWG, PDF, DjVu, WordPerfect, OpenXML and ODF), Audio/Video through ffmpeg and several SWF tools.

There is some overlapping functionalities though, for.ex IM could convert pdf to svg however Poppler's pdftocairo produce much better svg result. This case we could always modify delegates.xml and make IM do what we want and even to handle what it can't.

To use them effectively we need to be accustomed with batch script and IM has valuable guide for it http://www.imagemagick.org/Usage

To install, extract the archive somewhere and add [somewhere]\bin to your PATH environment variable, then start making .bat files and put them in your SendTo folder so it can be accessed from explorer's context menu.

download (with HDRI and OpenMP enabled):
IM-6.7.3plus_win32.7z 23.6MB [patches]
MD5: e4daa031556eef7b6c1c5b8227b065c1

Updated 32bit/64bit build available in main page

notes:
- IM's convert.exe has been renamed to imconvert.exe to prevent name conflict with Windows' convert.exe
- All binaries should run without dependencies except for ODF<->OpenXML converter which need .NET framework
- Most of them are my personal build (optimized for Core2 CPU), few others are taken from official build

24 January 2012

A little program that print CPU class

Got this nice executable from GMP package that auto-generated during compilation. Only 39KB :-) but very useful if we just want to retrieve a processor class (instead of ID) from command line easily.

Supported x86 CPU family:
i686
GenuineIntel
pentium
pentiummmx
pentiumpro
pentium2
pentium3
pentiumm
core2
corei
atom
pentium4
AuthenticAMD
k5
k6
k62
k63
geode
athlon
athlon64
CyrixInstead
CentaurHauls
viac3
viac32
nano

A class is differentiated specific CPU features unlike "family" that call pentium pro - pentium 3 as i686 which is a bit vague.

http://dl.dropbox.com/u/33728474/cpuc.exe
execute without argument and it will print your CPU class name:

22 January 2012

Spidermonkey 1.8.5 MinGW

After tried Webkit's JSCore previously which is quite working despite unstable webkitgtk, I decide to compare it with Mozilla's offering: spidermonkey. Sadly neither it was new? (1.8.5) nor they provide win32 binary? Did they?

Anyway there is a VS build here www.kahusecurity.com/2010/spidermonkey-1-8-5-for-windows/
So why not MinGW?

Binaries and devel files (Mingw32 dwarf2 exceptions not MinGW-w64):
SpiderMonkey-1.8.5_mingw32.7z
The js.exe only depends on msvcrt.dll and libnspr4.dll, no WinSxS hell :-) Good, now I want to bind Gjs with python!

Build instructions:
Surprise, seems mozilla didn't care much about mingw (after seeking some pointers on their site)...
The source use autotooled configuration.. good :-) so does its dependencies: NSPR

1. To build it basically I just modify any line in configure that define CC/CXX as "cl" with gcc/g++ and remove all illegal options and flags such as -nologo and -mno-cygwin (GCC 4.6.2). Here is my configure for refenrence.

2. NSPR is easy to build: configure and make

3. For Spidermonkey be sure to define CC=gcc and CXX=g++ first, then I use: configure --with-nspr-prefix=[path to nspr] --with-windows-version=502 --disable-shared-js --enable-static

note:  --with-windows-version=502  needed to silence windres version error

4. Once completed, we will soon encounter infamous error WinMain thingy when compiling nsinstall, I already have this tool so I skip this and replace all $(INSTALL) occurrences with [path to nsinstall.exe]

5. Continuing, If we're unlucky there is an undeclared intptr_t in nanojit.h, just include wchar.h there

6. Build will resume smoothly, up to linking step where it complain invalid path (python not automatically turn "\" to "/"), So we have to edit libjs_static.a.fake file and replace all slashes

7. Continue make, and then make check which give me 2 errors: a math and a date test...

16 January 2012

PyGObject 3.0.3 MinGW

About a year ago I made a big but messy conservative PyGTK AIO now it's time for experimental stuff :-)
After testing GTK-3.3.6, I think they are much closer to a "usable" stage in win32 port. So why don't we try that in python...

Technically this pygobject-3.0.3 is more like pygi in the inside and IMO "PyGI" sounds cooler too ah well..

Here is win32 binary pygobject and pycairo for python 3.2
Downloads: http://opensourcepack.blogspot.com/p/pygobject-pygi-aio.html

Changelog:
24-01-12 Added WebkitGTK3 1.7.4 very unstable due to unstable Glib
20-01-12 Added WebkitGTK3 1.6.1 very unstable due to unstable Glib, added Clutter-1.8.2 and MX-1.4.1
17-01-12 Added GTK3 3.3.6 with broadway and Glade. to use broadway set environment variables: GDK_BACKEND=broadway and BROADWAY_DISPLAY=[some port number]

AIO runtimes for GI, GTK, Clutter/MX, Webkit, Gstreamer, GDA and Telepathy are planned later as well as supplementary apps like Glade-3 and Gtranslator.  And if I in mood maybe a win64 binary too, however installer are not planned (I'm tired of NSIS)

I already played with MX and whooah you should try this OpenGL (bitmap/css skinnable) GUI library! it's very cool, as sleek as QtQuick!

notes:
be warned that this is mingw binaries, I'll assume you know the potential issues. Last weekend I've tried to compile python 3.2 with WDK (the infamous msvcrt.dll linking trick) the whole night but given up after several unreferenced functions. OTOH tried to compile the whole GTK3 with mingw against msvcr90 but also failed.

11 January 2012

GTK 3.3.6 GDK Test

Today I give a try on latest gtk3 (3.3.6) which according its changelog have some win32 bugfixes.
During configure I also enable GDK broadway! with a little replacement: sys/socket.h -> winsock2.h in several c files and add missing brodway function exports in gdk.symbols (patch). Also don't forget to create etc\gtk-3.0\settings.ini and fill it with at least:
[Settings]
gtk-theme-name = MS-Windows


Sadly native theme still broken.. and redraw issue like in GTK 3.0 also prevails :-(
Goodness that pango's win32 module is back so I can give a screenshot :-)

Below is two instances of gtk3-demo, one running broadway inside webkitgtk 1.6.1 (require html5 websocket) browser (two windows with oversized "x" button) and other one is the ordinary win32 backend.


Both demonstrating pixbuf animation, however the one in webkit runs very slow and webkit process hog 50% CPU during the animation :-( anyway that's one cool remote display we got here!

edit:
http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00050.html explain the broadway win32 situation better.
Almost forgot, pygi (pygobject 3.0.3) also works too:
this was run on python 3.2

GTK3 adwaita theme engine (in gtk3-theme-standard package) can be used instead before windows native theme fixed.

10 January 2012

Indonesian Internet Social Culture Phenomenon

Before the booming of smartphone, here internet is mostly held by internet cafe, universities, workplace or subscribed home internet. Now everyone want a tablet or at least smartphone to replace their ordinary mobile phone and people start enjoying the "boxed" internet.

Boxed? the reason behind internet access mostly didn't came from true curiosity but rather a trend or prestige. Recently, I watch a commercial TV ads which illustrate how a rural newcomer always get everything for free in Jakarta because she have connections from facebook. Not surprising, here connection is too important, a mandatory survival asset for anyone. Which probably lead to common acceptance of nepotism and eventually corruption as a hobby.

31 December 2011

30 December 2011

How to make PyGimp Portable

There are become more and more plugins being implemented in python right?
This was explained two years ago in my older post here
Here is the small patch (applicable for gimp-2.7.4 too)

After build Gimp, we need to adjust the following files
lib\gimp\2.0\environ\default.env :
add the following line and remove any existing PATH declaration
#add binpath in non hardecoded way
PATH=${gimp_plug_in_dir}/../../../bin
PATH=${gimp_plug_in_dir}/../../../python

lib\gimp\2.0\environ\pygimp.env (there should be a blank line in the end) :
; PYTHONPATH=${gimp_plug_in_dir}/python

26 December 2011

OpenEXR with MinGW

I'm planning on updating my largest compile endeavor of err GTKGraphics Suite 2.0 however inkscape 0.49 seems take a bit more time (they are waiting for cairo 1.10.3?) obviously I'm reluctant to make inkscape 0.48.x build as it was the slowest before 0.49 (refactoring release). Then I'm thrilled that nip2 finally can directly open exr without crashing (no need to manually convert into .v image first).

However I wonder why openexr can't use pthreads under MinGW (note: I'm using pthread-win32 2.9) which I follow this build guide previously. Have a look at the following headers on IlmBase 1.0.1 (also in 1.0.2):
IlmThread.h, IlmThreadMutex.h, IlmThread and IlmThreadSemaphore.h

Clearly there is #ifdefs discrepancies..

20 December 2011

FFMPEG with AoTuV win32 binary

Combining the best audio encoder: AoTuV (http://www.geocities.jp/aoyoume/aotuv/) and FFMPEG
With aotuv we can use low bitrates ~48-64Kbps ogg vorbis (still in good quailty, at least I could say 64K is similar to 128K VBR LAME) which is not available in regular libvorbis. It should beat Apple's AAC too.

Happy encoding!

Changelog:

Mar 4, 2012
Version 0.10 (for Core2 - i7 processor) build with MinGW-W64 GCC 4.6.2

ffmpeg-0.10.exe  6.87MB
optional:
frei0r video FX plugins
ladspa audio FX plugins
timidity GUS pats (for MIDI support, currently sounds weird)
jack-1.9.8
ffmpeg-0.10-docs (ffmpeg's command options are changed overtime, be sure read this first)
ffmpeg-0.10-dev-docs
configuration: --enable-gpl --enable-version3 --enable-libgsm --enable-libopencore-amrnb --enable-libschroedinger --enable-libspeex --enable-libvpx --enable-libmp3lame --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libxavs --enable-libcelt --enable-libmodplug --enable-libutvideo --enable-zlib --enable-bzlib --enable-avisynth --enable-libass --enable-libfreetype --enable-frei0r --enable-ladspa --enable-libsox --enable-libflite --enable-libcdio --enable-openal --enable-gnutls --enable-librtmp --enable-pthreads --enable-runtime-cpudetect --enable-small --disable-debug --disable-outdevs --disable-encoder='vorbis,aac' --disable-decoder='amrnb,dirac,gsm,gsm_ms,vp8'
- merged with sastes-ffmpeg
- enabling: ladspa, sox, jack (using static libjack) and flite
- force ffmpeg to accept negative value (quality), previously ffmpeg will reset (sorry)
- porting hundreds of ladspa plugins
- build experimental jack-1.9.8 for win32
- shrink frei0r plugins size by using gcc 3.4
- bundling timidity gravis GUS

Feb 10, 2012
Version 0.10 (for Core2 - i7 processor) build with MinGW-W64 GCC 4.6.2

This installer will extract ffmpeg.exe ffplay.exe and ffprobe.exe then create console-less version of the three with "w" suffix and then compress the executables with UPX. All in one go

Dec 20, 2011
Version 0.9 (for Core2 - i7 processor) build with MinGW32 GCC 4.6.2

ffmpeg with jackaudio and openal 1.1 input support (untested, explicitly require them to be installed):
configuration: --enable-gpl --enable-version3 --enable-zlib --enable-bzlib --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-libgsm --enable-libtheora --enable-libschroedinger --enable-libspeex --enable-libcelt --enable-libxavs --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libmp3lame --enable-libutvideo --enable-libmodplug --enable-libopenjpeg --enable-libass --enable-avisynth --enable-libfreetype --enable-frei0r --enable-openal --enable-libcdio --enable-librtmp --enable-gnutls --enable-runtime-cpudetect --enable-small --enable-pthreads --disable-w32threads --disable-debug --disable-outdevs --disable-encoder='vorbis,aac,jpeg2000' --disable-decoder='gsm,gsm_ms,vp8,dirac,jpeg2000,amrnb,amrwb' --extra-libs='-ldl -lstdc++' --prefix=/local/ffmpeg
avconv_nostd.exe
 3.88 MB
avconvw_nostd.exe 3.88 MB
ffmpeg_nostd.exe 3.89 MB
ffmpegw_nostd.exe 3.89 MB
ffmpeg.exe 3.89 MB
ffmpegw.exe 3.89 MB
avconv.exe 3.88 MB
avconvw.exe 3.88 MB
ffplay.exe 2.64 MB
ffplayw.exe 2.74 MB
ffprobe.exe 2.21 MB
ffprobew.exe 2.21 MB
ffmpeg_shared.7z

Optional files
frei0r.7z 3.84 MB (place frei0r folder alongside ffmpeg executables)
ffmpeg_docs_presets.7z 9.00 MB
ffmpeg_deps.7z 3.31MB (static library and headers of ffmpeg dependencies in dwarf2 mingw32 binary, for rebuild/updating ffmpeg)

Notes:
- I'm aware that due to intense UPX packing, some incompetent heuristic AV might report them as virus but I don't care...
- Executables with 'w' suffix means it wont show console dialog (mute), they maybe useful in some circumstance. Redirecting stdout to a file still works of course.
- I didn't go for performance when compiling so they might a bit slower but certainly smaller.
- GCC graphite auto-parallelism is enabled to most of external encoders. This may turn out good or bad
- Currently tested for usage with .mod, .ogg, .mp4(x264), mp3 and utvideo files.