Commit Graph
100 Commits
Author SHA1 Message Date
Anton Khirnov 194be1f43e lavf: switch to AVStream.time_base as the hint for the muxer timebase
Previously, AVStream.codec.time_base was used for that purpose, which
was quite confusing for the callers. This change also opens the path for
removing AVStream.codec.

The change in the lavf-mkv test is due to the native timebase (1/1000)
being used instead of the default one (1/90000), so the packets are now
sent to the crc muxer in the same order in which they are demuxed
(previously some of them got reordered because of inexact timestamp
conversion).
2014-06-18 15:12:34 +02:00
Anton Khirnov d754ed4172 riffenc: take an AVStream instead of an AVCodecContext
It will be useful in the following commits.

Also, rename the AVCodecContext pointer name from 'stream' to 'codec'.
2014-06-18 15:03:55 +02:00
Anton Khirnov f792d3cbb8 lavf: add the notimestamps flag to the muxers missing it 2014-06-18 15:03:31 +02:00
Anton Khirnov cfbdd7ffbd rtpenc: base max_frames_per_packet on avg_frame_rate, not codec timebase
Fall back to 1 (which is what is used for most cases anyway) when the
framerate is not set.
2014-06-18 15:03:16 +02:00
Anton Khirnov 894682a973 Remove avserver.
It has not been properly maintained for years and there is little hope
of that changing in the future.
It appears simpler to write a new replacement from scratch than
unbreaking it.
2014-06-18 14:55:28 +02:00
Anton Khirnov 71d6551e67 avconv: use the correct variable in comparison 2014-06-17 09:01:26 +02:00
Anton Khirnov 48e5092133 avconv: make -shortest work with streamcopy
CC: libav-stable@libav.org
2014-06-12 08:17:50 +02:00
Anton Khirnov 383136264e avconv: do not use the stream codec context for encoding 2014-06-01 08:33:21 +02:00
Anton Khirnov 41776ba9c0 avconv: do not use the stream codec context for decoding 2014-06-01 08:33:11 +02:00
Anton Khirnov e19d48dfce flac muxer: support reading updated extradata from side data 2014-06-01 08:32:33 +02:00
Anton Khirnov 0097cbea69 flac muxer: accept only STREAMINFO extradata
The other format (full flac header blocks) should not be exported by any
demuxers anymore.

