1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-24 13:56:33 +02:00

147 Commits

Author SHA1 Message Date
Michael Niedermayer
5917653ebd avformat/au: cleanup on EOF return in au_read_annotation()
Fixes: memleak
Fixes: 26841/clusterfuzz-testcase-minimized-ffmpeg_dem_AU_fuzzer-5174166309044224
Regression since: e680d50eb4feddafb2d8575b21fc5fc8764f4801
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit d16974c3dd3a05900aa080ea0729284aea358d10)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2021-02-02 14:18:21 +01:00
Michael Niedermayer
5e76c6e1a6 avformat/au: Check for EOF in au_read_annotation()
Fixes: Timeout (too looong -> 1 ms)
Fixes: 26366/clusterfuzz-testcase-minimized-ffmpeg_dem_SDX_fuzzer-5655584843759616
Fixes: 26391/clusterfuzz-testcase-minimized-ffmpeg_dem_ALP_fuzzer-5484026133217280

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit e680d50eb4feddafb2d8575b21fc5fc8764f4801)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2021-02-02 14:18:21 +01:00
Marton Balint
c05d82fa92 avformat: remove unneeded avio_flush() calls from the end of write_trailer functions
The IO context is always flushed by libavformat/mux.c after write_trailer is
called, so this change should have no effect at all.
2020-01-07 21:51:45 +01:00
Marton Balint
4bf90e095b avformat: remove avio_flush() calls from the end of write_header functions
To make it consistent with other muxers.

The user can still control the generic flushing behaviour after write_header
(same way as after packets) using the -flush_packets option, the default
typically means to flush unless a non-streamed file output is used.

Therefore this change should have no adverse effect on streaming, even if it is
assumed that the first packet has a clean buffer, so small seekbacks within the
output buffer work even when the IO context is not seekable.

Signed-off-by: Marton Balint <cus@passwd.hu>
2020-01-07 21:51:45 +01:00
Carl Eugen Hoyos
4d8875ec23 lavf: Constify the probe function argument.
Reviewed-by: Lauri Kasanen
Reviewed-by: Tomas Härdin
2019-03-21 11:42:17 +01:00
Paul B Mahol
8a8cce078c avformat/au: do not use invalid block_align for small bits per sample
Fixes #5481.
2018-12-31 15:21:47 +01:00
James Almer
4de591e6fb Merge commit '83548fe894cdb455cc127f754d09905b6d23c173'
* commit '83548fe894cdb455cc127f754d09905b6d23c173':
  lavf: fix usage of AVIOContext.seekable

Merged-by: James Almer <jamrial@gmail.com>
2017-03-21 17:02:30 -03:00
Anton Khirnov
83548fe894 lavf: fix usage of AVIOContext.seekable
It is supposed to be a flag. The only currently defined value is
AVIO_SEEKABLE_NORMAL, but other ones may be added in the future.
However all the current lavf code treats this field as a bool (mainly
for historical reasons).
Change all those cases to properly check for AVIO_SEEKABLE_NORMAL.
2016-09-30 16:54:33 +02:00
Thomas Bernard
836f3555a8 avformat/au: Read MetaData from AU Sun audio file header
recognize title= album= artist= genre= track=

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-06-13 20:58:43 +02:00
Thomas Bernard
1f8c0e44cb avformat/au: Write MetaData in AU Sun audio file header
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-06-03 12:18:57 +02:00
Derek Buitenhuis
6f69f7a8bf Merge commit '9200514ad8717c63f82101dc394f4378854325bf'
* commit '9200514ad8717c63f82101dc394f4378854325bf':
  lavf: replace AVStream.codec with AVStream.codecpar

This has been a HUGE effort from:
    - Derek Buitenhuis <derek.buitenhuis@gmail.com>
    - Hendrik Leppkes <h.leppkes@gmail.com>
    - wm4 <nfxjfg@googlemail.com>
    - Clément Bœsch <clement@stupeflix.com>
    - James Almer <jamrial@gmail.com>
    - Michael Niedermayer <michael@niedermayer.cc>
    - Rostislav Pehlivanov <atomnuker@gmail.com>

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-04-10 20:59:55 +01:00
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
Michael Niedermayer
95398aa949 Merge commit 'f792d3cbb8e8e35c54a9358a55dd596b7a40f228'
* commit 'f792d3cbb8e8e35c54a9358a55dd596b7a40f228':
  lavf: add the notimestamps flag to the muxers missing it

