1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00
Go to file
Martin Storsjö db7968bff4 avio: Allow custom IO users to get labels for the output bytestream
This allows callers with avio write callbacks to get the bytestream
positions that correspond to keyframes, suitable for live streaming.

In the simplest form, a caller could expect that a header is written
to the bytestream during the avformat_write_header, and the data
output to the avio context during e.g. av_write_frame corresponds
exactly to the current packet passed in.

When combined with av_interleaved_write_frame, and with muxers that
do buffering (most muxers that do some sort of fragmenting or
clustering), the mapping from input data to bytestream positions
is nontrivial.

This allows callers to get directly information about what part
of the bytestream is what, without having to resort to assumptions
about the muxer behaviour.

One keyframe/fragment/block can still be split into multiple (if
they are larger than the aviocontext buffer), which would call
the callback with e.g. AVIO_DATA_MARKER_SYNC_POINT, followed by
AVIO_DATA_MARKER_UNKNOWN for the second time it is called with
the following data.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-05-18 10:36:45 +03:00
compat jack: Support OSX 2016-03-31 18:03:21 +02:00
doc avio: Allow custom IO users to get labels for the output bytestream 2016-05-18 10:36:45 +03:00
libavcodec Move VLC and RL_VLC_ELEM structure definitions to a separate header 2016-05-17 10:29:27 +02:00
libavdevice Combine deprecation guards where appropriate 2016-05-13 15:14:30 +02:00
libavfilter tests: Move all test programs to a subdirectory 2016-05-13 14:55:56 +02:00
libavformat avio: Allow custom IO users to get labels for the output bytestream 2016-05-18 10:36:45 +03:00
libavresample tests: Move all test programs to a subdirectory 2016-05-13 14:55:56 +02:00
libavutil stereo3d: Add API to get name from value or value from name 2016-05-17 12:25:27 -04:00
libswscale tests: Move all test programs to a subdirectory 2016-05-13 14:55:56 +02:00
presets presets: spelling error in libvpx 1080p50_60 2011-10-22 00:28:56 +02:00
tests fate: Update fate-lavf-ts after commit 393596f9d5 2016-05-17 12:41:38 +03:00
tools tools: Port to codec parameters API 2016-05-17 11:16:26 +02:00
.gitattributes Treat all '*.pnm' files as non-text file 2014-11-28 17:52:43 -05:00
.gitignore tests: Move all test programs to a subdirectory 2016-05-13 14:55:56 +02:00
.travis.yml travis: Enable OSX integration 2015-11-17 16:51:00 +01:00
arch.mak ppc: vsx: Implement float_dsp 2015-05-31 12:07:11 +02:00
avconv_dxva2.c avconv_dxva2: use the hwcontext API 2016-05-17 09:11:34 +02:00
avconv_filter.c avconv: VAAPI hwcontext initialisation and hwaccel helper 2016-03-30 09:04:53 +02:00
avconv_opt.c cosmetics: Fix spelling mistakes 2016-05-04 18:16:21 +02:00
avconv_qsv.c avconv: add support for Intel QSV-accelerated transcoding 2015-10-16 20:01:37 +02:00
avconv_vaapi.c avconv_vaapi: fix double-free with some unsupported streams 2016-05-10 11:30:25 +02:00
avconv_vda.c avconv: vda: Unlock the pixel buffer once it is accessed 2015-07-09 00:10:13 +02:00
avconv_vdpau.c Drop pointless assert.h #includes 2016-05-03 15:45:10 +02:00
avconv.c Add some more deprecation guards 2016-05-11 12:22:49 +02:00
avconv.h avconv: VAAPI hwcontext initialisation and hwaccel helper 2016-03-30 09:04:53 +02:00
avplay.c cosmetics: Fix spelling mistakes 2016-05-04 18:16:21 +02:00
avprobe.c avprobe: Print stereo3d information 2016-05-17 12:25:27 -04:00
Changelog lavf: Raw G.729 demuxer 2016-05-17 12:24:32 -04:00
cmdutils_common_opts.h avplay: Accept cpuflags option 2013-10-22 10:49:31 +02:00
cmdutils.c avconv: switch to the new BSF API 2016-03-20 08:15:01 +01:00
cmdutils.h avconv: use read_file() for reading the 2pass stats 2015-07-19 09:37:11 +02:00
common.mak tests: Move all test programs to a subdirectory 2016-05-13 14:55:56 +02:00
configure configure: Document --enable-libfontconfig 2016-05-05 10:47:00 +02:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1 cosmetics: Delete empty lines at end of file. 2012-02-09 12:26:45 +01:00
COPYING.LGPLv3
CREDITS
INSTALL
library.mak tests: Move all test programs to a subdirectory 2016-05-13 14:55:56 +02:00
LICENSE license: Mention that vf_interlace is GPL, not LGPL 2014-08-28 19:47:43 +02:00
Makefile Generate the lists of enabled protocols/bsfs from configure. 2016-04-19 13:34:07 +02:00
README doc: Add more information in the README 2014-08-16 00:49:22 +02:00
README.md doc: Add travis badge 2015-09-14 00:19:08 +02:00
RELEASE Make the RELEASE file match with the most recent tag 2014-12-01 07:51:14 -05:00
version.sh

Libav

Build Status

Libav 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.
  • libavresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • avconv is a command line toolbox to manipulate, convert and stream multimedia content.
  • avplay is a minimalistic multimedia player.
  • avprobe is a simple analisys 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

Conding examples are available in the doc/example directory.

License

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