This allows to drop an avpriv_ function and also simplify the following
commits.
2014-06-01 08:31:33 +02:00
Anton Khirnov ed39cda029 flacenc: send final extradata in packet side data 2014-06-01 08:27:01 +02:00
Anton Khirnov 0957b274e3 lavc: add an option to enable side data-only packets during encoding
Some encoders (e.g. flac) need to send side data when there is no more
data to be output. This enables them to output a packet with no data in
it, only side data.
2014-06-01 08:26:43 +02:00
Anton Khirnov 962d631573 matroskaenc: set the stream timebase earlier
Fixes calculating the ts offset for audio codecs with delay.
2014-05-29 08:01:58 +02:00
Anton Khirnov 43e7f0797f flvenc: only write the framerate tag based on avg_frame_rate
Do not fall back on the codec timebase, since that can be anything for
VFR video.
2014-05-29 08:01:30 +02:00
Anton Khirnov cf6977712c movenc: write avg_frame_rate as the framerate, not the codec timebase 2014-05-29 08:01:23 +02:00
Anton Khirnov 81eec081af matroskaenc: base DefaultDuration on the framerate, not the codec timebase
This results in DefaultDuration not being written when the framerate is
not known, but as this field is purely informative, this should not
break any sane demuxers.
2014-05-29 08:00:57 +02:00
Anton Khirnov 106b62f4ba matroskaenc: write the channel mask for FLAC 2014-05-28 07:55:14 +02:00
Anton Khirnov efcde917af vorbiscomment: simplify API by using av_dict_count() 2014-05-28 07:54:54 +02:00
Anton Khirnov 23f741f793 matroskadec: parse the channel layout mask for FLAC
It is commonly stored in a vorbiscomment block in codec private data.
2014-05-28 07:50:32 +02:00
Anton Khirnov 4efdadc8ec matroskadec: export just the STREAMINFO block as FLAC extradata
It contains all information that is used by the decoder and the other
FLAC-capable demuxers (flacdec, ogg) export only STREAMINFO as well.
2014-05-28 07:49:15 +02:00
Anton Khirnov 6df478bf89 matroskadec: split parsing tracks into a separate function 2014-05-28 07:48:59 +02:00
Anton Khirnov 5fdaf312c5 flac: make avpriv_flac_parse_block_header() inline
This avoids all the ABI troubles associated with avpriv_.
Since this function is very small and does not depend on any tables,
making it inline should have no adverse effects.
2014-05-28 07:48:30 +02:00
Anton Khirnov 54ed488b1a flac muxer: write WAVEFORMATEXTENSIBLE_CHANNEL_MASK tag for multichannel files 2014-05-28 07:47:31 +02:00
Anton Khirnov d6b9ce99ea flac demuxer: parse the WAVEFORMATEXTENSIBLE_CHANNEL_MASK tag
It is used to store the channel mask for non-standard layouts.
2014-05-28 07:47:15 +02:00
Anton Khirnov f13ffb6636 flacdec: do not overwrite a channel layout set by the caller
The channel layout mask for non-standard layouts is typically stored at
the container level (as a vorbiscomment tag) for FLAC.
2014-05-28 07:46:04 +02:00
Anton Khirnov 7cc4c9f32f lavfi/formats: avoid using AV_{PIX,SAMPLE}_FMT_NB
Thatt hardcodes the number of formats into lavfi and will break when a
shared lavu is updated, adding new formats.
2014-05-26 22:25:47 +02:00
Anton Khirnov b03b2d86aa buffersrc: avoid using AV_PIX_FMT_NB
That hardcodes the number of pixel formats into lavfi and will break
when a shared lavu is updated, adding new pixel formats.
2014-05-26 22:25:41 +02:00
Anton Khirnov a7d070acb5 vf_fieldorder: avoid using AV_PIX_FMT_NB
That hardcodes the number of pixel formats into lavfi and will break
when a shared lavu is updated, adding new pixel formats.
2014-05-26 22:25:26 +02:00
Anton Khirnov 862f33c10e vf_scale: use the pixfmt descriptor API
Avoid using AV_PIX_FMT_NB, since that hardcodes the number of pixel
formats into lavfi and will break when a shared lavu is updated, adding
new pixel formats.
2014-05-26 22:24:46 +02:00
Anton Khirnov 45fc73edfe vf_format: rework format list parsing
Avoid using AV_PIX_FMT_NB, since that hardcodes the number of pixel
formats into lavfi and will break when a shared lavu is updated, adding
new pixel formats.
2014-05-26 22:22:42 +02:00
Anton Khirnov 9929b3564c pthread_frame: simplify the code by using new AVPacket API
This also handles side data properly.
2014-05-19 13:12:46 +02:00
Anton Khirnov cdf58f0599 avpacket: fix copying side data in av_packet_copy_props()
Side data count is incremented by by calling av_packet_new_side_data()
in the following loop, setting it explicitly results in the resulting
value being twice what it should be.

