Commit Graph

97 Commits

Author SHA1 Message Date
Carl Eugen Hoyos 52e8a0d96d lavc/libopenjpeg: Support GRAY10, GRAY12 and GRAY14. 2018-06-26 00:20:04 +02:00
wm4 b945fed629 avcodec: add metadata to identify wrappers and hardware decoders
Explicitly identify decoder/encoder wrappers with a common name. This
saves API users from guessing by the name suffix. For example, they
don't have to guess that "h264_qsv" is the h264 QSV implementation, and
instead they can just check the AVCodec .codec and .wrapper_name fields.

Explicitly mark AVCodec entries that are hardware decoders or most
likely hardware decoders with new AV_CODEC_CAPs. The purpose is allowing
API users listing hardware decoders in a more generic way. The proposed
AVCodecHWConfig does not provide this information fully, because it's
concerned with decoder configuration, not information about the fact
whether the hardware is used or not.

AV_CODEC_CAP_HYBRID exists specifically for QSV, which can have software
implementations in case the hardware is not capable.

Based on a patch by Philip Langdale <philipl@overt.org>.

Merges Libav commit 47687a2f8a.
2017-12-14 19:37:56 +01:00
Michael Bradshaw 279dc40716 lavc: drop support for OpenJPEG 1.3-2.0
We now require 2.1+ with pkg-config.

Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
2017-10-20 17:35:28 -07:00
Michael Bradshaw 41d6d62702 lavc: add support for OpenJPEG 2.3.0
Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
2017-10-08 08:13:02 -07:00
Reino17 078322f33c Add support for LibOpenJPEG v2.2/git
Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
2017-06-23 20:29:23 -07:00
Aaron Boxer 195784ec95 libavcodec/libopenjpegenc: enable lossless option, remove layer option, and improve defaults
1. limit to single layer, as there is no current support for setting distortion/quality of multiple layers
2. encoder mode should be kept at default setting (0)
3. remove fixed_alloc parameter from context : seldom if ever used, and no way of properly configuring at the moment
4. add irreversible setting, to allow for lossless encoding. Set to OpenJPEG default (enabled)
5. set numresolution max to 33, which is the maximum number of allowed resolutions according the J2K spec

Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
2017-03-09 20:28:45 -08:00
Andreas Cadhalpun 56706ac0d5 libopenjpegenc: fix out-of-bounds reads when filling the edges
The calculation of width/height should round up, not round down to
prevent setting width or height to 0.

Also image->comps[compno].w is unsigned (at least in openjpeg2), so the
calculation could silently wrap around without the explicit cast to int.

Reviewed-by: Michael Bradshaw <mjbshaw@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2016-10-14 16:56:14 +02:00
Andreas Cadhalpun 69c8505f3b libopenjpegenc: stop reusing image data buffer for openjpeg 2
openjpeg 2 sets the data pointers of the image components to NULL,
causing segfaults if the image is reused.

Reviewed-by: Michael Bradshaw <mjbshaw@gmail.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2016-10-14 16:55:45 +02:00
Andreas Cadhalpun 7a65aef00d configure: fix detection of libopenjpeg
Use check_lib2 to test the header together with the function. This is
necessary, because '-DOPJ_STATIC' changes what the included header does.

Also add '-DOPJ_STATIC' to CPPFLAGS, so that it isn't necessary to
hardcode this in libavcodec/libopenjpeg{dec,enc}.c.

Finally, check for non-static openjpeg 2.1, too.

