Commit Graph

63 Commits

Author SHA1 Message Date
wm4
ce35a61399 lavc/avpacket: check for malloc failure
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-12 19:31:29 +01:00
Michael Niedermayer
c9eac8062e avcodec/avpacket: use av_freep(), do not leave stale pointers in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-07 03:40:57 +02:00
Michael Niedermayer
b60938e4fd avcodec/avpacket: simplify freeing pkt->data
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-07 03:40:15 +02:00
Michael Niedermayer
4a99333581 Merge commit '874390e163427c1fe7682ab27924a7843780dbb3'
* commit '874390e163427c1fe7682ab27924a7843780dbb3':
  lavc: add a convenience function for rescaling timestamps in a packet

Conflicts:
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-20 16:40:04 +02:00
Anton Khirnov
874390e163 lavc: add a convenience function for rescaling timestamps in a packet 2014-06-20 14:14:11 +02:00
Michael Niedermayer
4a2fd251f4 Merge commit 'cdf58f0599c39852ee3beafe5f64af7d57d4215b'
* commit 'cdf58f0599c39852ee3beafe5f64af7d57d4215b':
  avpacket: fix copying side data in av_packet_copy_props()

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-19 18:51:34 +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
Michael Niedermayer
33c9bb943b avcodec/avpacket: use av_malloc_array()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-08 16:17:40 +02:00
Roman Fietze
5bb3f88255 avcodec.h, avpacket.c: use const AVPacket pointers in copy functions
Signed-off-by: Roman Fietze <roman.fietze@telemotive.de>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-04 18:36:48 +02:00
Michael Niedermayer
01923bab98 avcodec: move end zeroing code from av_packet_split_side_data() to avcodec_decode_subtitle2()
This code changes the input packet, which is read only and can in
rare circumstances lead to decoder errors. (i run into one of these in
the audio decoder, which corrupted the packet during av_find_stream_info()
so that actual decoding that single packet failed later)
Until a better fix is implemented, this commit limits the problem.
A better fix might be to make the subtitle decoders not depend on
data[size] = 0 or to copy their input when this is not the case.
2013-11-21 03:13:26 +01:00
Michael Niedermayer
e50278348a avcodec/avpacket: fix order of operations in case of too large allocation
Found-by: wm4
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-20 19:44:21 +01:00
Michael Niedermayer
fcb1b0078d avcodec/avpacket: use size_t, fix potential integer overflow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-20 17:35:48 +01:00
Ben Boeckel
51a84a6bca avpacket: add pack/unpack functions for AVDictionary
These functions are intended for use with side_data which comes in an
AVPacket.

Signed-off-by: Ben Boeckel <mathstuf@gmail.com>
Reviewed-by: wm4
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-20 16:48:51 +01:00
Michael Niedermayer
05493c6e72 avcodec/avpacket: correctly set the number of side data elements in av_copy_packet_side_data()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-20 00:23:23 +01:00
Michael Niedermayer
240fd8c96f avcodec/avpacket/av_packet_split_side_data: ensure that side data padding is initialized
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-19 17:58:47 +02:00
Michael Niedermayer
7283d2bb90 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  avpacket: Fix error checking in packet_alloc

Conflicts:
	libavcodec/avpacket.c

See: b905a7137a
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-16 14:22:26 +02:00
Martin Storsjö
85e8192b85 avpacket: Fix error checking in packet_alloc
Previously the wrong buffer pointer was checked, when buf
instead of *buf was checked. But checking the return value
instead is even better.

Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-16 11:22:42 +03:00
Michael Niedermayer
9cbb3fce59 avcodec/avpacket: zero memory in av_packet_new_side_data()
This ensures that no uninitialized bytes cause non-deterministic behavior.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-04 21:00:24 +02:00
Vignesh Venkatasubramanian
fdd1aaf87a avpacket: Fixing side data copy when src == dst
Fixing av_packet_copy_side_data to work correctly when source and
destination are the same. This makes sure that there is no memory
leak and double frees.

Signed-off by: Vignesh Venkatasubramanian <vigneshv@google.com>

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-02 21:40:15 +02:00
Michael Niedermayer
6e1b1a27a4 avcodec/avpacket: Use av_free_packet() in error cleanups
This prevents memleaks on errors
reproduceable with fate when error pathes are forced

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-30 21:43:35 +02:00
Michael Niedermayer
98fd8a7848 avcodec: Remove ff_packet_free_side_data, use av_packet_free_side_data
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-12 00:13:21 +02:00
Michael Niedermayer
b905a7137a avcodec/avpacket: Fix memory allocation failure check
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-11 10:56:07 +02:00
Michael Niedermayer
67a580f423 Merge commit '5a9a9d4a2abefa63d9a898ce26715453c569e89d'
* commit '5a9a9d4a2abefa63d9a898ce26715453c569e89d':
  lavc: Add refcounted api to AVPacket

