Commit Graph

57 Commits

Author SHA1 Message Date
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
Diego Biurrun
daf8cf358a avformat: Don't anonymously typedef structs 2015-02-14 10:13:47 -08:00
Clément Bœsch
7308439158 lavf: Don't explicitly flush after each written packet in muxers
Since 596e5d4783, this is not necessary anymore. It also allows to
actually disable the flushing, improving write performance (but
possibly giving worse latency in real-time streaming).

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-16 22:17:33 +03:00
Diego Biurrun
ac9362c5d9 Move misplaced file author information where it belongs 2013-04-11 02:42:11 +02:00
Anton Khirnov
716d413c13 Replace PIX_FMT_* -> AV_PIX_FMT_*, PixelFormat -> AVPixelFormat 2012-10-08 07:13:26 +02:00
Anton Khirnov
3b4bb19e63 lavf: flush the output AVIOContext in av_write_trailer().
This is consistent with stdio and is what we want to do in all cases.

Fixes a bug in the voc muxer which didn't flush in write_trailer()
previously. This is the cause of the change in the test results.
2012-09-15 18:25:07 +02:00
Martin Storsjö
e6153f173a avopt: Store defaults for AV_OPT_TYPE_INT in the i64 union member
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-09-04 23:13:44 +03:00
Anton Khirnov
36ef5369ee Replace all CODEC_ID_* with AV_CODEC_ID_* 2012-08-07 16:00:24 +02:00
Aneesh Dogra
33510e86b1 gif: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2012-02-21 15:47:06 +01:00
Anton Khirnov
3bbfd3026c lavf: remove disabled FF_API_LOOP_OUTPUT cruft 2012-01-27 10:52:42 +01:00
Anton Khirnov
145f741e11 AVOptions: rename FF_OPT_TYPE_* => AV_OPT_TYPE_* 2011-10-12 16:51:16 +02:00
Anton Khirnov
dfc2c4d900 lavf: use designated initialisers for all (de)muxers.
It's more readable and less prone to breakage.
2011-07-17 06:58:37 +02:00
Anton Khirnov
d31e3f7ccc gif: add loop private option.
Deprecate AVFormatContext.loop_output.
2011-07-08 18:39:56 +02:00
Mans Rullgard
e65ab9d94f Remove unused variables 2011-06-02 20:06:00 +01:00
Mans Rullgard
2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Anton Khirnov
b7f2fdde74 avio: rename put_flush_packet -> avio_flush
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-16 22:59:39 -04:00
Anton Khirnov
bbc413f943 lavf: replace remaining uses of put_tag with avio_write
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-25 14:38:56 -05:00
Anton Khirnov
77eb5504d3 avio: avio: avio_ prefixes for put_* functions
In the name of consistency:
put_byte           -> avio_w8
put_<type>         -> avio_w<type>
put_buffer         -> avio_write

put_nbyte will be made private
put_tag will be merged with avio_put_str

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-21 14:25:15 -05:00
Anton Khirnov
ae628ec1fd avio: rename ByteIOContext to AVIOContext.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-20 08:37:15 -05:00
Diego Elio Pettenò
c6610a216e Prefix all _demuxer, _muxer, _protocol from libavformat and libavdevice.
This also lists the objects from those two libraries as internal (by adding
the ff_ prefix) so that they can then be hidden via linker scripts.
2011-01-26 22:10:09 +00:00
Stefano Sabatini
72415b2adb Define AVMediaType enum, and use it instead of enum CodecType, which
is deprecated and will be dropped at the next major bump.

Originally committed as revision 22735 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-30 23:30:55 +00:00
Stefano Sabatini
fb53b4a035 Rename pbBufPtr() to put_bits_ptr().
The new name is more readable and consistent with the FFmpeg naming
style.

Originally committed as revision 18497 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-13 16:59:38 +00:00
Stefano Sabatini
b275500706 Split bitstream.h, put the bitstream writer stuff in the new file
put_bits.h.

Originally committed as revision 18461 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-12 08:35:26 +00:00
Diego Biurrun
406792e7b0 cosmetics: Remove pointless period after copyright statement non-sentences.
Originally committed as revision 16684 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-19 15:46:40 +00:00
Baptiste Coudurier
6d32ec6ce9 cleanup gif, use BISTREAM_WRITER_LE
Originally committed as revision 16591 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-14 00:27:43 +00:00
Stefano Sabatini
bde15e74de Make long_names in lavf/lavdev optional depending on CONFIG_SMALL.
patch by Stefano Sabatini, stefano.sabatini-lala poste.it
along with some spelling/consistency fixes for the long names by me

Originally committed as revision 13649 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-06-03 16:20:54 +00:00
Diego Biurrun
245976da2a Use full path for #includes from another directory.
Originally committed as revision 13098 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-05-09 11:56:36 +00:00
Diego Biurrun
ccd425e799 Remove unnecessary parentheses from return calls.
Originally committed as revision 13069 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-05-06 09:16:36 +00:00
Michael Niedermayer
76d7c327eb Replace idiotic (what moron wrote that code?) "buffer overflow" message by
abort()