CC: libav-stable@libav.org
2014-05-19 13:12:40 +02:00
Anton Khirnov a312f71090 lavf: deprecate now unused AVStream.pts 2014-05-19 07:14:24 +02:00
Anton Khirnov ed7922faac mux: drop one of the hacks comprising compute_pkt_fields2()
All encoders should output proper timestamps now.
2014-05-19 07:14:18 +02:00
Anton Khirnov dc40d88625 avconv: do not use poorly defined and undocumented AVStream.pts
Use OutputStream.last_mux_dts as an approximation of 'current' output
time instead.
2014-05-19 07:14:11 +02:00
Anton Khirnov c9f8809ee4 hevc/intra_pred: simplify neighboring sample derivation 2014-05-19 07:12:55 +02:00
Anton Khirnov a1c2b48018 hevc: templatize intra_pred 2014-05-19 07:10:03 +02:00
Anton Khirnov 0ba5299a80 movenc: use the "encoder" metadata tag to write stsd Compressorname
This mirrors the demuxer behaviour and avoids accessing
AVCodecContext.codec, which should not be done in muxers.
2014-05-18 20:34:03 +02:00
Anton Khirnov 6656370b85 avconv: set the "encoder" tag when transcoding 2014-05-18 20:33:46 +02:00
Anton Khirnov d246231e47 wavenc: use codec descriptors to get the codec name
Also, return a proper error code.
2014-05-18 20:33:38 +02:00
Anton Khirnov 968a62a9d9 doc/APIchanges: mark the release 10 branch point 2014-05-18 10:53:00 +02:00
Anton Khirnov 33082af756 doc/APIchanges: fill in missing hashes and dates 2014-05-18 10:52:41 +02:00
Anton Khirnov 79f2c426fd dv: do not set codec timebase
It is not supposed to be set from outside of libavcodec.
Set average framerate instead.
2014-05-18 10:24:43 +02:00
Anton Khirnov 93afb6c98d avconv: set output avg_frame_rate when known 2014-05-18 10:24:36 +02:00
Anton Khirnov 7a5f4f6853 lavf: extend avg_frame_rate documentation. 2014-05-18 10:24:24 +02:00
Anton Khirnov c3311d472a avienc: sanitize variable naming in write_header()
Do not call an AVCodecContext 'stream', that is highly confusing.
Also, add a local variable for the current AVStream in the loop over all
streams.
2014-05-18 10:24:02 +02:00
Anton Khirnov ab3fdaa713 yop: only set extradata size after it has been successfully allocated
Do not leave a non-zero extradata_size set on failure
2014-05-18 10:22:42 +02:00
Anton Khirnov b513bf6f69 yuv4mpegdec: do not set coded_frame properties
coded_frame is not meant to be changed from outside of lavc, and is not
used for decoding.
Set AVCodecContext.field_order instead.
2014-05-18 10:22:08 +02:00
Anton Khirnov e4dc1000d7 yuv4mpeg: split the demuxer and muxer into separate files 2014-05-18 10:21:31 +02:00
Anton Khirnov 3ef6c5264b a64: check that extradata exists before reading from it 2014-05-18 10:20:19 +02:00
Anton Khirnov b136564909 a64: remove unneeded struct qualifier 2014-05-18 10:19:54 +02:00
Anton Khirnov d256ed78ff 4xm: allocate extradata properly.
Pad it with the required amount of zeros, check for malloc failure.
2014-05-18 10:19:35 +02:00
Anton Khirnov fd056029f4 lavc: add avcodec_free_context().
Right now, the caller has to manually manage some allocated
AVCodecContext fields, like extradata or subtitle_header. This is
fragile and prone to leaks, especially if we want to add more such
fields in the future.

The only reason for this behaviour is so that the AVStream codec context
can be reused for decoding. Such reuse is discouraged anyway, so this
commit is the first step to deprecating it.
2014-05-18 10:17:41 +02:00
Anton Khirnov e1b66778b6 lavc: remove the locking code in avcodec_close()
This function should not modify any global state, so there should be no
reason for any locking.
2014-05-18 10:16:35 +02:00
Anton Khirnov 4735784f1c FATE/opus: increase fuzz for the celt tests
This seems to be needed on some 32bit arches.
2014-05-16 14:35:20 +02:00
Anton Khirnov 3b2fbe67bd lavc: properly handle subtitle_header in avcodec_copy_context() 2014-05-15 07:51:39 +02:00
Anton Khirnov efc7df6c1f lavc: preserve the original private data in avcodec_copy_context()
If a non-NULL codec was passed to avcodec_alloc_context3(), private data
will be already allocated in dest.
2014-05-15 07:51:16 +02:00
Anton Khirnov c9281a01b7 lavf: drop the zero-sized packets hack
There should not be any valid reason anymore for passing completely
empty packets to lavf.
OTOH side data-only packets can be useful.
2014-05-15 07:50:47 +02:00
Anton Khirnov 0c1959b056 lavf: add AVFMT_FLAG_BITEXACT.
Use it instead of checking CODEC_FLAG_BITEXACT in the first stream's
codec context.

