Michael Niedermayer
4e16ad2868
avcodec/utils: Better check for channels in av_get_audio_frame_duration()
...
Fixes integer overflow
Fixes: 0c2625f236ced104d402b4a03c0d65c7/asan_generic_274e1ce_5990_9314e7a67c26aecf011b178ade9f217c.avi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2015-11-14 01:38:15 +01:00
Paul B Mahol
af3f793f60
avcodec: add ADPCM AICA decoder
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2015-10-29 21:26:43 +01:00
Hendrik Leppkes
c2f861ca42
Replace remaining occurances of av_free_packet with av_packet_unref
2015-10-27 14:35:30 +01:00
Hendrik Leppkes
7f5af80ba4
Merge commit 'ce70f28a1732c74a9cd7fec2d56178750bd6e457'
...
* commit 'ce70f28a1732c74a9cd7fec2d56178750bd6e457':
avpacket: Replace av_free_packet with av_packet_unref
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-10-27 14:28:56 +01:00
Hendrik Leppkes
31741aecbf
avcodec: disallow hwaccel with frame threads
...
HWAccels with frame threads are fundamentally flawed in avcodecs current
design, and there are several known problems ranging from image corruption
to driver crashes.
These problems come down to two design problems in the interaction of
threads and HWAccel decoding:
(1)
While avcodec prevents parallel decoding and as such simultaneous access
to the hardware accelerator from the decoding threads, it cannot account
for the user code and its access to the hardware surfaces and the hardware
itself.
This can result in image corruption or even driver crashes if the
user code locks image surfaces while they are being used by the decoder
threads as reference frames.
The current HWAccel API does not offer any way to ensure exclusive access
to the hardware or the surfaces if frame threading is used.
(2)
Initialization of the HWAccel with frame threads is non-trivial, and many
decoders had and still have issues that cause excess calls to the
get_format callback.
This will potentially cause duplicate HWAccel initialization, which in
extreme cases can even lead to driver crashes if the HWAccel is
re-initialized while the user code is actively accessing the hardware
surfaces associated with it, or lead to image corruption due to lost
reference frames.
While both of these issues are solvable, fixing (1) would at least require
a huge API redesign which would move a lot of complexity into the user
code.
The only reason the combination of frame threads and HWAccel was
considered useful is to allow a seamless fallback to multi-threaded
software decoding if the HWAccel is not available, however the issues
outlined above far outweigh this.
The proper solution for a fallback is to re-open the AVCodecContext with
threading enabled if the HWAccel failed, which is a practice commonly used
by various user applications using avcodec today already.
Reviewed-by: Gwenole Beauchesne <gb.devel@gmail.com >
Reviewed-by: wm4 <nfxjfg@googlemail.com >
Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-10-27 10:19:05 +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
Paul B Mahol
035ae3c009
avcodec: add SDX2 DPCM decoder
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2015-10-26 10:08:01 +01:00
Hendrik Leppkes
dde8e5ad02
Merge commit '3ee2c60cc296eee3f63d7b5fee9b4332eeeac9fa'
...
* commit '3ee2c60cc296eee3f63d7b5fee9b4332eeeac9fa':
utils: Use data buffers directly instead of an AVPicture
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-10-22 21:46:56 +02:00
Hendrik Leppkes
ee573b4d31
Merge commit 'a17a7661906ba295d67afd80ac0770422e1b02b3'
...
* commit 'a17a7661906ba295d67afd80ac0770422e1b02b3':
lavc: Add data and linesize to AVSubtitleRect
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-10-22 21:41:53 +02:00
Vittorio Giovara
3ee2c60cc2
utils: Use data buffers directly instead of an AVPicture
...
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com >
2015-10-22 13:31:58 +02:00
Andreas Cadhalpun
a4680e7170
avcodec: rename avpriv_color_frame to ff_color_frame
...
It is only used inside libavcodec.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc >
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com >
2015-10-22 00:38:50 +02:00
Vittorio Giovara
a17a766190
lavc: Add data and linesize to AVSubtitleRect
...
Use the new fields directly instead of the ones from AVPicture.
This removes a layer of indirection which serves no pratical purpose
whatsoever, and will help in removing AVPicture structure completely
later.
Every subtitle encoder/decoder seamlessly points to the new arrays,
so it is possible to deprecate AVSubtitleRect.pict.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com >
2015-10-21 12:02:29 +02:00
Paul B Mahol
8b11e43799
avcodec: add ADPCM PSX decoder
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2015-10-16 16:37:40 +02:00
Derek Buitenhuis
17e41cf361
avcodec: Do not lock during init if there is no init function
...
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com >
Signed-off-by: Luca Barbato <lu_zero@gentoo.org >
2015-10-13 13:43:29 +02:00
Derek Buitenhuis
1156b634c1
avcodec: Don't lock on init for codecs without an init function
...
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com >
2015-10-12 15:25:51 -03:00
Andreas Cadhalpun
ec0275843d
avcodec: remove leftover iff_byterun1 decoder
...
It was merged with the iff_ilbm decoder in commit
929a24efff
.
Define AV_CODEC_ID_IFF_BYTERUN1 as AV_CODEC_ID_IFF_ILBM for API
compatibility.
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com >
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com >
2015-10-12 00:21:13 +02:00
Derek Buitenhuis
eae58428bd
avcodec: Do not lock during open for codecs marked as having threadsafe init
...
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com >
Signed-off-by: Luca Barbato <lu_zero@gentoo.org >
2015-10-04 13:21:16 +02:00
Derek Buitenhuis
abaa12263e
avcodec: Don't lock during open if the codec has threadsafe init
...
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com >
2015-10-02 14:07:14 +01:00
Hendrik Leppkes
2f63e83c26
Merge commit 'a5d58fea68b9212e0065a71939e921505504a9bb'
...
* commit 'a5d58fea68b9212e0065a71939e921505504a9bb':
lavc: reimplement avcodec_get_type() using codec descriptors
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-09-29 13:45:19 +02:00
wm4
a5d58fea68
lavc: reimplement avcodec_get_type() using codec descriptors
...
Signed-off-by: Anton Khirnov <anton@khirnov.net >
2015-09-28 10:50:38 +02:00
Carl Eugen Hoyos
040ddd27bf
lavc/utils: Correctly show bit_rate >INT_MAX.
...
Fixes ticket #2089 .
2015-09-15 20:56:23 +02:00
Michael Niedermayer
7404f3bdb9
lavc: Switch bitrate to 64bit unless compatibility with avconv was requested.
2015-09-15 18:02:43 +02:00
wm4
87a051f976
lavc: allow asynchronous decoders to return correct pkt_dts values
...
The generic code in utils.c sets the AVFrame.pkt_dts field from the
packet it was supposedly decoded. This does not have to be true for a
fully asynchronous decoder like mmaldec. It could be overwritten with an
incorrect value. Even if the decoder doesn't determine the DTS (but sets
it to AV_NOPTS_VALUE), it's impossible to determine a correct value in
utils.c.
Decoders can now be marked with FF_CODEC_CAP_SETS_PKT_DTS, in which case
utils.c won't overwrite the field. The decoders are expected to set this
field (even if they only set it to AV_NOPTS_VALUE).
Signed-off-by: Luca Barbato <lu_zero@gentoo.org >
2015-09-12 12:27:19 +02:00
Hendrik Leppkes
264ff3dd2e
Merge commit '87a051f97633010f71dfc1d23d806856499bf231'
...
* commit '87a051f97633010f71dfc1d23d806856499bf231':
lavc: allow asynchronous decoders to return correct pkt_dts values
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-09-12 13:30:33 +02:00
Hendrik Leppkes
5d8e836d0e
Replace all remaining occurances of step/depth_minus1 and offset_plus1
2015-09-08 17:10:48 +02:00
James Almer
2bef340cb2
avcodec: remove duplicate AVCodecIDs
...
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com >
Signed-off-by: James Almer <jamrial@gmail.com >
2015-09-07 12:46:56 -03:00
Hendrik Leppkes
d02d208211
Merge commit 'c45fcf30cfab687004ed1cdc06ebaa21f4262a0b'
...
* commit 'c45fcf30cfab687004ed1cdc06ebaa21f4262a0b':
DXV decoder
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-09-07 16:07:07 +02:00
Hendrik Leppkes
24e3bac52a
avcodec: remove deprecated codec id aliases
2015-09-05 21:15:58 +02:00
Hendrik Leppkes
76cac7ed45
avcodec: remove deprecated old video encode API
2015-09-05 21:15:57 +02:00
Hendrik Leppkes
64c33f9624
avcodec: remove deprecated old audio encode API
2015-09-05 21:15:55 +02:00
Hendrik Leppkes
2c8ee2547e
avcodec: remove deprecated old audio decode API
2015-09-05 21:15:54 +02:00
Hendrik Leppkes
b9fd813351
Merge commit '8f12ef9860d0e164e4647fd5d5cebdb3cfb34a79'
...
* commit '8f12ef9860d0e164e4647fd5d5cebdb3cfb34a79':
lavu: Drop deprecated duplicated AVFrame/AVCodecContext parameters
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-09-05 17:31:45 +02:00
Hendrik Leppkes
4eb86b83a4
Merge commit '9f90b24877016e7140b9b14e4b1acee663bb6d8a'
...
* commit '9f90b24877016e7140b9b14e4b1acee663bb6d8a':
lavc: Drop deprecated get_buffer related functions
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-09-05 16:59:23 +02:00
Hendrik Leppkes
83a5df54ea
Remove left-over FF_API_DESTRUCT_PACKET cruft
2015-09-05 16:51:53 +02:00
Hendrik Leppkes
87c8812270
Merge commit '01bcc2d5c23fa757d163530abb396fd02f1be7c8'
...
* commit '01bcc2d5c23fa757d163530abb396fd02f1be7c8':
lavc: Drop deprecated destruct_packet related functions
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-09-05 16:50:09 +02:00
Vittorio Giovara
8f12ef9860
lavu: Drop deprecated duplicated AVFrame/AVCodecContext parameters
...
Deprecated in 10/2012.
2015-08-28 16:04:27 +02:00
Vittorio Giovara
9f90b24877
lavc: Drop deprecated get_buffer related functions
...
Deprecated in 11/2012.
2015-08-28 16:01:16 +02:00
Vittorio Giovara
01bcc2d5c2
lavc: Drop deprecated destruct_packet related functions
...
Deprecated in 10/2012.
2015-08-28 16:01:16 +02:00
lummax
0c800b2761
avcodec: Assert on codec->encode2 in encode_audio2
...
Assert on `avctx->codec->encode2` to avoid a SEGFAULT on the subsequent
function call.
avcodec_encode_video2() uses a similar assertion.
Calling the wrong function on a stream is a serious inconsistency
which could at other places be potentially dangerous and exploitable,
it is thus safer to stop execution and not continue with such
inconsistency after returning an error.
Commit-message-extended-by commiter
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2015-08-27 17:26:24 +02:00
Ronald S. Bultje
030b5a4f77
lavc: put remaining bits of vdpau-in-decoder under FF_API_CAP_VDPAU.
2015-08-18 15:57:19 -04:00
Andreas Cadhalpun
2e9c8be834
avcodec: add missing FF_API_CODEC_ID guard
...
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc >
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com >
2015-08-08 21:58:31 +02:00
Michael Niedermayer
b27d4fd997
Revert "libavcodec/utils: av_get_exact_bits_per_sample fixed to return "1" for DSD codecs."
...
Requested-by: Ganesh Ajjanagadde <gajjanag@mit.edu > (original patch reviewer)
This reverts commit 293e25be61
.
2015-08-01 03:25:04 +02:00
Ihar A. Tumashyk
293e25be61
libavcodec/utils: av_get_exact_bits_per_sample fixed to return "1" for DSD codecs.
...
All DSD codes have 1 bit per sample.
https://en.wikipedia.org/wiki/Direct_Stream_Digital
Signed-off-by: Ihar A. Tumashyk <itumashyk@gmail.com >
Reviewed-by: Ganesh Ajjanagadde <gajjanag@mit.edu >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2015-08-01 01:49:21 +02:00
Michael Niedermayer
9789595189
avcodec/utils: Set coded_frame.pict_type in generic code
...
This makes it possible to remove more coded_frame usage without breaking the
publically visible coded_frame
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2015-07-29 01:45:32 +02:00
Michael Niedermayer
29d147c94d
Merge commit '059a934806d61f7af9ab3fd9f74994b838ea5eba'
...
* commit '059a934806d61f7af9ab3fd9f74994b838ea5eba':
lavc: Consistently prefix input buffer defines
Conflicts:
doc/examples/decoding_encoding.c
libavcodec/4xm.c
libavcodec/aac_adtstoasc_bsf.c
libavcodec/aacdec.c
libavcodec/aacenc.c
libavcodec/ac3dec.h
libavcodec/asvenc.c
libavcodec/avcodec.h
libavcodec/avpacket.c
libavcodec/dvdec.c
libavcodec/ffv1enc.c
libavcodec/g2meet.c
libavcodec/gif.c
libavcodec/h264.c
libavcodec/h264_mp4toannexb_bsf.c
libavcodec/huffyuvdec.c
libavcodec/huffyuvenc.c
libavcodec/jpeglsenc.c
libavcodec/libxvid.c
libavcodec/mdec.c
libavcodec/motionpixels.c
libavcodec/mpeg4videodec.c
libavcodec/mpegvideo.c
libavcodec/noise_bsf.c
libavcodec/nuv.c
libavcodec/nvenc.c
libavcodec/options.c
libavcodec/parser.c
libavcodec/pngenc.c
libavcodec/proresenc_kostya.c
libavcodec/qsvdec.c
libavcodec/svq1enc.c
libavcodec/tiffenc.c
libavcodec/truemotion2.c
libavcodec/utils.c
libavcodec/utvideoenc.c
libavcodec/vc1dec.c
libavcodec/wmalosslessdec.c
libavformat/adxdec.c
libavformat/aiffdec.c
libavformat/apc.c
libavformat/apetag.c
libavformat/avidec.c
libavformat/bink.c
libavformat/cafdec.c
libavformat/flvdec.c
libavformat/id3v2.c
libavformat/isom.c
libavformat/matroskadec.c
libavformat/mov.c
libavformat/mpc.c
libavformat/mpc8.c
libavformat/mpegts.c
libavformat/mvi.c
libavformat/mxfdec.c
libavformat/mxg.c
libavformat/nutdec.c
libavformat/oggdec.c
libavformat/oggparsecelt.c
libavformat/oggparseflac.c
libavformat/oggparseopus.c
libavformat/oggparsespeex.c
libavformat/omadec.c
libavformat/rawdec.c
libavformat/riffdec.c
libavformat/rl2.c
libavformat/rmdec.c
libavformat/rtpdec_latm.c
libavformat/rtpdec_mpeg4.c
libavformat/rtpdec_qdm2.c
libavformat/rtpdec_svq3.c
libavformat/sierravmd.c
libavformat/smacker.c
libavformat/smush.c
libavformat/spdifenc.c
libavformat/takdec.c
libavformat/tta.c
libavformat/utils.c
libavformat/vqf.c
libavformat/westwood_vqa.c
libavformat/xmv.c
libavformat/xwma.c
libavformat/yop.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc >
2015-07-27 23:15:19 +02:00
Michael Niedermayer
444e9874a7
Merge commit 'def97856de6021965db86c25a732d78689bd6bb0'
...
* commit 'def97856de6021965db86c25a732d78689bd6bb0':
lavc: AV-prefix all codec capabilities
Conflicts:
cmdutils.c
ffmpeg.c
ffplay.c
libavcodec/8svx.c
libavcodec/aacenc.c
libavcodec/ac3dec.c
libavcodec/adpcm.c
libavcodec/alac.c
libavcodec/atrac3plusdec.c
libavcodec/bink.c
libavcodec/dnxhddec.c
libavcodec/dvdec.c
libavcodec/dvenc.c
libavcodec/ffv1dec.c
libavcodec/ffv1enc.c
libavcodec/fic.c
libavcodec/flacdec.c
libavcodec/flacenc.c
libavcodec/flvdec.c
libavcodec/fraps.c
libavcodec/frwu.c
libavcodec/gifdec.c
libavcodec/h261dec.c
libavcodec/hevc.c
libavcodec/iff.c
libavcodec/imc.c
libavcodec/libopenjpegdec.c
libavcodec/libvo-aacenc.c
libavcodec/libvorbisenc.c
libavcodec/libvpxdec.c
libavcodec/libvpxenc.c
libavcodec/libx264.c
libavcodec/mjpegbdec.c
libavcodec/mjpegdec.c
libavcodec/mpegaudiodec_float.c
libavcodec/msmpeg4dec.c
libavcodec/mxpegdec.c
libavcodec/nvenc_h264.c
libavcodec/nvenc_hevc.c
libavcodec/pngdec.c
libavcodec/qpeg.c
libavcodec/ra288.c
libavcodec/rv10.c
libavcodec/s302m.c
libavcodec/sp5xdec.c
libavcodec/takdec.c
libavcodec/tiff.c
libavcodec/tta.c
libavcodec/utils.c
libavcodec/v210dec.c
libavcodec/vp6.c
libavcodec/vp9.c
libavcodec/wavpack.c
libavcodec/yop.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc >
2015-07-27 22:50:18 +02:00
Michael Niedermayer
94d68a41fa
Merge commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615'
...
* commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615':
lavc: AV-prefix all codec flags
Conflicts:
doc/examples/muxing.c
ffmpeg.c
ffmpeg_opt.c
ffplay.c
libavcodec/aacdec.c
libavcodec/aacenc.c
libavcodec/ac3dec.c
libavcodec/ac3enc_float.c
libavcodec/atrac1.c
libavcodec/atrac3.c
libavcodec/atrac3plusdec.c
libavcodec/dcadec.c
libavcodec/ffv1enc.c
libavcodec/h264.c
libavcodec/h264_loopfilter.c
libavcodec/h264_mb.c
libavcodec/imc.c
libavcodec/libmp3lame.c
libavcodec/libtheoraenc.c
libavcodec/libtwolame.c
libavcodec/libvpxenc.c
libavcodec/libxavs.c
libavcodec/libxvid.c
libavcodec/mpeg12dec.c
libavcodec/mpeg12enc.c
libavcodec/mpegaudiodec_template.c
libavcodec/mpegvideo.c
libavcodec/mpegvideo_enc.c
libavcodec/mpegvideo_motion.c
libavcodec/nellymoserdec.c
libavcodec/nellymoserenc.c
libavcodec/nvenc.c
libavcodec/on2avc.c
libavcodec/options_table.h
libavcodec/opus_celt.c
libavcodec/pngenc.c
libavcodec/ra288.c
libavcodec/ratecontrol.c
libavcodec/twinvq.c
libavcodec/vc1_block.c
libavcodec/vc1_loopfilter.c
libavcodec/vc1_mc.c
libavcodec/vc1dec.c
libavcodec/vorbisdec.c
libavcodec/vp3.c
libavcodec/wma.c
libavcodec/wmaprodec.c
libavcodec/x86/hpeldsp_init.c
libavcodec/x86/me_cmp_init.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc >
2015-07-27 22:10:35 +02:00
Vittorio Giovara
059a934806
lavc: Consistently prefix input buffer defines
...
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com >
2015-07-27 15:24:59 +01:00
Vittorio Giovara
def97856de
lavc: AV-prefix all codec capabilities
...
Express bitfields more simply.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com >
2015-07-27 15:24:58 +01:00
Vittorio Giovara
7c6eb0a1b7
lavc: AV-prefix all codec flags
...
Convert doxygen to multiline and express bitfields more simply.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com >
2015-07-27 15:24:58 +01:00