Reviewed-by: Michael Bradshaw <mjbshaw@gmail.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2016-10-13 21:04:19 +02:00
Michael Niedermayer e9394ca63d avcodec/libopenjpegenc: Set numresolutions by default to a value that is not too large
Fixes issues with libopenjpeg 2.1

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-06-26 18:08:04 +02:00
James Almer 99388eb091 avcodec/libopenjpegenc: fix mixed declarations and code
Signed-off-by: James Almer <jamrial@gmail.com>
2016-03-25 00:05:05 -03:00
Michael Bradshaw 99eabcdd5f avcodec: add OpenJPEG 2.x compatibility
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-12-25 10:55:34 +01:00
Hendrik Leppkes 151aa2ebff Merge commit '2268db2cd052674fde55c7d48b7a5098ce89b4ba'
* commit '2268db2cd052674fde55c7d48b7a5098ce89b4ba':
  lavu: Drop the {minus,plus}1 suffix from AVComponentDescriptor fields

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-08 16:35:28 +02:00
Vittorio Giovara 2268db2cd0 lavu: Drop the {minus,plus}1 suffix from AVComponentDescriptor fields
The new fields can be accessed directly and are more intelligible.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-09-07 12:37:47 +02:00
Michael Niedermayer 444e9874a7 Merge commit 'def97856de6021965db86c25a732d78689bd6bb0'
* commit 'def97856de6021965db86c25a732d78689bd6bb0':
  lavc: AV-prefix all codec capabilities

Conflicts:
	cmdutils.c
	ffmpeg.c
	ffplay.c
	libavcodec/8svx.c
	libavcodec/aacenc.c
	libavcodec/ac3dec.c
	libavcodec/adpcm.c
	libavcodec/alac.c
	libavcodec/atrac3plusdec.c
	libavcodec/bink.c
	libavcodec/dnxhddec.c
	libavcodec/dvdec.c
	libavcodec/dvenc.c
	libavcodec/ffv1dec.c
	libavcodec/ffv1enc.c
	libavcodec/fic.c
	libavcodec/flacdec.c
	libavcodec/flacenc.c
	libavcodec/flvdec.c
	libavcodec/fraps.c
	libavcodec/frwu.c
	libavcodec/gifdec.c
	libavcodec/h261dec.c
	libavcodec/hevc.c
	libavcodec/iff.c
	libavcodec/imc.c
	libavcodec/libopenjpegdec.c
	libavcodec/libvo-aacenc.c
	libavcodec/libvorbisenc.c
	libavcodec/libvpxdec.c
	libavcodec/libvpxenc.c
	libavcodec/libx264.c
	libavcodec/mjpegbdec.c
	libavcodec/mjpegdec.c
	libavcodec/mpegaudiodec_float.c
	libavcodec/msmpeg4dec.c
	libavcodec/mxpegdec.c
	libavcodec/nvenc_h264.c
	libavcodec/nvenc_hevc.c
	libavcodec/pngdec.c
	libavcodec/qpeg.c
	libavcodec/ra288.c
	libavcodec/rv10.c
	libavcodec/s302m.c
	libavcodec/sp5xdec.c
	libavcodec/takdec.c
	libavcodec/tiff.c
	libavcodec/tta.c
	libavcodec/utils.c
	libavcodec/v210dec.c
	libavcodec/vp6.c
	libavcodec/vp9.c
	libavcodec/wavpack.c
	libavcodec/yop.c

Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27 22:50:18 +02:00
Michael Niedermayer e36db49b7b avcodec: Add a min size parameter to ff_alloc_packet2()
This parameter can be used to inform the allocation code about how much
downsizing might occur, and can be used to optimize how to allocate the
packet

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27 19:57:52 +02:00
Michael Niedermayer b1fad7ac20 Merge commit 'd6604b29ef544793479d7fb4e05ef6622bb3e534'
* commit 'd6604b29ef544793479d7fb4e05ef6622bb3e534':
  Gather all coded_frame allocations and free functions to a single place