Conflicts:
	libavcodec/avpacket.c
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-11 10:45:13 +02:00
Luca Barbato
5a9a9d4a2a lavc: Add refcounted api to AVPacket
Provide a clean way to manipulate packets.
2013-08-10 13:41:35 +02:00
Michael Niedermayer
20be5e0a0e Merge commit '7950e519bb094897f957b9a9531cc60ba46cbc91'
* commit '7950e519bb094897f957b9a9531cc60ba46cbc91':
  Disable deprecation warnings for cases where a replacement is available

Conflicts:
	libavcodec/avpacket.c
	libavcodec/pthread.c
	libavcodec/utils.c
	libavdevice/v4l2.c
	libavfilter/avfiltergraph.c
	libavfilter/buffersrc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-03 10:08:30 +02:00
Diego Biurrun
7950e519bb Disable deprecation warnings for cases where a replacement is available 2013-08-02 19:19:02 +02:00
Clément Bœsch
151b4947e5 lavc/avpacket: fill padding area on side data split.
The padding data is assumed to be 0 in several places, notably in
subtitles. This problem was not detected with fate-sub-srt test because
the first element of the side data (x1) is 0 in the test, so the
trailing side data present in the packet wasn't read by the decoder. The
issue can be observed with a large enough x1.

It is also noted in FF_INPUT_BUFFER_PADDING_SIZE doxy that MPEG
bitstreams require that padding with 0, so it might fix other issues.
2013-06-01 15:12:49 +02:00
Vignesh Venkatasubramanian
48de04f4ec avcodec/avpacket: Refactoring copy_side_data into a separate function
Refactoring copy_side_data into a separate function so that it can be called
in cases where side data needs to be duplicated.

Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-14 22:51:12 +02:00
Michael Niedermayer
b691bc424f copy_packet_data: fix memleak
This should fix gif fate memleaks

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-04-29 03:08:50 +02:00
Janne Grunau
91d4823f70 avpacket: copy side data type and size in av_dup_packet 2013-03-13 11:34:47 +01:00
Clément Bœsch
02a6b06d9e avpacket: do not copy data when buf ref is available.
This at least fixes issues with lavf/subtitles. The behaviour of
av_dup_packet() is unchanged, only av_copy_packet() is affected.
2013-03-13 01:30:20 +01:00
Michael Niedermayer
2653e12520 Merge commit '1afddbe59e96af75f1c07605afc95615569f388f'
* commit '1afddbe59e96af75f1c07605afc95615569f388f':
  avpacket: use AVBuffer to allow refcounting the packets.

Conflicts:
	libavcodec/avpacket.c
	libavcodec/utils.c
	libavdevice/v4l2.c
	libavformat/avidec.c
	libavformat/flacdec.c
	libavformat/id3v2.c
	libavformat/matroskaenc.c
	libavformat/mux.c
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-08 19:12:03 +01:00
Anton Khirnov
1afddbe59e avpacket: use AVBuffer to allow refcounting the packets.
This will allow us to avoid copying the packets in many cases.

This breaks ABI.
2013-03-08 07:33:45 +01:00
Michael Niedermayer
a646ac8ef5 Merge commit '90cfc084e3e6d37ab88fc96a95f0401d8e8b4cd1'
* commit '90cfc084e3e6d37ab88fc96a95f0401d8e8b4cd1':
  avpacket: free side data in av_free_packet().
  v4l2: do not assert on a value received from outside of Libav
  v4l2: set the average framerate instead of codec timebase.

Conflicts:
	libavcodec/avpacket.c
	libavdevice/v4l2.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-14 14:16:21 +01:00
Anton Khirnov
90cfc084e3 avpacket: free side data in av_free_packet().
Freeing it in av_destruct_packet(), as is done currently, would mean
that we allow it to be allocated with other means. But that would make
av_packet_new_side_data() unsafe.

Side data is not expected to be large, so copying it if required
shouldn't be a problem.
2013-01-13 16:31:40 +01:00
Andrey Utkin
cc07a7925e Add av_copy_packet()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-21 01:03:31 +02:00
Andrey Utkin
d33908a5fc Move av_dup_packet() copy logic to separate procedure
Done to simplify next commit introducing av_copy_packet()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-21 00:49:12 +02:00
Andrey Utkin
b0fabed20f When copying pkt side_data, don't forget size, type
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-17 22:36:28 +02:00
Michael Niedermayer
f276a490f0 Merge commit '3f7fd59d151a2773f0e2e93e56b6b13ec6e5334b'
* commit '3f7fd59d151a2773f0e2e93e56b6b13ec6e5334b':
  avformat: fix typo in avformat_close_input
  mp3enc: write Xing TOC
  mp3enc: support MPEG-2 and MPEG-2.5 in Xing header.
  mp3enc: downgrade some errors in writing Xing frame to warnings
  lavf: flush the output AVIOContext in av_write_trailer().
  lavf: cosmetics, reformat av_write_trailer().
  avio: flush the internal buffer in avio_close()
  Enhance doc on asyncts audiofilter
  cmdutils: avoid setting data pointers to invalid values in alloc_buffer()
  libavcodec: remove av_destruct_packet_nofree()

