1f4cf92cfb
pthread_frame: merge the functionality for normal decoder init and init_thread_copy
...
The current design, where
- proper init is called for the first per-thread context
- first thread's private data is copied into private data for all the
other threads
- a "fixup" function is called for all the other threads to e.g.
allocate dynamically allocated data
is very fragile and hard to follow, so it is abandoned. Instead, the
same init function is used to init each per-thread context. Where
necessary, AVCodecInternal.is_copy can be used to differentiate between
the first thread and the other ones (e.g. for decoding the extradata
just once).
2020-04-10 15:24:54 +02:00
2bae3da79e
avcodec/exr: fix some small cosmetics nits
2020-01-22 10:43:49 +01:00
44b1c5ddcf
avcodec/exr.c: make channel name comparisons case insensitive
...
Allow matching channel names in lowercase, like Diffuse.r in addition to Diffuse.R
2020-01-22 10:43:49 +01:00
080819b3b4
avcodec/exr: Allow duplicate use of channel indexes
...
Fixes: Ticket #8203
Reported-by: durandal_1707
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2019-10-10 14:34:19 +02:00
8b0f949906
avcodec/exr: Fix undefined left shifts of negative numbers
...
Affected the FATE-tests exr-rgb-scanline-pxr24-half-uint32-13x9 and
exr-rgb-scanline-pxr24-uint32.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2019-09-26 21:02:34 +02:00
3104100a12
avcodec/exr: cosmetics
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2019-09-23 22:16:00 +02:00
433d2ae435
avcodec/exr: set layer_match in all branches
...
Otherwise it is left to the value from the previous iteration
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2019-01-12 16:46:41 +01:00
f9728feaf9
avcodec/exr: Check for duplicate channel index
...
Fixes: Out of memory
Fixes: 11582/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_fuzzer-5730204559867904
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2019-01-12 16:46:41 +01:00
49062a9017
avcodec/exr: fix invalid shift in unpack_14()
...
Fixes: 6154/clusterfuzz-testcase-minimized-5762231061970944
Fixes: runtime error: shift exponent 63 is too large for 32-bit type 'int'
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2018-02-27 19:37:06 +01:00
ea03f295ec
avcodec/exr : add support for long name flag and be more explicit about unsupported flag
...
based-on patch by Carl Eugen Hoyos
Fix ticket 6994
2018-02-24 21:42:04 +01:00
dd8351b118
avcodec/exr: Check remaining bits in last get code loop
...
Fixes: runtime error: shift exponent -7 is negative
Fixes: 3902/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_fuzzer-6081926122176512
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2018-02-17 15:56:59 +01:00
0a2560a977
avcodec/exr: Fix memleaks in decode_header()
...
Fixes: 4793/clusterfuzz-testcase-minimized-5707366629638144
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2018-02-02 00:18:24 +01:00
903be5e4f6
avcodec/exr: Check buf_size more completely
...
Fixes: Out of heap array read
Fixes: 4683/clusterfuzz-testcase-minimized-6152313673613312
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-12-30 21:02:49 +01:00
66f0c958bf
avcodec/exr: fix undefined shift in pxr24_uncompress()
...
Fixes: runtime error: left shift of 255 by 24 places cannot be represented in type 'int'
Fixes: 3787/clusterfuzz-testcase-minimized-5728764920070144
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-11-05 03:12:35 +01:00
ac5908b13f
libavcodec/exr : add x86 SIMD for predictor
...
Signed-off-by: James Almer <jamrial@gmail.com >
2017-10-01 17:35:30 -03:00
98d7ad085e
avcodec/exrdsp: improve the ExrDSPContext->reorder_pixels prototype
...
Make dst be the first parameter and src const. It's more in line with the rest of the codebase.
Signed-off-by: James Almer <jamrial@gmail.com >
2017-09-17 19:01:40 -03:00
9b8c1224d7
libavcodec/exr : add X86 SIMD for reorder_pixels
...
Signed-off-by: James Almer <jamrial@gmail.com >
2017-09-17 17:53:57 -03:00
2c6179aa82
libavcodec/exr : simplify reorder_pixels
...
reorder_pixels is call by rle_uncompress and zip_uncompress
with size == uncompress_size
uncompress_size is a multiple of 2 (because exr store data
in half, float, or uint32)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-05-14 20:58:53 +02:00
73ae60d7df
libavcodec/exr : cosmetics variable name
...
rename tile variable to better follow ffmpeg coding style
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-05-12 23:38:03 +02:00
37f4d22075
libavcodec/exr : fix piz uncompress on big endian
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-05-01 11:40:57 +02:00
e46d637452
libavcodec/exr : fix float to uint16 conversion for negative float value
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-04-27 04:25:31 +02:00
31f61b0d4f
avcodec: do not use AVFrame accessor
...
Reviewed-by: wm4 <nfxjfg@googlemail.com >
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com >
2017-04-23 14:27:47 +07:00
8163314967
libavcodec/exr : fix scanline offset table recreation on big endian
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-04-03 03:02:50 +02:00
68e3c9a3b6
avcodec/exr: add support for scanline file where offsets are set to zero
2017-04-01 17:57:59 +02:00
b4016ef31a
avcodec/exr: add support for uint32
2017-03-29 23:28:35 +02:00
8a1759ad46
avcodec/exr: export writer info into frame metadata
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2017-01-19 21:06:34 +01:00
546e29d1f5
avcodec/exr: make it aware of 2 additional compressions
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2017-01-19 21:06:34 +01:00
09905c412d
libavcodec/exr: Fix blank output when data window != display window
...
looks like there is a bug in commit
1a08758e7c
relating to the handling of
ptr in decode_frame after decode_block is called, before this commit
ptr would have been incremented for each line in the data window, now
after the commit it is left at the start of the first included line
rather than the line after the data window then the code sets the
remaining lines to 0 and thus the whole image is over written.
Fix by adjusting ptr to the correct line after decode_block returns
Signed-off-by: Kevin Wheatley <kevin.j.wheatley@gmail.com >
2017-01-06 18:01:12 +01:00
5099c541bb
libavcodec/exr: add support for uint32 channel decoding with pxr24
...
Doesn't decode the uint32 layer, but decodes the half part of the file.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com >
2016-11-25 00:57:38 +01:00
52da3f6f70
libavcodec/exr : fix channel size calculation for uint32 channel
...
uint32 need 4 bytes not 1.
Fix decoding when there is half/float and uint32 channel.
This fixes crashes due to pointer corruption caused by invalid writes.
The problem was introduced in commit
03152e74df
.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com >
2016-11-16 23:45:44 +01:00
ce3147eb19
exr: reindent after previous commit
...
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com >
2016-11-16 22:37:24 +01:00
ffdc5d09e4
exr: fix out-of-bounds read
...
channel_index can be -1.
This problem was introduced in commit
2dd7b46132
.
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com >
2016-11-16 22:37:17 +01:00
01aee8148d
avcodec/exr: Check tile positions
...
This also disabled the case of mixed x/ymin with tiles, the code
handles these cases inconsistent for the 2 coordinate axis and is
unlikely working correctly.
Fixes crash
Fixes: poc1.exr, poc2.exr
Found-by: Yaoguang Chen of Aliapy unLimit Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2016-08-25 02:40:59 +02:00
f2b08a0702
libavcodec/exr : cosmetics, rename variable in b44_uncompress func
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2016-07-13 14:56:27 +02:00
b450b82514
avcodec/exr: Fix mixed declarations and statements
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2016-07-07 14:53:01 +02:00
50747d6b1f
libavcodec/exr : indent gray support patch
...
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2016-07-06 23:53:28 +02:00
7ebd13fc8b
libavodec/exr : add support for Y and YA file (ticket #5621 )
...
a gray channel in exr, is named Y
we admit that the file need to be interpreted as gray
only if no other channel match (except alpha)
to manage RGB and Y in the color conversion part of decode_block,
the color processing is now made with a for loop.
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2016-07-06 23:52:49 +02:00
d9e1e08133
libavcodec/exr : fix decoding piz float file.
...
fix ticket #5674
the size of data to process in piz_uncompress, is now calc
using the pixel type of each channel.
the data reorganization, alos take care about the size of
each channel
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2016-06-30 12:16:52 +02:00
d96b8144c0
avcodec/exr: add missed hunks from previous exr commit
2016-06-25 18:28:06 +02:00
1e38791b7f
avcodec/exr: fix reading float channel when there is half and float channels in a file
2016-06-25 18:10:10 +02:00
8ef57a0d61
Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'
...
* commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb':
cosmetics: Fix spelling mistakes
Merged-by: Clément Bœsch <u@pkh.me >
2016-06-21 21:55:34 +02:00
9511a0895d
avcodec/exr: indent b44 uncompress function
2016-06-06 15:59:18 +02:00
bc1f3dfaa3
avcodec/exr: fix decoding of B44 exr when all channel doesnt have the same pixel type
2016-06-06 15:42:34 +02:00
df7cd4176a
avcodec/exr: move channel_line_size to thread data
...
In order to be used by b44 uncompress.
2016-06-06 15:42:30 +02:00
03152e74df
avcodec/exr: improve pxr24 uncompress
...
Fix pxr24 uncompress when all channels doesnt have the same pixel type.
The expected length after zip decoding, is now calculated channel by channel.
2016-06-06 15:39:46 +02:00
16107aeaf3
avcodec/exr: remove unneed scanline_size var
2016-06-06 15:39:39 +02:00
42297d8419
avcodec/exr: fix tile decoding when all channels doesnt have the same pixel type
...
Also simplify the tile code, sharing more code with the scanline mode.
2016-06-06 15:39:22 +02:00
d24eb9a3c6
avcodec/exr: indent the if (layer_match) part
2016-06-06 15:39:06 +02:00
753088a2a4
avcodec/exr: fix layer detection
...
Only test a channel if the layer name match.
Avoid to try to mix channel between the main layer (rgba layer),
and the layer request by the user.
2016-06-06 15:38:35 +02:00
df01a29c1b
avcodec/exr: Fix potential integer overflow
...
Fixes CID1361949
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2016-05-19 03:28:25 +02:00