Conflicts:
	libavcodec/a64multienc.c
	libavcodec/asvenc.c
	libavcodec/cljrenc.c
	libavcodec/dpxenc.c
	libavcodec/dvenc.c
	libavcodec/gif.c
	libavcodec/huffyuvenc.c
	libavcodec/jpeglsenc.c
	libavcodec/libopenjpegenc.c
	libavcodec/libtheoraenc.c
	libavcodec/libvpxenc.c
	libavcodec/mpegvideo_enc.c
	libavcodec/nvenc.c
	libavcodec/pngenc.c
	libavcodec/proresenc_kostya.c
	libavcodec/sunrastenc.c
	libavcodec/tiffenc.c
	libavcodec/utils.c
	libavcodec/utvideoenc.c
	libavcodec/v210enc.c
	libavcodec/v410enc.c
	libavcodec/xbmenc.c

Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-20 23:43:05 +02:00
Vittorio Giovara d6604b29ef Gather all coded_frame allocations and free functions to a single place
Allocating coded_frame is what most encoders do anyway, so it makes
sense to always allocate and free it in a single place. Moreover a lot
of encoders freed the frame with av_freep() instead of the correct API
av_frame_free().

This bring uniformity to encoder behaviour and prevents applications
from erroneusly accessing this field when not allocated. Additionally
this helps isolating encoders that export information with coded_frame,
and heavily simplifies its deprecation.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-20 14:16:15 +01:00
Andreas Cadhalpun cb658d17b6 libopenjpegenc: use variable instead of type for sizeof
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-06-02 22:41:51 +02:00
Andreas Cadhalpun 1577526b47 libopenjpegenc: add NULL check for img before accessing it
If opj_image_create fails to allocate an image it returns NULL, which
causes a segmentation fault at 'img->x0 = 0'.

Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-06-02 22:40:58 +02:00
Clément Bœsch 546d69eb43 avcodec: use av_frame_free() for coded_frame 2015-03-02 21:27:21 +01:00
Michael Niedermayer a94eba6f0c Merge commit '7f9f771eac0d37a632e0ed9bd89961d57fcfb7e0'
* commit '7f9f771eac0d37a632e0ed9bd89961d57fcfb7e0':
  avcodec: Don't anonymously typedef structs

Conflicts:
	libavcodec/alac.c
	libavcodec/cinepak.c
	libavcodec/cscd.c
	libavcodec/dcadec.c
	libavcodec/g723_1.c
	libavcodec/gif.c
	libavcodec/iff.c
	libavcodec/kgv1dec.c
	libavcodec/libopenjpegenc.c
	libavcodec/libspeexenc.c
	libavcodec/ra288.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-14 21:18:17 +01:00
Diego Biurrun 7f9f771eac avcodec: Don't anonymously typedef structs 2015-02-14 10:13:49 -08:00
Jean First ecc92ee717 lavc/libopenjpegenc: move opj_create_compress, opj_cio_open and opj_set_event_mgr to libopenjpeg_encode_frame
libopenjpegenc crashes with "pointer being freed was not allocated" when threading
 is enabled with:
 ffmpeg -i tests/vsynth1/01.pgm -vcodec libopenjpeg file.j2k
 this appears to be a bug in libopenjpeg

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-02 17:54:05 +01:00
Jean First 6d1d036e2c lavc/libopenjpegenc: factorize cinema parameters to it's own function
Signed-off-by: Jean First <jeanfirst@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-02 17:32:54 +01:00
Carl Eugen Hoyos f018b1f3a0 Support YA16 in jpeg 2000. 2015-02-01 16:18:39 +01:00
Jean First 1f13348f7d lavc/libopenjpegenc: move opj_setup_encoder to libopenjpeg_encode_frame
if the openjpeg parameter tcp_rates is not 0 ( using the ffmpeg compression_level option )
every 2nd image per thread is badly encoded. By moving the opj_setup_encoder function from
libopenjpeg_encode_init to libopenjpeg_encode_frame this can be prevented.

This fixes ticket #3754.

Signed-off-by: Jean First <jeanfirst@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-24 00:40:08 +01:00
Michael Niedermayer 4c8bc6fdee Merge commit 'e96c3b81cadd0ba84d43b1f3a54980df3785d9a5'
* commit 'e96c3b81cadd0ba84d43b1f3a54980df3785d9a5':
  avutil: rename AV_PIX_FMT_Y400A to AV_PIX_FMT_YA8

