Commit Graph

65 Commits

Author SHA1 Message Date
Derek Buitenhuis 6f69f7a8bf Merge commit '9200514ad8717c63f82101dc394f4378854325bf'
* commit '9200514ad8717c63f82101dc394f4378854325bf':
  lavf: replace AVStream.codec with AVStream.codecpar

This has been a HUGE effort from:
    - Derek Buitenhuis <derek.buitenhuis@gmail.com>
    - Hendrik Leppkes <h.leppkes@gmail.com>
    - wm4 <nfxjfg@googlemail.com>
    - Clément Bœsch <clement@stupeflix.com>
    - James Almer <jamrial@gmail.com>
    - Michael Niedermayer <michael@niedermayer.cc>
    - Rostislav Pehlivanov <atomnuker@gmail.com>

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-04-10 20:59:55 +01:00
Anton Khirnov 9200514ad8 lavf: replace AVStream.codec with AVStream.codecpar
Currently, AVStream contains an embedded AVCodecContext instance, which
is used by demuxers to export stream parameters to the caller and by
muxers to receive stream parameters from the caller. It is also used
internally as the codec context that is passed to parsers.

In addition, it is also widely used by the callers as the decoding (when
demuxer) or encoding (when muxing) context, though this has been
officially discouraged since Libav 11.

There are multiple important problems with this approach:
    - the fields in AVCodecContext are in general one of
        * stream parameters
        * codec options
        * codec state
      However, it's not clear which ones are which. It is consequently
      unclear which fields are a demuxer allowed to set or a muxer allowed to
      read. This leads to erratic behaviour depending on whether decoding or
      encoding is being performed or not (and whether it uses the AVStream
      embedded codec context).
    - various synchronization issues arising from the fact that the same
      context is used by several different APIs (muxers/demuxers,
      parsers, bitstream filters and encoders/decoders) simultaneously, with
      there being no clear rules for who can modify what and the different
      processes being typically delayed with respect to each other.
    - avformat_find_stream_info() making it necessary to support opening
      and closing a single codec context multiple times, thus
      complicating the semantics of freeing various allocated objects in the
      codec context.

Those problems are resolved by replacing the AVStream embedded codec
context with a newly added AVCodecParameters instance, which stores only
the stream parameters exported by the demuxers or read by the muxers.
2016-02-23 17:01:58 +01:00
Michael Niedermayer b4018544fb avformat/img2enc: remove unused variable
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-14 21:30:53 +01:00
Marton Balint 35890aaa65 avformat/img2enc: disable atomic file creation by default
Currently it is broken when explicitly using the file protocol, it uses an
insecure temporary file name, and in commit b4431c80 disabling the option by
default was already considered. Also it is not very consistent to have such an
option for one particular muxer.

Signed-off-by: Marton Balint <cus@passwd.hu>
2016-02-14 01:34:16 +01:00
Marton Balint 0250fc2146 avformat/img2enc: return error if image rename fails
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-02-14 01:34:16 +01:00
Derek Buitenhuis bc9a5965c8 Merge commit '9f61abc8111c7c43f49ca012e957a108b9cc7610'
This also deprecates our old duplicated callbacks.

* commit '9f61abc8111c7c43f49ca012e957a108b9cc7610':
  lavf: allow custom IO for all files

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-10 14:42:41 +00:00
Derek Buitenhuis 21f9468402 avutil: Rename FF_CEIL_COMPAT to AV_CEIL_COMPAT
Libav, for some reason, merged this as a public API function. This will
aid in future merges.

A define is left for backwards compat, just in case some person
used it, since it is in a public header.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-01-27 16:36:46 +00:00
Anton Khirnov 9f61abc811 lavf: allow custom IO for all files
Some (de)muxers open additional files beyond the main IO context.
Currently, they call avio_open() directly, which prevents the caller
from using custom IO for such streams.

This commit adds callbacks to AVFormatContext that default to
avio_open2()/avio_close(), but can be overridden by the caller. All
muxers and demuxers using AVIO are switched to using those callbacks
instead of calling avio_open()/avio_close() directly.

