Commit Graph

43 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
Nidhi Makhijani 13c90bc9a3 adts: Return more meaningful error codes
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-21 04:25:48 -07: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
Anton Khirnov 36ef5369ee Replace all CODEC_ID_* with AV_CODEC_ID_* 2012-08-07 16:00:24 +02:00
Diego Biurrun 0177b7d23a Improve descriptiveness of a number of codec and container long names 2012-07-30 20:46:55 +02:00
Jindrich Makovicka 485d3ea064 adtsenc: Don't expose the muxer internals to the rest of lavf
This isn't required any longer, when the mpegts muxer uses it
as a proper chained muxer.

Signed-off-by: Jindrich Makovicka <makovick@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-06-03 01:18:11 +03:00
Janne Grunau fd095539d1 latmdec: fix audio specific config parsing
Pass the correct size in bits to mpeg4audio_get_config and add a flag
to disable parsing of the sync extension when the size is not known.

Latm with AudioMuxVersion 0 does not specify the size of the audio
specific config. Data after the audio specific config can be
misinterpreted as sync extension resulting in random and wrong configs.
2011-12-03 00:42:48 +01:00
Alex Converse ac47e014bb adtsenc: Check frame size.
Inspired by work from: Michael Niedermayer <michaelni@gmx.at>.

Signed-off-by: Alex Converse <alex.converse@gmail.com>
2011-11-28 11:22:40 -08:00
Anton Khirnov 59a9a23581 lavc: use avpriv_ prefix for some mpeg4audio symbols used in lavf.
Specifically, ff_mpeg4audio_sample_rates, ff_mpeg4audio_get_config and
ff_copy_pce_data
2011-10-20 21:06:57 +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
Alex Converse 7f01a4192c adts: Fix PCE copying.
Parse the extension flag bit when reading the MPEG4 AudioSpecificConfig.

This has nothing to do with SBR/PS contradictory to what was noted when it was removed.
2011-07-06 22:38:59 -07: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 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
Alex Converse cfde3a7e13 Cosmetics: whitespace
Originally committed as revision 24093 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-07 20:03:15 +00:00
Alex Converse 5935f9d6bd Allow remuxing of explicitly signalled AAC files into ADTS.
The ADTS output files are not explicitly signaled because the format
does not support explicit signalling.

Originally committed as revision 23935 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-01 14:49:32 +00:00
Baptiste Coudurier 8fdd542ce4 In mpegts muxer, write adts header if aac bitstream does not contain it
Originally committed as revision 22355 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 00:18:49 +00:00
Alex Converse ad92558754 Use av_log_missing_feature in the ADTS encoder. (Pseudo reverts r19173).
Originally committed as revision 19299 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-29 22:48:07 +00:00
Alex Converse 70f99f8dd2 Do not include libavcodec/internal.h in the ADTS muxer.
Originally committed as revision 19173 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-12 19:49:46 +00:00
Alex Converse 007c47e8b9 Add the .adts file extension to the ADTS muxer.
Originally committed as revision 19085 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-03 23:34:35 +00:00
Alex Converse 97d4318347 Add PCE support to the ADTS muxer.
Originally committed as revision 18818 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-13 22:59:58 +00:00
Stefano Sabatini 9106a698e7 Rename bitstream.h to get_bits.h.
Originally committed as revision 18494 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-13 16:20:26 +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
Alex Converse 496dcbbc86 ADTS: Increased protection against writing illegal/nonsense files.
Originally committed as revision 17859 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-06 21:19:16 +00:00
Patrik Kullman eca406e284 Add libavcodec/internal.h include to avoid warning: implicit declaration of
function ‘ff_log_missing_feature’

Patch by Patrik Kullman ( patrik yes nu )

Originally committed as revision 17220 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-13 23:02:05 +00:00
Alex Converse ecc3a139b8 Report the illegal audio object type, not it offset by 1.
Discussed and OKed at http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2009-February/019860.html

Originally committed as revision 17198 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-13 03:51:15 +00:00
Alex Converse dd44d9e316 ADTS Muxer: Refuse to write illegal ADTS files by checking validity of header
members and erroring out if invalid

Patch by Alex Converse ( alex converse gmail com )

Originally committed as revision 17193 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-12 23:51:08 +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
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
Måns Rullgård f225016296 update my email address
Originally committed as revision 9489 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-05 20:08:51 +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
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 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
Baptiste Coudurier 4f6a6e1f81 skip 0byte packets
Originally committed as revision 5231 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-03-27 16:43:04 +00:00
Baptiste Coudurier 302ed0ddcd flush packets
Originally committed as revision 5226 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-03-27 10:36:22 +00:00
Luca Abeni 8cecedfbe8 ff_asts_init needs to be inside #ifdef CONFIG_MUXERS, remove some misplaced
CONFIG_MUXERS from adtsenc.c, fixes compilation with --disable-muxers.
patch by Luca Abeni, lucabe72 &at& email &dot& it

Originally committed as revision 5030 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-02-17 21:06:51 +00:00
Måns Rullgård a283db3962 generate adts frame headers if required
Originally committed as revision 4970 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-02-10 01:24:32 +00:00