Conflicts:
	libavcodec/libopenjpegdec.c
	libavcodec/libopenjpegenc.c
	libavcodec/raw.c
	libavutil/pixdesc.c
	libavutil/pixfmt.h
	libavutil/version.h
	libswscale/swscale_internal.h
	libswscale/swscale_unscaled.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-04 21:48:00 +02:00
Vittorio Giovara e96c3b81ca avutil: rename AV_PIX_FMT_Y400A to AV_PIX_FMT_YA8
The rationale is that you have a packed format in form
<greyscale sample> <alpha sample> <greyscale sample> <alpha sample>
and shortening greyscale to 'G' might make one thing about Greenscale instead.
An alias pixel format and color space name are provided for compatibility.
2014-08-04 12:55:08 +01:00
Dave Rice d63d964fb3 avcodec/libopenjpegenc: Add frame-threading capability
This gives a >50% speed up when encoding with libopenjpeg.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-03 21:17:04 +02:00
Michael Niedermayer 1d8e97c79c Merge commit '8f45bd1433a1d8534d7b3997219c4ca31a669042'
* commit '8f45bd1433a1d8534d7b3997219c4ca31a669042':
  libopenjpeg: Support rgba64 encoding

Conflicts:
	libavcodec/libopenjpegenc.c

See: 36397ea1c7
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-19 01:32:05 +01:00
Michael Niedermayer 543a46e0d1 Merge commit '1ea9fa15c3f9074f6199f68bdd6258c5a2bb89e0'
* commit '1ea9fa15c3f9074f6199f68bdd6258c5a2bb89e0':
  libopenjpeg: K&R formatting cosmetics

Conflicts:
	libavcodec/libopenjpegdec.c
	libavcodec/libopenjpegenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-19 01:06:29 +01:00
Carl Eugen Hoyos 8f45bd1433 libopenjpeg: Support rgba64 encoding 2014-03-18 21:54:31 +01:00
Vittorio Giovara 1ea9fa15c3 libopenjpeg: K&R formatting cosmetics 2014-03-18 21:54:25 +01:00
Michael Niedermayer 9b68538fdd avcodec/libopenjpegenc: Replace av_frame_alloc() and av_frame_ref() by av_frame_clone()
Simplifies code

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-24 03:25:47 +01:00
Michael Niedermayer 52d2bcc786 avcodec/libopenjpegenc: Check the return code of av_frame_ref()
Fixes CID1163842

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-24 02:58:20 +01:00
Nicolas George 97af2faaba lavc/libopenjpegenc: check av_frame_alloc() failure. 2013-12-30 10:58:02 +01:00
Michael Niedermayer 1458f0647c avcodec/libopenjpegenc: drop dependancy on sizeof(AVFrame)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-17 16:35:04 +01:00
Michael Niedermayer 0ee905e243 Merge commit '5b9c3b4505206143d85398c1410949319fa1180f'
* commit '5b9c3b4505206143d85398c1410949319fa1180f':
  Replace all instances of avcodec_alloc_frame() with av_frame_alloc().

Conflicts:
	doc/examples/decoding_encoding.c
	doc/examples/muxing.c
	ffmpeg.c
	libavcodec/alacenc.c
	libavcodec/libopenjpegenc.c
	libavcodec/libvpxenc.c
	libavcodec/pcm.c
	libavcodec/xbmenc.c
	libavcodec/xwdenc.c
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-16 23:54:10 +01:00
Anton Khirnov 5b9c3b4505 Replace all instances of avcodec_alloc_frame() with av_frame_alloc(). 2013-11-16 12:44:20 +01:00
Michael Niedermayer ee77140afa Merge commit 'b2bed9325dbd6be0da1d91ffed3f513c40274fd2'
* commit 'b2bed9325dbd6be0da1d91ffed3f513c40274fd2':
  cosmetics: Group .name and .long_name together in codec/format declarations