Originally committed as revision 11546 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-01-17 00:12:04 +00:00
Björn Axelsson
899681cd1d Use dynamically allocated ByteIOContext in AVFormatContext
patch by: Björn Axelsson, bjorn d axelsson a intinor d se
thread: [PATCH] Remove static ByteIOContexts, 06 nov 2007

Originally committed as revision 11071 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-11-21 07:41:00 +00:00
Panagiotis Issaris
6f3e0b2174 Replace all occurrences of AVERROR_IO with AVERROR(EIO).
Originally committed as revision 9760 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-19 15:23:32 +00:00
Baptiste Coudurier
f932cdf209 kill AVImageFormat
Originally committed as revision 6875 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-11-02 23:22:23 +00:00
Aurelien Jacobs
7fbde3431a replace coder/decoder file description in libavformat by muxer/demuxer
Originally committed as revision 6774 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-23 08:57:54 +00:00
Diego Biurrun
b78e7197a8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
and fix GPL/LGPL version mismatches.

Originally committed as revision 6577 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-07 15:30:46 +00:00
Luca Abeni
20dd25adc3 Do not set the codec's pixel format in the format's write_header()
Originally committed as revision 5887 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-08-02 09:48:05 +00:00
Måns Rullgård
ff70e60176 allow individual selection of muxers and demuxers
Originally committed as revision 5707 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-07-10 21:14:37 +00:00
Måns Rullgård
d2a067d1d9 give AVInput/OutputFormat structs consistent names
Originally committed as revision 5697 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-07-09 23:40:53 +00:00
Michael Niedermayer
a7702890bd remove STATS code (probably hasnt been used for years ..., and its not completely clear what it was good for anyway)
Originally committed as revision 5689 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-07-09 10:33:49 +00:00
Stefan Huehner
a97c1e93aa Add (mostly) const to variable and parameter declaration, where a char* was
used and 'const char*' should be, plus make some function declarations
static if they aren't used outside their declaring source file.
patch by Stefan Huehner stefan%%at%%huehner%%dot%%org

Originally committed as revision 5492 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-06-17 15:53:23 +00:00
Diego Biurrun
5509bffa88 Update licensing information: The FSF changed postal address.
Originally committed as revision 4842 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-01-12 22:43:26 +00:00
Diego Biurrun
bb270c0896 COSMETICS: tabs --> spaces, some prettyprinting
Originally committed as revision 4764 to svn://svn.ffmpeg.org/ffmpeg/trunk
2005-12-22 01:10:11 +00:00
Diego Biurrun
115329f160 COSMETICS: Remove all trailing whitespace.
Originally committed as revision 4749 to svn://svn.ffmpeg.org/ffmpeg/trunk
2005-12-17 18:14:38 +00:00
Michael Niedermayer
01f4895c68 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
Originally committed as revision 4453 to svn://svn.ffmpeg.org/ffmpeg/trunk
2005-07-17 22:24:36 +00:00
Todd Kirby
8108551a5c Animated GIF looping patch by (Todd Kirby // ffmpeg.php gmail com)
Originally committed as revision 4383 to svn://svn.ffmpeg.org/ffmpeg/trunk
2005-06-18 01:52:24 +00:00
Michael Niedermayer
c0df9d75bd switch to native time bases
Originally committed as revision 4168 to svn://svn.ffmpeg.org/ffmpeg/trunk
2005-04-30 21:43:59 +00:00
Michael Niedermayer
2de7795ad2 common.h -> common.h/bitstream.h
Originally committed as revision 3778 to svn://svn.ffmpeg.org/ffmpeg/trunk
2004-12-29 18:31:28 +00:00
Roman Shaposhnik
f5fc28d23c * fixing a buffer overrun in gif.c
Originally committed as revision 3363 to svn://svn.ffmpeg.org/ffmpeg/trunk
2004-07-28 21:56:59 +00:00
Michael Niedermayer
e928649b0b pass AVPacket into av_write_frame()
fixes the random dts/pts during encoding
asf preroll fix
no more initial zero frames for b frame encoding
mpeg-es dts during demuxing fixed
.ffm timestamp scale fixed, ffm is still broken though

Originally committed as revision 3168 to svn://svn.ffmpeg.org/ffmpeg/trunk
2004-05-29 02:06:32 +00:00
Michael Niedermayer
a8380f44cf removing unused var & converting 64->32bit
Originally committed as revision 2567 to svn://svn.ffmpeg.org/ffmpeg/trunk
2003-12-05 23:12:03 +00:00
Alex Beregszaszi
117a5490bd init_put_bits changed
Originally committed as revision 2369 to svn://svn.ffmpeg.org/ffmpeg/trunk
2003-10-13 10:59:57 +00:00