1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-28 20:53:54 +02:00
Go to file
Andreas Rheinhardt 223a2c2a60 fftools/ffmpeg: Improve streamcopy
do_streamcopy() has a packet that gets zero-initialized first, then gets
initialized via av_init_packet() after which some of its fields are
oerwritten again with the actually desired values (unless it's EOF): The
side data is copied into the packet with av_copy_packet_side_data() and
if the source packet is refcounted, the packet will get a new reference
to the source packet's data. Furthermore, the flags are copied and the
timestamp related fields are overwritten with new values.

This commit replaces this by using av_packet_ref() to both initialize
the packet as well as populate its fields with the right values (unless
it's EOF again in which case the packet will still be initialized). The
differences to the current approach are as follows:
a) There is no call to a deprecated function (av_copy_packet_side_data())
any more.
b) Several fields that weren't copied before are now copied from the source
packet to the new packet (e.g. pos). Some of them (the timestamp related
fields) may be immediately overwritten again and some don't seem to be
used at all (e.g. pos), but in return using av_packet_ref() allows to forgo
the initializations.
c) There was no check for whether copying side data fails or not. This
has been changed: Now the program is exited in this case.

Using av_packet_ref() does not lead to unnecessary copying of data,
because the source packets are already always refcounted (they originate
from av_read_frame()).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-10-12 13:39:45 +02:00
compat compat/cuda: Change inclusion guards 2019-08-05 12:07:09 +02:00
doc avutil/eval: add sgn() 2019-10-12 10:13:29 +02:00
ffbuild build: add support for building CUDA files with clang 2019-08-04 19:08:08 +02:00
fftools fftools/ffmpeg: Improve streamcopy 2019-10-12 13:39:45 +02:00
libavcodec avcodec/qdmc: Check input space in qdmc_get_vlc() 2019-10-12 13:21:50 +02:00
libavdevice libavdevice: Update the class name as uniform style 2019-08-15 09:29:55 +08:00
libavfilter avfilter/vf_signalstats: fix stack buffer overflow 2019-10-11 13:32:24 +02:00
libavformat avformat/mpjpegdec: ensure seekback for latest chunk 2019-10-12 13:21:50 +02:00
libavresample avresample: remove deprecated attribute from the AVAudioResampleContext struct 2018-01-09 10:56:53 -03:00
libavutil avutil/eval: add sgn() 2019-10-12 10:13:29 +02:00
libpostproc Bump minor versions again on master to keep 4.2 versions separate from master 2019-07-21 18:36:31 +02:00
libswresample swresample/audioconvert: fix invalid left shift for 64bit sample format 2019-09-26 16:22:47 +02:00
libswscale swscale: Fix AltiVec/VSX build with recent GCC 2019-10-04 08:58:17 +03:00
presets
tests avcodec/flac_parser: Fix off-by-one error 2019-10-07 22:27:18 +02:00
tools tools/target_dec_fuzzer: Adjust VP7 threshold 2019-09-29 22:18:58 +02:00
.gitattributes
.gitignore tools/python: add script to convert TensorFlow model (.pb) to native model (.model) 2019-07-01 10:23:47 -03:00
.travis.yml Merge commit '899ee03088d55152a48830df0899887f055da1de' 2019-03-14 15:53:16 -03:00
Changelog avfilter: add anlms filter 2019-10-06 15:09:38 +02:00
configure configure: check for a sufficiently recent enough AMF version 2019-09-09 09:56:12 +02:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md INSTALL.md: Fix Markdown formatting 2019-01-31 10:29:16 -09:00
LICENSE.md LICENSE: Add missing libraries that need --enable-version3. 2019-08-12 02:25:39 +02:00
MAINTAINERS MAINTAINERS: add myself to OMX 2019-08-23 17:07:05 -07:00
Makefile tools: Add fuzzer for demuxers 2019-05-31 22:44:30 +02:00
README.md Remove the ffserver program 2018-01-06 18:31:37 +00:00
RELEASE RELEASE: Update value for post 4.2 branch 2019-07-21 18:37:32 +02:00

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides a mean to alter decoded Audio and Video through chain of filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Coding examples are available in the doc/examples directory.

License

FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process and will be ignored.