Remove the private bswap and intreadwrite.h implementations and use
libavutil headers instead.
Originally these headers weren't publicly installed by libavutil at
all. That already changed in 2010, but the pure C bswap version in
installed headers was very inefficient. That was recently (2011-12)
improved and now using the public bswap version probably shouldn't
cause noticeable performance problems, at least if using a new enough
compiler.
Change various code to use the latest Libav API. The libavcodec
error_recognition setting has been removed and replaced with different
semantics. I removed the "--lavdopts=er=<value>" option accordingly,
as I don't think it's widely enough used to be worth attempting to
emulate the old option semantics using the new API. A new option with
the new semantics can be added later if needed.
Libav dropped APIs that were necessary with all Libav versions
until quite recently (like setting avctx->age), and it would thus not
be possible to keep compatibility with previous Libav versions without
adding workarounds. The new APIs also had some bugs/limitations in the
recent Libav release 0.8, and it would not work fully (at least some
avcodec options would not be set correctly). Because of those issues,
this commit makes no attempt to maintain compatibility with anything
but the latest Libav git head. Hopefully the required fixes and
improvements will be included in a following Libav point release.
When the volume multiplier is 1, the data shouldn't be changed, but the
code actually multiplied each sample with 255/256. Change the factor to
256, and hope there wasn't a good reason for the value 255.
Additionally, don't work on the data if it wouldn't be changed anyway.
This is a micro-optimization.
This doesn't touch the code path for the float format.
Do the global initialization of libavcodec and libavformat
(avcodec_register_all(), av_register_all()) immediately on program
startup and remove the initialization calls from various individual
modules that use libavcodec/libavformat functionality.
Make af_format clamp float sample values to the range [-1, 1] before
conversion to integer types. Before any out-of-range values wrapped
around and caused nasty artifacts. This filter is used for all
automatic format conversions; thus any decoder that outputs floats
with possible out-of-range values would have been affected by the bad
conversion if its output needed to be converted to integers for AO.
Reordering to libavcodec channel order was broken with libavcodec
versions using float input to the ac3 encoder because the reordering
code still assumed int16 sample size. Fix.
af_lavcac3enc: use old SampleFormat names without AV_ prefix, the
latter were only added in 2010-11
vd_ffmpeg: add ifdef around CODEC_ID_LAGARITH use
demux_real: use ffmpeg_files/intreadwrite.h
stream/http.c, stream/realrtsp/real.c: define AV_BASE64_SIZE macro for
old libavutil versions lacking it
The libavcodec AC-3 encoder was changed to use floats, and take
floating point samples as input (the fixed-point version is still
available under the new name "ac3_fixed"). This broke af_lavcac3enc
because it blindly assumed without checking that the "ac3" encoder
would take signed 16-bit integer samples. Improve af_lavcac3enc so
that it checks the sample formats supported by the encoder and can
handle either int16_t or float.
Perhaps an option to keep using integer input but instead switch the
encoder name to "ac3_fixed" for new libavcodec versions would have
some value. Then again, maybe not. Using the preferred data format of
the default "ac3" encoder should normally be best, so probably better
not add such an option unless real need appears.
When -channels 2 [default] is specified and the audio decoder used
does not support internal downmixing, automatically add a pan filter
after the decoder to downmix to stereo.
Patch by Clément Bœsch, ubitux gmail com
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32356 b3059339-0415-0410-9bf9-f77b7e298cf2
Enable all of libavcodec, libavformat, libswscale, and libpostproc
together (libavutil is always required).
based on svn commit by diego:
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32226 b3059339-0415-0410-9bf9-f77b7e298cf2
Patch by Vlad Seryakov, vseryakov gmail com
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32043 b3059339-0415-0410-9bf9-f77b7e298cf2
Refactor more instances of avcodec_initialized handling into init_avcodec().
This is a leftover from the previous commit.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32044 b3059339-0415-0410-9bf9-f77b7e298cf2
Add missing #include for vd_ffmpeg.h; fixes the warning:
libmpcodecs/vf_zrmjpeg.c:472: warning: implicit declaration of function 'init_avcodec'
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32176 b3059339-0415-0410-9bf9-f77b7e298cf2
Avoid calling av_resample_init again when the values are the same as before.
The init function can be called multiple times when e.g. additional format
filters are inserted, so this speeds things up.
Patch by Dan Oscarsson [Dan.Oscarsson tieto com].
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31698 b3059339-0415-0410-9bf9-f77b7e298cf2
Reindent.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31699 b3059339-0415-0410-9bf9-f77b7e298cf2
Ensure that activate is called on each filter instance, even if we
have e.g. multiple mono filters handling a multichannel file.
Fixes one of the bugs reported as bug #1685.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31558 b3059339-0415-0410-9bf9-f77b7e298cf2
The code handling input format negotiation incorrectly used the bps
value of the suggested input format instead of the format it was going
to actually use. As a result the player could abort with the above
assertion failure. Fix.
The only FFmpeg internal symbols required were some constants. Define
them in the file itself instead. Also add some checks and fixes to
make the code more robust and fix a potential memory corruption
problem.
These files now contain different functions related to path handling.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30943 b3059339-0415-0410-9bf9-f77b7e298cf2
Note that r30455 is wrong, that commit does not in fact change the
default behavior as claimed in the commit message. It only breaks
"-af-adv force=0", which was already pretty much useless though.
Tweak some code parts that used to rely on string literals from
translation macros being concatenated with other adjacent string
literals. Break up the resulting string into independently translated
parts, so that the existing translations for those parts can still be
used.
For some reason commit e306174952, which
replaced translation macro names with the corresponding English
strings, also collapsed multiple consecutive space characters into
one. Change most of these back. In a couple of cases the amount of
whitespace is important for alignment, and for the rest it at least
keeps the strings closer to the existing translations.
a separate function.
Call this function also from af_add, fixes audio corruption with e.g.
-softvol -af format=s16be (bug #1561).
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30659 b3059339-0415-0410-9bf9-f77b7e298cf2
audio filtering the default.
This mostly means lavcresample being the default instead of plain "resample".
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30455 b3059339-0415-0410-9bf9-f77b7e298cf2
not be used without a declaration, causing issues on 64 bit systems.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30355 b3059339-0415-0410-9bf9-f77b7e298cf2
Only 1/3 of the samples in the buffer passed to reorder_channel_nch()
were being reordered. For 8-, 16-, and 32-bit audio, the buffers could
be treated as int8_t, int16_t, and int32_t respectively. 24-bit audio
was being processed as int8_t, requiring iteration over n_samples*3, not
n_samples.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29971 b3059339-0415-0410-9bf9-f77b7e298cf2
The scaletempo filter has a special-case check to return the samples
unchanged if the current scaling factor is 1. In this case code
setting af->delay wasn't run. If the scale had had a different value
and then been changed to 1 as a result of a playback speed change then
the delay field could have a nonzero value left, resulting in A/V sync
errors. Fix by setting the delay field to 0 in the scale == 1 special
case code.