* qatar/master:
ac3enc: ARM optimised ac3_compute_matissa_size
ac3: armv6 optimised bit_alloc_calc_bap
fate: simplify fft test rules
avio: document avio_alloc_context.
lavf: make compute_chapters_end less picky.
sierravmd: fix Indeo3 videos
FFT: simplify fft8()
fate: add fixed-point fft/mdct tests
Fixed-point support in fft-test
ape: check that number of seektable entries is equal to number of frames
Merged-by: Michael Niedermayer <michaelni@gmx.at>
TrueHD supports more channels than FFmpeg, so a valid sample
could set the channel layout to a value that represents less
channels than the sample actually consists of.
* newdev/master:
mpegts: propagate avio EOF in read_packet()
configure: Initial support for --target-os=symbian
Fixed-point FFT and MDCT
Include dependencies for test programs
ac3enc: simplify sym_quant()
flvdec: read index stored in the 'keyframes' tag.
mov: Add support for zero-sized stsc runs.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
These expressions are equivalent since levels is always odd, and
overflow is impossible due to the constraints set by the assert().
Signed-off-by: Mans Rullgard <mans@mansr.com>
* newdev/master:
rtsp: Use GET_PARAMETER for keep-alive for generic RTSP servers
mlp_parse.c: set AVCodecContext channel_layout
APIChanges: mark the place where 0.6 was branched.
avio: make get_checksum() internal.
avio: move ff_crc04C11DB7_update() from avio.h -> avio_internal.h
avio: make init_checksum() internal.
NOT MERGED Add MxPEG decoder
NOT MERGED Add support for picture_ptr field in MJpegDecodeContext
NOT MERGED Move MJPEG's input buffer preprocessing in separate public function
NOT MERGED Support reference picture defined by bitmask in MJPEG's SOS decoder
sndio bug fix
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* newdev/master:
ac3enc: move compute_mantissa_size() to ac3dsp
ac3enc: move mant*_cnt and qmant*_ptr out of AC3EncodeContext
Remove support for stripping executables
ac3enc: NEON optimised float_to_fixed24
ac3: move ff_ac3_bit_alloc_calc_bap to ac3dsp
dfa: protect pointer range checks against overflows.
Duplicate: mimic: implement multithreading.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* ffmpeg-mt/master:
Update todo. More items appeared...
Fix mdec
Duplicate: id3v1: change filesize to int64_t.
Duplicate: id3v1: Seek back to old position after reading.
Conflicts:
libavcodec/mpegvideo.c
libavcodec/snow.c
libavformat/id3v1.c
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
These fields are only used in quantize_mantissas() and reset
on each call, no need to store them in the main context.
Signed-off-by: Mans Rullgard <mans@mansr.com>
* newdev/master:
ac3enc: avoid memcpy() of exponents and baps in EXP_REUSE case by using exponent reference blocks.
Chronomaster DFA decoder
DUPLICATE: framebuffer device demuxer
NOT MERGED: cosmetics: fix dashed line length after 070c5d0
http: header field names are case insensitive
Conflicts:
LICENSE
README
doc/indevs.texi
libavdevice/fbdev.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* newdev/master:
ac3enc: Add codec-specific options for writing AC-3 metadata.
NOT MERGED: Remove arrozcru URL from documentation
sndio support for playback and record
Conflicts:
doc/faq.texi
doc/general.texi
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* newdev/master:
dsputil: allow to skip drawing of top/bottom edges.
Split fate-psx-str-v3 into a video-only and audio-only test.
Conflicts:
libavcodec/dsputil.c
libavcodec/mpegvideo.c
libavcodec/snow.c
libavcodec/x86/dsputil_mmx.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
As previously discussed, the CrystalHD hardware treats some PAFF
clips different from others; even when input fields are always in
separate packets, the hardware might return a single fieldpair for
one clip and individual fields for another.
Given the bogus flags set by the hardware, it is impossible to
distinguish these two cases without knowing about the current
picture and the next one. The hardware can usually provide the
picture number of the next picture and when that is available,
we can detect the two cases.
When it is not available, we have to guess - and find out later
if we were right or wrong.
With this change, clips will play correctly unless they are PAFF
where individual fields are returned *and* no next picture number
is available. Generally speaking, the incorrect cases arise in
the first couple of seconds of a clip as the delay calibration takes
place. Once that's set, things work fine.
As previously discussed, the CrystalHD hardware returns exceptionally
useless information about interlaced h.264 content - to the extent
that it's not possible to distinguish MBAFF and PAFF content until
it's too late.
This change introduces use of the h264_parser to help bridge the
gap; it can indicate if the input data is PAFF fields or not.
With this clarity, some of heuristics can be removed from the code,
making this less convoluted.
Finally, I found an MBAFF clip that acts like non h.264 content so
I had to make allowances for that.
Note that I still cannot distinguish between two forms of PAFF,
where the hardware either returns individual fields or a field-pair.
It's not clear that there's even a spec relevant difference between
the two forms, as opposed to hardware ideosyncracies.
* newdev/master:
mov: set audio service type for AC-3 from bitstream mode in the 'dac3' atom.
Get audio_service_type for AC-3 based on bitstream mode in the AC-3 parser and decoder, and vice-versa for the AC-3 encoder.
Use audio_service_type to set stream disposition.
Add APIchanges entry for audio_service_type.
Add audio_service_type field to AVCodecContext for encoding and reporting of the service type in the audio bitstream.
configure: in check_ld, place new -l flags before existing ones
support @heading, @subheading, @subsubheading, and @subsubsection in texi2pod.pl
doc: update build system documentation
aacenc: indentation
aacenc: fix the side calculation in search_for_ms
vp8.c: rename EDGE_* to VP8_EDGE_*.
Conflicts:
doc/APIchanges
libavcodec/avcodec.h
libavcodec/version.h
libavcodec/vp8.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
On Blu-ray colors are stored in the order YCrCb (and not YCbCr) as mentioned in the specifications:
see System Description Blu-ray Disc Read-Only Format, 9.14.4.2.2.1 Palette Definition Segment
When decoding a Blu-ray subtitle, the colors were incorrectly set.
On DVD and HD-DVD colors are stored in the order YCrCb (and not YCbCr) as mentioned in the specifications:
see DVD Specifications for Read-Only Disc / Part 3, 4.3 Program Chain Information (7) PGC_SP_PLT
see DVD Specifications for High Definition Disc, 5.2 Navigation for Standard Content (11) PGC_SDSP_PLT
see DVD Specifications for High Definition Disc, 5.2 Navigation for Standard Content (12) PGC_HDSP_PLT
see DVD Specifications for High Definition Disc, 5.5 Presentation Data (4) SET_COLOR2
When decoding a DVD or HD-DVD subtitle, the colors were incorrectly set.
* newdev/master:
matroskadec: set default duration for simple block
When building for MinGW32 disable strict ANSI compliancy.
ARM: fix ff_apply_window_int16_neon() prototype
configure: check for --as-needed support early
ARM: NEON optimised apply_window_int16()
ac3enc: NEON optimised shift functions
ac3enc: NEON optimised ac3_max_msb_abs_int16 and ac3_exponent_min
mpeg12.c: fix slice threading for mpeg2 field picture mode.
ffmetadec.c: fix compiler warnings.
configure: Don't explicitly disable ffplay or in/outdevices on dos
configure: Remove the explicit disabling of ffserver
configure: Add fork as a dependency to ffserver
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* newdev/master:
avio: make udp_set_remote_url/get_local_port internal.
asfdec: also subtract preroll when reading simple index object
matroskaenc: remove a variable that's unused after bc17bd9.
avio: cosmetics - nicer vertical alignment.
Remove unnecessary icc version checks
Disable 'attribute "foo" ignored' warnings from icc
rtsp: Don't use a locale dependent format string
Add xd55 codec tag for XDCAM HD422 720p25 CBR files.
configure: get libavcodec version from new version.h header
lavc: move the version macros to a new installed header.
matroskaenc: simplify get_aac_sample_rates by using ff_mpeg4audio_get_config
Do not use format string "%0.3f" for RTSP Range field.
Add apply_window_int16() to DSPContext with x86-optimized versions and use it in the ac3_fixed encoder.
Document usage of import libraries created by dlltool
configure: Set the correct lib target for arm/wince dlltool
fate: simplify regression-funcs.sh
fate: add support for multithread testing
Conflicts:
libavformat/rtspdec.c
libavutil/attributes.h
libavutil/internal.h
libavutil/mem.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* newdev/master: (33 commits)
Fix an infinite loop when RoQ encoded generated a frame with a size greater than the maximum valid size.
Add kbdwin.o to AC3 decoder
Detect byte-swapped AC-3 and support decoding it directly.
cosmetics: indentation
Always copy input data for AC3 decoder.
ac3enc: make sym_quant() branch-free
cosmetics: indentation
Add a CPU flag for the Atom processor.
id3v2: skip broken tags with invalid size
id3v2: don't explicitly skip padding
Make sure kbhit() is in conio.h
fate: update wmv8-drm reference
vc1: make P-frame deblock filter bit-exact.
configure: Add the -D parameter to the dlltool command
amr: Set the AVFMT_GENERIC_INDEX flag
amr: Set the pkt->pos field properly to the start of the packet
amr: Set the codec->bit_rate field based on the last packet
rtsp: Specify unicast for TCP interleaved streams, too
Set the correct target for mingw64 dlltool
applehttp: Change the variable for stream position in seconds into int64_t
...
Conflicts:
ffmpeg.c
ffplay.c
libavcodec/ac3dec.c
libavformat/avio.h
libavformat/id3v2.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This allows the AC-3 decoder to be used directly with RealMedia
decoders that unlike the libavformat one do not byte-swap automatically.
Since the new code is only used in case we would fail directly otherwise
there should be no risk for regressions.
Depending on error_recognition is not correct, low values do
certainly not mean it is ok to crash.
Based on a patch by Reimar Döffinger <Reimar.Doeffinger@gmx.de>
These windows do not really belong in fft/mdct files and were
easily confused with the similarly named tables used by rdft.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This function is not tightly coupled to mdct, and it's in the way
of making a fixed-point mdct implementation.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This removes the rather pointless wrappers (one not even inline)
for calling the fft_calc and related function pointers.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Since initially committed in 2004, this codec has only been touched
for maintenanance. Functionally, it contains no novel ideas and
its intended audience is better served by existing mature codecs.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This allows the AC-3 decoder to be used directly with RealMedia
decoders that unlike the libavformat one do not byte-swap automatically.
Since the new code is only used in case we would fail directly otherwise
there should be no risk for regressions.
The "buf" pointer needs to be overwritten since otherwise the CRC check fails.
3GPP:
Remove ffac from and move min_snr out of AacPsyBand.
Rearrange AacPsyCoeffs to make it easier to implement energy spreading.
Rename the band[] array to bands[]
Copy energies and thresholds at the end of analysis.
LAME:
Use a loop instead of an if chain in LAME windowing.
There are several places where a buffer is byte-swapped in 16-bit units.
This allows them to share code which can be optimised for various
architectures.
Signed-off-by: Mans Rullgard <mans@mansr.com>
If the function is not inlined, an immmediate cannot be used for the
shift parameter, so the %cl register must be used instead in that case.
This fixes compilation for x86-32 using gcc with --disable-optimizations.
This fixes unexpected name collisions that were occurring with variables
declared within the macros.
It also fixes the fate-acodec-ac3_fixed regression test on x86-32.
This reverts commit cc4d3dd3e2.
revert at authors request due to better impementation being available
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This increases the accuracy of coefficients, leading to improved quality.
Rescaling of the coefficients to full 25-bit accuracy is done rather than
offsetting the exponent values. This requires coefficient scaling to be done
before determining the rematrixing strategy. Also, the rematrixing strategy
calculation must use 64-bit math to prevent overflow due to the higher
precision coefficients.
The Broadcom CrystalHD decoder chips provide hardware video
decoding for a number of video formats. It does so using a
memory:memory interface where a compressed bitstream is fed
in and decompressed pictures are copied out. As such, it works
independent of any graphics hardware in the system.
Features supported in this initial version:
* Support for Linux (using current drivers/library from git.wilsonet.com)
* Support for 70015 hardware
* Formats: MPEG2, MPEG4 Part 2, H.264, VC1 and DivX 3.11 (untested)
* Progressive content
* Non-H.264 Interlaced content
* H.264 MBAFF content
Features missing in this initial version:
* Support for OSX (might work - untested)
* Support for Windows
* Support for 70012 hardware
* H.264 PAFF content
Signed-off-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This reverts the removal of scoefs from AACEncContext.
It resulted in scoefs being a NULL pointer when
search_for_quantizers() is called.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This makes channel coupling more accurate, increasing quality for stereo
content. It also simplifies exponent extraction and mantissa quantization
by no longer needing to apply an offset to the exponents.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This reverts the removal of scoefs from AACEncContext.
It resulted in scoefs being a NULL pointer when
search_for_quantizers() is called.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
When decoding latm config, use the corresponding aac context and its
m4ac instead of using NULL and a local variable. This fixes decoding of
audio in MPEG TS from SBTVD (the Brazillian Digital TV Sytem), when
there is no extradata. This is the case when using the decoder with
gst-ffmpeg and a GStreamer mpegts demuxer.
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 36864ac354)
Should an AVC-1 in MP4 stream not contain SPS or PPS NAL units,
this BSF is then unable to allocate an output buffer for the
modified stream. Warn that the resulting stream may be unplayable.
Fix roundup issue #2386.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 02dd3666c2)
When decoding latm config, use the corresponding aac context and its
m4ac instead of using NULL and a local variable. This fixes decoding of
audio in MPEG TS from SBTVD (the Brazillian Digital TV Sytem), when
there is no extradata. This is the case when using the decoder with
gst-ffmpeg and a GStreamer mpegts demuxer.
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
Should an AVC-1 in MP4 stream not contain SPS or PPS NAL units,
this BSF is then unable to allocate an output buffer for the
modified stream. Warn that the resulting stream may be unplayable.
Fix roundup issue #2386.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
Currently it is always 4, but this change will allow it to be adjusted when
bandwidth-related features are added such as channel coupling, enhanced
channel coupling, and spectral extension.
(cherry picked from commit 53e35fd340)
Currently it is always 4, but this change will allow it to be adjusted when
bandwidth-related features are added such as channel coupling, enhanced
channel coupling, and spectral extension.
This moves setting the thread count to a minimum of 1 to
frame_thread_init(), allowing a value of zero to propagate
through to the codec if frame threading is not used. This
makes auto-threads work in libx264.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit ff1efc524c)
For intra codecs, ff_thread_finish_setup() is called before decoding starts
automatically. However, get_buffer can only be used before it's called, so
adding this requirement broke frame threading for them. Fixed by moving the
call until after get_buffer is finished.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit ad9791e12b)
This moves setting the thread count to a minimum of 1 to
frame_thread_init(), allowing a value of zero to propagate
through to the codec if frame threading is not used. This
makes auto-threads work in libx264.
Signed-off-by: Mans Rullgard <mans@mansr.com>
For intra codecs, ff_thread_finish_setup() is called before decoding starts
automatically. However, get_buffer can only be used before it's called, so
adding this requirement broke frame threading for them. Fixed by moving the
call until after get_buffer is finished.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
The assembler emits literal pools too far from the load instructions,
so we must do it explicitly at a suitable location.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 8b454c352f)
The assembler emits literal pools too far from the load instructions,
so we must do it explicitly at a suitable location.
Signed-off-by: Mans Rullgard <mans@mansr.com>
decode_init sets bands[0] == 2, so this loop always sets the band table
index (k) to zero.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit a304def1dc)
This avoids the core substream extensions scan when the EXT_AUDIO_ID
field indicates no extensions or only unsupported extensions. The scan
is done only if the value of EXT_AUDIO_ID is unknown or indicates a
present XCh extension which we can decode.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 7e06e0ede3)
There is no need to expand to 16-bits. Just use memcpy() to copy the raw data.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 1108f8998c)
This also adds output buffer size checks for AUDIO and SILENCE block types.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 1574eff3d2)
The size should depend on the output sample size, not the internal bit depth.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit a58bcb40b1)
This avoids the core substream extensions scan when the EXT_AUDIO_ID
field indicates no extensions or only unsupported extensions. The scan
is done only if the value of EXT_AUDIO_ID is unknown or indicates a
present XCh extension which we can decode.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This allows the values to be used without changing C code and is closer to how
the other DEBUG flags work.
If this causes a problem for any user of this flag, please tell me and
ill split the flag in 2.
The 4-tap filters should only access one row/column before the
reference block.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit e0e46cae37)
GCC 4.3 and later are more particular about signedness matching
in vector operations. The operations under if(rangered) were
missing assignments and thus had no effect.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 381efba0ec)
Merging these functions allows merging some loops, which makes the
results (particularly after SIMD optimizations) much faster.
(cherry picked from commit f8bed30d8b)
Advantage is that it allows us to combine several loops into a single
one, and these can eventually be merged into the IDCT itself. Also, it
allows us to remove vc1_put_block(), and makes CODEC_FLAG_GRAY faster.
(cherry picked from commit bbfd2e7ab4)
GCC 4.3 and later are more particular about signedness matching
in vector operations. The operations under if(rangered) were
missing assignments and thus had no effect.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Advantage is that it allows us to combine several loops into a single
one, and these can eventually be merged into the IDCT itself. Also, it
allows us to remove vc1_put_block(), and makes CODEC_FLAG_GRAY faster.
Advanced profile never uses "range reduction", so vc1_put_block() quite
literally just calls put_pixels_clamped() from vc1_decode_i_blocks_adv().
By inlining the function, we can prevent calling IDCT8x8 if
CODEC_FLAG_GRAY is set, and we don't have to scale the coeffs in the
[0,256] range, but can instead use put_signed_pixels_clamped().
(cherry picked from commit 70aa916e46)
With negative stride, the start of the edge_emu buffer should be pointing to
the last line, not the end of the buffer.
With positive stride, pointing to the end of the buffer was completely wrong.
(cherry picked from commit a89f4ca005)
Advanced profile never uses "range reduction", so vc1_put_block() quite
literally just calls put_pixels_clamped() from vc1_decode_i_blocks_adv().
By inlining the function, we can prevent calling IDCT8x8 if
CODEC_FLAG_GRAY is set, and we don't have to scale the coeffs in the
[0,256] range, but can instead use put_signed_pixels_clamped().
With negative stride, the start of the edge_emu buffer should be pointing to
the last line, not the end of the buffer.
With positive stride, pointing to the end of the buffer was completely wrong.
The rematrixing strategy reuse flags are not reset between frames, so they
need to be initialized for all blocks, not just block 0.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 5b54d4b376)
The rematrixing strategy reuse flags are not reset between frames, so they
need to be initialized for all blocks, not just block 0.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This is to match the value in every (E-)AC-3 file from commercial sources.
It has a negligible effect on audio quality.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 50d7140441)
VBV delay is useful for T-STD compliance in some TS muxers. It is
certainly possible to retrieve it by parsing the output of FFmpeg, but
getting it from the context makes it simpler and less error-prone.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This is to match the value in every (E-)AC-3 file from commercial sources.
It has a negligible effect on audio quality.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Perform validity check on AVFormatContext.channels instead of
uninitialised field.
This fixes issue 2001.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 9806fbd535)
It is pretty hopeless that other considerable projects will adopt
libavutil alone in other projects. Projects that need small footprint
are better off with more specialized libraries such as gnulib or rather
just copy the necessary parts that they need. With this in mind, nobody
is helped by having libavutil and libavcore split. In order to ease
maintenance inside and around FFmpeg and to reduce confusion where to
put common code, avcore's functionality is merged (back) to avutil.
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
VBV delay is useful for T-STD compliance in some TS muxers. It is
certainly possible to retrieve it by parsing the output of FFmpeg, but
getting it from the context makes it simpler and less error-prone.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Perform validity check on AVFormatContext.channels instead of
uninitialised field.
This fixes issue 2001.
Signed-off-by: Mans Rullgard <mans@mansr.com>
AC3DSPContext.ac3_max_msb_abs_int16() finds the maximum MSB of the absolute
value of each element in an array of int16_t.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit fbb6b49dab)
This fixes visual glitches in Bink version 'b' files, as the quantization
tables were not being permuted.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 2315392174)
AC3DSPContext.ac3_max_msb_abs_int16() finds the maximum MSB of the absolute
value of each element in an array of int16_t.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
Some MPEG4 cameras produce files with empty GOP headers.
This patch makes the decoder ignore such broken headers and proceed
with the following I-frame. Without this change, the following
start code is missed resulting in the entire I-frame being skipped.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This fixes visual glitches in Bink version 'b' files, as the quantization
tables were not being permuted.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Using doubles make the double -> int cast well defined for all the values
used, with the exception of when s[i]==1.0, which is special-cased.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 47d62c965b)
Using doubles make the double -> int cast well defined for all the values
used, with the exception of when s[i]==1.0, which is special-cased.
Signed-off-by: Mans Rullgard <mans@mansr.com>
s->windowed_samples will always have a range of [-32767,32767] due to the
window function, so the return value from log2_tab() will always be in the
range [0,14].
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 626264b11b)
Instead of returning an error when bytes are left over, just return
the number of actually used bytes as other decoders do.
Instead add a special case so an error will be returned when none
of the data looks valid to avoid making debugging a pain.
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit 4a72765a1c)
The function return type is void, so a return statement with an
expression is forbidden (and pointless).
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit b4668274b9)
The avcodec_thread_free() compatibility wrapper calls ff_thread_free(),
which is not defined when threading is disabled. Make this call
conditional.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 9a77a92c2b)
check AVCodecContext->sample_fmt against AVCodec->sample_fmts[] to ensure
that the encoder supports the specified sample format. Error out if it doesn't.
Previously, it would continue and output garbage. Fixes issue 2587.
(cherry picked from commit 2cfa2d9258)
Decode times for big_buck_bunny_720p_stereo:
1 thread:
real 1m14.227s
user 1m13.104s
sys 0m1.108s
2 threads: (33% faster)
real 0m49.329s
user 1m33.735s
sys 0m1.834s
3 threads: (44% faster)
real 0m41.593s
user 1m44.884s
sys 0m1.967s
(cherry picked from commit d23845f311)
As a side effect of the last commit, avcodec_open() now calls it automatically,
so there is no longer any need for clients to call it.
Instead they should set AVCodecContext.thread_count.
avcodec_thread_free() is deprecated, and will be removed from avcodec.h at the
next MAJOR libavcodec bump.
Rename the functions to ff_thread_init/free, since they are now internal.
Wrappers are provided to maintain API compatibility.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit c0b102ca03)
s->windowed_samples will always have a range of [-32767,32767] due to the
window function, so the return value from log2_tab() will always be in the
range [0,14].
Signed-off-by: Mans Rullgard <mans@mansr.com>
Instead of returning an error when bytes are left over, just return
the number of actually used bytes as other decoders do.
Instead add a special case so an error will be returned when none
of the data looks valid to avoid making debugging a pain.
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
The avcodec_thread_free() compatibility wrapper calls ff_thread_free(),
which is not defined when threading is disabled. Make this call
conditional.
Signed-off-by: Mans Rullgard <mans@mansr.com>
check AVCodecContext->sample_fmt against AVCodec->sample_fmts[] to ensure
that the encoder supports the specified sample format. Error out if it doesn't.
Previously, it would continue and output garbage. Fixes issue 2587.
Decode times for big_buck_bunny_720p_stereo:
1 thread:
real 1m14.227s
user 1m13.104s
sys 0m1.108s
2 threads: (33% faster)
real 0m49.329s
user 1m33.735s
sys 0m1.834s
3 threads: (44% faster)
real 0m41.593s
user 1m44.884s
sys 0m1.967s
As a side effect of the last commit, avcodec_open() now calls it automatically,
so there is no longer any need for clients to call it.
Instead they should set AVCodecContext.thread_count.
avcodec_thread_free() is deprecated, and will be removed from avcodec.h at the
next MAJOR libavcodec bump.
Rename the functions to ff_thread_init/free, since they are now internal.
Wrappers are provided to maintain API compatibility.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
Also allow qmin/qmax to go up to 69 (the current max value for libx264). This
will have to increase when we add 9/10-bit support.
(cherry picked from commit c7ac200d15)
Due to being pants-on-head retarded, libavcodec defaults this to zero, which
results in broken output. This didn't affect ffmpeg.c, which sets it itself,
but caused problems for other calling apps using VBV.
(cherry picked from commit f7f8120fb9)
Fix emu_edge_v_extend_15 to be <128 bytes on Win64, by being more strict
on the size of registers and which registers are being used for operations
where multiple are available. This fixes segfaults in emulated_edge()
function calls on Win64.
(cherry picked from commit 17cf7c68ed)
In all 3 cases, the decoding continues and thus a warning would be sufficient.
Helps application that catch them with own log handers to handle them
accordingly.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit ae2104791f)
This adds NEON optimised versions of all functions in VP8DSPContext.
Based on initial work by Rob Clark.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit a1c1d3c003)
Makes playing QDMC files in MPlayer work when using the libavformat demuxer.
Problem was that the extradata was not passed from demuxer to decoder.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit ed19fafd48)
Due to being pants-on-head retarded, libavcodec defaults this to zero, which
results in broken output. This didn't affect ffmpeg.c, which sets it itself,
but caused problems for other calling apps using VBV.
Fix emu_edge_v_extend_15 to be <128 bytes on Win64, by being more strict
on the size of registers and which registers are being used for operations
where multiple are available. This fixes segfaults in emulated_edge()
function calls on Win64.
In all 3 cases, the decoding continues and thus a warning would be sufficient.
Helps application that catch them with own log handers to handle them
accordingly.
Signed-off-by: Mans Rullgard <mans@mansr.com>
In some places, dvbsubdec passes improper input buffer size to
bitstream reading functions, not accounting for reading pointer
updates.
Fixed by using buffer_end - buffer pointer instead of fixed buffer length.
Signed-off-by: Jindrich Makovicka <makovick@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
In some places, dvbsubdec passes improper input buffer size to
bitstream reading functions, not accounting for reading pointer
updates.
Fixed by using buffer_end - buffer pointer instead of fixed buffer length.
Signed-off-by: Jindrich Makovicka <makovick@gmail.com>
Signed-off-by: Mans Rullgard <mans@mansr.com>
Makes playing QDMC files in MPlayer work when using the libavformat demuxer.
Problem was that the extradata was not passed from demuxer to decoder.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This was missed when pkt_pts was first added.
Signed-off-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 62ecd3635a)
This patch changes the exponent difference threshold in the exponent
strategy decision function of the AC-3 encoder. I tested lowering in
increments of 100. From 1000 down to 500 generally increased in quality
with each step, but 400 was generally much worse.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit c3beafa0f1)
This will be beneficial for use with the audio conversion API without
requiring it to depend on all of dsputil.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit c73d99e672)
Gcc 4.6 only preserves the first value when using an array with an "m"
constraint.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 770c410fbb)
This was missed when pkt_pts was first added.
Signed-off-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Mans Rullgard <mans@mansr.com>
This patch changes the exponent difference threshold in the exponent
strategy decision function of the AC-3 encoder. I tested lowering in
increments of 100. From 1000 down to 500 generally increased in quality
with each step, but 400 was generally much worse.
Signed-off-by: Mans Rullgard <mans@mansr.com>
This will be beneficial for use with the audio conversion API without
requiring it to depend on all of dsputil.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Adds some duplicated code, but avoids duplicate edge checks and similar.
~0.5% faster overall on Parkjoy test sample.
(cherry picked from commit 64233e702a)