Using codec options inside lavf is fragile and can easily break when the
muxing codec context is not the encoding context.
2014-05-15 07:42:07 +02:00
Anton Khirnov b70d7a4ac7 lavc: add a native Opus decoder.
Initial implementation by Andrew D'Addesio <modchipv12@gmail.com> during
GSoC 2012.

Completion by Anton Khirnov <anton@khirnov.net>, sponsored by the
Mozilla Corporation.

Further contributions by:
Christophe Gisquet <christophe.gisquet@gmail.com>
Janne Grunau <janne-libav@jannau.net>
Luca Barbato <lu_zero@gentoo.org>
2014-05-15 06:49:34 +02:00
Anton Khirnov a738540366 lavf: properly document the distinction between flags and ctx_flags 2014-05-14 07:47:56 +02:00
Anton KhirnovandLuca Barbato 1839fafa95 avconv: Support VDA hwaccel
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-05-11 15:00:03 +02:00
Anton KhirnovandLuca Barbato 67afcefb35 lavc: Add new VDA hwaccel
It leverages the new hwaccel 1.2 features:

- get_buffer2 is never called
- the internal context is automatically initialized/deinitialized

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-05-11 15:00:03 +02:00
Anton KhirnovandLuca Barbato 31a46750c7 vda: use hwaccel private data for internal bitstream buffer 2014-05-11 15:00:03 +02:00
Anton KhirnovandLuca Barbato 66e6c8a7b4 lavu: Add a pixel format for new VDA hwaccel
The current hwaccel is broken and cannot be fixed in a compatible
way. It will be deprecated and replaced with a new one.
2014-05-11 14:59:59 +02:00
Anton KhirnovandLuca Barbato dd2d3b766b lavc: Add hwaccel private data and init/uninit callbacks 2014-05-11 14:59:07 +02:00
Anton KhirnovandLuca Barbato a871ef0cc9 hwaccel: Rename priv_data_size to frame_priv_data_size
This describes more accurately what this field is for.
2014-05-11 14:59:07 +02:00
Anton KhirnovandLuca Barbato 08bb256758 lavc: document which parts of AVHWAccel are private. 2014-05-11 14:59:07 +02:00
Anton KhirnovandLuca Barbato 5c1d7246cd lavc: set AVCodecContext.hwaccel in ff_get_format()
This way each decoder does not have to do the same thing manually.
2014-05-11 14:59:07 +02:00
Anton KhirnovandLuca Barbato 632ad2248e lavc: Add an internal wrapper around get_format()
It will be useful in the following commits.
2014-05-11 14:59:07 +02:00
Anton Khirnov 9580818c5d avconv: rename OutputStream.opts to OutputStream.encoder_opts
This makes it more clear what is this variable for exactly.
2014-05-03 21:44:24 +02:00
Anton Khirnov 01947f07b8 avconv: remove a useless line
Doing anything with that field when we are doing streamcopy (so the
encoder is not opened) should have absolutely no effect.
2014-05-03 21:44:10 +02:00
Anton Khirnov 65ed9e7585 avconv: rename 'codec' to 'enc_ctx'
This more clearly describes what is the variable used for.

Also, move its declaration into the block where it is actually used.
2014-05-03 21:43:43 +02:00
Anton Khirnov 650a5206a9 avconv: rename 'icodec' to 'dec_ctx'
This more clearly describes what is the variable used for.
2014-05-03 21:43:24 +02:00
Anton Khirnov f3a6ad22c9 avconv: rename InputStream.opts to InputStream.decoder_opts
This makes it more clear what is this variable for exactly.
2014-05-03 21:43:05 +02:00
Anton Khirnov 73ed8558a6 avconv: simplify exit_program() by using more local vars 2014-05-03 21:42:02 +02:00
Anton Khirnov ba71c74017 lavc: deprecate AVCodecContext.codec_name
It is undocumented and has no real use.
2014-05-01 09:31:32 +02:00
Anton Khirnov e7fc9796d8 lavc: do not use AVCodecContext.codec_name in avcodec_string()
That field will be deprecated.
2014-05-01 09:26:57 +02:00
Anton Khirnov ef9732162c rmdec: do not export anything to AVCodecContext.codec_name
That field will be deprecated and the value that is written there is not
particularly useful.
2014-05-01 09:26:51 +02:00
Anton Khirnov 6072184e70 asfenc: use codec descriptors instead of AVCodecs to write codec info
Also, stop using AVCodecContext.codec_name as fallback, since it will be
deprecated.

