In the spirit of commit a956840cbc. Simple method to reproduce:
pass -vstats_file /dev/full to ffmpeg.
All raw fclose usages in ffmpeg.c taken care of here.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
avio_closep is not guaranteed to succeed, and its return value can
contain information regarding failure of preceding writes and silent
loss of data (man 2 close, man fclose). Users should know when the
progress was not successfully logged, and so a diagnostic is printed
here.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* commit 'e63e3797a1ed9346f529848e6ba3d27fd2d2cc8d':
avconv: pass the global codec side data to the muxer
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
This adds a computation of the progress speed versus realtime ("Nx")
to the status line and to the report log. It uses the progress time
as already calculated for total output time as a base.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-hex and -dump command line options do nothing unless -loglevel debug is set.
-dump by itself is useful for monitoring live streams (to get the current PTS for example) however when it is used with -loglevel debug for an RTMP stream, librtmp also dumps the packet data which makes the output too noisy.
do_pkt_dump is only set in check_keyboard_interaction or by the -dump command line option so this change should have no effect on any other parts of the code..
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Using -ss as an input option shifts timestamps down by the seek, so it
doesn't have to be added to the recording time when checking whether to
stop.
Fixes#977
Signed-off-by: Simon Thelen <ffmpeg-dev@c-14.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Small refactor of fps code for improved readability. In particular
the "cor" variable was unnecessary and misleading because it would
always be set to -delta0.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
I didnt find any case that triggers this but if it gets triggered it needs to be
investigated
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
a set ost->frame_rate does not imply CFR in ffmpeg
The changed fate tests had all wrong packet durations
(like 1/1000 or 1/90000)
There might be more cases in which is_cfr could be set
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '3efd71b4d0b4a73ccbbbdc092e6bbd54d92633f4':
avconv: set packet duration for CFR video streams
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Fixes a segfault when trying to write nonexistent rtp information.
Signed-off-by: Simon Thelen <ffmpeg-dev@c-14.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
FFDIFFSIGN was created explicitly for this purpose, since the common
return a - b idiom is unsafe regarding overflow on signed integers. It
optimizes to branchless code on common compilers.
FFDIFFSIGN also has the subjective benefit of being easier to read due
to lack of ternary operators.
Tested with FATE.
Things not covered by this are unsigned integers, for which overflows
are well defined, and also places where overflow is clearly impossible,
e.g an instance where the a - b was being done on 24 bit values.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Clément Bœsch <u@pkh.me>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
This is more concise and conveys the intent better.
Furthermore, it is likely more precise as well due to lack of floating
point division.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* commit 'cd0e08813a0484002b5defbf557c859f123953ae':
avconv: support infinite loop for the loop option
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
* commit 'fb472e1a11a4e0caed2c3c91da01ea8e35d9e3f8':
avconv: add support for Intel QSV-accelerated transcoding
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
On lines 1633,1634 FFABS(pts) is performed. However, if av_stream_get_end_pts
returns AV_NOPTS_VALUE always, pts remains stuck at INT64_MIN, leading
to undefined behavior on FFABS.
One could conceive of a solution using FFNABS. However, such a solution
has to deal with the implementation defined rounding of integer division
with at least one negative operand in ANSI C89. C99 forces truncation to
zero, but I am not sure that all of our platforms compile with full C99
support, and in particular whether we can safely assume a fixed
rounding behavior across all platforms.
This solution is simple, and I doubt changing INT64_MIN to INT64_MIN + 1
has any practical loss - if it is stuck at its initial value, the stream
is messed up anyway.
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
stream copy always has a input stream, it cannot use complex video/audio filters with unambigous input
Fixes CID1322348
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This prevents breaking existing command lines in case the "ab" default is removed from libavcodec
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The null muxer has AVFMT_RAWPICTURE set but can be fed with non-raw material
related to Ticket4778
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
The FILE struct is opaque in MSVC 2015, and the members of this struct
were never meant to be accessed in any case.
No conditions are known where this check was needed to get characters
from stdin.
faults in fate otherwise breaks the terminal.
To reproduce, add a abort() into wav_read_header()
run make fate-acodec-adpcm-ima_wav
This reverts commit 92e62f49cf.
The stats are a superset of the quality factor, also allowing the picture type and encoder "PSNR" stats to be exported
This also replaces the native by fixed little endian order for the affected side data
AV_PKT_DATA_QUALITY_FACTOR is left as a synonym of AV_PKT_DATA_QUALITY_STATS
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '5d3addb937946eca5391e40b5e6308e74ac6f77b':
Add a quality factor packet side data
Conflicts:
doc/APIchanges
ffmpeg.c
libavcodec/avcodec.h
libavcodec/mpegvideo_enc.c
libavcodec/version.h
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '1959351aecf09fc3e90208ff775f4849801dc13f':
avconv: move the no streams failure to open_output_file()
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
* commit '59245e0c5e10a849e67c632cccf4f677b2442e82':
avconv: set the encoding/decoding_needed flags earlier
Conflicts:
ffmpeg.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
Fixes: 39a25908b84604acdaa490138282d091_signal_sigsegv_7ffff713351a_331_WAWV.avi with memlimit of 262144
Found-by: Samuel Groß, Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Fixes: 1013dbde2c360d939cc2dfc33e4f275c_signal_sigsegv_a0500f_45_320vp3.nsv with memlimit of 536870912
Found-by: Samuel Groß, Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Fixes: 18615ff56beedc63a884a8db0678b47c_signal_sigsegv_7ffff713351a_991_xtrem_e2_m64q15_a32sxx.3gp with memlimit of 524288
Found-by: Samuel Groß, Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Fixes: 09e670595acbdafb226974b08dab66e3_signal_sigabrt_7ffff70eccc9_991_xtrem_e2_m64q15_a32sxx.3gp with memlimit of 1048576
Found-by: Samuel Groß, Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
If threading is used, the first (thread_count - 1) packets are read
before any frame/error is returned. Counting this as successful decoding
is wrong, because it also happens when no single frame could be decoded.
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
This is the second part of the fix for ticket #4370.
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
* commit '9a5e4fbec870c7d466b7a0aec92c70778efc96b5':
avconv: do not stop processing the input packet on decoding error
Conflicts:
ffmpeg.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b114f6d48a06a4dad6882bc83e07463905f004c4':
avconv: factor out flushing the filters
Conflicts:
ffmpeg.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '16302246b1fcb7ad4e6f7bd31c49956a455336d2':
avconv: Add an option for automatically rotating video according to display matrix
Conflicts:
Changelog
ffmpeg_opt.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3892bdab9b652eb003ab95e167f1765e0b0ea035':
avconv: do not overwrite the stream codec context for streamcopy
Conflicts:
ffmpeg.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This improves the last frames duration with CFR and when the input durations
are inaccurate or missing
Fixes Ticket4119
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'dc7536ca3d2dbe47f40cc0fcd0fc2555a84d5f56':
avconv: do not abort immediately if initializing hwaccel fails
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Previously the duration was sometimes wrong, this addition
limits the value and improves which frames are choosen when
reducing the frame rate
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This is a bit ugly as it attempts to keep most of the computation
in integers before the double based fps code. The use of integers
is to reduce the chances of rounding differences between platforms
Previously the timestamp was rounded to the encoder timebase
before being converted back to double precision which could cause loss
of precision
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Allow printing of sdp information to a file specified by -sdp_file
This allows users to print sdp information when at least one of the
outputs isn't an rtp stream.
Signed-off-by: Simon Thelen <ffmpeg-dev@c-14.de>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The format is now:
-bsf:X filter1[=opt1=str1/opt2=str2],filter2
ie the parameters are appended after the filter name using '='. As ','
has been reserved already for the list of filters, '/' is just an
example of token separation for now, but that could become part of the
API to avoid each bsf using its own tokenization.
The proper solution would be using AVOption, but this is overkill for now.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This improves the handling of cases where the frame duration is not known
Fixes Ticket 4119
Fixes Ticket 1578
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '88b32673db39440422a73ec3047d3326c96b4fb2':
avconv: copy stream-level side data when streamcopying
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '6cfbe1de5ac6c57c41459626f7ac32841d63ace8':
avconv: Use only audio and video to guess discontinuities
Conflicts:
ffmpeg.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>