Conflicts:
	libavformat/adtsenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-18 17:28:10 +02:00
Anton Khirnov
f792d3cbb8 lavf: add the notimestamps flag to the muxers missing it 2014-06-18 15:03:31 +02:00
Michael Niedermayer
78e6f83ce0 avformat/au: add assert to help source code analyzers
See: CID1108585 and CID1108603
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-20 14:46:36 +02:00
Carl Eugen Hoyos
640c70ddc2 avformat: Use G726LE decoder for Sun AU files
fixes ticket #1955 as suggested by Roman.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-18 16:46:08 +02:00
Michael Niedermayer
580a0600ef Merge remote-tracking branch 'qatar/master'
* qatar/master:
  Move misplaced file author information where it belongs

Conflicts:
	libavcodec/adpcm.c
	libavcodec/adpcmenc.c
	libavcodec/gif.c
	libavcodec/x86/dsputilenc_mmx.c
	libavcodec/x86/fmtconvert_init.c
	libavformat/au.c
	libavformat/gif.c
	libavformat/mov.c
	libavformat/nsvdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-04-11 15:56:18 +02:00
Diego Biurrun
ac9362c5d9 Move misplaced file author information where it belongs 2013-04-11 02:42:11 +02:00
Michael Niedermayer
a9ddb62489 Merge commit '1ecdf8912b9ced51b3267cdcdce5e394d0a3bf8e'
* commit '1ecdf8912b9ced51b3267cdcdce5e394d0a3bf8e':
  avformat: av_log_ask_for_sample() ---> avpriv_request_sample()

Conflicts:
	libavformat/mxfdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-14 12:41:34 +01:00
Diego Biurrun
1ecdf8912b avformat: av_log_ask_for_sample() ---> avpriv_request_sample() 2013-03-13 20:42:21 +01:00
Paul B Mahol
0dcfccaa69 auenc: strict check for supported codec
Also check number of streams and give error message why muxing failed.
This prevents muxing unsupported codec with known and supported tag.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-01-30 22:17:52 +00:00
Paul B Mahol
10e4905dd9 auenc: remove put_au_header() and merge its code into au_write_header
Such level of abstraction is pointless.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-01-30 22:17:52 +00:00
Michael Niedermayer
2e230cf1b5 au: switch to ff_pcm_read_packet() again, after the merge
This fixes G722 durations

Suggested-by: durandal_1707
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-11 15:18:58 +01:00
Michael Niedermayer
65b8527993 Merge commit 'f7bf72a4a1146a7583577c9bdc066767e1ba3c6a'
* commit 'f7bf72a4a1146a7583577c9bdc066767e1ba3c6a':
  idcinvideo: correctly set AVFrame defaults
  yadif: Port inline assembly to yasm
  au: remove unnecessary casts
  au: return AVERROR codes instead of -1

Conflicts:
	libavcodec/idcinvideo.c
	libavfilter/x86/yadif_template.c
	libavformat/au.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 12:27:16 +01:00
Michael Niedermayer
8c7de73e20 Merge commit 'fd9147f11456a7e39a998d7270684922a2a46e6d'
* commit 'fd9147f11456a7e39a998d7270684922a2a46e6d':
  au: cosmetics: pretty-print and remove pointless comments

Conflicts:
	libavformat/au.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 12:19:22 +01:00
Michael Niedermayer
dc5767ff0a Merge commit 'c88d245c9866e48cb8a238b7564964c1fcf3315f'
* commit 'c88d245c9866e48cb8a238b7564964c1fcf3315f':
  au: use ff_raw_write_packet()
  au: set stream start time and packet durations

Conflicts:
	libavformat/au.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 12:05:54 +01:00
Michael Niedermayer
452f632903 Merge commit 'af68a2baae6761044cbed95575e8bcfebf55c6f1'
* commit 'af68a2baae6761044cbed95575e8bcfebf55c6f1':
  au: use %u when printing id and channels since they are unsigned
  au: validate sample rate

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 11:21:03 +01:00
Michael Niedermayer
be894d6cae Merge commit 'c837b38dd33a11c3810e988a60193a858eb4f58c'
* commit 'c837b38dd33a11c3810e988a60193a858eb4f58c':
  au: move skipping of unused data to before parameter validation
  au: do not arbitrarily limit channel count