Conflicts:
	libavcodec/8svx.c
	libavcodec/alac.c
	libavcodec/cljr.c
	libavcodec/dnxhddec.c
	libavcodec/dnxhdenc.c
	libavcodec/dpxenc.c
	libavcodec/dvdec.c
	libavcodec/dvdsubdec.c
	libavcodec/dvdsubenc.c
	libavcodec/ffv1dec.c
	libavcodec/flacdec.c
	libavcodec/flvdec.c
	libavcodec/fraps.c
	libavcodec/frwu.c
	libavcodec/g726.c
	libavcodec/gif.c
	libavcodec/gifdec.c
	libavcodec/h261dec.c
	libavcodec/h263dec.c
	libavcodec/iff.c
	libavcodec/imc.c
	libavcodec/libopencore-amr.c
	libavcodec/libopenjpegdec.c
	libavcodec/libopenjpegenc.c
	libavcodec/libspeexenc.c
	libavcodec/libvo-amrwbenc.c
	libavcodec/libvorbisenc.c
	libavcodec/libvpxenc.c
	libavcodec/libx264.c
	libavcodec/libxavs.c
	libavcodec/libxvid.c
	libavcodec/ljpegenc.c
	libavcodec/mjpegbdec.c
	libavcodec/mjpegdec.c
	libavcodec/mpeg12dec.c
	libavcodec/mpeg4videodec.c
	libavcodec/msmpeg4dec.c
	libavcodec/pgssubdec.c
	libavcodec/pngdec.c
	libavcodec/pngenc.c
	libavcodec/proresdec_lgpl.c
	libavcodec/proresenc_kostya.c
	libavcodec/ra144enc.c
	libavcodec/rawdec.c
	libavcodec/rv10.c
	libavcodec/sp5xdec.c
	libavcodec/takdec.c
	libavcodec/tta.c
	libavcodec/v210dec.c
	libavcodec/vp6.c
	libavcodec/wavpack.c
	libavcodec/xbmenc.c
	libavcodec/yop.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-04 12:34:23 +02:00
Diego Biurrun b2bed9325d cosmetics: Group .name and .long_name together in codec/format declarations 2013-10-03 23:32:01 +02:00
Michael Bradshaw f46a3e3d6e libopenjpeg: fix encoding of odd sized subsampled images
Signed-off-by: Michael Bradshaw <mjbshaw@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-28 15:04:48 +02:00
Michael Bradshaw 3cfd4df8e7 libopenjpeg: init and close properly; don't config during encode
Signed-off-by: Michael Bradshaw <mjbshaw@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-23 02:35:50 +02:00
clook 4443213d2e avcodec/libopenjpegen: XYZ 12 bit support for libopenjpeg encoder 2013-07-23 01:02:41 +02:00
Sean McGovern bf18abb2eb Rename "AVClass class" as "AVClass component_class" for external codecs.
The aix header math.h defines "extern int class()" for C.
This fixes compilation on aix with external libraries enabled.

Signed-off-by: Carl Eugen Hoyos <cehoyos@ag.or.at>
2013-07-04 18:02:17 +02:00
Michaël Cinquin 60f06f986f libopenjpegenc: make dci compliant j2c
Signed-off-by: Michael Bradshaw <mjbshaw@gmail.com>
2013-02-03 23:53:39 -07:00
Michael Bradshaw 28f36dce3e libopenjpegenc: simplify switch statement
Signed-off-by: Michael Bradshaw <mjbshaw@gmail.com>
2013-01-31 16:03:58 -07:00
Michael Bradshaw c58c67398d libopenjpegenc: add support for pix fmt gbrp (8-16 bit)
Signed-off-by: Michael Bradshaw <mjbshaw@gmail.com>
2013-01-31 15:55:00 -07:00
Johannes Nixdorf e749b5dd98 configure: consider using /usr/include/openjpeg-1.5 when searching for openjpeg
Beginning with version 1.5.1 openjpeg defaults to install its headers to
/usr/include/openjpeg-${major}.${minor} instead of /usr/include without
providing a compatibility symlink making the old test fail.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-22 18:55:39 +01:00