Faststart moves the moov atom to the beginning of the file and rewrites
the rest of the file after muxing is complete.
Signed-off-by: Martin Storsjö <martin@martin.st>
This allows specifying more dither algorithms without using up flags and
without ambiguities.
Also initialize the new field based on the flags and use it.
Note, improving the logic of the checks is left to subsequent
commits, this here only switches from flags to enum.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Using VDPAU correctly means checking for preemption
and possibly regenerating the context all the time.
With the current API there is no context or other
user-defined pointer and thus this in not possible
during decoding unless using some hack like global
variables.
The need to reinitialize both surfaces and even function
pointers makes handling preemption even more difficult.
This patch introduces a new render2 function that gets
both the AVCodecContext and AVFrame in addition,
in both the user can store additional opaque data.
This allows even advanced approaches like keeping a
"generation counter" for the surfaces so they can be
regenerated on the fly and efficiently.
In addition, the function has a return value that will
be passed through all the way instead of being silently
ignored as for the current render function.
Unfortunately the HWAccel API has no way of providing
API/ABI compatibility, so a currently disallowed
state (render pointer being NULL) is used to extend it.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* commit 'd175a5730b42166704b7262b33f4b780d9d92f60':
doc: Add an example on publishing over RTMP
doc: Add librtmp to the section header for the librtmp specific details
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a435ca5b4d9efebf0759220681010977c36615f7':
doc: Explain that the default RTMP user agent is different when publishing
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'aa16a6b0c56e3f46c5d7efb706b87a8f7a1603ec':
doc: Extend the rtmp example to include how to pass username/password
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The fact that a different user agent is used is cruicial for getting
publishing authentication working. (When using librtmp, this other
user agent has to be specified manually, but that's not needed
with the libavformat internal RTMP support.)
Signed-off-by: Martin Storsjö <martin@martin.st>
The first sentence of each of the modified man pages are worded a bit
awkwardly. These minor copy-edits should make them clearer.
Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
* commit '811bd0784679dfcb4ed02043a37c92f9df10500e':
avconv: make input -ss accurate when transcoding
Conflicts:
Changelog
doc/ffmpeg.texi
ffmpeg.h
ffmpeg_filter.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Changes since v1 of the patch:
- enable option by default
- add documentation
- move up PTS override code after PES header parsing, to ensure we use the
last PCR before the first packet of the teletext PES packet.
The option overrides teletext packet PTS and DTS values with the timestamps
calculated from the PCR of the first program which the teletext stream is part
of and is not discarded.
Using the same teletext PID for multiple programs is possible, therefore we
need some kind of heuristics to know which program PCR we should synchronize
to. Using the first non-discarded PCR pid among the programs of the teletext
stream seemed like a good choice.
The patch does not do PCR interpolation to estimate the PCR of the teltetext
packet, it just uses the last PCR of the program, which may cause a slight
error (0.1 sec) in the teletext packet pts-es.
Based on a patch by Reimar Döffinger.
http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2012-September/131610.html
Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The bitstream buffers are now private and freed by libavcodec. For
backward compatibility, the hold bitstream buffer pointer is left NULL
(applications were supposed to av_freep() it).
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Iterative implementation of 32 bit fixed point split-radix FFT.
Max FFT that can be calculated currently is 2^12.
Signed-off-by: Nedeljko Babic <nbabic@mips.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '79be2c325c5ee8f7ac9e28399e51986ebe99bb3c':
doc/print_options: Move options headers to a saner place
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b5a138652ff8a5b987d3e1191e67fd9f6575527e':
Give less generic names to global library option arrays
Conflicts:
libavcodec/options_table.h
libavfilter/avfilter.c
libavformat/options_table.h
libswscale/options.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '0e8c6f221a8ddb7dfb3c9e9bd0b33cb12e9391b8':
avisynth: Fix a "AVISynth" vs. "AviSynth" struct name typo
Conflicts:
doc/general.texi
libavformat/avisynth.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The option is used to sort the streams by program.
Signed-off-by: Florent Tribouilloy <florent.tribouilloy@smartjog.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
* qatar/master:
doc: cosmetics: Consistently format list and table items
Conflicts:
doc/developer.texi
doc/fate.texi
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Format is based on the thread:
"[PATCH] doc/encoders: Add libopus encoder doc" (06-28-2013)
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/165368/
Also merge the two option sections (Mapping and Private options).
Patch partially edited by Stefano Sabatini.
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
There is no reason why this should copy the audio data in a very
complicated way. Also, strictly write the first plane, instead of
writing the whole buffer. This is more helpful in context of the
example. This way a user can clearly confirm that it works by playing
the written data as raw audio.
This assumes one audio packet is decoded one time. This is not true:
packets can be partially decoded. Then you have to "adjust" the packet
and pass the undecoded part of the packet to the decode function again.
It is not completely obvious where delogo's parameter show=1 draws its
rectangle. Document it so that the user can more easily tune the
parameters.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Replace the sections "API" and "Integrating libavcodec or libavformat"
with updated / more accurate text.
See thread:
Subject: [FFmpeg-devel] [PATCH] doc/developer: merge and update sections about external development
Date: Fri, 5 Jul 2013 11:07:07 +0200
Options "show" and "band" are unrelated and should thus be
independent. However, setting "show" to 1 currently resets "band" to
its default value of 4. While this is documented, this still
surprising and confusing IMHO.
Change this behavior and make "show" and "band" independent from each
other. Update the documentation accordingly.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Reviewed-by: Stefano Sabatini <stefasab@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Add function avfilter_graph_parse_ptr() and favor it in place of
avfilter_graph_parse(), which will be restored with the old/Libav
signature at the next bump.
If HAVE_INCOMPATIBLE_LIBAV_API is enabled it will use the
Libav-compatible signature for avfilter_graph_parse().
At the next major bump the current implementation of
avfilter_graph_parse() should be dropped in favor of the Libav/old
implementation.
Should address trac ticket #2672.
Replace the inline awk script with a Perl script which tracks the
dependencies recursively.
This allows to correctly track dependencies for files including files
with a second level include (for example: ffmpeg-devices.texi ->
devices.texi -> outdevs.texi).
This also adds a dependency on perl for computing the dependencies, which
should not be a problem since perl is already required all the way for
building documentation.
Allow applications to request reading streamcast metadata. This uses
AVOptions as API, and requires the application to explicitly request
and read metadata. Metadata can be updated mid-stream; if an
application is interested in that, it has to poll for the data by
reading the "icy_metadata_packet" option in regular intervals.
There doesn't seem to be a nice way to transfer the metadata in a nicer
way. Converting the metadata to ID3v2 tags might be a nice idea, but
the libavformat mp3 demuxer doesn't seem to read these tags mid-stream,
and even then we couldn't guarantee that tags are not inserted in the
middle of mp3 packet data.
This commit provides the minimum to enable applications to retrieve
this information at all.
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
Commit f1efaf8371 used parentheses
instead of curly braces in texi syntax, resulting in warnings when
the documentation is generated. Fix that.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* 'drawbox_exprs' of https://github.com/mjmvisser/FFmpeg:
enabled expressions on x, y, w, h and t parameters for drawgrid and drawbox, added examples
Reviewed-by: Andrey Utkin
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b0ce601c160c87349d093d7e542b5c752754f598':
doc/platform: Add info about ICL
Conflicts:
doc/platform.texi
Merged-by: Michael Niedermayer <michaelni@gmx.at>
There are 4 separate WebVTT text track kinds: subtitles (the default
if not otherwise specified), captions, descriptions, and metadata.
The WebM muxer needs to know which WebVTT text track kind this is, in
order to synthesize the correct track type and codec id.
To allow a demuxer to indicate the text track kind of the input, a new
set of AV_DISPOSITION flag values has been added, corresponding to
each of the non-default text track kind values.
The drawbox video filter is drawing lines one pixel thinner than
requested. The default thickness is 4 pixel but in fact the lines
drawn by default are only 3 pixel wide.
Change the comparisons in the code to fix this off-by-one bug. Also
change the default thickness from 4 to 3 to minimize the unexpected
changes from the user's perspective.
As I was already touching these lines, I also removed the "maximum" in
the thickness parameter description, as I don't think it was adding
any value and I even found it confusing.
Reviewed-by: Andrey Utkin <andrey.krieger.utkin@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Based on the libavfilter SOC filter by Vitor Sessak, with the following additions:
* integer arithmetic
* bilinear interpolation
* RGB path
* configurable parametric angle, output width and height
Address trac issue #1500.
See thread:
Subject: [FFmpeg-devel] [WIP] rotate filter(s)
Date: 2010-10-03 17:35:49 GMT
* commit '3b4feac1ec14f861bdd7f494f288f4d8dd7f449e':
movenc: Keep track of the allocated size for the cluster array
mem: Add av_realloc_array and av_reallocp_array
Conflicts:
doc/APIchanges
libavformat/movenc.c
libavutil/mem.c
libavutil/mem.h
libavutil/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Based on the work of Jeff Moguillansky <Jeff.Moguillansky@am.sony.com>.
See thread:
Subject: [FFmpeg-devel] x11 output device for libavdevice
Date: Wed, 10 Apr 2013 23:10:47 +0000
* qatar/master:
doc: Mention the target_samples and ld variables for fate configs
fate.sh: Allow specifying --as via a specific variable
Conflicts:
doc/fate.texi
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This means that typedef struct SomeStruct {...} SomeStruct will only be
documented as SomeStruct in the doxy, without a pointless entry in the
typedefs list.
Also disable it by default since it looks currently buggy. The
usefulness of such library is mostly limited to backward compatibility
with very old devices.
If the "build_only" variable is set in the configuration file, the
FATE client will skip running tests and just compile all targets.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '8e673efc6f5b7a095557664660305148f2788d30':
prores: update FATE test to account for alpha plane present in the test sample
configure: Add basic valgrind-massif support
Conflicts:
tests/fate/prores.mak
tests/ref/fate/prores-alpha
Merged-by: Michael Niedermayer <michaelni@gmx.at>
With the parameter --toolchain valgrind-massif, the configure
script sets reasonable defaults that can be overridden as explained
in the documentation.
Some fixes provided by Paul B Mahol <onemda@gmail.com>
and Michael Niedermayer <michaelni@gmx.at> and me.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
With the introduction of AVFilterContext->is_disabled, we can simplify
the custom passthrough mode in filters.
This commit is technically a small compat break, but the timeline was
introduced very recently.
Doxy by Stefano Sabatini.
* jamrial/adpcm:
ADPCM IMA Radical decoder
RedSpark demuxer
RSD demuxer
adpcm_thp: Allow the use of extradata for the adpcm table
ADP demuxer
ADPCM DTK decoder
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '481575d255195c6c2f32e04686b94de984ae78d4':
avconv: remove -deinterlace
Conflicts:
Changelog
doc/ffmpeg.texi
ffmpeg.c
ffmpeg_opt.c
The merge removes the documentation for the deprecated -deinterlace
the code itself has already been replaced a while ago by code
that inserts yadif, that insertion code is left in place.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
With the parameter --valgrind-memcheck, the configure script sets
reasonable defaults that can be overridden as explained in the
documentation.
The idea of using set_defaults is from Luca Barbato.
* commit 'e3b225a4fe0ff1e64a220b757c6f0a5cf9258521':
matroskaenc: add an option to put the index at the start of the file
Conflicts:
doc/muxers.texi
libavformat/matroskaenc.c
libavformat/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '507b1e454cf9953da3e18f33c9bd1fca78c97cb5':
avcodec: Add field order information to AVCodecParserContext.
Conflicts:
doc/APIchanges
libavcodec/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
From various tests, there is no evidence that the filter is faster than
the native tinterlace, and it has several more limitations and a few
bugs.
See thread:
Subject: [FFmpeg-devel] [NOPATCH] lavfi/mp: drop tinterlace wrapper
Date: Wed, 5 Sep 2012 00:26:01 +0200
Force re-generation of the manuals when an included file is modified.
The current dependency generation system is enable to track nested
inclusions.
The drawback is that the files will be generated even when there is no
strict need (for example if filters.texi is modified, ffmpeg.1 is
rebuilt), thus it trades a false negative with a false positive.
vidstabdetect and vidstabtransform common functions for interfacing
vid.stab are in libavfilter/vidstabutils.c
Signed-off-by: Georg Martius <martius@mis.mpg.de>
Based on the 2007 GSoC project from Kamil Nowosad <k.nowosad@students.mimuw.edu.pl>
Updated to current programming standards, style and many more small
fixes by Diego Biurrun <diego@biurrun.de>.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Same funcionality is provided by stereo3d=ab[2]{l,r}:sbs[2]{l,r}.
Additional "features" are barely useful and cause crash or artifacts.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
* cigaes/master:
ffmpeg: make -aspect work with -vcodec copy.
lavfi/vf_aspect: improve compatibility of parsing.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Currently, we have a AV_CODEC_ID_SSA, which matches the way the ASS/SSA
markup is muxed in a standalone .ass/.ssa file. This means the AVPacket
data starts with a "Dialogue:" string, followed by a timing information
(start and end of the event as string) and a trailing CRLF after each
line. One packet can contain several lines. We'll refer to this layout
as "SSA" or "SSA lines".
In matroska, this markup is not stored as such: it has no "Dialogue:"
prefix, it contains a ReadOrder field, the timing information is not in
the payload, and it doesn't contain the trailing CRLF. See [1] for more
info. We'll refer to this layout as "ASS".
Since we have only one common codec for both formats, the matroska
demuxer is constructing an AVPacket following the "SSA lines" format.
This causes several problems, so it was decided to change this into
clean ASS packets.
Some insight about what is changed or unchanged in this commit:
CODECS
------
- the decoding process still writes "SSA lines" markup inside the ass
fields of the subtitles rectangles (sub->rects[n]->ass), which is
still the current common way of representing decoded subtitles
markup. It is meant to change later.
- new ASS codec id: AV_CODEC_ID_ASS (which is different from the
legacy AV_CODEC_ID_SSA)
- lavc/assdec: the "ass" decoder is renamed into "ssa" (instead of
"ass") for consistency with the codec id and allows to add a real
ass decoder. This ass decoder receives clean ASS lines (so it starts
with a ReadOrder, is followed by the Layer, etc). We make sure this
is decoded properly in a new ass-line rectangle of the decoded
subtitles (the ssa decoder OTOH is doing a simple straightforward
copy). Using the packet timing instead of data string makes sure the
ass-line now contains the appropriate timing.
- lavc/assenc: just like the ass decoder, the "ssa" encoder is renamed
into "ssa" (instead of "ass") for consistency with the codec id, and
allows to add a real "ass" encoder.
One important thing about this encoder is that it only supports one
ass rectangle: we could have put several dialogue events in the
AVPacket (separated by a \0 for instance) but this would have cause
trouble for the muxer which needs not only the start time, but also
the duration: typically, you have merged events with the same start
time (stored in the AVPacket->pts) but a different duration. At the
moment, only the matroska do the merge with the SSA-line codec.
We will need to make sure all the decoders in the future can't add
more than one rectangle (and only one Dialogue line in it
obviously).
FORMATS
-------
- lavf/assenc: the .ass/.ssa muxer can take both SSA and ASS packets.
In the case of ASS packets as input, it adds the timing based on the
AVPacket pts and duration, and mux it with "Dialogue:", trailing
CRLF, etc.
- lavf/assdec: unchanged; it currently still only outputs SSA-lines
packets.
- lavf/mkv: the demuxer can now output ASS packets without the need of
any "SSA-lines" reconstruction hack. It will become the default at
next libavformat bump, and the SSA support will be dropped from the
demuxer. The muxer can take ASS packets since it's muxed normally,
and still supports the old SSA packets. All the SSA support and
hacks in Matroska code will be dropped at next lavf bump.
[1]: http://www.matroska.org/technical/specs/subtitles/ssa.html
AVABufferSinkParams are ignored by avfilter_graph_create_filter,
therefore the example is misleading. Use av_opt_set_int_list to
configure abuffersink directly.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The next commit will introduce a proper decimation filter to be used
along with the field matching filter. To avoid confusion with this
filter which has currently a very limited usage (and will not work
properly with the fieldmatching filter), the new decimation filter will
take the decimate name, and this filter is renamed to mpdecimate.
* qatar/master:
FATE: add a test for the interlace filter
lavfi: new interlace filter
Conflicts:
Changelog
configure
doc/filters.texi
libavfilter/Makefile
libavfilter/allfilters.c
tests/fate/filter.mak
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '921046008f5335601f9d76dc3a768eb5cd91e1b9':
cmdutils: allow -h filter=<name> to print information about a filter.
Conflicts:
cmdutils.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'fa2a34cd40d124161c748bb0f430dc63c94dd0da':
lavfi: change the filter registering system to match the other libraries
Conflicts:
cmdutils.c
ffplay.c
libavfilter/avfilter.c
libavfilter/avfilter.h
This removes the ability to put AVFilters in read only memory and having
them shareable.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7e8fe4be5fb4c98aa3c6a4ed3cec999f4e3cc3aa':
lavfi: add a function for counting elements in AVFilterPad arrays.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7cdd737ba81b5c2c9521c4509edf0ac315fabc65':
lavfi: mark filters with dynamic number of inputs or outputs with special flags
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '1ba95a9cca57b023b9b9de071a5671fc05b05e58':
lavfi: add avfilter_init_dict() for initializing a filter with a dict.
Conflicts:
libavfilter/avfilter.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Move validation from init to query_formats().
Accept the formats lists as binary options.
Signed-off-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Add av_int_list_length() to compute a list length.
Add av_opt_set_int_list() to set a binary option.
Signed-off-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>