Commit Graph

63 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
Luca Barbato
ce70f28a17 avpacket: Replace av_free_packet with av_packet_unref
`av_packet_unref` matches the AVFrame ref-counted API and can be used as
a drop in replacement.

Deprecate `av_free_packet`.
2015-10-26 18:00:55 +01:00
Anton Khirnov
f792d3cbb8 lavf: add the notimestamps flag to the muxers missing it 2014-06-18 15:03:31 +02: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
Justin Ruggles
5595368bcc amr: set channel_layout 2012-11-12 10:33:18 -05:00
Anton Khirnov
36ef5369ee Replace all CODEC_ID_* with AV_CODEC_ID_* 2012-08-07 16:00:24 +02:00
Diego Biurrun
6774247a9d avformat: Drop pointless "format" from container long names 2012-07-30 13:59:06 +02:00
Martin Storsjö
eb3918c1fd amr: Mark an array const
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-17 22:50:06 +03:00
Martin Storsjö
634e874de5 amr: More space cleanup
This was missed in the previous cleanup patch.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-17 22:50:04 +03:00
Martin Storsjö
5f26d4d448 amr: Cosmetic cleanup
Add spaces around operators, fix brace placement and whitespace to
match K&R style, vertically align code, remove redundant != 0 and
convert x == 0 into !x, drop useless braces.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-17 19:04:46 +03:00
Martin Storsjö
20234a4bd7 cosmetics: Align muxer/demuxer declarations
Also add missing trailing commas, break long codec_tag lines and
add spaces in codec_tag declarations.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-04-06 19:19:59 +03:00
Justin Ruggles
ec2e767bf3 amr demuxer: do not set AVCodecContext.frame_size.
it is not necessary.
2012-03-05 13:08:17 -05:00
Anton Khirnov
6e9651d106 lavf: remove AVFormatParameters from AVFormatContext.read_header signature 2012-01-27 10:51:57 +01:00
Anton Khirnov
c3f9ebf743 lavf: make av_set_pts_info private.
It's supposed to be called only from (de)muxers.
2011-11-30 20:34:45 +01:00
Diego Biurrun
c88ebdb42c Eliminate pointless 0/NULL initializers in AVCodec and similar declarations. 2011-11-28 10:01:50 +01:00
Anton Khirnov
3b3bbdd3e6 lavf,lavd: replace av_new_stream->avformat_new_stream part I.
Trivial replacements with sed are done in this commit:
sed 's/av_new_stream(\([^)]*\), 0)/avformat_new_stream(\1, NULL)/'
2011-10-19 17:02:11 +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
Martin Storsjö
af79dd36f3 amr: Set the AVFMT_GENERIC_INDEX flag
This makes the amr demuxer support seeking, closing roundup
issue 2593.
2011-03-21 21:31:34 +01:00
Martin Storsjö
026fa81de4 amr: Set the pkt->pos field properly to the start of the packet
Previously, the field pointed to the second byte of the packet
(which is the first byte of the actual AMR payload).
2011-03-21 21:31:34 +01:00
Martin Storsjö
2890cba8b5 amr: Set the codec->bit_rate field based on the last packet
This allows libavformat to guess an estimated duration for
amr files.

For streams with varying bit rates (or with silence descriptors
or "no frame" blocks) the guess is, of course, inaccurate.
2011-03-21 21:31:33 +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
66e5b1df36 avio: deprecate url_feof
AVIOContext.eof_reached should be used directly instead.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-07 17:20:31 -05:00
Anton Khirnov
a2704c9712 avio: add avio_tell macro as a replacement for url_ftell
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-04 11:26:57 -05: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
b7effd4e83 avio: avio_ prefixes for get_* functions
In the name of consistency:
get_byte           -> avio_r8
get_<type>         -> avio_r<type>
get_buffer         -> avio_read

get_partial_buffer will be made private later

get_strz is left out becase I want to change it later to return
something useful.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-21 11:23:22 -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
Martin Storsjö
8bb90c5394 Set frame_size in the amr demuxer
Originally committed as revision 25030 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-09-03 14:59:18 +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
Aurelien Jacobs
b250f9c66d Change semantic of CONFIG_*, HAVE_* and ARCH_*.
They are now always defined to either 0 or 1.

Originally committed as revision 16590 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-13 23:44:16 +00:00
Diego Biurrun
8212568a1c Replace generic CONFIG_MUXERS preprocessor conditionals by more specific
CONFIG_FOO_MUXER conditionals where appropriate.

Originally committed as revision 15158 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-02 22:45:13 +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
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
Panagiotis Issaris
769e10f068 Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
Originally committed as revision 9759 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-19 15:21:30 +00:00
Måns Rullgård
f015e411d7 kill uninitialised variable warning in amr_read_packet()
Originally committed as revision 9522 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-07 13:46:30 +00:00
Vitor Sessak
7cf0999529 remove empty write trailer functions
patch by Vitor: [vitor1001 gmail com]

Originally committed as revision 9442 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-06-27 06:54:47 +00:00
Michael Niedermayer
87e8788680 allocate 32 extra bytes at the end of the probe buffer and remove most probe buf_size checks
Originally committed as revision 8677 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-04-08 11:34:15 +00:00
Michael Niedermayer
d95442c03e unused #define
Originally committed as revision 6638 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-10 23:59:08 +00:00
Michael Niedermayer
ab2c12ec90 remove dummy amr_read_close()
Originally committed as revision 6637 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-10 23:57:44 +00:00
Michael Niedermayer
b49638928b more factoriztaion and a FIXME note
Originally committed as revision 6636 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-10 23:56:49 +00:00
Michael Niedermayer
d84fd5d153 factorze another 2 lines
Originally committed as revision 6635 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-10 23:53:14 +00:00
Michael Niedermayer
ce2f3c8b0c set duration and timebase (based on a patch by Simon Morlat simon.morlat linphone org)
Originally committed as revision 6634 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-10 23:49:45 +00:00
Michael Niedermayer
b1bf48aa91 factorize (untested)
Originally committed as revision 6633 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-10 23:45:12 +00:00
Michael Niedermayer
effdc8ef2a return cleanup
Originally committed as revision 6632 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-10-10 23:28:27 +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
Måns Rullgård
191e8ca752 fix some signedness warnings
Originally committed as revision 6355 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-09-27 19:47:39 +00:00
Diego Biurrun
ed4e20ac7f Fix some "'static' is not at beginning of declaration" warnings.
Originally committed as revision 5956 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-08-08 10:24:26 +00:00