* commit '5264e7ba217b3c0ceae813917134e1ab52573141':
ac3: Check the array bound before dereferencing
See d85ebea3f3
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit 'a86aa16088ad7f22a8918d71adb8c040d6033d84':
vaapi_h264: Add trivial support for low-power encoding
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '6641819feedb086ebba3d2be89b8d33980f367e1':
build: Ignore generated mapfile and remove it on distclean
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit 'fe7b21c8f148493c6fbceb7f887a77531dd1ae0e':
avconv: fix parsing bitstream filters
Not merged because ffmpeg_opt.c still uses the old BSF API.
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '80fb19bc234a3f2350d891adf39f3738a8e4849f':
avconv: fix a check for av_bsf_get_by_name() return value
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '9f7590f4e497c12693247d7f935a20d7773a64dd':
avconv_vaapi: use the hwcontext device creation API
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '18c506e9e6e8df8b1d496d093077b8240ea68c28':
avconv_dxva2: use the hwcontext device creation API
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit 'f72db3f2f3a8c83a4f5dede8fa03434b2bf676c6':
avconv_vdpau: use the hwcontext device creation API
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '7ca4fdc046a945949866bb6fc550e3cab1fc8c00':
fate: More fine-grained dependencies for demuxer tests
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '07377fb557909015338b4c215b87b9c73ea577ad':
fate: More fine-grained dependencies for voice codec tests
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '3fdffc032e8ea5676bc0c2551b900c0dc887835b':
rtsp: Use avcodec_descriptor_get instead of avcodec_find_decoder
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit 'e47b8bbf0b54599d44b9330eb4d68cdde4f6d298':
avcodec: Bump micro version after changing public JPEG 2000 defines
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit 'ac84e618df4765ba751327497994066d0931e6a8':
avfiltergraph: check the query_formats() return value
This commit is a noop, see 6a4c5c730e
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '2ef6dab0a79a9852a92ed80b07f9e32a37530d9e':
lavc: document that avcodec_close() should not be used
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit 'e2a3df1a464091075040a81ffc419fa21a8a5fd8':
avconv: Use more precise deprecation ifdefs
The PSNR functionality is not deprecated in ffmpeg.
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit '35c858066840352d6d43385bbc728467c5150974':
avconv: stop using AVStream.codec
Not merged, as ffmpeg.c is not migrated to codecpar yet, and this commit
only changes minor parts of AVStream.codec usage, which should get applied
after ffmpeg.c is using codecpar.
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Fixes crash due to unprocessed input being passed through
This fixes the last segfault caused by mixing 3.0 and 3.1 libs and
applications
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The encode function is supposed to just return 0 on success.
This stems from a mixup with the return value of decode functions.
Reviewed-by: Jan Gerber <j@v2v.cc>
Signed-off-by: Martin Storsjö <martin@martin.st>
Add -movflags use_metadata_tags to the mov muxer. This will cause
the muxer to write all metadata to the file in the keys and mtda
atoms.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '3399a26d3f57d462e839c0ee51223ae9aca20852':
nvenc: allow setting the number of slices
nvenc: De-compensate aspect ratio compensation of DVD-like content.
nvenc: list the major contributors in the copyright header
configure: Don't require nonfree for nvenc
nvenc: drop the hard dependency on CUDA
nvenc: only support HW frames when CUDA is enabled
nvenc: write the VUI signal properties for HEVC
nvenc: only write the VUI signal type fields if they are set
nvenc: Generate bufferingPeriod/pictureTiming SEI
nvenc: Delay frame output to increase encoding speed
nvenc: add support for lossless encoding
nvenc: Generate AUD NAL units for better compatiblity
nvenc: fix the rc option definitions
All these commits are noop as requested by Timo Rothenpieler.
<BtbN> andrey_turkin, ubitux, yeah, I like the current state of nvenc in
ffmpeg, I think most remaining differences should be merged on the libav
side of things. At least I'm not aware of anything that's missing in
ffmpeg.
Merged-by: Clément Bœsch <u@pkh.me>
* commit '65dc7ca4c8e7e56362626a5d31e563e80108f104':
Add release notes for 12.
This commit is a noop, but we absolutely need someone to write the
release notes.
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'c0f4c7db9fea1c07d290a298b8db858b7ceed96d':
configure: move the hardware accel libs' entries in the help text
Merged-by: Clément Bœsch <u@pkh.me>
* commit '5e2203448ab4cc8ea1d933b87f1b39b009201044':
configure: improve the help text for external libraries
Only merged the explanation paragraphs. The removal of "enable/disable"
and "[no]" would create too much inconsistency and might cause
confusion.
Merged-by: Clément Bœsch <u@pkh.me>
Fixes#4124: Invalid argument '-std=c99' not allowed with 'C++/ObjC++'
C++ files fail to compile. This adds '-std=c++11' to CXX_FLAGS to fix.
Signed-off-by: Rick Kern <kernrj@gmail.com>
This commit fixes a broken build when compiling libavcodec with LLVM
compiler. These assembly files use non-standard format that is only
supported by GCC compiler. It would be nice to use a common standard
format. With this patch, both GCC and LLVM can build and generate the
same objects.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit 'ded4a6543dfb5a2f1d9f7fb8d3ab27a1872c22b3':
xtea-test: Use struct allocation functions from the API
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '8131bd4c22ad59b040173f67a5b2edb75863e801':
blowfish-test: Use struct allocation functions from the API
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'a86ef80494d759807a5ef8dd12838f0690092e37':
blowfish-test: Return different values for different errors
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'f12a705ee570e16ca692c66b62821a2dbdf82566':
movenc: Factorize a function for finding a metadata entry and the associated language
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'daec1651f1c0f8f8e704db375a2ecb364a722fa1':
movenc: Write ?xyz geotag metadata for mov files
This commit is a noop, see a3ec1d6abd
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'bc43131997a456ecdff160eab288395f5adb8d72':
mov: Also export loci altitude
This commit is a noop, see 08b7d19def
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '94d8141c8cd96c176f7d4bdb74a95331ec7db19b':
mov: Append place name instead of overwriting for loci
This commit is a noop, see 1607f77494
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'f126365cdad6327e6def8ceb918eaf538fbb97b3':
mov: Fix parsing short loci
This commit is a noop, see 50393bce31
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'd34826c33d401929b2ff8aee161fd39ad0a73613':
mov: Add a comment referring to the standard that defines the loci box
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'a79aafd0b4d37eda6f15dc68e6509d4e815290c9':
movenc: Add a test for VFR with b-frames, with a duration change at a fragment end
Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
* commit 'e1eb0fc960163402bbb4e630185790488f7d28ed':
movenc: Use packets in interleaving queues for the duration at the end of fragments
Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
This is definitely not complete.
Anton, Diego and Luca are still maintaining their code in Libav, but are
unwilling to do so in FFmpeg, so removing these entries will prevent
them from getting poked by our users.
Måns, Justin, Kostya and Jason left both projects a while ago.
* commit 'db7968bff4851c2be79b15b2cb2ae747424d2fca':
avio: Allow custom IO users to get labels for the output bytestream
Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
Increase buffer dequeue timeout when the codec needs to be drained as it
could happen that no input buffer is available when we receive a null
packet for the first time (meaning we are unable to signal end of stream
and mark the codec as draining).
Fixes potential loss of last frames after sending a null packet.
* commit '8e757716c61e0563a63829e30b02d5ba2a422ad6':
avprobe: Print stereo3d information
This commit is not merged as it doesn't apply at all in our tree. The
two following commits will add the same feature.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '0c4468dc185fa8b9e7d6add914595c5e928b24fd':
stereo3d: Add API to get name from value or value from name
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '34effe816f9f3df2e6b8bc738e2b5a86a24fd0d7':
fate: Update fate-lavf-ts after commit 393596f9d5
This commit is a noop, see c0ff42bf64
Merged-by: Clément Bœsch <clement@stupeflix.com>
Implement variable sized big-endian integers, since these are found
in files created by ARRI cameras.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '393596f9d51134d6e45d81ae129223f4faea1232':
mpegtsenc: stop impersonating ses in sdt
This commit also includes the needed FATE updates later spotted by
Martin Storsjö and fixed in 34effe816f on
Libav side.
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'ffa190d0479d2370dd89c95692f822cbff2cc24c':
Move VLC and RL_VLC_ELEM structure definitions to a separate header
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'd338abb664febbc2c7266af7818aab1f12dbc161':
mpeg4videodec: Call av_log() in check_marker() with AVCodecContext instead of NULL
This commit is a noop.
Since check_marker() is still in get_bits.h in FFmpeg and shared amongst
decoders, a similar but different change will be committed in the next
commit in to serve the same purpose of this one (that is, passing a
logging context to the av_log() in that function).
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'e4b38878da6b38ef5ca54ce14be985d6ae088834':
Move check_marker() from get_bits to mpeg4videodec
Not merged, check_marker() is used in various other places in FFmpeg.
Merged-by: Clément Bœsch <u@pkh.me>
* commit '2fb1d17a5a6b6ff8da2434cde0fda821f06f608c':
x86inc: Enable AVX emulation in additional cases
This commit is a noop, see e428f3b30c
Merged-by: Clément Bœsch <u@pkh.me>
* commit '300fb0df84e9a563ed3b8a9b3d365abb6cf34600':
x86inc: Improve handling of %ifid with multi-token parameters
This commit is a noop, see 4bd5583ace
Merged-by: Clément Bœsch <u@pkh.me>
* commit '8d02579fae756336ae2a88d521e8cf2f6b436a2f':
x86inc: Fix AVX emulation of some instructions
This commit is a noop, see 42be240ad6
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'ba3eb745cc236765c916b74b39c1874da5c3aefc':
x86inc: Fix AVX emulation of scalar float instructions
This commit is a noop, see 8dd3ee9ddd
Merged-by: Clément Bœsch <u@pkh.me>
* commit '8996515b137f962e3a8691241c285c96437b6c53':
avpacket: fix setting AVPacket.data in av_packet_ref()
This commit is a noop, see ed3a02547c
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'e62ff72fc1052273deb708ba715f73e5187281d4':
lavc: make avcodec_open2() fail when the timebase is not set for encoding
Merged-by: Clément Bœsch <u@pkh.me>
The internal avctx bitrate is copied into codecpar after estimate_timings()
Fixes Ticket5646
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '763d69bfb2f0094e99f43e657cfd2b0471361f6b':
Add some more deprecation guards
- psnr() deprecation is not merged within ffmpeg.c as we still use it in
non-deprecated code
- the XVMC chunk is not merged as we still apparently maintain it
- The guarding in lavc/qtrleenc.c could be simplified but merged anyway.
Merged-by: Clément Bœsch <clement@stupeflix.com>
this removes the need to probe to discover aac streams
inside mpegts containers, thus speeding up initial playback.
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit 'c11c693accaad65d3f4afa44c27f2338a2e3bf8f':
h264: Drop broken trace debug output
This commit is not merged as the debug was fixed in
94011f994a.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '015c2d923902fcd562571993eaf1231ce388c7f0':
libopencore-amr: Fix ff_dlog()/av_log() invocations
The log changed in our tree in 4a28962454
is kept as is since it's the correct thing to do (the log mentions what
the first byte *was*, so it's refering to the source packet, not the
encoded bitstream).
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '74d98d1b0e0e7af444c933ea3c472494de3ce6f2':
mpegts: Validate the SL Packet Header Configuration
See e630ca5111
Our local timestamp_len > 64 is adjusted to > 63 to match the Libav
check and the actual specifications (14496-1, 10.2.2).
There is no need to request a sample as it violates the specifications
and such a file would likely be the result of a crafted/fuzzed sample.
On the other hand, the clipping of the value is kept for extra safety.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '1982d0cc561912d685a0c2dbe58bc19f50bae231':
fate: Add test for MTS2/MSS4
The timestamps differ because we use a more appropriate timebase.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '375cad096565b0796df2a307faae7619766f7c49':
rtpdec_vp9: Support parsing the scalability structure
This commit is a noop, see cab237953e
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '943f4bea37dc8d510d2f43c0bbe0df59c9b34768':
rtpdec_h264: Use avpriv_report_missing_feature instead of a manual av_log
This commit is a noop, see d50b3fe463
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'b55e3633d3f60cf0f51269f25936409b79d2729e':
rtpdec: Use AVERROR_PATCHWELCOME instead of AVERROR(ENOSYS) for unimplemented features
This commit is a noop, see 94dee9067a
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '70c77fdfc1076fd7f6cd20079237ddc97e1a10bc':
rtpdec_vp9: Update header parsing to spec draft 02
This commit is a noop, see 43880f9716
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '33b83d89e3720aecc60b4df3d8021cbc5780dd91':
rtpdec_vp9: Make sure to free the temp buffer on close
This commit is a noop, see 03aa4cd22b
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'c26741332165a049717e6da84db13a24ee8edade':
Revert "mmaldec: autodetect by default" since it breaks linking on systems without mmal libraries
This commit is not merged as the previous one wasn't either.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '33ac77e850efdfd0e8835950c3d947baffd4df45':
mmaldec: autodetect by default
This commit is not merged (it will be reverted in the next one to
merge).
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '74beead9bd596180bcac6108548fc0a86d8eb4ae':
mmaldec: limit internal buffering
See 14a90c9ef0
The introduction of the MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS check is
merged.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '45a954f5aa35161a741fffd6c8bb92e9f91a1720':
mmaldec: print the MMAL format FourCC automatically
This commit is a noop, see d27a12cb09
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '84bba36846870c6269732351c022eeef094c6c83':
configure: fix mmal build dependencies
This commit is a noop, see 0badf4564a
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'ce589940c2cac936891e8bba275580d6efc41e8b':
mmaldec: send only a single EOS packet on flushing
This commit is a noop, see dafe4cd29c
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '46aaad78c3cf03d43e7c9ca1d4a8b8a71fb0527d':
mmaldec: correct package buffering accounting
This commit is a noop, see a55fbfa4c4
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '9a382f363950c0aab1500aa0937f73bf4dde9ee3':
mmaldec: add vc1 decoding support
This commit is a noop, see b07cbf6724
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'd52208e8d549d4c84a2a348aa3790b1a177e779a':
mmaldec: Add mpeg2 decoding support
This commit is a noop, see 7ebe12fc55
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '2689bb115ca64921789092148deaf213a0d94d2e':
mmaldec: Fix avpriv_atomic_get usage
This commit is a noop, see da43e9e157
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '366ba2dee1f2b17825b42e2164d3b9879f0271b1':
mmaldec: Use av_assert0() instead of assert()
This commit is a noop, see c0152ebb9e
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '5b1409c75563b4a3aca113c34d09e3b5442de47f':
fate: Add test for MSS1
Test was already present, see 849e55e58e.
The merge removes the audio decoding present in our version and
simplifies the rules.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '6eb2505855fa832ba7d0a1c2fb9f92c41c5446e3':
dds: Drop gray-alpha swapping
This commit is not merged, see 139cbeb75e.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '39cdbb12aa2140520246bc4c3e22436b9f8a121a':
dxva2_h264: Unbreak compilation after 3176217c6
This commit is a noop. The compilation was fixed in the merge commit
itself (1534ef87c7). The additional local
unused sps is not merged.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '4012fe1ee819edc7689e182189e66c5401fb4b41':
ape: Unbreak adaptcoeffs computation
This commit is a noop, see dd4fb2339f
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '2e5bde956519ae19cedfa482e199518e495bcaf5':
h264: eliminate max_contexts
This commit is a noop as max_contexts can change and mismatch the
nb_slice_ctx (see 507b01f899).
The file in the Ticket is not decodable anymore, so it was not possible
to check if that code path was triggerable some way or another, or even
test a different fix.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit 'e0652795292223f8bc8e5bac019c1fca7323d23c':
h264: remove an artificial restriction on the number of slice threads
Tested with multiple runs of fate-h264 THREADS=50 THREAD_TYPE=slice
Merged-by: Clément Bœsch <clement@stupeflix.com>
It has no use afterwards and freeing it before calling ff_flac_parse_picture()
may help prevent OOM issues on memory constrained scenarios.
Signed-off-by: James Almer <jamrial@gmail.com>
* commit 'b77fffa127663028169c5ed543956af4b9496c29':
h264: make slice threading work with deblocking_filter=1
again label, and SLICE_SINGLETHREAD error handling are preserved as that
SLICE_SINGLETHREAD can be raised on a remaining case.
slice_context_count is also kept since it's still in use.
Merged-by: Clément Bœsch <clement@stupeflix.com>
* commit '99c554efc8b09c3f1bb2fb41c3da5431085f7470':
h264: eliminate low_delay
ff_print_debug_info2() is adjusted to allow a NULL pointer as low_delay.
It's only useful for MPEG codecs with the exception of H264.
Merged-by: Clément Bœsch <clement@stupeflix.com>
The caps_internal field has moved without major bump and direct
access causes crashes, found when testing 3.1
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
We haven't had a stable release since the packet_gap addition, so probably it
is worth reworking the option to something that makes more sense to the end
user. Also add burst_bits option to specify maximum length of bit bursts.
Signed-off-by: Marton Balint <cus@passwd.hu>
* commit '755f79f84cbeb5d749fb120e55e0098a2d7663a0':
h264_refs: make the H264Context const where possible
ff_h264_decode_ref_pic_list_reordering() and h264_initialise_ref_list()
do not have a const H264Context * as they modify the default_ref inside
that context.
Merged-by: Clément Bœsch <u@pkh.me>
* commit '0ba471d7d864c712f45d7ac6aca4829aba025adc':
h264: eliminate copy_fields
Added a copy of default_ref which isn't present in Libav.
Merged-by: Clément Bœsch <u@pkh.me>
* commit '98c97994c5b90bdae02accb155eeceeb5224b8ef':
h264: decouple extradata parsing from the decoder
Main changes:
- move get_avc_nalsize() inside h264_parser.c and make it use
H264ParseContext instead of H264Context. This helps fixing
fate-flv-demux.
- Also use is_avc/nal_length_size from the H264ParseContext in various
places instead of the H264Context one as that's the fields now filled
by ff_h264_decode_extradata()
- h264_parse: dont fail decode_extradata_ps() due to nal split failure.
Change by Michael to fix decoding of h264/ref_10.avi.
Merged-by: Clément Bœsch <u@pkh.me>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '728d90a0c1973661a9e73da697bf4f90c9d19577':
h264: decouple h264_sei from the h264 decoder
Main changes:
- SEI decoding doesn't have access to the debug flag in the codec context so a
few logging are dropped.
- naming of quincunx_sampling_flag and frame_packing_arrangement_type are kept
as they are in FFmpeg instead of respectively quincunx_subsampling and
arrangement_type used in Libav because the former match the specifications.
- don't reset the x264 build info once read in order to fix
fate-h264-lossless (change by Hendrik)
- H264Context.has_recovery_point and deprecated
AVCodecContext.dtg_active_format are set after ff_h264_sei_decode()
based on the SEI state since ff_h264_sei_decode() doesn't have access
to H264Context anymore.
- frame_packing_arrangement_type is not checked against <= 0 in
decode_postinit() since it is always read as a positive value with
get_bits(). This fixes a -Wtype-limits warning by GCC spotted by
Michael.
Side Notes:
- tested that ffprobe on the file from ticket #3652 still returns 4
keyframes
- tested that playback from ticket #3063 still works
Merged-by: Clément Bœsch <clement@stupeflix.com>
Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com>
"When you are done with a decompression session you created, call
VTDecompressionSessionInvalidate to tear it down and then CFRelease to
release your object reference."
high phase_count is only useful when dst_incr_mod is non zero
in other word, it is only useful on soft compensation
on init, it will build filter with low phase_count
but when soft compensation is enabled, rebuild filter
with high phase_count
this approach saves lots of memory
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
because exact_rational does not guarantee
that phase_count is even
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
Person in MAINTAINERS hasn't responded to a patch on the ML or private
email, and doesn't maintain the files according to git.
Signed-off-by: Rick Kern <kernrj@gmail.com>
AudioConverterFillComplexBuffer() doesn't always call its callback. A frame
queue is used to prevent skipped audio samples.
Signed-off-by: Rick Kern <kernrj@gmail.com>
Fix swapped descriptions of av_thread_message_queue_set_err_send
and av_thread_message_queue_set_err_recv.
Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
Not all v4l2 devices implement the VIDIOC_G_PARM ioctl. This patch allow
ffmpeg to open such device and treat it the same as devices that do
implement the ioctl but returns that it do not implement the
V4L2_CAP_TIMEPERFRAME capability.
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Benoit Fouet <benoit.fouet@free.fr>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Allows to select a codec (encoder or decoder) only if it supports a
specific profile.
Adds ff_AMediaCodecProfile_getProfileFromAVCodecContext to convert an
AVCodecContext profile to a MediaCodec profile. It only supports H264
for now.
The codepath using MediaCodecList.findDecoderForFormat() (Android >= 5.0)
has been dropped as this method does not allow to select a decoder
compatible with a specific profile.
Signed-off-by: Benjamin Steffes <benjaminst123@gmail.com>
(comment by ronald)
prevent the theoretical case where the container type (int)
would be 64 bit on some platforms, which would waste some space
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The stat struct is defined to stati64, which requires using the appropriate wstati/stati functions as well.
Fixes a whole bunch of compiler warnings as well as build breakage with the decklink avdevice.
Fixes trac #5640
We still only support one single layer though, but this allows
receiving streams that have this structure present even for
single layer streams.
Signed-off-by: Martin Storsjö <martin@martin.st>
Docs clearly states that av_write_trailer should only be called if
avformat_write_header was successful, therefore we have to deinit if we return
failure.
Signed-off-by: Marton Balint <cus@passwd.hu>
When checking pix_fmt mapping, some bitstreams are mapped to an
incorrect pix_fmt instead of being rejected (ENOSYS).
Actually, such bitstreams are not supported (FFmpeg encoder does not
produce such bitstream, such bitstream may come only from another
encoder for the moment).
- JPEG 2000 RCT 11/13/15/16 bit depths are mapped to a 8-bit FFmpeg
pix_fmt (e.g. bgr0), which is not expected.
- JPEG 2000 RCT 9/10/12/14 bit depths with alpha are mapped to a
FFmpeg pix_fmt without alpha (e.g. AV_PIX_FMT_GBRP9 for 9-bit with
alpha), which is not expected.
The order for choosing the pix_fmt is changed to the one used by YCbCr
selection (<=8 bit first).
" && !f->transparency" is added to the other lines.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
this allow a filter to be written like this:
aformat =
sample_fmts = fltp|flt:
sample_rates = 44100|44800
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
give high quality resampling
as good as with linear_interp=on
as fast as without linear_interp=on
tested visually with ffplay
ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000, showcqt=gamma=5"
ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:linear_interp=on, showcqt=gamma=5"
ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:exact_rational=on, showcqt=gamma=5"
slightly speed improvement
for fair comparison with -cpuflags 0
audio.wav is ~ 1 hour 44100 stereo 16bit wav file
ffmpeg -i audio.wav -af aresample=osr=48000 -f null -
old new
real 13.498s 13.121s
user 13.364s 12.987s
sys 0.131s 0.129s
linear_interp=on
old new
real 23.035s 23.050s
user 22.907s 22.917s
sys 0.119s 0.125s
exact_rational=on
real 12.418s
user 12.298s
sys 0.114s
possibility to decrease memory usage if soft compensation is ignored
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
* commit 'c8dcff0cdb17d0aa03ac729eba12d1a20f1f59c8':
h264: factor out calculating the POC count into a separate file
Merged-by: Clément Bœsch <u@pkh.me>
* commit '113aeee6aed35cb786a9f6d69b0cb210f498b9da':
h264_parser: move the H264DSPContext to the parser context
H264Context is kept locally as it is currently needed for logging
(h->avctx as log context) and for is_avc and nal_length_size. These
later fields will later be obtained when the extradata parsing is
decoupled from the decoder. This code will be updated accordingly when
that commit is merged.
Merged-by: Clément Bœsch <u@pkh.me>
* commit '3176217c60ca7828712985092d9102d331ea4f3d':
h264: decouple h264_ps from the h264 decoder
Main changes:
- a local GetBitContext is created for the various
ff_h264_decode_seq_parameter_set() attempts
- just like the old code, remove_sps() is adjusted so it doesn't remove
the pps.
Fixes decode with Ticket #631http://ffmpeg.org/pipermail/ffmpeg-user/attachments/20111108/dae58f17/attachment.mp4
but see next point as well.
- ff_h264_update_thread_context() is updated to work even when SPS
isn't set as it breaks current skip_frame code. This makes sure we
can still decode the sample from ticket #631 without the need for
-flags2 +chunks. (Thanks to Michael)
- keep {sps,pps}_ref pointers that stay alive even when the active
pps/sps get removed from the available lists (patch by michaelni with
additionnal frees in ff_h264_free_context() from mateo)
- added a check on sps in avpriv_h264_has_num_reorder_frames() to fix
crashes with mpegts_with_dvbsubs.ts from Ticket #4074http://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket4074/mpegts_with_dvbsubs.ts
- in h264_parser.c:h264_parse(), after the ff_h264_decode_extradata() is
called, the pps and sps from the local parser context are updated with
the pps and sps from the used h264context. This fixes fate-flv-demux.
- in h264_slice.c, "PPS changed between slices" error is not triggered
anymore in one condition as it makes fate-h264-xavc-4389 fails with
THREADS=N (Thanks to Michael)
Merged-by: Clément Bœsch <clement@stupeflix.com>
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
VideoToolbox doesn't supply parameter sets until the first frame is done
encoding. This spins up a temporary encoder and encodes a single frame to
get this data.
Signed-off-by: Rick Kern <kernrj@gmail.com>
x86 is maintained entirely by others these days
ML, mostly too
remove myself from a few spots that have other maintainers and where i
just dont know the code that well anyway to do an ideal job
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
All HE-AAC samples with an LFE channel make this warning get spammed on
every frame. Turning off SBR for LFE channels makes sense (since it has
much less coefficients than normal channels do), so this error print is
of no value in this case.
It makes sense to keep the error in other cases, hence why it's still
around, degraded to warning severity since the decoder will still
attempt to decode without SBR.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Mkvtoolnix stores the sample rate of the original stream as reported by the
"OpusHead" stream header instead of 48kHz, the actual sample rate of the Opus
stream.
Ignoring the stored sample rate and forcing 48kHz preserves the correct initial
padding when remuxing such files.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
The framerate is 25 which is a fixed default and is wrong undo the 1 line
change which caused this regression
Only the avg_frame rate setting is removed
The timebase update is not done as there was a objection (see ML)
Fixes Ticket 5444
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Codec width/height restrictions seem hardcoded at the OMX level and
seem arbitrary. Bypassing those restrictions allows a device to decode
streams at higher resolutions.
For example it allows a Nexus 5 to decode h264 streams with a resolution
higher than 1920x1080.
When multiple threads tries to call av_register_all(), the first thread sets
initialized to 1 and do the register process. At the same time, other thread might
also call av_register_all(), which returns immediately because initialized is set to 1
(even when it has not completed registering codecs). We can avoid this problem
if we set initialised to 1 while exiting from function.
Github: Closes#196
This avoids enabling and building the x264rgb encoder when its actually not supported and
thus would not work
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This avoids use of uninitialized variables and might make bugs in general
easier to reproduce
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Fixes regression with mplayers direct rendering and reduces buffer count
pressure in some cases
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Fifo was reallocating always to twice of the requested size.
This fixes it to reallocate to requested size, or twice of the
original size - whichever is greater.
Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Since d607861, service can not be NULL, only "0".
An UDP address with neither local port nor address leaves both
service and node to their default value, and POSIX specifies
that they are not allowed to be both NULL; "0" is equivalent
to an unspecified port for all currently known protocols.
Fix CID 1341570.
Fixes Ticket5467 "Lossless j2k information no longer shown"
Based on suggestion by Hendrik Leppkes
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Missing docs found by: nevcairiel
RFC: should we add support so that the C field names always work as av option names/keys ?
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Missing docs found by: nevcairiel
RFC: should we add support so that the C field names always work as av option names/keys ?
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Padding before the first sync word can be very large for DTS-in-WAV
streams. There is no reason to include this padding in parsed packet.
Signed-off-by: James Almer <jamrial@gmail.com>
This is now required by dcadec_decode_frame(). All remaining users of
avpriv_dca_convert_bitstream() have been updated to expect EXSS marker.
Signed-off-by: James Almer <jamrial@gmail.com>
Remove half-working attempt at supporting unchecked bitstream reader by
always copying input data into intermediate buffer with large amount of
padding at the end.
Convert LBR decoder to checked bitstream reader. Convert
dcadec_decode_frame() to parse input data directly if possible.
Signed-off-by: James Almer <jamrial@gmail.com>
Use explicit nvenc capability checks instead to determine usable devices
instead of SM versions.
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
This code wasn't removed when the functionality was moved inside
aacenc.c with commit 8005b6de4f
Fixes CID1361962
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
The second one is not explicitly needed, as res is not reset, but it is there
for consistency.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Marton Balint <cus@passwd.hu>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
3. use uld and mtc1 to workaround cpu 3A2000 gslwlc1 bug (gslwlc1 instruction extension bug in O32 ABI)
4. h264qpel use hepldsp optimizations
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
When a filter is no longer part of a graph, its pointers should be cleared
so no stale pointers remain.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Experimental; requires Skylake and VAAPI 0.39.1 (not yet released).
Also increases the allowed range of the quality option - in low-power
mode, the Intel driver supports levels 1-8 (and 0 meaning default).
Non-reference frames (nal_ref_idc == 0) should be discardable, so
frame_num does not advance after them. Before this change, a stream
containing unreferenced B-frames would be rejected by the reference
decoder.
This prevents attempts to use unsupported modes, such as low-power
H.264 mode on non-Skylake targets. Also fixes a crash on invalid
configuration, when trying to destroy an invalid VA config/context.
The current code modifies the user-supplied string, which is shared for
the whole output file. So a bitstream filter specification applied to
multiple streams would not work correctly.
There is no point in separate structures as they have 1:1 relationship,
they are always used together and they have same lifetime.
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
Functions names and scopes are from libav. This commit basically moves
code around without changing it; it shouldn't change any functionality
except some small leak fixes on error paths.
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
This fixes partially completed send()
Avoids holding the mutex during send()
fixes race conditions in error handling
removes copied non thread specific blocking code
Fixes deadlocks on closure
Fixes data loss on closure
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit enables sending UDP packets in a background thread with specified delay.
When sending packets without a delay some devices with small RX buffer
( MAG200 STB, for example) will drop tail packets in bursts causing
decoding errors.
To use it specify "fifo_size" with "packet_gap" .
The output url will looks like udp://xxx:yyy?fifo_size=<output fifo
size>&packet_gap=<delay in usecs>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Fixes potential parsing failure when total number of channels indicated
by EXSS asset descriptor decreases mid-stream and stale embedded downmix
flags are referenced.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
We cannot deprecate it until the new parser API is in place, because of
the way libavformat works. But the majority of the users can already
simply replace it with avcodec_free_context(), which will simplify the
transition once it is finally deprecated.
This function is supposed to "reset" a codec context to a clean state so
that it can be opened again. The only reason it exists is to allow using
AVStream.codec as a decoding context (after it was already
opened/used/closed by avformat_find_stream_info()). Since that behaviour
is now deprecated, there is no reason for this function to exist
anymore.
Since AVCodecContext contains a lot of complex state, copying a codec
context is not a well-defined operation. The purpose for which it is
typically used (which is well-defined) is copying the stream parameters
from one codec context to another. That is now possible with through the
AVCodecParameters API. Therefore, there is no reason for
avcodec_copy_context() to exist.
Initialize the bit buffer with the correct size (amount of bits that will
be read) instead of relying on the bitstream reader overreading the
correct values.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
It is now only used by the av_parser_change() call during streamcopy, so
allocate a special AVCodecContext instance for this case. This instance
should go away when the new parser API is finished.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
If acmax can be 0 then it could result in a division by 0
Fixes CID1351345
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
3. ff_pred16x16_plane_ functions only support N64 ABI now
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
1.the codes are compatible with O32 ABI
2.use uld and mtc1 to workaround cpu 3A2000 gslwlc1 bug (gslwlc1 instruction extension bug in O32 ABI)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
3. use uld and mtc1 to workaround cpu 3A2000 gslwlc1 bug (gslwlc1 instruction extension bug in O32 ABI)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Values for unsupported frequencies > 48000 Hz are still included (parser
will make use of them).
Also convert sampling frequencies array to unsigned.
Signed-off-by: James Almer <jamrial@gmail.com>
Move this from separate structure field to a packet flag.
Behavior should be equivalent, except that residual flag is now properly
cleared when packet has no core frame at all.
Also print a message when forcing recovery mode due to invalid residual
to make debugging easier.
Signed-off-by: James Almer <jamrial@gmail.com>
Parse core frame size directly when searching for frame end instead of
using value extracted from previous frame.
Account for unused bits when calculating sync word distance for 14-bit
streams to avoid alias sync detection.
Parse EXSS frame size and skip over EXSS frame to avoid alias sync
detection.
Signed-off-by: James Almer <jamrial@gmail.com>
For reasons we are not privy to, nvidia decided that the nvenc encoder
should apply aspect ratio compensation to 'DVD like' content, assuming that
the content is not BT.601 compliant, but needs to be BT.601 compliant. In
this context, that means that they make the following, questionable,
assumptions:
1) If the input dimensions are 720x480 or 720x576, assume the content has
an active area of 704x480 or 704x576.
2) Assume that whatever the input sample aspect ratio is, it does not account
for the difference between 'physical' and 'active' dimensions.
From these assumptions, they then conclude that they can 'help', by adjusting
the sample aspect ratio by a factor of 45/44. And indeed, if you wanted to
display only the 704 wide active area with the same aspect ratio as the full
720 wide image - this would be the correct adjustment factor, but what if you
don't? And more importantly, what if you're used to lavc not making this kind
of adjustment at encode time - because none of the other encoders do this!
And, what if you had already accounted for BT.601 and your input had the
correct attributes? Well, it's going to apply the compensation anyway!
So, if you take some content, and feed it through nvenc repeatedly, it
will keep scaling the aspect ratio every time, stretching your video out
more and more and more.
So, clearly, regardless of whether you want to apply bt.601 aspect ratio
adjustments or not, this is not the way to do it. With any other lavc
encoder, you would do it as part of defining your input parameters or do
the adjustment at playback time, and there's no reason by nvenc should
be any different.
This change adds some logic to undo the compensation that nvenc would
otherwise do.
nvidia engineers have told us that they will work to make this
compensation mechanism optional in a future release of the nvenc
SDK. At that point, we can adapt accordingly.
Signed-off-by: Philip Langdale <philipl@overt.org>
Reviewed-by: Timo Rothenpieler <timo@rothenpieler.org>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
As the nvEncodeApi.h header is now MIT licensed, this can be dropped.
The loaded CUDA and NVENC libraries are part of the nvidia driver, and
thus count as system libraries.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
The code needs only a few definitions from cuda.h, so define them
directly when CUDA is not enabled. CUDA is still required for accepting
HW frames as input.
Based on the code by Timo Rothenpieler <timo@rothenpieler.org>.
For some unknown reason enabling these causes proper CBR padding,
so as there are no known downsides just always enable them in CBR mode.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Group them in a subsection of the external library section. That should
make them easier to find and understand how they fit in the scheme of
things.
Also, rewrite the description text in a similar way as in the previous
commit.
Add a more accurate description of what the switches actually do (i.e.
allow using the given library, not enabling the corresponding
codecs etc.).
Replace the library descriptions, in many cases boilerplate text without
useful information, with a short summary of what the library does.
There is no real advantage to listing some codecs or subsystems
separately simply because they are somehow "hw-accelerated", on the
contrary it makes them harder to find than in a plain alphabetically
ordered list.
Previously, we required the minimum number of bytes required for
the full box. Don't strictly require the astronomical body and additional
notes fields, but do require an altitude field (which currently isn't
parsed). This matches the initial length check at the start of the function
(which doesn't know about the variable length place field).
Signed-off-by: Martin Storsjö <martin@martin.st>
This was missed in e1eb0fc960, when ff_interleaved_peek was
changed to include const during the evolution of the patch.
Signed-off-by: Martin Storsjö <martin@martin.st>
As long as caller only writes packets using av_interleaved_write_frame
with no manual flushing, this should allow us to always have accurate
durations at the end of fragments, since there should be at least
one queued packet in each stream (except for the stream where the
current packet is being written, but if the muxer itself does the
cutting of fragments, it also has info about the next packet for that
stream).
Signed-off-by: Martin Storsjö <martin@martin.st>
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>
* commit '71d3305c2711d4f6ec8b92db09ff64cf4e19a58e':
h264_parse: make sure the ref count is zeroed on all failure paths
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'a6e27f7add2698fdd89911632b570c3d0c3f2aaa':
h264: factor out parsing the reference count into a separate file
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '8d0cc8ca97678f4ca87948ebabcbaab5a4f4c1f6':
h264_parser: switch to h2645_parse for NAL unescaping
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Some streams contain an additional AnnexB NAL inside the mp4/nalff NALU.
This commonly occurs in interlaced streams where both fields are packed
into the same MP4 NAL with an AnnexB startcode in between.
Port handling of this format from the previous h264 nal handling.
Fixes trac #5529
Use the newly created vlc.h directly instead of including get_bits when needed.
The VLC and RL_VLC_ELEM structures are independent from the bitreader.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
1. no longer use the register names directly and optimized code format
2. to be compatible with O32, specify type of address variable with mips_reg and handle the address variable with PTR_ operator
3. optimize some unaligned loads and stores
4. use uld and mtc1 to workaround cpu 3A2000 gslwlc1 bug (gslwlc1 instruction extension bug in O32 ABI)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Use it to get stream duration, sample rate, channel count and initial padding
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
Avoids unexpected occurance and dependency on NaN behavior and divisions by 0
Testcase: fate-lavf-fate-avi_cram
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Allows emulation to work when dst is equal to src2 as long as the
instruction is commutative, e.g. `addps m0, m1, m0`.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
The yasm/nasm preprocessor only checks the first token, which means that
parameters such as `dword [rax]` are treated as identifiers, which is
generally not what we want.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Those instructions are not commutative since they only change the first
element in the vector and leave the rest unmodified.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
This fixes the sum of the integer coefficients ending up summing to a value
larger than the value representing unity.
This issue occurs with qN0.dts when converting to stereo
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Previously a partial log message without newline was printed in case of
loglevel=warning.
Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit 'f3ed484953b81856e40239d2410058a96188b2be':
h264_mp4toannexb_bsf: do not fail on annex B extradata
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '0abb07bad7026a945a31ba4047e6583c8b3fa3da':
movenc: Update a comment to reflect how the code actually behaves
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is purposely skipped because it doesn't work very well
with what our img2enc.c supports.
* commit '79fdbfdb3e50f3f906903e027714ee04c1a00e89':
img2enc: Refactor the atomic renaming code
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '06edef3d5e072ef3c4face9ce946d2d9c36cc477':
Generate the lists of enabled protocols/bsfs from configure.
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Fixes the following warning / error:
libavcodec/libutvideoenc.cpp:281:1: warning: narrowing conversion of ‘3221258240u’ from ‘unsigned int’ to ‘int’ inside { } is ill-formed in C++11 [-Wnarrowing]
Fixes ticket #5542.
The loops are guaranteed to be at least multiples of 8, so this
unrolling is safe but allows exploiting execution ports.
For int32 version: 68 -> 58c.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '5e1a3ea3ba7bb0c71d931e93e60fb75f51b0cc1a':
lavc: move the vaapi encoders further down in the list of codecs
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
These are all trivial to merge.
* commit '92fdea37477b5a2d1329e5ef0773e24473fa8f12':
vaapi_h265: Add -qp option, use it to replace use of -global_quality
vaapi_h265: Add constant-bitrate encode support
vaapi_h264: Add encode quality option (for quality-speed tradeoff)
vaapi_h264: Add -qp option, use it to replace use of -global_quality
vaapi_encode: Add support for codec-local options
vaapi_h264: Add constant-bitrate encode support
vaapi_encode: Refactor slightly to allow easier setting of global options
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '18019f8cb9663dd1032c65aa453eaec18d641905':
FATE: add an H.264 test with unescaped extradata
FATE: add an H.264 test with invalid reference lists
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '9d4d9be538faa537440fff37d3b7ecf322911a55':
libavcodec: Document that encoders may use the framerate field in AVCodecContext
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '1bb56abb9b37bd208a66164339c92cad59b1087b':
omx: Add support for zerocopy input of frames
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'f1cd9b03f3fa875eb5e394281b4b688cec611658':
omx: Add support for broadcom OMX on raspberry pi
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'e8919ec486a5559fdcf366e347be0656d904a87f':
libavcodec: Add H264/MPEG4 encoders based on OpenMAX IL
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'd12b5b2f135aade4099f4b26b0fe678656158c13':
build: Split test programs off into separate files
Some conversions done by: James Almer <jamrial@gmail.com>
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
When feeding input RTP packets to the depacketizer via custom IO,
it needs to pick the right stream using the payload type for
RTP packets, and using the SSRC for RTCP packets. If the first
packet is an RTCP packet, we don't (currently) know the SSRC
yet and thus can't pick the right RTP depacketizer to handle it.
By parsing the SSRC attribute in the SDP, we can map initial
RTCP packets to the right stream.
Signed-off-by: Martin Storsjö <martin@martin.st>
It doesn't matter what the actual reason for not returning
an AVPacket was - if we didn't return any packet and we have
the next one queued, parse it immediately. (rtp_parse_queued_packet
always consumes a queued packet if one exists, so there's no risk
for infinite loops.)
Signed-off-by: Martin Storsjö <martin@martin.st>
Leaking this private structure opens up the possibility that it may
be re-used when parsing later packets in the stream. This is
problematic if the later packets are not the same codec type (e.g.
private allocated during Vorbis parsing, but later packets are Opus
and the private is assumed to be the oggopus_private type in
opus_header()).
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
There are still a couple of deprecated calls that I’m not sure what to do with.
They are both related to some logic around AVCodecContext.coded_frame.
I couldn’t find anywhere that really documented what that was, or where it was intended to move to.
I left the warnings on.
Reviewed-by: Deti Fliegl <deti@fliegl.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Larger values would imply file durations of astronomic proportions and cause
overflows
Fixes integer overflow
Fixes: usan_int64_overflow
Found-by: Thomas Guilbert <tguilbert@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
We can only remove the logo if it is inside the picture. We need at
least one pixel around the logo area for interpolation.
Fixes ticket #5527 (Delogo crash with x=0 and/or y=0).
Signed-off-by: Jean Delvare <jdelvare@suse.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Also check return value of av_frame_copy() in passthrough mode, so that
if a copy fails (as it did here, because bitdepth didn't match), the filter
doesn't return success, which would mean sending an uninitialized framebuffer
further down the filtergraph.
This tests automatic insertion of the vp9_superframe BSF as well as
ensuring that the colorspace properties in the video header can be
modified when remuxing (-c:v copy).
I have no idea why the first hunk uses ost->enc_ctx, because as far as
I understand, that is never used in case of -c:v copy, but this code
block is only entered if encoding_needed=0, which means stream_copy=1.
My point being: review from someone that knows this really well would
be appreciated.
Widen the values from limited to full range and use BT.709 where it
should be used according to the video resolution:
SD is BT.601, HD is BT.709
Default to BT.709 due to most observed HDMV content being HD.
BT.709 coefficients were gathered from the first two parts of BT.709
to BT.2020 conversion guide in ARIB STD-B62 (Pt. 1, Chapter 6.2.2).
They were additionally confirmed by manually calculating values.
Update print mode output header line format to be more consistent with
other log output of FFmpeg. The printf-modifiers have been inspired by
the showinfo filter.
Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This allows e.g. to correlate signalstats metadata to time position
without having to find out the filter chain timebase first.
Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is a no-op.
* commit '4c6836db0f300d2c0401c6a1927a95c3258cc1ae':
nvenc_h264: Fix name of private AVClass
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'e3453fd44480d903338c663238bf280215dd9a07':
matroska: Write the field order information
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We cherry picked it earlier.
* commit 'b3051a460cf02a5b86ff0d1e14abba23ea55ff6d':
vaapi_h264: Fix bit offset of slice data.
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '44f05f15d4a34ef2f0d62259e5d5b43371bc0954':
build: Do not check the vaapi_encode.h header if VAAPI is not enabled
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'bd016dbf23e8e7dc34ff2696912575f7620cec0d':
Mark tables used only within their files as static
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
The problem is that with particularly complex images and especially at
high bit depths and 5-level transforms the coefficients would overflow,
causing huge artifacts to appear. This was discovered thanks to the fate
tests, which will have to be redone as this fixes a multitude of
problems and increases PSNR.
There is a slight performance drop associated with this change, making
the encoder slower by 1.15 times, however this is necessary in order to
avoid undefined behavior and overflows.
It would be worth to template the transforms to keep the performance for
8 bit images as 32 bit coefficients are unnecessary for that case, but
the primary use of the encoder is to encode video at 10 bits.
Reviewed-by: Christophe Gisquet <christophe.gisquet@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Commit ca2f19b9cc modified the meaning of
H264SliceContext.gb: it is now initialised at the start of the NAL unit
header, rather than at the start of the slice header. The VAAPI slice
decoder uses the offset after parsing to determine the offset of the
slice data in the bitstream, so with the changed meaning we no longer
need to add the extra byte to account for the NAL unit header because
it is now included directly.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Also temporary enable the test so we get updated fate failure statistics
Note, this does not work on all platforms, it fails on MIPS
and ml archives indicate it failed on x86 openbsd with some compilers as well
Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The unique user so far is wmalossless 24bits. The few samples tested show an
order of 8, so more unrolling or an avx2 version do not make sense.
Timings: 68 -> 49 cycles
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '9fa888c02801fff2e8817c24068f5296bbe60000':
intrax8: Keep a reference to the decoder blocks
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'c2084ffcbfc11d1b6ed3a4a0df9cafd56fbb896f':
intrax8: Use the generic horizband function
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This ports the fix from 033a533 to the new parser module in prepartion
of using it for the h264 decoder.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
When only one sublayer is present, no information is coded. Only when at least two
are present, all 8 sublayers are written.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Replace av_copy_packet and deprecated av_dup_packet by
creating reference using av_packet_ref.
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
TeeSlave.bsfs is array of pointers to AVBitStreamFilterContext,
so element size should be really size of a pointer, not size
of TeeSlave structure.
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
The declarations that this comment referred to were removed
in 2439f2ca8 - there is no unbuffered IO in this header now.
Signed-off-by: Martin Storsjö <martin@martin.st>
It is impossible to pass "aspect" parameter to encoder from ffmpeg CLI
because option from lavc/options_table.h is eclipsed by option with same
name in ffmpeg_opt.c, which has different meaning (DAR, not SAR).
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The slice prefix is 0 in the reference encoder and the decoder ignores it.
Writing 0 there seems like the best temporary solution.
The padding could have contained uninitialized data, but reference VC2
encoders put 0xFF there, hence the memset value.
Overall this allows producing bistreams with no random data for use by fate.
Add frames_before and frames_after as hints that there will be frames before
or after the frames produced in this session. This may help with
concatenation issues like bit rate spikes.
Signed-off-by: Rick Kern <kernrj@gmail.com>
Handle AV_PIX_FMT_VIDEOTOOLBOX.
This results in better energy usage and faster encoding, especially on iOS.
When the buffer comes from the media server, no memcpy's are needed.
Signed-off-by: Rick Kern <kernrj@gmail.com>
reverts one hunk from 7966ddfc0b
The new code from 7966ddfc0b only covers extradata based SPS
Fixes: ffplay -ss 13 58af5798-fa2c-42a2-997d-dc8e49de2d8a.flv
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit 'a7829a2a3f8e6ec0b9f2673c11f56916800aeb33':
h264: reimplement 3aa661ec5 in a more explicit way
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'add1467e5e447b79e8743a0b05c54dcf58c61dfe':
svq3: drop the build dependency on the h264 decoder
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'ea6ab02a174bcc11f3eaa1b840c9a4c895968690':
svq3: move the frame num variables to the SVQ3Context
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This is done by actually handling the "prev_values" in the cascaded LMS data
as if it were int16_t, thus requiring switching at various locations the
computations.
This didn't actually check if sync word was found and always errored out
with "-err_detect explode" option enabled.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
16bits samples with CDLMS orders of 8 are currently unsupported, but have never
been encountered before.
However, 8 seems to be the most frequent, if not the only order used for 24bits.
In that case, the dsp functions are fine with handling order that are multiples
of 8, so silence the warning.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
DCA core decoder no longer uses fixed tables for channel reordering.
Move them into private encoder header (and drop ff_dca_ prefix).
Signed-off-by: James Almer <jamrial@gmail.com>
We still only support one single layer though, but this allows
receiving streams that have this structure present even for
single layer streams.
Signed-off-by: Martin Storsjö <martin@martin.st>
This uses a new MMAL feature, which limits the number of extra frames
that can be buffered within the decoder. VIDEO_MAX_NUM_CALLBACKS can
be defined as positive or negative number. Positive numbers are
absolute, and can lead to deadlocks if the user underestimates the
number of required buffers. Negative numbers specify the number of extra
buffers, e.g. -1 means no extra buffer, (-1-N) means N extra buffers.
Set a gratuitous default of -11 (N=10). This is much lower than the
firmware default, which appears to be 96.
This is backwards compatible, but needs a symbol only present in newer
firmware headers. (It's an enum item, so it requires a check in
configure.)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Slight simplification. The result is the same. Also, change the
wording of the message as requested in patch review.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Fixes apparent mmal_port_disable() freezes in ffmmal_stop_decoder() when
calling ffmmal_decode() with flush semantics a large number of times in
a row.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
The assert in ffmmal_stop_decoder() could trigger sometimes. The
packets_buffered counter was indeed not correctly maintained, and
packets were not subtracted from it if they were still in the waiting
queue.
For some reason, this happened especially with VC-1.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Register mmaldec as mpeg2 decoder. Supporting mpeg2 in mmaldec is just a
matter of setting the correct MMAL_ENCODING on the input port. To ease the
addition of further supported mmal codecs a macro is introduced to generate
the decoder and decoder class structs.
Signed-off-by: Julian Scheel <julian@jusst.de>
Signed-off-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
There is no avpriv_atomic_get, instead avpriv_atomic_int_get is to be used for
integers. This fixes building mmaldec.
Signed-off-by: Julian Scheel <julian@jusst.de>
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
The deprecated avcodec_decode_video2() and avcodec_decode_audio4()
functions called av_packet_split_side_data() on the input packets. This
is required for packets produced by libavformat with the
AVFMT_FLAG_KEEP_SIDE_DATA flag unset (which is unfortunately the
default).
The new API didn't do this yet, although it didn't matter as no decoder
supports the new API yet. The emulation layer for the old API calls the
old API functions, which took care of the splitting. Add this code to
the new API codec entrypoints too, because we shouldn't send essentially
corrupted data to decoders.
Only one DLL for each module must be present on OS/2: SLIBNAME_WITH_MAJOR
(the same as on Windows). Creating other DLLs makes no sense as they can't
be used.
Signed-off-by: Dave Yeo <daveryeo@telus.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
As the nvEncodeApi.h header is now MIT licensed, this can be dropped.
The loaded CUDA and NVENC libraries are part of the nvidia driver, and
thus count as system libraries.
The new function behaves the same as av_log_format_line, but also forwards
the return value from the underlying snprintf call. This will allow
callers to accurately determine the size requirements for the line buffer.
Signed-off-by: Andreas Weis <github@ghulbus-inc.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '89a13998a1b5074411dff5a461dce3837057b0b8':
svq3: rip out the svq3-relevant parts of pred_motion() out of h264
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '527bf5f7c6890664b0f1dccd42397f4d204659fe':
svq3: move the pred mode variables to SVQ3Context
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'e481458bc308ee838deaeacac51929514762e7a7':
h264: factor out pred weight table parsing into a separate file
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '90ed6c5cf7f236bc9efb47c97b40358c666d1386':
h2645_parse: compute the actual data length, without trailing paddding
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '8229eff4b7a98ae5d85bb75f3bb072781b4a8ebe':
h2645_parse: add a function for uninitializing the packet
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Functionality used before didn't widen the values from limited to
full range. Additionally, now the decoder uses BT.709 where it
should be used according to the video resolution.
Default for not yet set colorimetry is BT.709 due to most observed
HDMV content being HD.
BT.709 coefficients were gathered from the first two parts of BT.709
to BT.2020 conversion guide in ARIB STD-B62 (Pt. 1, Chapter 6.2.2).
They were additionally confirmed by manually calculating values.
Fixes#4637
* commit 'cdb1665f70def544ddab3e3ed3763ef99c8b3873':
aarch64: Make transpose_4x4H do a regular transpose
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '159323897f545e7405fb9db234e0ba123e174376':
intrax8: Add a local BlockDSPContext and initialize it
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '8072345e9f86d88fbc4a15c17cb03f1e4701c9a5':
intrax8: Keep a reference to the GetBitContext reader
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '65f14128c4bcf8fcd9d3ba1e20b7a22057c9cfb0':
intrax8: Use a constant buffer instead of a ScratchpadContext
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'eaeba6f241e0de0e797be10f8fda967ef8489e64':
intrax8: Pass the output frame to the decoding function
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '577393321c389ad2973bec6168a8045c94a9e099':
intrax8: Carry over the loopfilter value in ff_intrax8_decode_picture
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '68127e1bf8037a6e0acd6401cc8c5da950e3fa0a':
intrax8: Keep a reference to the context idctdsp
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '65127450add50c3bca307edc0517d2e8382717a0':
intrax8: Make x8_init_block_index not use mpegvideo fields
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'a7da517f6a5c472f46f67dd33bb6b95ccc919923':
h264data: Move all data tables from a header to a .c file
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
In such a case, decode the MBs in parallel without the loop filter, then
execute the filter serially.
The ref2frm array was previously moved to H264SliceContext. That was
incorrect, since it applies to all the slices and should properly be in
H264Context (it did not actually break decoding, since this distinction
only becomes relevant with slice threading and deblocking_filter=1,
which was not implemented before this commit). The ref2frm array is thus
moved back to H264Context.
It is always unconditionally initialized in decode_postinit() and then
immediately used in one place further below. All the other places where
it is accessed are just useless fluff.
Make the SPS/PPS parsing independent of the H264Context, to allow
decoupling the parser from the decoder. The change is modelled after the
one done earlier for HEVC.
Move the dequant buffers to the PPS to avoid complex checks whether they
changed and an expensive copy for frame threads.
Adds per slave option 'onfail' to the tee muxer allowing an output to
fail, so other slave outputs can continue.
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
In open_slave failure can happen before bsfs array is initialized,
close_slave must check that bsfs is not NULL before accessing
tee_slave->bsfs[i] element.
Slave muxer expects write_trailer to be called if it's
write_header suceeded (so resources allocated in write_header
are freed). Therefore if failure happens after successfull
write_header call, we must ensure that write_trailer of
that particular slave is called.
Some cleanups are made by Marton Balint.
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is a no-op. Ivan Uskov is going to port it for us.
* commit 'e3dfef8e3c85a64dbe6388117303f5819fa3c6a2':
qsvdec_h2645: switch to the new BSF API
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'a638e9184d63e57e67901f34afe919fd56fd3ac4':
vf_fade: make sure the slice end is always in the frame
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'b298b36fc008ad94a24929fe770c8189d96bcac4':
fate: Only run SRTP test if SRTP code is enabled
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '3ee2ec5ec1e39a438f89302d949c93a1b5d365a2':
unix: Use rw_timeout for setting the connect timeout
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '136c3438bbdb56a5d2f1f0f486f180641dc6dda0':
tcp: Use rw_timeout for setting the connect/listen timeouts
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Until now, the decoding API was restricted to outputting 0 or 1 frames
per input packet. It also enforces a somewhat rigid dataflow in general.
This new API seeks to relax these restrictions by decoupling input and
output. Instead of doing a single call on each decode step, which may
consume the packet and may produce output, the new API requires the user
to send input first, and then ask for output.
For now, there are no codecs supporting this API. The API can work with
codecs using the old API, and most code added here is to make them
interoperate. The reverse is not possible, although for audio it might.
From Libav commit 05f66706d1.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Fixes out of array read
Fixes: mozilla bug 1266129
Found-by: Tyson Smith
Tested-by: Tyson Smith
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The yasm/nasm preprocessor only checks the first token, which means that
parameters such as `dword [rax]` are treated as identifiers, which is
generally not what we want.
This codepath isn't quite as bad as it used to sound, if fragments
are cut automatically at video packets.
Signed-off-by: Martin Storsjö <martin@martin.st>
Modifying global header extradata in encode_frame is an API violation
and only happens to work currently because mov writes its header
at the end of the file.
Heavily based off of a patch from 2012 by Nicolas George.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is a no-op.
* commit '8833f1508b7b6afc3172a8017934a7a54428c686':
opt: Add const to av_opt_next
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '933dec0e29ec4d2cb83474279a6c52d62fdb7310':
file: Add an option for following a file that is being written
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
The h264/hevc Annex E colour primaries table says that AVCOL_SPC_SMPTE170M is
similar than AVCOL_SPC_SMPTE240M. These two values are not similar than
AVCOL_SPC_BT470BG.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
* commit 'd44f3e4059506a182f59218b1e967d42b01e097c':
avio: Apply avoptions on the URLContext itself as well
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. wm4 is working to get these into ffmpeg
proper, with ffmpeg versions of the patches.
* commit '8bc4accc37ab047d2fd85d672c577b39dfc918e1':
lavf: use new decode API
avconv: use new encode API
avconv: use new decode API
lavc: introduce a new decoding/encoding API with decoupled input/output
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
These commits are no-ops. Not going to merge these since our opt
tests are more complex, and have several blocks with different
options.
* commit '0d2fcdb1c5c9e844c232e5429130727121990d0e':
opt-test: Merge struct declaration and initialization
opt-test: Move some variable declarations to avoid block braces
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Add number of input and output frames to possible variables.
Add option eval to reevaluate coordinate expressions during
initialization or for every frame.
This commit is a no-op.
* commit 'a84713e70d06238100cb0f867ad6031c272054b0':
parseutils-test: Move some variable declarations to avoid block braces
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '65a802401c6cc136576bb2e613c0577cbf622aa8':
build: Add component for the SRTP common code
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '30e9ef21cea09fa5e880e979c9f5b39edccbb6f4':
timefilter-test: Only compile timefilter-test if JACK is enabled
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '48362ceadeb2eb5286ae94ef7f9542d990ff7ec7':
doc: Update paths to match new examples location
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '42244ce07a1f4f5108ae86d50fe72db785d483ed':
intrax8: Move a comment to the place it corresponds
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '709c0f79d8032fcf733bfe58e79ca7ff0858c8bc':
nuv: Use the correct context for av_image_check_size
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We will do this when we convert ffmpeg.c
* commit '4426540f0c3ee516662f79d0a6ab5b95503b6611':
avconv: switch to the new BSF API
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Sometimes video fails to decode if H.264 configuration changes mid stream.
The reason is that configuration parser assumes that nal_ref_idc is equal to 11b
while actually some codecs but 01b there. The H.264 spec is somewhat
vague about this but it looks like it allows any non-zero nal_ref_idc for sps/pps.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Add a filter to scan the top lines of video frames for vertical interval
timecode (VITC) information and attach it as metadata keys.
Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
Right now they are the first encoders for those codecs in the list, so
they are selected when the caller requests a codec by id.
Since they require special treatment, they should not be selected by
default if there are other encoders (e.g. libx264/5) available.
The bits_per_raw_sample represents the number of bits of precision per sample.
The field is added at the logical place, not at the end as the code was just
recently added
This fixes the regression about losing the audio sample precision information
The change in the fate test checksum un-does the change from the merge
Previous version reviewed by: wm4 <nfxjfg@googlemail.com>
Previous version reviewed by: Dominik 'Rathann' Mierzejewski <dominik@greysector.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is a no-op.
* commit 'a2d1922bde8db2cdac95051918fe81ae18c0376b':
takdec: ensure chan2 is a valid channel index
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '1098f5c0495c61a98d4ff6b8e24c17974d4bace5':
svq3: Use a separate buffer for decoding the slices
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Also, make every addition except for sidedata part of version 1 instead of the
new version 2.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Closing single slave operation is pulled out into separate
function close_slave(TeeSlave*).
Both close_slave and close_slaves function are moved before
open_slave function.
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
Previously, the bug was that if -1 < start_time < 0, the reported
"start" time would lose the negative-sign.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is a no-op.
* commit '2f4a1bb9bfb29112711ba904e1dc0dd58e24f361':
cmdutils: update copyright year to 2016
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '8b4b1c1eea9daa4e2003aa0935e73f56aab8102d':
matroska: Support V_QUICKTIME as written in the specification
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '7e01d48cfd168c3dfc663f03a3b6a98e0ecba328':
mov: Check the entries value when parsing dref boxes
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '328e9a15c568843580ff3ff490748d545f16def8':
buffer: drop a reference to a non-existing function from the docs
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. Ours are not identical / refactorable.
* commit '39a2d3288e82e4e576c03efb32179ef5a19fff50':
mpegvideo: Refactor emulated_edge_mc calls
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We solved it already.
* commit '7d4a1ff344cbf969ac648642a0fd8484fd5b8637':
mpegvideo: Fix undefined negative shifts in ff_init_block_index
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
[16:15] <@Daemon404> wm4, ping
[16:15] <@Daemon404> whats up with "avconv: remove sub-frame warning"
[16:15] <@Daemon404> it's in libav but not ours?
[16:15] <@Daemon404> mailing list bikeshedding?
[16:15] <@wm4> it's in ffmpeg.c too
[16:16] <@wm4> you can probably skip it for now
[16:16] <@wm4> michaelni was against removing it this way
[16:17] <@Daemon404> ok
* commit '0b6e5d6b32b91c6da79cd919a3c2ede9d682f838':
avconv: remove sub-frame warning
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '84b5dcf27589b32713a4ba0723a129156b4d2408':
asfenc: remove an unused variable
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '11843ededacd0157aea642771837557549b5b417':
fate: Add separate target for all indeo3 tests
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'b39ab8549a53e2fc7978ab9db50e5c2ba6a6602d':
fate: Add test for indeo2 with delta frames
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. They rewrote fixes we already did,
to the character.
* commit 'f8c34f4b8d62afad3f63cf3d9617d73735bef8c1':
indeo2: Fix banding artefacts
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. Ours is already formatted the same.
* commit 'd4066a702407352a0648af882c34ea81a404fa2b':
indeo2data: K&R formatting cosmetics
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. The value of the refactoring is dubious and
merging it is error prone. If someone feels strongly about merging it,
let me know, and I will.
* commit '1a094af638281295bf087945923d258b5acd1ab1':
fft: Split MDCT bits off from FFT
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
It is practical to de-noise only on luma while keeping chroma unchanged.
However, libavfilter/vf_owdenoise.c always do the Wavelet transform/retransform on all 3 channels without check whether chroma_strength is 0.
Thus I make this patch. De-noise on Y only for yuv420 is now 1.5 times faster.
Signed-off-by: Yuuki Galaxy <galaxy001@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is a no-op.
* commit '4d13bcceb9a1820f8e9b2c89e00816d3db41b716':
sdp: fix opus sprop-stereo fmtp syntax
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This can only be used if the input data happens to be laid out
exactly correctly.
This might not be supported on all encoders, so only enable it
with an option, but enable it automatically on raspberry pi,
where it is known to be supported.
Signed-off-by: Martin Storsjö <martin@martin.st>
The raspberry pi uses the alternative API/ABI for OMX; this makes
such builds incompatible with all the normal OpenMAX implementations.
Since this can't easily be detected at configure time (one can
build for raspberry pi's OMX just fine using the generic, pristine
Khronos OpenMAX IL headers, no need for their own extensions),
require a separate configure switch for it instead.
The broadcom host library can't be unloaded once loaded and started;
the deinit function that it provides is a no-op, and after started,
it has got background threads running, so dlclosing it makes it
crash.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '168a443d43b10ef6a3545d64b2f8bc90144ce4b7':
avprobe: print information from the codec descriptor
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'e7188a1a84817b8d4337340c21c552ad0b6cb2fd':
avprobe: remove a pointless condition and a dead branch
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit 'dc4983d78af2a666461654067d2e5d45b835358a':
APIchanges: add missing hashes and dates
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '3e8fd93b6ab219221e17fa2b6243cc72cf2d69dc':
lavf: add a missing bump and APIchanges for the codecpar switch
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We already did this.
* commit '01f0e6a0c9270f1d5bef08459a6f167cf55e0596':
vc1dec: Fix leak on error for array allocations
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'fa55addd23c2f168163175aee17adb125c2c0710':
img2: Drop av_ prefix for a static function
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit 'd6e49096c0c3c10ffb176761b0da150c93bedbf6':
idct: Only build prores IDCT if ProRes decoder is enabled
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '3c53627ac17fc6bdea5029be57da1e03b32d265d':
qsvdec: store the sync point in heap memory
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'a1335149fd610b16459d9281b611282cac51c950':
qsvenc: store the sync point in heap memory
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We want to do this ourselves since avplay and
ffplay differ quite a bit.
* commit 'c23152a90371bfe971b063781ef4e7d9d5ef9d70':
avplay: convert do codecpar
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We did this already in 9e0d1c00b5.
* commit '0705f5960c9d272cef1309c090000865b991c9c7':
avplay: do not use AVStream.codec for decoding
Merged-by: Derek Buitenhuis <derek.butienhuis@gmail.com>
This commit is a no-op. We want to do this ourselves, since avconv and ffmpeg
differ quite a bit.
* commit '15e84ed3f141c586e8cb78ed58365cf5a511108a':
avconv: convert to codecpar
Merged-by: Derek Buitenhuis <derek.butienhuis@gmail.com>
This commit is a no-op. We already moved it here.
* commit '5b9cdf8cba114c41239bf0f9f5e0ccb6977d1c8d':
avconv: switch opening decoders and encoders
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Note that support of very big block sizes is not currently supported at all due
too flawed logic in decoder.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
y_offset and y_coeff being successive 32-bit integers, they are packed
into 8 bytes instead of 2x8 bytes.
See https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html
> iOS diverges from Procedure Call Standard for the ARM 64-bit
> Architecture in several ways
[...]
> In the generic procedure call standard, all function arguments passed
> on the stack consume slots in multiples of 8 bytes. In iOS, this
> requirement is dropped, and values consume only the space required.
[...]
> Padding is still inserted on the stack to satisfy arguments’ alignment
> requirements.
Show example which draws text at a random position, and switches positions every 30 seconds
Signed-off-by: Mulvya <mulvya@gmail.com>
Signed-off-by: Lou Logan <lou@lrcd.com>
Restore alphabetical order in lists, break overly long lines, do some
prettyprinting, add some explanatory section comments, group parts
together that belong together logically.
Move wi.clipping computation outside of psy_lame_window, LFE
channels don't even call that, and make the LFE path also
initialize window_type[1] which is needed by analyze_channel
Modifying global header extradata in encode_frame is an API violation
and only happens to work currently because mov writes its header
at the end of the file.
Heavily based off of a patch from 2012.
Original-by: Nicolas George <george@nsup.org>
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Insertion of silence was a bit broken since
df34b70098 because the info whether or not the
source buffer supposed to be silence must be kept between callbacks. Failing to
do so causes rogue samples from the last buffer to be presented, I guess even a
crash can occur under some circumstances.
This patch uses a NULL audio_buf to keep the silence state across audio
callbacks.
Reviewed-by: Lukasz Marek <lukasz.m.luki2 at gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
The first byte contains compression level together with keyframe status.
When a frame is not interpreted correctly, its data is summed to the
reference, and would degrade over time, producing an incorrect result.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
The current sample comes from an older version of the codec, which
supports a single output mode, so rename it accordingly.
Add tests for the new pixel formats.
It will be used by text subtitle demuxers to construct format instructions
straight into extradata. They all currently a similar function that accepts
an AVCodecContext instead.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
WAV is not a NOHEADER format, and thus should not be changing
stream codec IDs and probing in read_packet.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This fixes issues if the permutation changes, as quantizations tables would need to be reread
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Currently, if the movie source filter is used and a seek_point is
specified on a file that has a negative start time, ffmpeg will fail.
An easy way to reproduce this is as follows:
$ ffmpeg -vsync passthrough -filter_complex 'color=d=10,setpts=PTS-1/TB' test.mp4
$ ffmpeg -filter_complex 'movie=filename=test.mp4:seek_point=2' -f null -
The problem is caused by checking for int64_t overflow the wrong way.
In general, to check whether a + b overflows, it is not enough to do:
a > INT64_MAX - b
because b might be negative; the correct way is:
b > 0 && > a > INT64_MAX - b
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The AVCodecContext is only used for logging, so instead take any valid log context.
This allows reusing the exif functions more easily in avformat.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
CMVideoFormatDescriptionGetH264ParameterSetAtIndex() fails on some
hardware/OS versions when retrieving the parameter set count alone.
Signed-off-by: Rick Kern <kernrj@gmail.com>
Signed-off-by: wm4 <nfxjfg@googlemail.com>
Fixes crash in #5352. VTCompressionSessionInvalidate() crashes if the
internal encoder hasn't completed, but hasn't experienced an error.
The function call isn't needed since the encoder is invalidated when
the reference count reaches 0 anyway.
Signed-off-by: Rick Kern <kernrj@gmail.com>
Signed-off-by: wm4 <nfxjfg@googlemail.com>
lavc/utils already rescales avpkt->pts to sub->pts in AV_TIME_BASE_Q
before calling the decode callback. This prevents from rescaling again
into the decoder, and avoid the use of avctx->time_base which will
disappear in the incoming codecpar merge.
This commit also replaces the use of "20 centisecond" (ass time base)
with "200 ms".
Commit ca2f19b9cc modified the meaning of
H264SliceContext.gb: it is now initialised at the start of the NAL unit
header, rather than at the start of the slice header. The VAAPI slice
decoder uses the offset after parsing to determine the offset of the
slice data in the bitstream, so with the changed meaning we no longer
need to add the extra byte to account for the NAL unit header because
it is now included directly.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Change log level from warning to debug: the E-AC-3 "core"
substream can be successfully decoded without the additional
and dependent substreams, and their presence is already
indicated via avpriv_request_sample in ff_eac3_parse_header.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
These errors neither prevent nor stop successful decoding
of the E-AC-3 stream's "core", causing avpriv_request_sample
to be called for every single frame in the bitstream.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This is added in 10.11, so we add a #define when building against older SDKs.
The decoder actually supports 7.1-channel eac3, but since the parser only
reports 6 channels, we end up decoding the 5.1 downmix (same as the internal
decoder) for now.
- ADTS-formatted AAC didn't work
- Channel layouts were never exported
- Channel mappings were incorrect beyond stereo
- Channel counts weren't updated after packets were decoded
- Timestamps were exported incorrectly
The build failure here is caused by the enum value not being defined, but
as long as we're on a newer SDK that has it, it's safe to use it even
when our deployment target is older. Setting the property will error, but
we're not failing on errors there.
- size variables were used in a confusing way
- incorrect size var use led to channel layouts not being set properly
- channel layouts were incorrectly mapped for >2-channel AAC
- bitrates not accepted by the encoder were discarded instead of being clamped
- some minor style/indentation fixes
* commit 'a8068346e48e123f8d3bdf4d64464d81e53e5fc7':
lavc: add a variant of av_get_audio_frame_duration working with AVCodecParameters
Fixes from jamrial incorporated.
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '998e1b8f521b73e1ed3a13caaabcf79eb401cf0d':
lavc: add codec parameters API
Fixes added in:
- bit_rate has been made int64_t to match.
- profile and level are properly initialize.
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
There are no known users of these functions within debian
It should be thus possible to remove these functions without recommandition of a
replacement
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Previously, with JACK installed, the configure script would enable the
JACK indev; this broke on OS X due to an incomplete pthreads
implementation. Add some simple macros to map libdispatch to pthreads
on OS X.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
The relocation hack broke debugging on mingw-w64 when using gdb. This
makes the reloc hack dependent on --disable-debug so it's still enabled
for release builds.
This is simply an immediate fix for the issue of broken debugging, we
should probably still look at the possibility of reverting it outright
if it proves to be more trouble than it's worth. For now keeping it
enabled for release builds is a reasonable trade off.
Signed-off-by: Alex Smith <theryuu@warpsharp.info>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Clamp scalefactors by coef2minsf to avoid undefined behavior
caused by signed integer overflow. It also avoids clipping of
coefficients so it should avoid artifacts as well, on very
rare corner cases.
For video, frame_number tracks the number of frames sent to the encoder.
So it should be incremented when we submit a frame, not when we get a
packet back.
Seems like clang might be miscompiling it and causing a signed integer overflow,
making a FATE test fail.
Doesn't seem to affect performance, it only runs on the ESC codebook.
Reviewed-by: Claudio Freire <klaussfreire@gmail.com>
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Otherwise probing and stream analisys will report a correct coded size
but an empty visible size.
Approved by: kieran
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Instead of handling the problem inside NAL decoding code, add a higher
level wrapper function. This should be more robust against future
changes (and easier to read).
Previously, ff_h264_idct_add_neon (originally in the arm version) used
a non-regular transpose in order to be able to use more instructions
that deal with registers as 128 bit register pairs. The aarch64
translation doesn't do it to the same extent, but brought along the
same structure since it was a straight translation.
This reshuffles ff_h264_idct_add_neon, bringing it closer to
the C implementation, making the transpose_4x4H macro do a regular
transpose, usable for other algorithms as well.
Previously, the third and fourth output from transpose_4x4H were
swapped, and prior to cc29d96d5a, the same inputs as well. In
addition to just swapping the outputs, also renumber the intermediate
registers for better readability (making the register order match
transpose_4x8B).
This runs with the same number of cycles as before.
Signed-off-by: Martin Storsjö <martin@martin.st>
Note some tests need vsync drop to produce exact timestamps, these seem not to
need it. quite likely many more dont need it either, ive not checked beyond finding
one that needs it and the ones which have it removed
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The problem is that the argument 'q' is of the type uint8_t.
According to the JPEG standard, if 1 <= q <= 50, the scale factor
'S' should be 5000 / Q. Because the create_default_qtables() reuses
the variable 'q' to store the result of this calculation, for small
values of q < 19, q wil subsequently overflow and give wrong results
in the calculated quantization tables.
Instead, use a new variable 'S' (same name as in RFC2435) with the
proper range to store the result of the division.
Signed-off-by: Martin Storsjö <martin@martin.st>
These buffers are just a way to store frame pointers and be able to
modify them without touching the original ones.
The two dependent decoders (WMV2 and VC1) do not need special care for
these fields: the former does not seem to use the dest buffers, while
the latter reinits them every time to the current frame data buffers.
So only keep a local copy rather than the one from mpegvideo.
Original mail and my own followup on ffmpeg-user earlier today:
I have a device sending out a MJPEG/RTP stream on a low quality setting.
Decoding and displaying the video with libavformat results in a washed
out, low contrast, greyish image. Playing the same stream with VLC results
in proper color representation.
Screenshots for comparison:
http://zevv.nl/div/libav/shot-ffplay.jpghttp://zevv.nl/div/libav/shot-vlc.jpg
A pcap capture of a few seconds of video and SDP file for playing the
stream are available at
http://zevv.nl/div/libav/mjpeg.pcaphttp://zevv.nl/div/libav/mjpeg.sdp
I believe the problem might be in the calculation of the quantization
tables in the function create_default_qtables(), the attached patch
solves the issue for me.
The problem is that the argument 'q' is of the type uint8_t. According to the
JPEG standard, if 1 <= q <= 50, the scale factor 'S' should be 5000 / Q.
Because the create_default_qtables() reuses the variable 'q' to store the
result of this calculation, for small values of q < 19, q wil subsequently
overflow and give wrong results in the calculated quantization tables. The
patch below uses a new variable 'S' (same name as in RFC2435) with the proper
range to store the result of the division.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Apply the default value for timeout in code instead of via the
avoption, to allow distinguishing the default value from the user
not setting anything at all.
Signed-off-by: Martin Storsjö <martin@martin.st>
Since all URLContexts have the same AVOptions, such AVOptions
will be applied on the outermost context only and removed from the
dict, while they probably make sense on all contexts.
This makes sure that rw_timeout gets propagated to the innermost
URLContext (to make sure it gets passed to the tcp protocol, when
opening a http connection for instance).
Alternatively, such matching options would be kept in the dict
and only removed after the ffurl_connect call.
Signed-off-by: Martin Storsjö <martin@martin.st>
Using this requires setting the rw_timeout option to make it
terminate, alternatively using the interrupt callback (if used via
the API).
Signed-off-by: Martin Storsjö <martin@martin.st>
If set non-zero, this limits duration of the retry_transfer_wrapper()
loop, thus affecting ffurl_read*(), ffurl_write(). As soon as
one single byte is successfully received/transmitted, the timer
restarts.
This has further changes by Michael Niedermayer and Martin Storsjö.
Signed-off-by: Martin Storsjö <martin@martin.st>
All tests were in the main method which produces a long main. Now, each test
is in his own method.
I think this produces a more clear code and follows more with the main
priority of FFmpeg "simplicity and small code size"
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
No new reference samples are needed for this as the file already exists
for testing the bitstream filter
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Until now, the decoding API was restricted to outputting 0 or 1 frames
per input packet. It also enforces a somewhat rigid dataflow in general.
This new API seeks to relax these restrictions by decoupling input and
output. Instead of doing a single call on each decode step, which may
consume the packet and may produce output, the new API requires the user
to send input first, and then ask for output.
For now, there are no codecs supporting this API. The API can work with
codecs using the old API, and most code added here is to make them
interoperate. The reverse is not possible, although for audio it might.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
No idea why in commit 01ecb7172b the
checks were removed; this can lead to NULL pointer dereferences. This
effectively reverts that portion of the commit.
Reviewed-by: Benoit Fouet <benoit.fouet@free.fr>
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
The intrax8 decoding process does not imply any kind of error
resilience, and the only call present is more related to how mpegvideo
works rather than anything else.
Therefore have the parent decoders carry out er when actually needed.
* Change log level from error to debug
* Print report after the first decoded frame, not at the end of decoding
* Drop macro guard and use a context variable instead
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
The idea is to use ffmath.h for internal implementations of math functions.
Currently, it is used for variants of libm functions, but is by no means
limited to such things.
Note that this is not exported; use lavu/mathematics for such purposes.
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
- Check if av_display_rotation_get() gets the correct degrees
- Check if av_display_rotation_set() sets the correct matrix
- Check if av_display_matrix_flip() changes correct the matrix
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Until now, for formats which were in the spec but not in the encoder's
list of supported formats required the -strict -1 flag. This enables
support for all video formats which are specified, all the way from
QSIF525 to 8K.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
dv_frame_offset() is static and called only from dv_read_seek(), where
c->sys->frame_size is already used.
This simplifies the incoming codecpar merge where
avctx->{coded_width,coded_height,time_base} are not accessible anymore.
If chan2 is not smaller than the number of channels, it can cause
segmentation faults due to dereferencing a NULL pointer.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Needed for noStreams.wtv unless something else forces continued parsing (like looking for more than 1
frame in attachments)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Remove achroma filter, as same output can be done with lowpass filter
and multiple components with overlay display.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This is ~2x faster for y not an integer on Haswell+GCC, and should
generally be faster due to the fact that anyway powf essentially does
this under the hood. Made an inline function in lavu/internal.h for this
purpose.
Note that there are some accuracy differences, that should generally be
negligible. In particular, FATE still passes on this platform.
Results in ~ 7% speedup in aac encoding with -march=native, Haswell+GCC.
before:
ffmpeg -i sin.flac -acodec aac -y sin_new.aac 6.05s user 0.06s system 104% cpu 5.821 total
after:
ffmpeg -i sin.flac -acodec aac -y sin_new.aac 5.67s user 0.03s system 105% cpu 5.416 total
This is also faster than an alternative approach that pulls in powf, gets rid of
the crufty NaN checks and other special cases, exploits knowledge about the intervals, etc.
This of course does not exclude smarter approaches; just suggests that
there would need to be significant work on this front of lower utility than
searches for hotspots elsewhere.
Reviewed-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
In some cases this caused the slice size rounding to generate invalid
slice sizes and overwrite some slices.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
This zeroes the WebPAnimEncoderOptions.verbose field, silencing library info messages
printed to stderr.
Reviewed-by: James Zern <jzern@google.com>
Signed-off-by: James Almer <jamrial@gmail.com>
This reverts commit 9f9ed79d4c.
The hlsopts member was never set anywhere and always NULL, furthermore
the HLS demuxer needs to retrieve the proper options from the underlying
http protocol (cookies, user-agent, etc), so a dummy context won't help.
Instead, use the AVIOContext directly to access the options.
For example you can split a file, keeping a continuous timecode between
each segment:
ffmpeg -i src.mov -timecode 10:00:00:00 -vcodec copy -f segment \
-segment_time 2 -reset_timestamps 1 -increment_tc 1 target_%03d.mov
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
Check if the size is written the first 4 bytes and read the next 4
as fourcc candidate, fallback checking the initial for 4 bytes.
"The CodecPrivate contains all additional data that is stored in the
'stsd' (sample description) atom in the QuickTime file after the
mandatory video descriptor structure (starting with the size and FourCC
fields)"
CC: libav-stable@libav.org
Deleting a non-existing item should not invalidate existing entries returned
with av_dict_get.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Marton Balint <cus@passwd.hu>
This may improve the precision of the fixed point encoder/decoder for some
compilers and architectures.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Marton Balint <cus@passwd.hu>
Also added a TODO to change to a proper normality test in the future.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
Fill DTS if all packets have been read in avformat_find_stream_info, and still
has_decode_delay_been_guessed returns false.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Should fix xvid/cache on windows with --enable-shared
May be related to Ticket 4780
Tested-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The maximum number of bits int the prefix code for
p(0) is 4. By setting it as 3, we were missing the
last 0 bit.
This fixes bug #4715 present on the trac.
Signed-off-by: Umair Khan <omerjerk@gmail.com>
Reviewed-by: Thilo Borgmann <thilo.borgmann@mail.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Yields 2x improvement in function performance, and boosts aac encoding
speed by ~ 4% overall. Sample benchmark (Haswell+GCC under -march=native):
after:
ffmpeg -i sin.flac -acodec aac -y sin_new.aac 5.22s user 0.03s system 105% cpu 4.970 total
before:
ffmpeg -i sin.flac -acodec aac -y sin_new.aac 5.40s user 0.05s system 105% cpu 5.162 total
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
Trying to make heads and tails out of DTS 6.1 I can across this typo.
I also noticed that this wiki page is incorrect or misleading, the
channel order for 6.1 given does not match the source code. At the
least it should be clarified that the layout given does not apply to
DTS. https://trac.ffmpeg.org/wiki/AudioChannelManipulation
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This is safer, as a selected demuxer could still mean that it was auto-detected
by a user application
Reviewed-previously-by: Nicolas George <george@nsup.org>
Reviewed-previously-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Understanding the mips32r6 and mips64r6 ISAs in the configure script is
not enough. In order to have full support for MIPS R6 in FFmpeg we need
to be able to build it, and for that we need to make sure we don't use
incompatible assembler code which makes the build fail. Ifdefing the
offending code is sufficient to fix the problem.
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This ensures gcc does not create unnecessary
loads or stores and possibly even does not vectorize
the negation.
Speeds up mp3 to aac transcoding with default settings
by 10% when using "gcc (Debian 5.3.1-10) 5.3.1 20160224".
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
"Skipping 0 bytes of junk" is useless to the user, and essentially
indicates a NOP. At 0 bytes, this message is now pushed back to
the verbose log level.
Signed-off-by: Moritz Barsnick <barsnick@gmx.net>
The change of bps from 0 doesn't contain any info useful to the
user. This message is now at info log level only if the original
value is !=0, otherwise pushed back to debug log level. The
original value is displayed additionally.
Signed-off-by: Moritz Barsnick <barsnick@gmx.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Example found in the wild:
0:00:03:25.000
0:01:47:A legend is sung
0:01:50:Of when England was young
0:01:53:And knights|were brave and bold
0:01:59:The good king had died
Reported-by: wm4
If the original pix_fmt was >8 bit and not supported by the filter,
the filter system could choose a pix_fmt with different endianness
as input for extractplanes which broke the output because the output
always used the endianness of the original pix_fmt.
We cannot play multiple multicast streams with the same port at the
same time. This is because both rtp and rtcp port are opened in
read-write mode, so they will not bind to the multicast address. Try
to make rtp port as read-only by default to solve this bug.
Signed-off-by: Zhao Zhili <wantlamy@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This fixes a problem where ffmpeg would hang if there is already an open
data connection, and the server sends a 125 response code in reply to a
STOR or RETR command.
Signed-off-by: Raymond Hilseth <rhi@vizrt.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
RTCP synchronization packet was broken since commit in ffmpeg version > 2.8.3
(commit: e04b039b15) Since this commit (2e814d0329)
"rtpenc: Simplify code by introducing a macro for rescaling NTP timestamps", NTP_TO_RTP_FORMAT
uses av_rescale_rnd() function to add the data to the packet.
This causes an overflow in the av_rescale_rnd() function and it will return INT64_MIN.
Causing the NTP stamp in the RTCP packet to have an invalid value.
Github: Closes#182
Reverting commit '2e814d0329aded98c811d0502839618f08642685' solves the problem.
The first X96 channel set can have more channels than core, causing X96
decoding to be skipped. Clear the number of decoded X96 channels to zero
in this rudimentary case.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
I cannot see any point whatsoever to use
double here instead of float, the results
are likely identical in all cases..
Using float allows for much more
efficient use of SIMD.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Use the context and level specified to av_pkt_dump_log2(),
instead of panic level (0), for dumping packet payload.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The original code left-shifts negative values, which is undefined
in the C99 specification (the one used during normal Libav compilation).
This change multiplies by (1 << shift), which is functionally equivalent,
but has defined behavior.
With this change, fate-idct8x8 compiled with --fsanitize=undefined works.
Bug-Id: 686
Samples produced by Omneon (Harmonic) store external references with
paths ending with 0s. Such movs cannot be loaded properly since every
0 is converted to '/', to keep the same parsing code for dref type 2
and type 18: this makes the external reference point to a non-existing
direactory, rather than to the actual referenced file.
Add a brief trimming loop that drops all ending 0s before trying to
parse the external reference path.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Store the file duration in the same timebase it arrives (i.e.
milliseconds) and only convert it to the file duration units (100ns)
when it's actually written, thus simplifying some calculations. Also,
store the duration as unsigned, since it cannot be negative.
CC: libav-stable@libav.org
Bug-ID: CVE-2016-2326
This was a leftover from before the slices were encoded in parallel.
Since the put_bits context is initialized per slice aligning it
aferwards is pointless.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
This commit solves most of the crashes and issues with the encoder and
the bitrate setting. Now the encoder will always allocate the absolute
lowest amount of memory regardless of what the bitrate has been set to.
Therefore if a user inputs a very low bitrate the encoder will use the
maximum possible quantization (basically zero out all coefficients),
allocate a packet and encode it. There is no coupling between the
bitrate and the allocation size and so no crashes because the buffer
isn't large enough.
The maximum quantizer was raised to the size of the table now to both
keep the overshoot at ridiculous bitrates low and to improve quality
with higher bit depths (since the coefficients grow larger per transform
quantizing them to the same relative level requires larger quantization
indices).
Since the quantization index start follows the previous quantization
index for that slice, the quantization step was reduced to a static 1
to improve performance. Previously with quant/5 the step was usually
set to 0 upon start (and was later clipped to 1), that isn't a big change.
As the step size increases so does the amount of bits leftover and so
the redistribution algorithm has to iterate more and thus waste more
time.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Adding early support for a subset of the proposed colour elements
according to the latest version of spec:
https://mailarchive.ietf.org/arch/search/?email_list=cellar&gbt=1&index=hIKLhMdgTMTEwUTeA4ct38h0tmE
I've left out elements for pix_fmt related things as there still
seems to be some discussion around these, and the max_cll/max_fall
are currently not propagated as there is not yet side data for them.
The new elements are exposed under strict experimental mode.
Signed-off-by: Neil Birkbeck <neil.birkbeck@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is a no-op. We already have these, plus our asm differs.
* commit '257b30af8ec520c1635092e429606c62d3bcca63':
x86: hevc: Fix linking with both yasm and optimizations disabled
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
AVClass is now a const, the rest are no-op.
* commit '5e555f93009f0605db120eec78262d0fe337e645':
mpeg12enc: always write closed gops for intra only outputs
h264: Add an AVClass pointer to H264Context
libx264: Fix noise_reduction option assignment
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This is a no-op. API is already implemented by us.
* commit 'ec4c48397641dbaf4ae8df36c32aaa5a311a11bf':
lavf: add a protocol whitelist/blacklist for file opened internally
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-p. We already have a mechanism to do this.
* commit '8c0ceafb0f25da077ff23e394667119f031574fd':
urlprotocol: receive a list of protocols from the caller
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
These macros were added in OS X 10.11, and the file compiles without warnings
on both 10.10 and 10.11 with them removed.
Thanks to mark4o on IRC for pointing out the failure and testing the patch.
Every date parsing routine now uses av_parse_time which handles 'now' and
provides greater precision as well. This change also enables the segmenter
muxer to set the proper 'now' creation time at the beginning of each segment.
Signed-off-by: Marton Balint <cus@passwd.hu>
This can be used for formats which write all format metadata as string to
files, therefore non-standard creation times such as 'now' will be parsed.
The standardized creation time is UTC ISO 8601 with microsecond precision.
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
Autodetected by default. Encode using -codec:v h264_videotoolbox.
Signed-off-by: Rick Kern <kernrj@gmail.com>
Signed-off-by: wm4 <nfxjfg@googlemail.com>
It makes no sense whatsoever to do this at each function call; we
already have a table for this.
Yields a 2x improvement in find_min_book (x86-64, Haswell+GCC):
ffmpeg -i sin.flac -acodec aac -y sin.aac
find_min_book
old
605 decicycles in find_min_book, 8388453 runs, 155 skips.9x
606 decicycles in find_min_book,16776912 runs, 304 skips.9x
607 decicycles in find_min_book,33553819 runs, 613 skips.2x
607 decicycles in find_min_book,67107668 runs, 1196 skips.3x
607 decicycles in find_min_book,134215360 runs, 2368 skips3x
new
359 decicycles in find_min_book, 8388552 runs, 56 skips.3x
360 decicycles in find_min_book,16777112 runs, 104 skips.1x
361 decicycles in find_min_book,33554218 runs, 214 skips.4x
361 decicycles in find_min_book,67108381 runs, 483 skips.5x
361 decicycles in find_min_book,134216725 runs, 1003 skips5x
and more importantly a non-negligible speedup (~ 8%) to overall AAC encoding:
old:
ffmpeg -i sin.flac -acodec aac -strict -2 -y sin_new.aac 6.82s user 0.03s system 104% cpu 6.565 total
new:
ffmpeg -i sin.flac -acodec aac -strict -2 -y sin_old.aac 6.24s user 0.03s system 104% cpu 5.993 total
This also improves accuracy of the expression by ~ 2 ulp in some cases.
Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
This fixes a data race warning by ThreadSanitizer.
FrameThreadContext.die is read by all the worker threads but is not
protected by any mutex. Move it to PerThreadContext so that each worker
thread reads its own copy of |die|, which can then be protected with
PerThreadContext.mutex.
Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This was a regression introduced by commit e7345abe05 which
enabled full use of the allocated packet but due to the overhead of
using field coding the buffer was too small and triggered warnings and
crashes.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
The fact that now all quantization indices costs are cached justifies
storing 20 more integers in a structure already allocated on heap.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Add some more verbose info regarding why the imprecise and slow floor(x+0.5) hack
is used; helpful for future maintenance.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
* commit '832a202c47a246ed15e3edc6b05dfcfa7d82c4b2':
protocols: make the list of protocols static
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit also disables the async fate test, because it
used internal APIs in a non-kosher way, which no longer
exists.
* commit '2758cdedfb7ac61f8b5e4861f99218b6fd43491d':
lavf: reorganize URLProtocols
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'e192cd9ce2b51c2e6919f2a78b1ce53e0024e728':
smoothstreamingenc: do not open the files as read+write
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '7fbb3b5b9857276b4cd17b2a530c7e0880d2bc0a':
lavf: use the io_open callbacks for files opened from open_input() as well
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is no-op. The affected piece of code does not
exist in FFmpeg.
* commit '5efd91284e56d444139ed811671c59a129bbb92f':
avprobe: do not call avio_close() on a custom context
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
FATE tests have been updated to patch. They do not differ in
any meaningful way.
* commit 'dc6527ed908e4d330738f139074455ffbe56a2de':
nutenc: do not use AVCodecContext.frame_size
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit redistributes the leftover bytes amongst the top 150 slices
in terms of size (in the hopes that they'll be the ones pretty bitrate
starved).
A more perceptual method would probably need to cut bits off from slices
which don't need much, but that'll be implemented later.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Previously a global average was used. Using the previous quantizer
resulted in a fairly significant speedup as slice size selection settled
down quicker.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
16 bits were definitely not enough and caused artifacts to appear on
images at barely compressed images.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Check that the required plane pointers and only
those are set up.
Currently does not enforce anything for the palette
pointer of pseudopal formats as I am unsure about the
requirements.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
We do neither document nor check such a requirement
and for application-provided get_buffer2 they could
contain the result of a malloc(0) or whatever value
they had previously.
This fixes a use-after-free in e.g. MPlayer:
https://trac.mplayerhq.hu/ticket/2262
We might want to consider changing the (documented)
API in addition though.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Reported as https://trac.mplayerhq.hu/ticket/2264 but have
not been able to reproduce with FFmpeg-only.
I have no idea what coded_height is used for here exactly,
so this might not be the best fix.
Fixes the following chain of events:
ff_mss12_decode_init sets coded_height while not setting height.
ff_mpv_decode_init then copies coded_height into MpegEncContext height.
This is then used by init_context_frame to allocate the data structures.
However the wmv9rects are validated/initialized based on avctx->height, not
avctx->coded_height.
Thus the decode_wmv9 function will try to decode a larger video that we
allocated data structures for, causing out-of-bounds writes.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
The pkg-config file contains all opencv libraries, not only the
neccessary ones.
This change makes it possible to use the libopencv-imgproc-dev Debian
package instead of libopencv-dev, saving about 200 MB of useless
build-dependencies.
In particular one doesn't need to install the parts of opencv that
depend on ffmpeg libraries.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This should return an error to the decoder if the struct it tried to getbuffer is dirty
Reviewed-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
We don't know which features are available when the user selects a
generic core, so don't disable anything by default and let the user
decide.
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit moves the minimum bits per slice calculations outside of the
rate control function as it is identical for every slice.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Since coefficients differ only in the last bit when writing to the
bitstream it was possible to remove the sign from the tables, thus
halving them. Also now all quantization is done in the unsigned domain
as the sign is completely separate, which gets rid of the need to do
quantization on 32 bit signed integers.
Overall, this slightly speeds up the encoder depending on the machine.
The commit still generates bit-identical files as before the commit.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Fixes build of lavd/jack on linux if dispatch happens to be available on
this platform. dispatch, as well as its dependencies kqueue and pwq are
generally not installed / distribued on linux systems. If it happens to
be the case, you want to explicitely link against the libraries (using
-ldispatch) as opposed to darwin where it is part of the standard
library and -ldispatch doesn't work.
Some containers, like webm/mkv, will contain this mastering metadata.
This is analogous to the way 3D fpa data is handled (in frame and
packet side data).
Signed-off-by: Neil Birkbeck <neil.birkbeck@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This broke packed_maindata.mp3.mp4
Its unknown to me what this commit would have fixed
Reviewed-by: James Almer <jamrial@gmail.com>
This reverts commit 79127dbbef, reversing
changes made to 9fad1ce7c9.
This commit is a no-op. We already do this.
* commit 'bf7be043fcfda29c81ef2268885b4ccc643e7c49':
matroska: Always consider S_TEXT/UTF8 as SRT when demuxing
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '8caadfc53ddc55a269722ada65294f0ea8b609ac':
fate: Be silent when switching to Git branch
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'f9fbd474676e903e12efe83203697d60a9d28cf9':
msmpeg4data: Move WMV2 data tables to their own file
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We already set this.
* commit 'f273f7fb25b68792be481c9241b0ec2876e41f35':
mkv: Force the full parsing of mp3
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
We have already reverted the configure changes, and we do not have a typo
in configure.
* commit 'b4a0f172c7f116d8d329ff02f29c138a9291fd3c':
Revert all recent configure changes related to dependency resolution
build: Fix typo in HEVC VDPAU hwaccel dependencies
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '0d1229f1d2b8f26dd50c6be7917bb8ed8cb95364':
voc: Split ff_voc_get_packet into a separate file
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'b92962436bdcfae478c8598dca397a397762eef8':
mov: Fix the format specifier type for size
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This is a no-op. This was a part of the already-reverted
broken configure saga.
* commit '2edc718723b60530aead26c20cbc891102f7d529':
configure: Relax the implication of --enable for components
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'c15f6098b1b25689dd5e86aeb5ce69bc12efe1e1':
avconv: pass the hw context from filters to the encoder
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Timo is going to implement this for us.
* commit '871d0930d4c8666df5514093beff874acbe5cce0':
nvenc: support CUDA frames as input
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '7b3214d0050613bd347a2e41c9f78ffb766da25e':
lavc: add a field for passing AVHWFramesContext to encoders
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '21f7cd4acd8dc4b4796b55966dd015cb037164d8':
lavfi: add a filter for uploading normal frames to CUDA
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '1bf34134612e509fa68c70dfff418c6022459259':
avconv: use the new buffersrc parameters API
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This currently doesn't do anything, but will be used later for hwaccel
filters and libavutil.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. We already have such functionality.
* commit 'c51b2c79a7ba084253e892c56dd49ee97115c7de':
Allow linking to CUDA dynamically instead of dlopen()ing it at runtime
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
The QSV runtime expects the sync point address passed to
MFXVideoENCODE_EncodeFrameAsync() to be valid until
MFXVideoCORE_SyncOperation().
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Doing slice_end - slice_start is unsafe and can lead to undefined behavior
until slice_end has been properly sanitized.
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanag@gmail.com>
This allows to copy information related to the stream ID from the demuxer
to the muxer, thus allowing for example to retain information related to
synchronous and asynchronous KLV data packets. This information is used
in the muxer when remuxing to distinguish the two kind of packets (if the
information is lacking, data packets are considered synchronous).
The fate reference changes are due to the use of
av_packet_merge_side_data(), which increases the size of the output
packet size, since side data is merged into the packet data.
Open decoders first, next encoders. This makes sure that that
subtitle_header is always set properly, without relying on
avformat_find_stream_info() setting it.
Currently, AVStream contains an embedded AVCodecContext instance, which
is used by demuxers to export stream parameters to the caller and by
muxers to receive stream parameters from the caller. It is also used
internally as the codec context that is passed to parsers.
In addition, it is also widely used by the callers as the decoding (when
demuxer) or encoding (when muxing) context, though this has been
officially discouraged since Libav 11.
There are multiple important problems with this approach:
- the fields in AVCodecContext are in general one of
* stream parameters
* codec options
* codec state
However, it's not clear which ones are which. It is consequently
unclear which fields are a demuxer allowed to set or a muxer allowed to
read. This leads to erratic behaviour depending on whether decoding or
encoding is being performed or not (and whether it uses the AVStream
embedded codec context).
- various synchronization issues arising from the fact that the same
context is used by several different APIs (muxers/demuxers,
parsers, bitstream filters and encoders/decoders) simultaneously, with
there being no clear rules for who can modify what and the different
processes being typically delayed with respect to each other.
- avformat_find_stream_info() making it necessary to support opening
and closing a single codec context multiple times, thus
complicating the semantics of freeing various allocated objects in the
codec context.
Those problems are resolved by replacing the AVStream embedded codec
context with a newly added AVCodecParameters instance, which stores only
the stream parameters exported by the demuxers or read by the muxers.
This API is intended to allow passing around codec parameters without
using full AVCodecContext (which also contains codec options and
encoder/decoder state).
with older versions of libvpx
since:
432be63 lavc/libvpx: Fix support for RGB colorspace.
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: James Zern <jzern@google.com>
The reference encoder limits it to 64, but testing revealed that there
is absolutely no difference for indices above 50 in amount of zeroed
coefficients.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Also bench a smaller buffer. This drastically reduces --bench runtime
and reports smaller, more readable numbers.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
Commit '842b8f4ba2e79b9c004a67f6fdb3d5c5d05805d3' fixed clang/iphone
build but failed on some versions of cygwin. It has now been verified
to work on both platforms.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Instead of a linked list constructed at av_register_all(), store them
in a constant array of pointers.
Since no registration is necessary now, this removes some global state
from lavf. This will also allow the urlprotocol layer caller to limit
the available protocols in a simple and flexible way in the following
commits.
Improves streaming compatibility with Windows Media Services. Also tested for
compatilbility in Windows Media Player, Windows Media ASF Viewer and VLC.
This version of the patch only writes exclusion among audio streams, therefore
choosing a subtitle language should be possible independently of audio language.
Signed-off-by: Marton Balint <cus@passwd.hu>
I discovered that ffserver streaming was broken (it seems like it has been since 20th November) and I opened a ticket for this (https://trac.ffmpeg.org/ticket/5250 <https://trac.ffmpeg.org/ticket/5250>).
I spent yesterday learning git bisect (with the kind help of cehoyos) to painstakingly track down the cause. This was made more difficult due to the presence of a segfault in ffserver during the period where the bug was introduced so I first had to identify when and how that was fixed and then retrospectively apply that fix again for each step of the second git bisect to find the actual bug.
Anyway, the fruits of my labour are the innocent looking patch below to correct a couple of typos and define a valid range for two variables.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit adds support for the (simple, allowed in the spec, but
inferior in quality) Haar wavelet transforms.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Fix cases where unknown data (data beyond p->buf_size) could produce a
higher ico probe score than if the unknown data was known and valid.
For example:
Header: OK, 2 frames
Frame 0: Unknown (offset points beyond end of probe buffer)
Frame 1: Invalid
Previously this example had a score of 25, even though the score would
be 1 if the unknown frame was known to be valid or 0 if it was known
to be invalid. For this example the score is now 1.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Codec options of streams detected during avformat_find_stream_info are not set
therefore without this patch we initialize the encoders with decoder info
based on decoders without options.
This cause problems for probed DVB teletext streams where
avctx->subtitle_header depend on the txt_format setting.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Marton Balint <cus@passwd.hu>
Some muxer might or might not fit incomplete mp3 frames in
their packets.
Bug-Id: 899
CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This can be made more efficient, but first and the main goal of this change is to
store it at all
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Revert "configure: Don't enable examples when --disable-everything is used"
reverted as the problematic commit will be reverted too
This reverts commit 02dfa64c08.
Revert "Merge commit 'a2bb771a3cded8a05137c0effb34f61a2bc78e22'"
This reverts commit e8ebcb0034, reversing
changes made to 3bff005be8.
Revert "Merge commit '21c750f240b9d0c41a258d1adee2d9f75ff378b6'"
This reverts commit 470bfab470, reversing
changes made to f97ee815cf.
Revert "Revert "configure: Revert recent changes to disable-everything""
This reverts commit f97ee815cf.
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Immediate commit suggested by BBB
It is only used in a boolean context. Also clarify its documentation.
Signed-off-by: Moritz Barsnick <barsnick@gmx.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
control codes in a cc stream can be repeated, and must be ignored.
however, repeated characters must not be ignored. the code attempted to
wipe prev_cmd in handle_char to allow repeated characters to be
processed, but prev_cmd would previously get reset _after_ handle_char()
i also moved the prev_cmd reset out from handle_char() so it can be
re-used for special character sets, which _must_ be ignored when
repeated.
* commit 'bd49be885e9ad6bae599c54473ba2fa2957eb140':
avconv_vdpau: use the hwcontext API to simplify code
Tested-by: wm4
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '721a4efc0545548a241080b53ab480e34f366240':
buffer: add support for pools using caller data in allocation
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit 'c084d6d2cfb570b10d8784eb20cc696dfb7c5605':
buffersrc: default SAR to 0 (unknown) rather than 1
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '5e1beec944dacd6b4ed7d710125dd508c41ca969':
configure: Print which libraries will be built
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '21c750f240b9d0c41a258d1adee2d9f75ff378b6':
configure: Use `require` for the non-component options
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Use with -use_localtime, and set -hls_segment_filename to a path which
contains a subdirectory i.e. /some/path/%Y%m%d/%Y%m%dT%H%M%S-%s.ts
This will mkdir the %Y%m%d-part of the path if it does not already
exist.
In addition, each filename in the playlist output will be prefixed with
this subdirectory (if playlist and segment shares the same base path).
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
correct output pts based on input pts
make seeking possible
output frame one by one on eof
tested with showinfo filter
Suggested-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is a no-op.
* commit '5eb562831b3a9bea8026c413ef1338e06450d005':
mov: Use the correct type for size
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '8958c5c64d05453204642b55a7b8b44c93023b17':
hevc: Track long and short term RPS size for VDPAU
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '8c399bd5cefd572eceb448981fcb6d4dbca35d27':
dxva2_hevc: properly signal the num_delta_pocs from the SPS RPS
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. Ours should be superior.
* commit 'd005ccc630e42daab8ec2afecf972d1551a9401a':
nvenc: rename a misnamed function
nvenc: merge input and output surface structs
nvenc: factor out the pixel format list
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit 'fb25d99b0a5e21fb8cc184c7a9d3736387778266':
buffersrc: do not discard the error from ff_filter_frame()
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. FFmpeg already has this.
* commit '99214d42a902c8392d7887c08fdc5dc1fc2475ae':
dnxhd: Make the encoder message friendlier
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op. I don't want to enrange Certain People
who like to --disable-*.
* commit 'dd53af4b37c7790ce26065b36d5655c1af38b295':
avplay: drop support for building without lavfi
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '5781bfae0cf4271278a8bea176d615cb5c222335':
flacenc: Load default prediction_order parameters if none is selected
asfdec: make sure packet_size is non-zero before seeking
asfdec: check for too small size in asf_read_unknown
asfdec: check avio_skip in asf_read_simple_index
asfdec: break if EOF is reached after asf_read_packet_header
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '389b79842c67b1f5730215a752a5f89cb1b8d9a3':
msvc: Fix libx264 linking
doc: Improve the channelsplit example
configure: Support MSYS2 mingw-w64 64bit
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '15ec7aa4170ed05ad1b17000ef1e3940d0a0c5e7':
v210: Add avx2 version of the 10-bit line encoder
v210: Add avx2 version of the 8-bit line encoder
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '1ba1fede9dfe03dc48862e5e0530cca7192f5038':
flacenc: Restore defaults and range for {min, max}_prediction_order
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '60f0fde3092d18d4d36555962c192af8691a099c':
libx264: Make sure to preserve default option values
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-op.
* commit '4709f72115e4028a1cb43e916925678bfceef870':
lavfi: Use AV_CEIL_RSHIFT where needed
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is a no-nop.
* commit 'eef9f06508354d1c7d5624c1c18997e7974288f1':
avplay: Allow to override the codec
avplay: Statically allocate the player state
avplay: Rename cur_stream to player
avplay: Rename VideoState to PlayerState
avplay: Allocate the refresh thread next to the decode thread
avplay: Move the stream setup in the main thread
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Similar to how the AAC encoder does it.
0 means the video's been compressed losslessly/almost losslessly
thoughout. Generally, the higher, the worse.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
The timebase change in the zmbv-8bit test is due to the fact that
previously the timebase string was evaluated as floating point, then
converted to a rational. After this commit, the timebase is passed
directly as is.
It makes more sense to not claim anything about the SAR if we don't know
anything. No changes in the FATE tests, since this is what avconv ends
up doing anyway.
Today, we track the short term RPS size for DXVA, but only if the
SliceHeader RPS is being used. Otherwise it's left uninitialized.
NVIDIA's VDPAU implementation requires that the size be accurately
tracked even if an SPS RPS is being used. In this case, it's really
counting the size of the RPS idx information, but you end up with
mangled output if the value is not accurate.
VDPAU also needs the size of the long term RPS.
Signed-off-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
ucNumDeltaPocsOfRefRpsIdx needs to contain the flat value from the SPS RPS,
and not the final computed value from the slice header RPS, as this calculation
is done internally by the driver again.
Sample-Id: http://trailers.divx.com/hevc/Sintel_4k_27qp_24fps_1aud_9subs.mkvi
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
This allows untangling the eatqi decoder from the MPEG-1 decoder.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
If an input file is bigger than 2GB (assume sizeof(int) == 4)),
size0/size1 will overflow, making stddev and PSNR invalid.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
lavfi has been considered to be stable for a while now, so it is enabled
in most configurations. Supporting avplay without lavfi requires a lot
of nontrivial ifdef mess for no good reason.
asf_read_payload can unset eof_reached, so check it also before calling
that function.
This fixes infinite loops.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Alexandra Hájková <alexandra@khirnov.net>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
The private options chromaoffset, sc_threshold, and noise_reduction
were set to 0 rather than -1, and were always initializing values
in libx264 rather than letting the library use its default.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
AVX2 support was introduced in Yasm 1.2.0 and NASM 2.10, and the
oldest versions currently supported are Yasm 0.8.0 and NASM 2.03
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
@@ -2543,6 +2559,8 @@ static int init_input_stream(int ist_index, char *error, int error_len)
av_log(NULL,AV_LOG_WARNING,"Warning using DVB subtitles for filtering and output at the same time is not fully supported, also see -compute_edt [0|1]\n");
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.