Commit Graph

18 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
Vittorio Giovara f7e9324733 audiointerleave: Always initialize new_pkt
CC: libav-stable@libav.org
Bug-Id: CID 609333
2015-06-08 13:03:10 +01:00
Vittorio Giovara 1967cd4e4c audiointerleave: check av_new_packet return value
CC: libav-stable@libav.org
Bug-Id: CID 1087078
2014-10-24 23:42:53 +01:00
Nidhi Makhijani 324ff59444 avpacket: Check for and return errors in ff_interleave_add_packet()
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-17 03:18:46 -07:00
Diego Biurrun e926b5ceb1 avformat: Drop unnecessary ff_ name prefixes from static functions 2013-04-30 16:16:23 +02:00
Anton Khirnov fdc8672886 audiointerleave: deobfuscate a function call.
right above there is if (pkt) {<do stuff>; pkt = NULL}, so pkt is just a
fancy name for NULL at this point.
2012-11-02 07:58:38 +01:00
Mans Rullgard 0ebcdf5cda Do not include mathematics.h in avutil.h
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-07-03 21:42:06 +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
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
Reimar Döffinger 3898eed890 Reorder arguments for av_fifo_generic_read to be more logical and
consistent with av_fifo_generic_write.

Originally committed as revision 17914 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 17:47:47 +00:00
Reimar Döffinger c957c85426 Replace all uses of the replaced av_fifo_read by av_fifo_generic_read
Originally committed as revision 17873 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-08 14:42:11 +00:00
Michael Niedermayer 41dd680dd8 Allocate AVFifoBuffer through the fifo API to reduce future API/ABI issues.
Yes this breaks ABI/API but ive already broken it and will bump avutil major
soon.

Originally committed as revision 17869 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-08 14:16:55 +00:00
Baptiste Coudurier 50ced76f4b check fifo size and realloc if needed
Originally committed as revision 17420 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-18 04:42:31 +00:00
Baptiste Coudurier 16e3b0b3e6 rename ff_audio_interleave to ff_audio_rechunk_interleave
Originally committed as revision 17103 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-09 21:34:20 +00:00
Baptiste Coudurier 1cc65cecb2 Move declaration of ff_interleave_add_packet to internal.h.
It is an internal function and should not be in an installed header.

Originally committed as revision 17070 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-08 21:14:46 +00:00
Baptiste Coudurier 18099ade6f Declare ff_interleave_new_audio_packet as static, it is not used
outside of audiointerleave.c.  Also remove the function declaration
  from the header as it is now static.

Originally committed as revision 17068 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-08 21:09:50 +00:00
Baptiste Coudurier 9e8d61d4f1 rewrite pts also, as comment says
Originally committed as revision 17051 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-08 09:48:59 +00:00
Baptiste Coudurier f1544e79f2 extract audio interleaving code from mxf muxer, will be used by gxf and dv
Originally committed as revision 17038 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-08 04:31:44 +00:00