Implement PEF *-ist DS decompression
Submitted by Christian Krause
Assigned to Hubert Figuiere @hub
Description
There are a couple of bug reports in Fedora about crashes of gthumb when opening raw images. They all share a backtrace pointing to libopenraw (see below). I can reproduce these problems by just using "libopenraw-0.0.8/demo/pixbufload".
An image which causes this problem is attached to the following bug report: https://bugzilla.redhat.com/show_bug.cgi?id=606898
Here is the most interesting part of the backtrace:
Thread 1 (Thread 4435):
#0 __copy_m<uint16_t*, float*> (src=<value optimized out>,
src_x=<value optimized out>, src_y=<value optimized out>,
pattern=<value optimized out>, dst=<value optimized out>)
at /usr/include/c++/4.4.2/bits/stl_algobase.h:343
__n = 1237763
#1 __copy_move_a<false, uint16_t*, float*> (src=<value optimized out>,
src_x=<value optimized out>, src_y=<value optimized out>,
pattern=<value optimized out>, dst=<value optimized out>)
at /usr/include/c++/4.4.2/bits/stl_algobase.h:397
No locals.
#2 __copy_move_a2<false, uint16_t*, float*> (src=<value optimized out>,
src_x=<value optimized out>, src_y=<value optimized out>,
pattern=<value optimized out>, dst=<value optimized out>)
at /usr/include/c++/4.4.2/bits/stl_algobase.h:436
No locals.
#3 copy<uint16_t*, float*> (src=<value optimized out>,
src_x=<value optimized out>, src_y=<value optimized out>,
pattern=<value optimized out>, dst=<value optimized out>)
at /usr/include/c++/4.4.2/bits/stl_algobase.h:468
No locals.
#4 bimedian_demosaic (src=<value optimized out>,
src_x=<value optimized out>, src_y=<value optimized out>,
pattern=<value optimized out>, dst=<value optimized out>)
at bimedian_demosaic.cpp:113
y = <value optimized out>
doffset = <value optimized out>
dst_buf = <value optimized out>
npattern = <value optimized out>
x = <value optimized out>
offset = <value optimized out>
#5 0x00f28332 in OpenRaw::RawFile::getRenderedImage (
this=<value optimized out>, bitmapdata=<value optimized out>,
options=<value optimized out>) at rawfile.cpp:403
y = <value optimized out>
dst = 0xae197008 ""
x = <value optimized out>
pattern = <value optimized out>
src = <value optimized out>
rawdata = {<OpenRaw::BitmapData> = {_vptr.BitmapData = 0xf748f0, d =
0xb1604170}, d = 0xb1626688}
ret = OR_ERROR_NONE
#6 0x00f52ad5 in or_rawfile_get_rendered_image (
rawfile=<value optimized out>, bitmapdata=<value optimized out>,
options=<value optimized out>) at rawfile.cpp:104
prawfile = <value optimized out>
#7 0x0062ee69 in openraw_get_pixbuf_from_file (file_data=
0xb16332b0 [GthFileData], requested_size=-1, error=0xb23831bc)
at main.c:160
bitmapdata = 0xb1632378
err = <value optimized out>
pixbuf = 0x0
filename = 0xb163bb18 "/media/6262-3062/DCIM/100PENTX/IMGP3018.PEF"
raw_file = <value optimized out>
#8 openraw_pixbuf_animation_new_from_file (file_data=
0xb16332b0 [GthFileData], requested_size=-1, error=0xb23831bc)
at main.c:196
animation = <value optimized out>
pixbuf = <value optimized out>
#9 0x080a4f86 in load_image_thread (thread_data=0x8c82f28)
at gth-image-loader.c:234
loader = <value optimized out>
file = 0xb16332b0 [GthFileData]
exit_thread = <value optimized out>
animation = 0x0
error = 0x0