(de)muxers that use the URLProtocol layer directly instead of AVIO
remain unconverted for now. This should be fixed in later commits.
2016-01-24 16:45:32 +01:00
Clément Bœsch b4431c80ef lavf/img2enc: add atomic_writing option
This behaviour change caused a regression on our side recently, we might
want to disable the option by default.
2015-12-21 11:19:51 +01:00
Clément Bœsch 43ecec0f03 avformat: use AV_OPT_TYPE_BOOL in a bunch of places 2015-12-04 15:43:33 +01:00
Michael Niedermayer 232b8a5a43 avformat/img2enc: re enable atomic writes with split planes
They work now after fixing the implementation

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-28 02:29:51 +01:00
Michael Niedermayer 1b82a0052c avformat/img2enc: Fix img2enc atomic implementation to work with split planes
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-27 21:28:23 +01:00
Michael Niedermayer 9ec2b9fce1 avformat/img2enc: Disable rename&atomic writing for non file protocol and split planes
For protocols other than local files ff_rename() is not implemented
For split planes support the implementation is simply wrong

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-27 20:44:46 +01:00
Hendrik Leppkes c2f861ca42 Replace remaining occurances of av_free_packet with av_packet_unref 2015-10-27 14:35:30 +01:00
Hendrik Leppkes 7daac50067 Merge commit '22f4d9c303ede1a240538fd105c97047db40dc86'
* commit '22f4d9c303ede1a240538fd105c97047db40dc86':
  img2enc: Make sure the images are atomically written

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-27 12:50:56 +01:00
Luca Barbato 22f4d9c303 img2enc: Make sure the images are atomically written
Users that want to generate a live-preview and serve it
would otherwise get partial images.
2015-10-23 11:55:14 +02:00
Hendrik Leppkes 5d8e836d0e Replace all remaining occurances of step/depth_minus1 and offset_plus1 2015-09-08 17:10:48 +02:00
tab fb135139fd avformat: implement query_codec for the image2 muxer.
Allows avformat_query_codec to be used to check for valid image2 encoders.
Reuses the existing ff_guess_image2_codec ID table.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-07 02:48:58 +02:00
Michael Niedermayer a0fe1a25fa Merge commit 'daf8cf358a098a903d59adb6c0d0cc3262a8c93e'
* commit 'daf8cf358a098a903d59adb6c0d0cc3262a8c93e':
  avformat: Don't anonymously typedef structs

Conflicts:
	libavformat/adtsenc.c
	libavformat/aiffenc.c
	libavformat/avidec.c
	libavformat/gif.c
	libavformat/iff.c
	libavformat/img2dec.c
	libavformat/jvdec.c
	libavformat/matroskadec.c
	libavformat/udp.c
	libavformat/wtvdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-14 21:07:40 +01:00
Diego Biurrun daf8cf358a avformat: Don't anonymously typedef structs 2015-02-14 10:13:47 -08:00
Michael Niedermayer 50bb9b87ab avformat/img2enc: Use avio_closep() to avoid leaving stale pointers in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-08 14:50:07 +01:00
Michael Niedermayer 63e62cfbe2 avformat/img2enc: Use localtime_r() for thread saftey
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-02 20:09:16 +01:00
Michael Niedermayer f5abd12c4d avformat/img2enc: remove webp extension as we have a dedicated webp muxer
Found-by: jamrial
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-02 01:00:57 +01:00
Carl Eugen Hoyos 90d93eeb38 Allow .y as extension for image2. 2014-04-05 02:18:09 +02:00
Michael Niedermayer 12ab07be44 Merge commit 'e50f5d3cf9ef9a16982a5cb4d8b1916cd963aa5b'
* commit 'e50f5d3cf9ef9a16982a5cb4d8b1916cd963aa5b':
  Alias PIX image encoder and decoder

Conflicts:
	Changelog
	libavcodec/allcodecs.c
	libavcodec/version.h
	libavformat/img2enc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-27 01:10:28 +01:00
Vittorio Giovara e50f5d3cf9 Alias PIX image encoder and decoder 2014-03-26 23:25:02 +01:00
Jean First 6d78e852fb img2: add j2c file extension
Some applications use the j2c extension for jpeg2000 codestream files.
2014-03-16 23:31:29 +01:00
Michael Niedermayer 6fe5f770db Merge commit 'be7c323176e2e5fcf30e3d2ff20975b2f936811b'
* commit 'be7c323176e2e5fcf30e3d2ff20975b2f936811b':
  Add a libwebp encoder