Conflicts:
	libavcodec/avpacket.c
	libavformat/mp3enc.c
	libavformat/nutenc.c
	libavformat/utils.c
	libavformat/version.h
	tests/ref/lavf/voc
	tests/ref/lavf/voc_s16

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-16 14:24:11 +02:00
Mans Rullgard
cb6632809d libavcodec: remove av_destruct_packet_nofree()
This function was deprecated two major versions ago (2009).

Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-09-15 13:50:35 +01:00
Michael Niedermayer
c581cb4e4f Merge remote-tracking branch 'qatar/master'
* qatar/master:
  Fix even more missing includes after the common.h removal
  build: Factor out rangecoder dependencies to CONFIG_RANGECODER
  build: Factor out error resilience dependencies to CONFIG_ERROR_RESILIENCE
  x86: avcodec: Consistently name all init files
  Add more missing includes after removing the implicit common.h
  Add some more missing includes after removing the implicit common.h
  Don't include common.h from avutil.h
  rtmp: Automatically compute the hash for SWFVerification

Conflicts:
	configure
	doc/APIchanges
	doc/examples/decoding_encoding.c
	libavcodec/Makefile
	libavcodec/assdec.c
	libavcodec/audio_frame_queue.c
	libavcodec/avpacket.c
	libavcodec/dv_profile.c
	libavcodec/dwt.c
	libavcodec/libtheoraenc.c
	libavcodec/rawdec.c
	libavcodec/rv40dsp.c
	libavcodec/tiff.c
	libavcodec/tiffenc.c
	libavcodec/v210dec.h
	libavcodec/vc1dsp.c
	libavcodec/x86/Makefile
	libavfilter/asrc_anullsrc.c
	libavfilter/avfilter.c
	libavfilter/buffer.c
	libavfilter/formats.c
	libavfilter/vf_ass.c
	libavfilter/vf_drawtext.c
	libavfilter/vf_fade.c
	libavfilter/vf_select.c
	libavfilter/video.c
	libavfilter/vsrc_testsrc.c
	libavformat/version.h
	libavutil/audioconvert.c
	libavutil/error.h
	libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-16 16:20:30 +02:00
Martin Storsjö
1d9c2dc89a Don't include common.h from avutil.h
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-08-15 22:32:06 +03:00
Michael Niedermayer
7d82020fcb Merge remote-tracking branch 'qatar/master'
* qatar/master:
  librtmp: return AVERROR_UNKNOWN instead of -1.
  librtmp: don't abuse a variable for two unrelated things.
  librtmp: add rtmp_app and rtmp_playpath private options.
  bmv: add stricter checks for invalid decoded length
  avpacket: fix duplicating side data.
  flv: support stream text data as onTextData

Conflicts:
	libavcodec/bmv.c
	libavformat/flvdec.c
	libavformat/flvenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-06-04 00:33:42 +02:00
Anton Khirnov
cf3a1948e9 avpacket: fix duplicating side data.
Use correct side data size instead of just zeroed field.
2012-06-03 10:22:42 +02:00
Michael Niedermayer
3230590c5d libavcodec: fix side data split with 0 sized packets
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-05-21 20:34:32 +02:00
Michael Niedermayer
ca19862d38 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  libxvid: remove disabled code
  qdm2: make a table static const
  qdm2: simplify bitstream reader setup for some subpacket types
  qdm2: use get_bits_left()
  build: Consistently handle conditional compilation for all optimization OBJS.
  avpacket, bfi, bgmc, rawenc: K&R prettyprinting cosmetics
  msrle: convert MS RLE decoding function to bytestream2.
  x86inc improvements for 64-bit

Conflicts:
	common.mak
	libavcodec/avpacket.c
	libavcodec/bfi.c
	libavcodec/msrledec.c
	libavcodec/qdm2.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-04-13 00:39:19 +02:00
Diego Biurrun
2ef15b46e4 avpacket, bfi, bgmc, rawenc: K&R prettyprinting cosmetics 2012-04-12 09:00:49 +02:00
Michael Niedermayer
1eb7f39c7b Merge remote-tracking branch 'qatar/master'
* qatar/master:
  h264: error out on invalid bitdepth.
  aacsbr: use a swap index for the Y matrix rather than copy buffers.
  huffyuv: do not abort on unknown pix_fmt; instead, return an error.
  lcl: return negative error codes on decode_init() errors.
  rtpenc: Use MB info side data for splitting H263 packets for RFC 2190
  h263enc: Add an option for outputting info about MBs as side data
  avpacket: Add a function for shrinking already allocated side data
  nellymoserdec: Saner and faster IMDCT windowing

Conflicts:
	doc/APIchanges
	libavcodec/avpacket.c
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-03-01 23:11:31 +01:00
Martin Storsjö
442c1320e7 avpacket: Add a function for shrinking already allocated side data
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-03-01 16:08:30 +02:00
Reimar Döffinger
c4ba5198ea Fix leaking of side data.
While we correctly "register" the side data when we split it,
the application (in this case FFmpeg) might not update the
AVPacket pool it uses to finally free the packet, thus
causing a leak.
This also makes the av_dup_packet unnecessary which could
cause an even worse leak in this situation.
Also change the code to not modify the user-provide AVPacket at all.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-14 17:23:57 +01:00