Changes the result of the lavf-asf test (and its associated seektest),
since 'msmpeg4v3' gets written instead of just 'msmpeg4'.
2014-05-01 09:26:20 +02:00
Anton Khirnov 92e4b643df oggparseskeleton: do not use AVCodecContext.codec_name
That field is undocumented, of dubious use, and will be deprecated.
2014-05-01 09:26:02 +02:00
Anton Khirnov 18f2514c40 mov: export stsd Compressorname in metadata
Stop using the undocumented to-be-deprecated AVCodecContext.codec_name
field.
2014-05-01 09:25:46 +02:00
Anton Khirnov a2941c8cb2 lavc: move CODEC_FLAG_MV0 to mpegvideo 2014-05-01 09:24:18 +02:00
Anton Khirnov 6484149158 lavc: make the xvid-specific "gmc" flag a private option of libxvid 2014-05-01 09:24:02 +02:00
Anton Khirnov b2c31710c9 lavc: move CODEC_FLAG_NORMALIZE_AQP to mpegvideo 2014-05-01 09:23:19 +02:00
Anton Khirnov 5fccedaa67 lavc: deprecate CODEC_FLAG_INPUT_PRESERVED
The addition of reference-counted frames makes it pointless.
2014-05-01 09:22:47 +02:00
Anton Khirnov 141fdc763c matroska: add the Opus mapping 2014-05-01 08:04:33 +02:00
Anton Khirnov a1aa37dd0b matroskaenc: write CodecDelay 2014-05-01 08:03:51 +02:00
Anton Khirnov eb3b5501e8 matroskadec: read the CodecDelay element 2014-04-30 21:00:01 +02:00
Anton Khirnov 9d76dd952f h264: drop commented out cruft 2014-04-29 14:49:42 +02:00
Anton Khirnov c1f92d1358 mpegvideo: remove unused MpegEncContext.b4_stride 2014-04-29 14:49:42 +02:00
Anton Khirnov 6a13505c06 mpegvideo: move the MpegEncContext fields used from arm asm to the beginning
This should reduce the frequency with which the offsets need to be
updated.
2014-04-29 14:49:42 +02:00
Anton Khirnov a61c2115fb configure: rework dxva in avconv handling
Move the dxva check after the dependencies have been detected, make sure
the ole32 library exists.

Fixes build on non-Windows.
2014-04-28 23:02:56 +02:00
Anton Khirnov 1eb57e1d9b lavc: eliminate tb_unreliable()
If framerate estimation is enabled, it makes sense to always apply it,
instead of limiting it to a few specific cases.
2014-04-28 11:34:59 +02:00
Anton Khirnov f9157463db lavf: do not use the parser duration for video
The parser has no way of knowing video duration, and therefore no video
parsers set it.
2014-04-22 07:46:03 +02:00
Anton Khirnov 1ae8198bca avconv: always reset packet pts after decoding an audio frame
Currently, if a decoder sets AVFrame.pts, we'd send the same timestamp
to it twice, which is wrong.
2014-04-22 07:45:49 +02:00
Anton Khirnov b19a5e5198 lavc: improve AVCodecContext.delay doxy 2014-04-22 07:44:40 +02:00
Anton Khirnov a4ed995cab txd: do not set the codec timebase.
It is not supposed to be changed from outside of lavc.
Set the stream timebase and average framerate instead.
2014-04-22 07:44:16 +02:00
Anton Khirnov 21d8f4da91 resample: remove an unneeded context variable 2014-04-17 20:08:19 +02:00