Conflicts:
	Changelog
	doc/encoders.texi
	doc/general.texi
	libavcodec/version.h
	libavformat/img2enc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-22 11:53:41 +01:00
Justin Ruggles be7c323176 Add a libwebp encoder 2013-12-21 17:01:42 -05:00
Clément Bœsch 3bcd5c1e31 avformat/img2enc: simplify split planes extension selection. 2013-11-07 20:30:43 +01:00
Clément Bœsch 3c5e6e7635 avformat/img2enc: reindent after previous commit. 2013-11-07 20:30:43 +01:00
Clément Bœsch f70db22999 avformat/image2: allow muxing gif files.
Fixes Ticket #2936.
2013-11-07 20:30:43 +01:00
Michael Niedermayer 49515cb840 avformat: remove duplicate includes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-21 15:36:33 +02:00
Stefano Sabatini 7af7b45c38 lavf/image2: extend start_number range to accept zero
Address trac ticket #2884.
2013-08-22 14:26:23 +02:00
Ramiro Polla 454c89dde3 img2enc: add option to use strftime() for filename
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-19 01:45:37 +02:00
Clément Bœsch 3da726f188 lavf/img2enc: use FF_CEIL_RSHIFT(). 2013-05-16 23:20:07 +02:00
Michael Niedermayer c7c71f95f8 replace remaining PIX_FMT_* flags with AV_PIX_FMT_FLAG_*
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-15 11:23:14 +02:00
Carl Eugen Hoyos 00a61ac755 Recognize j2k as file suffix for the image2 muxer. 2013-04-29 13:11:32 +02:00
Michael Niedermayer 647fe2e777 Merge commit '9e6b5e61a0c91e25e298d0a21b189c4c95443795'
* commit '9e6b5e61a0c91e25e298d0a21b189c4c95443795':
  img2enc: add an option for overwriting one file with subsequent images

Conflicts:
	doc/muxers.texi
	libavformat/img2enc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-04-11 21:50:53 +02:00
Anton Khirnov 9e6b5e61a0 img2enc: add an option for overwriting one file with subsequent images
Based on a patch by Michael Niedermayer <michaelni@gmx.at>.
2013-04-11 12:30:44 +02:00
Stefano Sabatini 1ec3324f00 lavf/img2enc: extend current options documentation 2013-01-25 00:04:23 +01:00
Michael Niedermayer 165be91c2b img2enc: fix typo
Found-by: durandal_1707
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-21 22:56:13 +01:00
rogerdpack d828bae9d2 better failure message for img2enc
Signed-off-by: rogerdpack <rogerpack2005@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-21 21:18:12 +01:00
Michael Niedermayer db29a7c7c2 Merge commit '9d46eaec7a90bd8f5cd9e45398c6d17804182320'
* commit '9d46eaec7a90bd8f5cd9e45398c6d17804182320':
  build: The FLAC encoder also depends on the flacdsp code
  img2: K&R formatting cosmetics
  h264: check context state before decoding slice data partitions
  flashsv: make sure data for zlib priming is available

Conflicts:
	libavcodec/Makefile
	libavformat/img2.c
	libavformat/img2dec.c
	libavformat/img2enc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-30 14:49:13 +01:00
Diego Biurrun cc7d5cfeec img2: K&R formatting cosmetics
Also introduce local img_ namespace to simplify debugging.
2012-11-29 17:15:57 +01:00
Paul B Mahol f5f29910dd img2enc: remove dead code
Nothing in lavc sets extradata for such codec and this is wrong place
for it anyway.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2012-11-18 12:09:20 +00:00
Michael Niedermayer 2a0dfc51ea img2enc: support 16bit per sample yuv in split planes.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-06 02:27:04 +01:00
Michael Niedermayer 2c87565147 img2enc: support storing alpha planes too in split plane mode
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-06 01:42:26 +01:00
Michael Niedermayer db012e161e img2enc: Fix yuva with yuv split planes.
Previously the chroma planes where corrupted in this case.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-06 01:31:41 +01:00
Michael Niedermayer 67ee2d2f6d img2enc: check pix_fmt for split planes mode.
Found-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-06 01:31:41 +01:00