Conflicts:
	libavformat/au.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 11:12:08 +01:00
Michael Niedermayer
70a65ecabf Merge commit '9a7b56883d1333cdfcdf0fa7584a333841b86114'
* commit '9a7b56883d1333cdfcdf0fa7584a333841b86114':
  au: set bit rate
  au: validate bits-per-sample separately from codec tag
  rtpdec_vp8: Mark broken packets with AV_PKT_FLAG_CORRUPT

Conflicts:
	libavformat/au.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-10 10:18:35 +01:00
Justin Ruggles
fd9147f114 au: cosmetics: pretty-print and remove pointless comments 2013-01-09 11:52:57 -05:00
Justin Ruggles
c88d245c98 au: use ff_raw_write_packet() 2013-01-09 11:52:57 -05:00
Justin Ruggles
af68a2baae au: use %u when printing id and channels since they are unsigned 2013-01-09 11:52:57 -05:00
Justin Ruggles
c837b38dd3 au: move skipping of unused data to before parameter validation
Also do not unnecessarily skip 0 bytes.
2013-01-09 11:52:57 -05:00
Justin Ruggles
f7a3c540c5 au: remove unnecessary casts 2013-01-09 11:52:57 -05:00
Justin Ruggles
bdd00e2d1b au: set stream start time and packet durations 2013-01-09 11:52:57 -05:00
Justin Ruggles
47d029a4c1 au: validate sample rate 2013-01-09 11:52:57 -05:00
Justin Ruggles
fb48f825e3 au: do not arbitrarily limit channel count
Nothing in the AU specification sets a limit on channel count.
We only need to avoid an overflow in the packet size calculation.
2013-01-09 11:52:57 -05:00
Justin Ruggles
2f8207b1c6 au: return AVERROR codes instead of -1 2013-01-09 11:52:57 -05:00
Justin Ruggles
2613de8805 au: do not set pkt->size directly
It is already set by av_get_packet() even for partial reads.
2013-01-09 11:52:57 -05:00
Justin Ruggles
9a7b56883d au: set bit rate 2013-01-09 11:52:56 -05:00
Justin Ruggles
bd4cdef5a8 au: set block_align and use it in au_read_packet() 2013-01-09 11:52:56 -05:00
Justin Ruggles
3f98848d6e au: validate bits-per-sample separately from codec tag 2013-01-09 11:52:56 -05:00
Justin Ruggles
f2214c6224 au: use ff_raw_write_packet() 2013-01-04 19:52:57 +00:00
Paul B Mahol
507956824c auenc: do not write invalid file size
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2012-12-28 16:29:22 +00:00
Michael Niedermayer
d69238e991 Merge commit 'f3298f12997eb4b7ad203766f768f92e3dd72a2a'
* commit 'f3298f12997eb4b7ad203766f768f92e3dd72a2a':
  Return proper error code after av_log_ask_for_sample()
  configure: cosmetics: Separate hwaccel dependencies from decoders/encoders
  oggdec: check memory allocation

Conflicts:
	configure
	libavcodec/pictordec.c
	libavformat/anm.c
	libavformat/oggdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-24 15:09:58 +01:00
Diego Biurrun
f3298f1299 Return proper error code after av_log_ask_for_sample() 2012-12-23 18:56:56 +01:00
Paul B Mahol
76877beada au: return meaningful error codes
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2012-12-19 20:16:35 +00:00
Michael Niedermayer
94ecbe23c5 Merge commit 'c35f0e8495e34c2082dcde805e9323c9f6a4cb0a'
* commit 'c35f0e8495e34c2082dcde805e9323c9f6a4cb0a':
  au: Reorder code so that both muxer and demuxer are under #ifdefs
  fate: Move RALF test into lossless audio group
  cosmetics: Use consistent names for multiple inclusion guards.

Conflicts:
	libavformat/au.c
	tests/fate/lossless-audio.mak
	tests/fate/real.mak

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-18 14:27:59 +01:00
Diego Biurrun
c35f0e8495 au: Reorder code so that both muxer and demuxer are under #ifdefs
This reduces code size when either piece has been disabled.
2012-12-17 17:02:22 +01:00
Paul B Mahol
c090b5427d audec: use ff_pcm_read_packet()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2012-12-05 12:40:57 +00:00