ffmpeg.git
2 years agoavutil/tests/audio_fifo.c: pass by reference for efficiency and change datatype to...
Thomas Turner [Thu, 12 Jan 2017 01:20:30 +0000 (17:20 -0800)]
avutil/tests/audio_fifo.c: pass by reference for efficiency and change datatype to const

Signed-off-by: Thomas Turner <thomastdt@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavutil/reverse: move the ff_reverse declaration to a separate header
James Almer [Thu, 12 Jan 2017 22:37:16 +0000 (19:37 -0300)]
avutil/reverse: move the ff_reverse declaration to a separate header

Fixes compilation with hardcoded tables after eaff1aa09e90e2711207c9463db8bf8e8dec8178
and e71b8119e7db675dd2dac3f7fb069b0df2943c38

Reviewed-by: Timo Rothenpieler <timo@rothenpieler.org>
Signed-off-by: James Almer <jamrial@gmail.com>
2 years agolavf/mxf: Add a universal label for ProRes used in FCP.
Carl Eugen Hoyos [Thu, 12 Jan 2017 22:24:39 +0000 (23:24 +0100)]
lavf/mxf: Add a universal label for ProRes used in FCP.

Fixes ticket #6075.

2 years agolibavfilter/af_biquads: warn about clipping only after frame with clipping
Sergey Kudryashov [Thu, 12 Jan 2017 14:38:58 +0000 (17:38 +0300)]
libavfilter/af_biquads: warn about clipping only after frame with clipping

2 years agolavfi: remove stray semicolons.
Nicolas George [Thu, 12 Jan 2017 13:43:51 +0000 (14:43 +0100)]
lavfi: remove stray semicolons.

Hopefully fix compilation with suncc.

2 years agolavf/dss: Do not fail randomly if dss_sp input contains 0xff.
Carl Eugen Hoyos [Thu, 12 Jan 2017 13:12:35 +0000 (14:12 +0100)]
lavf/dss: Do not fail randomly if dss_sp input contains 0xff.

Fixes decoding the sample from ticket #6072 with ffmpeg.

2 years agolavfi: reindent after previous commit.
Nicolas George [Thu, 12 Jan 2017 12:36:02 +0000 (13:36 +0100)]
lavfi: reindent after previous commit.

2 years agolavfi/buffersink: move to the new design.
Nicolas George [Mon, 19 Dec 2016 07:38:25 +0000 (08:38 +0100)]
lavfi/buffersink: move to the new design.

2 years agolavfi: do not call ff_filter_frame() with activate.
Nicolas George [Sat, 24 Dec 2016 12:17:21 +0000 (13:17 +0100)]
lavfi: do not call ff_filter_frame() with activate.

avfilter_graph_request_oldest() does work that should be done by
either the filter or the application.

The principle of this function, calling ff_request_frame() from
outside the filter was always shaky. This version is less elegant
since it requires making special cases for each filter, but it
is more robust since it no longer calls ff_request_frame()
directly without notifying the filter.

Eventually, avfilter_graph_request_oldest() will be deprecated
for a function to just run the graph.

2 years agolavfi: make two functions static.
Nicolas George [Sat, 24 Dec 2016 15:56:50 +0000 (16:56 +0100)]
lavfi: make two functions static.

ff_request_frame_to_filter() and ff_filter_frame_to_filter()
are only used in avfilter.c.

2 years agolavfi: disallow ff_request_frame for filters using activate.
Nicolas George [Sat, 24 Dec 2016 12:16:15 +0000 (13:16 +0100)]
lavfi: disallow ff_request_frame for filters using activate.

Having two different functions allows to have stricter tests
and detect errors earlier.

2 years agolavfi: add ff_inlink_request_frame().
Nicolas George [Sat, 24 Dec 2016 12:16:59 +0000 (13:16 +0100)]
lavfi: add ff_inlink_request_frame().

2 years agolavfi: move ff_update_link_current_pts() into the utility functions.
Nicolas George [Fri, 23 Dec 2016 15:00:57 +0000 (16:00 +0100)]
lavfi: move ff_update_link_current_pts() into the utility functions.

It does not change anything for the existing filters and makes
better code fatrorization when future code will use the utility
functions.

2 years agolavfi: cosmetic: remove forward declaration.
Nicolas George [Fri, 23 Dec 2016 14:40:27 +0000 (15:40 +0100)]
lavfi: cosmetic: remove forward declaration.

2 years agolavfi: add AVFilter.activate.
Nicolas George [Mon, 19 Dec 2016 07:38:15 +0000 (08:38 +0100)]
lavfi: add AVFilter.activate.

2 years agolavfi: use the consume helpers in ff_filter_frame_to_filter().
Nicolas George [Tue, 20 Dec 2016 22:23:29 +0000 (23:23 +0100)]
lavfi: use the consume helpers in ff_filter_frame_to_filter().

2 years agolavfi: add helpers to consume frames from link FIFOs.
Nicolas George [Tue, 20 Dec 2016 13:58:37 +0000 (14:58 +0100)]
lavfi: add helpers to consume frames from link FIFOs.

2 years agolavfi: pass min explicitly to samples_ready().
Nicolas George [Thu, 22 Dec 2016 13:21:24 +0000 (14:21 +0100)]
lavfi: pass min explicitly to samples_ready().

2 years agolavfi: add ff_inlink_evaluate_timeline_at_frame().
Nicolas George [Tue, 20 Dec 2016 16:13:04 +0000 (17:13 +0100)]
lavfi: add ff_inlink_evaluate_timeline_at_frame().

2 years agolavfi: add ff_inlink_process_commands().
Nicolas George [Tue, 20 Dec 2016 15:53:23 +0000 (16:53 +0100)]
lavfi: add ff_inlink_process_commands().

2 years agolavfi: merge two variables after a recent commit.
Nicolas George [Tue, 20 Dec 2016 14:49:17 +0000 (15:49 +0100)]
lavfi: merge two variables after a recent commit.

2 years agolavfi: implement ff_inlink_make_frame_writable().
Nicolas George [Tue, 20 Dec 2016 13:56:03 +0000 (14:56 +0100)]
lavfi: implement ff_inlink_make_frame_writable().

Unlike av_frame_is_writable(), it uses the link's alloc callback,
making direct rendering possible.

The code comes from ff_filter_frame_framed(), moved with mostly
trivial changes.

2 years agolavfi: export ff_filter_set_ready() to the library.
Nicolas George [Tue, 20 Dec 2016 14:57:19 +0000 (15:57 +0100)]
lavfi: export ff_filter_set_ready() to the library.

2 years agolavfi: add ff_inlink_acknowledge_status().
Nicolas George [Tue, 20 Dec 2016 14:56:48 +0000 (15:56 +0100)]
lavfi: add ff_inlink_acknowledge_status().

Also introduce libavfilter/filters.h for all functions needed
to implement filters.

2 years agolavfi: document that AVFilterLink is not for applications.
Nicolas George [Tue, 27 Dec 2016 16:18:33 +0000 (17:18 +0100)]
lavfi: document that AVFilterLink is not for applications.

2 years agolavfi/tests/filtfmts: include internal.h.
Nicolas George [Sun, 18 Dec 2016 11:35:50 +0000 (12:35 +0100)]
lavfi/tests/filtfmts: include internal.h.

2 years agolavd/lavfi: use buffersink accessors.
Nicolas George [Sun, 18 Dec 2016 11:35:25 +0000 (12:35 +0100)]
lavd/lavfi: use buffersink accessors.

2 years agoffplay: use buffersink accessors.
Nicolas George [Sun, 18 Dec 2016 11:35:14 +0000 (12:35 +0100)]
ffplay: use buffersink accessors.

2 years agoffmpeg: use buffersink accessors.
Nicolas George [Sun, 18 Dec 2016 11:34:35 +0000 (12:34 +0100)]
ffmpeg: use buffersink accessors.

2 years agolavfi/buffersink: add accessors for the stream properties.
Nicolas George [Sun, 18 Dec 2016 11:31:24 +0000 (12:31 +0100)]
lavfi/buffersink: add accessors for the stream properties.

av_buffersink_get_frame_rate() did already exist; its argument becomes const.

2 years agolavfi, ffmpeg: simplify filter names.
Nicolas George [Thu, 28 Apr 2016 12:47:43 +0000 (14:47 +0200)]
lavfi, ffmpeg: simplify filter names.

The names are only used for technical output and debugging.
Make them similar to C identifiers for easier quick reading
of debug dumps.

2 years agolavf/hlsenc: fix typo in last commit.
Nicolas George [Thu, 12 Jan 2017 13:01:22 +0000 (14:01 +0100)]
lavf/hlsenc: fix typo in last commit.

2 years agoavformat/hlsenc: hls_start_number_source and start_number
Bodecs Bela [Thu, 12 Jan 2017 12:43:10 +0000 (20:43 +0800)]
avformat/hlsenc: hls_start_number_source and start_number

start_number option starts the playlist sequence number
(#EXT-X-MEDIA-SEQUENCE) from the specified number. Unless hls_flags
single_file is set, it also specifies starting sequence numbers of
segment and subtitle filenames. Sometimes it is usefull to have unique
starting numbers at each run, but currently it is only achiveable by
setting this parameter manually.
This patch enables to specify start_number source parameter by
introducing hls_start_number_source with 3 possible values:
generic/epoch/datetime. This ensures to set start sequence number
automatically for practically unique numbers. Generic option is the
default and this is the curent behaviour: start_number option value
specifies the start sequence number. (start_number default value is 0)
If hls_start_number_source is set to epoch, then the start number will
be the seconds since epoch (1970-01-01 00:00:00). If set to datetime,
then the start sequence number will be based on the current date/time
value as YYYYmmddHHMMSS. e.g. 20161231235659.
Hls speficication allows 64 bit integers as sequence numbers. This patch
also changes some code where only 32 bit integer values were handled
correctly.

Reviewed-by: Moritz Barsnick <barsnick@gmx.net>
Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agolavfi: use an audio frame pool for each link of the filtergraph
Matthieu Bouron [Tue, 3 Jan 2017 16:44:14 +0000 (17:44 +0100)]
lavfi: use an audio frame pool for each link of the filtergraph

2 years agolavfi/framepool: cosmetic style fixes
Matthieu Bouron [Tue, 3 Jan 2017 16:46:24 +0000 (17:46 +0100)]
lavfi/framepool: cosmetic style fixes

2 years agolavfi/framepool: re-indent after previous commit
Matthieu Bouron [Tue, 3 Jan 2017 16:44:55 +0000 (17:44 +0100)]
lavfi/framepool: re-indent after previous commit

2 years agolavfi/framepool: add audio support
Matthieu Bouron [Tue, 3 Jan 2017 16:44:07 +0000 (17:44 +0100)]
lavfi/framepool: add audio support

2 years agolavfi/framepool: rename FFVideoFramePool to FFFramePool
Matthieu Bouron [Tue, 10 May 2016 15:45:59 +0000 (17:45 +0200)]
lavfi/framepool: rename FFVideoFramePool to FFFramePool

2 years agoavcodec/mathops: add missing header for ff_reverse
James Almer [Thu, 12 Jan 2017 00:17:52 +0000 (21:17 -0300)]
avcodec/mathops: add missing header for ff_reverse

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agofate/psd : add test for 256 color
Martin Vignali [Mon, 9 Jan 2017 22:03:42 +0000 (23:03 +0100)]
fate/psd : add test for 256 color

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoffmpeg: Add an option "qsv_device" to choose proper node for QSV child device (vaapi...
Zhengxu [Thu, 5 Jan 2017 06:48:06 +0000 (14:48 +0800)]
ffmpeg: Add an option "qsv_device" to choose proper node for QSV child device (vaapi or dxva2)

Reason: For some cases, such as 2 or more graphics cards existing, the
default command line may fail because ffmpeg does not open the correct
device node:
    ffmpeg -hwaccel qsv -c:v h264_qsv -i test.264 -c:v h264_qsv out.264
Let user choose the proper one by running like below:
    ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD128 -c:v h264_qsv \
-i test.264 -c:v h264_qsv out.264

Signed-off-by: ChaoX A Liu <chaox.a.liu@gmail.com>
Signed-off-by: Huang, Zhengxu <zhengxu.maxwell@gmail.com>
Signed-off-by: Andrew, Zhang <huazh407@gmail.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
2 years agolavf/dss: Support version 3 files / files with larger header.
Carl Eugen Hoyos [Wed, 11 Jan 2017 12:23:13 +0000 (13:23 +0100)]
lavf/dss: Support version 3 files / files with larger header.

Fixes ticket #6072.

2 years agohevc: Mark as having threadsafe init
Derek Buitenhuis [Tue, 10 Jan 2017 18:24:27 +0000 (13:24 -0500)]
hevc: Mark as having threadsafe init

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2 years agoavcodec: add Newtek SpeedHQ decoder
Steinar H. Gunderson [Sun, 8 Jan 2017 11:07:09 +0000 (12:07 +0100)]
avcodec: add Newtek SpeedHQ decoder

This decoder can decode all existing SpeedHQ formats (SHQ0–5, 7, and 9),
including correct decoding of the alpha channel.

1080p is decoded in 142 fps on one core of my i7-4600U (2.1 GHz Haswell),
about evenly split between bitstream reader and IDCT. There is currently
no attempt at slice or frame threading, even though the format trivially
supports both.

NewTek very helpfully provided a full set of SHQ samples, as well as
source code for an SHQ2 encoder (not included) and assistance with
understanding some details of the format.

2 years agoavcodec: move bitswap_32() into a header file
Steinar H. Gunderson [Sun, 8 Jan 2017 13:14:54 +0000 (14:14 +0100)]
avcodec: move bitswap_32() into a header file

Allows more codecs than mpeg12video to make use of it.

2 years agoavcodec/wmaprodec: do not force extradata presence for XMA
Paul B Mahol [Wed, 11 Jan 2017 10:38:56 +0000 (11:38 +0100)]
avcodec/wmaprodec: do not force extradata presence for XMA

Mainly useful for supporting decoding of headerless files.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoavcodec/psd: fix ugly typo
Paul B Mahol [Wed, 11 Jan 2017 10:42:50 +0000 (11:42 +0100)]
avcodec/psd: fix ugly typo

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoavfilter/vf_libopencv: fix resource leak in read_shape_frame_filter
Steven Liu [Wed, 11 Jan 2017 01:59:55 +0000 (09:59 +0800)]
avfilter/vf_libopencv: fix resource leak in read_shape_frame_filter

CID: 1324298
add a label when error goto the label to release resource

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agolibavcodec/psd : add support for psd bitmap mode
Martin Vignali [Tue, 10 Jan 2017 23:18:29 +0000 (00:18 +0100)]
libavcodec/psd : add support for psd bitmap mode

Fixes ticket #6044

Based on patch by Carl Eugen Hoyos

2 years agolavc/psd: Interpret DUOTONE as GRAYSCALE.
Carl Eugen Hoyos [Tue, 10 Jan 2017 23:17:59 +0000 (00:17 +0100)]
lavc/psd: Interpret DUOTONE as GRAYSCALE.

This is what gimp, ImageMagick and FreeImage do and what the
Adobe Photoshop file format specification suggests.
Fixes a sample from ticket #6045.

Reviewed-by: Martin Vignali
2 years agoavformat/hlsenc: fix the bug when the largest segment duration pointer right value...
Steven Liu [Tue, 10 Jan 2017 20:38:34 +0000 (04:38 +0800)]
avformat/hlsenc: fix the bug when the largest segment duration pointer right value is 0

when the segments largest duration value is look like 4.000000, the
EXT-X-TARGETDURATION value should equ 4.
it's wrong when hlsenc use ceil, so fix it.

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agoavformat/hlsenc: fix hls start and tail segment duration
Steven Liu [Tue, 10 Jan 2017 20:33:13 +0000 (04:33 +0800)]
avformat/hlsenc: fix hls start and tail segment duration
 problem

fix ticket: #6067

Tested-by: Pero
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agoavcodec/bsf: fix resource leak in av_bsf_list_parse_str
Steven Liu [Tue, 10 Jan 2017 20:09:47 +0000 (04:09 +0800)]
avcodec/bsf: fix resource leak in av_bsf_list_parse_str

cid: 1396268
when av_strdup(str) error, the lst need release

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agoavcodec/tiff: Perform multiply in tiff_unpack_lzma() as 64bit
Michael Niedermayer [Sun, 8 Jan 2017 15:37:56 +0000 (16:37 +0100)]
avcodec/tiff: Perform multiply in tiff_unpack_lzma() as 64bit

This should make no difference as the value should not be able to be that large
but its more correct this way

Fixes CID1348138

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agodoc/scaler: mention default scaling algorithm
Lou Logan [Fri, 23 Dec 2016 00:27:49 +0000 (15:27 -0900)]
doc/scaler: mention default scaling algorithm

Default is "bicubic".

Signed-off-by: Lou Logan <lou@lrcd.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavcodec/qdm2: make use of bytestream2
Paul B Mahol [Sun, 8 Jan 2017 18:59:06 +0000 (19:59 +0100)]
avcodec/qdm2: make use of bytestream2

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoavfilter/af_sofalizer: speed and clean up fast convolution a little
Paul B Mahol [Mon, 9 Jan 2017 17:15:03 +0000 (18:15 +0100)]
avfilter/af_sofalizer: speed and clean up fast convolution a little

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agox86inc: Avoid using eax/rax for storing the stack pointer
Henrik Gramner [Tue, 20 Dec 2016 20:33:12 +0000 (21:33 +0100)]
x86inc: Avoid using eax/rax for storing the stack pointer

When allocating stack space with an alignment requirement that is larger
than the current stack alignment we need to store a copy of the original
stack pointer in order to be able to restore it later.

If we chose to use another register for this purpose we should not pick
eax/rax since it can be overwritten as a return value.

2 years agoavutil/tile: check clock_gettime at runtime for apple platforms
Wang Bin [Mon, 9 Jan 2017 03:52:06 +0000 (11:52 +0800)]
avutil/tile: check clock_gettime at runtime for apple platforms

clock_gettime is avalible since macOS 10.12 and iOS 10.0. Because of
weak linking, clock_gettime can be build without error with new
macOS/iOS sdk, but the symbol may not exist on the target system.
Explicitly checking the symbol is required.
https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

Signed-off-by: Wang Bin <wbsecg1@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agolavc/vaapi_encode_h264: disable B frames in baseline profile
Jun Zhao [Sun, 8 Jan 2017 03:01:32 +0000 (11:01 +0800)]
lavc/vaapi_encode_h264: disable B frames in baseline profile

Disable B frames when using baseline/constrained baseline profile,
following H.264 spec Annex A.2.1.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Yi A Wang <yi.a.wang@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
2 years agoavfilter/af_dynaudnorm: fix hang with too short input
Paul B Mahol [Sun, 8 Jan 2017 19:41:36 +0000 (20:41 +0100)]
avfilter/af_dynaudnorm: fix hang with too short input

The only thing we can do at such point is return samples unchanged.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoavcodec/bsf: Fix av_bsf_list_free()
Michael Niedermayer [Mon, 26 Dec 2016 22:45:53 +0000 (23:45 +0100)]
avcodec/bsf: Fix av_bsf_list_free()

Negate null check
Fixes CID1396248

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavcodec/omx: Do not pass negative value into av_malloc()
Michael Niedermayer [Thu, 29 Dec 2016 01:19:27 +0000 (02:19 +0100)]
avcodec/omx: Do not pass negative value into av_malloc()

Fixes CID1396849

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoffserver: local OOB write with custom program name
Tobias Stoeckmann [Fri, 6 Jan 2017 22:33:16 +0000 (23:33 +0100)]
ffserver: local OOB write with custom program name

When the command line for children is created, it is assumed that
my_program_name always ends with "ffserver", which doesn't have to
be true if ffserver is called through a symbolic link.

In such a case, it could be that not enough space for "ffmpeg" is
available at the end, leading to a buffer overflow.

One example would be:

$ ln -s /usr/bin/ffserver ~/f; ~/f

As this is only a local buffer overflow, i.e. is based on a weird
program call, this has NO security impact.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavformat/riff: extend MagicYUV fourcc list
Paul B Mahol [Sat, 7 Jan 2017 11:29:32 +0000 (12:29 +0100)]
avformat/riff: extend MagicYUV fourcc list

Newer version of encoder can create such files.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoavcodec/dca: add support for 20-bit XLL
foo86 [Sat, 7 Jan 2017 09:26:43 +0000 (12:26 +0300)]
avcodec/dca: add support for 20-bit XLL

Fixes ticket #6063.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2 years agoavformat/matroskaenc: Regression fix for invalid MKV headers
softworkz [Thu, 5 Jan 2017 00:24:03 +0000 (01:24 +0100)]
avformat/matroskaenc: Regression fix for invalid MKV headers

The following three commits created a regression by writing initially
invalid mkv headers:

650e17d88b63b5aca6e0a43483e89e64b0f7d2dd avformat/matroskaenc: write a
CRC32 element on Tags
3bcadf822711720ff0f8d14db71ae47cdf97e652 avformat/matroskaenc: write a
CRC32 element on Info
ee888cfbe777cd2916a3548c750e433ab8f8e6a5 avformat/matroskaenc: postpone
writing the Tracks master

Symptoms:

- You can no longer playback a file that is still processed by ffmpeg,
e.g. VLC fails playback
- You can no longer stream a file to a client while if is still being
processed
- Various diagnosing tools show header errors or incomplete headers
(e.g. ffprobe, mediainfo, mkvalidator)

Note: The symptoms do not apply to completed files or ffmpeg runs that
were interrupted with 'q'

Cause:

The mentioned commits made changes in a way that some header elements
are only partially written in
mkv_write_header, leaving the header in an invalid state. Only in
mkv_write_trailer, these elements
are finished correctly, but that does only occur at the end of the
process.

Regression:

Before these commits were applied, mkv headers have always been valid,
even before completion of ffmpeg.
This has worked reliably over many versions of ffmpeg, to it was an
obvious regression.

Bugtracker:

This issue has been recorded as #5977 which is resolved by this patch

Patch:

The patch adds a new function 'end_ebml_master_crc32_preliminary' that
preliminarily finishes the ebml
element without destroying the buffer. The buffer can be used to update
the ebml element later during
mkv_write_trailer. But most important: mkv_write_header finishes with a
valid mkv header again.

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agolavfi/selectivecolor: add a link to algorithm explanations
Clément Bœsch [Sat, 7 Jan 2017 13:25:57 +0000 (14:25 +0100)]
lavfi/selectivecolor: add a link to algorithm explanations

2 years agolibavformat/avio: Add avio_get_dyn_buf function
softworkz [Thu, 5 Jan 2017 00:33:26 +0000 (01:33 +0100)]
libavformat/avio: Add avio_get_dyn_buf function

This commit adds the avio_get_dyn_buf function which allows accessing
the
content of a DynBuffer without destroying it.

This is required in matroskaenc for preliminary writing (correct) mkv
headers.

Context for this change is fixing regression bug #5977.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavcodec: add QDMC decoder
Paul B Mahol [Mon, 26 Dec 2016 15:58:46 +0000 (16:58 +0100)]
avcodec: add QDMC decoder

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoavcodec/iff: add support for vertical word compression in ILBM
Paul B Mahol [Fri, 6 Jan 2017 20:44:14 +0000 (21:44 +0100)]
avcodec/iff: add support for vertical word compression in ILBM

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoomadec: fix overflows during bit rate calculation
Andreas Cadhalpun [Mon, 12 Dec 2016 23:35:12 +0000 (00:35 +0100)]
omadec: fix overflows during bit rate calculation

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2 years agolibavcodec/exr: Fix blank output when data window != display window
Kevin Wheatley [Tue, 3 Jan 2017 16:31:16 +0000 (16:31 +0000)]
libavcodec/exr: Fix blank output when data window != display window

looks like there is a bug in commit
1a08758e7c4e14a9ea8d2fef6c33ad411b2d3c40 relating to the handling of
ptr in decode_frame after decode_block is called, before this commit
ptr would have been incremented for each line in the data window, now
after the commit it is left at the start of the first included line
rather than the line after the data window then the code sets the
remaining lines to 0 and thus the whole image is over written.

Fix by adjusting ptr to the correct line after decode_block returns

Signed-off-by: Kevin Wheatley <kevin.j.wheatley@gmail.com>
2 years agoavfilter/asrc_flite: Fix textbuf leak
Michael Niedermayer [Fri, 6 Jan 2017 14:46:56 +0000 (15:46 +0100)]
avfilter/asrc_flite: Fix textbuf leak

Fixes CID1244189

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavfilter/vf_shuffleframes: allow also dropping frames
Paul B Mahol [Fri, 6 Jan 2017 11:27:46 +0000 (12:27 +0100)]
avfilter/vf_shuffleframes: allow also dropping frames

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agoavformat/test/fifo_muxer: add check for FailingMuxerPacketData alloc
Steven Liu [Thu, 5 Jan 2017 22:35:32 +0000 (06:35 +0800)]
avformat/test/fifo_muxer: add check for FailingMuxerPacketData alloc

CID: 1396257

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agoimdct15: replace the FFT with a faster PFA FFT algorithm
Rostislav Pehlivanov [Wed, 4 Jan 2017 09:23:24 +0000 (09:23 +0000)]
imdct15: replace the FFT with a faster PFA FFT algorithm

This commit replaces the current inefficient non-power-of-two FFT with a
much faster FFT based on the Prime Factor Algorithm.
Although it is already much faster than the old algorithm without SIMD,
the new algorithm makes use of the already very throughouly SIMD'd power
of two FFT, which improves performance even more across all platforms
which we have SIMD support for.

Most of the work was done by Peter Barfuss, who passed the code to me to
implement into the iMDCT and the current codebase. The code for a
5-point and 15-point FFT was derived from the previous implementation,
although it was optimized and simplified, which will make its future
SIMD easier. The 15-point FFT is currently using 6% of the current
overall decoder overhead.

The FFT can now easily be used as a forward transform by simply not
multiplying the 5-point FFT's imaginary component by -1 (which comes
from the fact that changing the complex exponential's angle by -1 also
changes the output by that) and by multiplying the "theta" angle of the
main exptab by -1. Hence the deliberately left multiplication by -1 at
the end.

FATE passes, and performance reports on other platforms/CPUs are
welcome.

Performance comparisons:

iMDCT, PFA:
101127 decicycles in speed,   32765 runs,      3 skips
iMDCT, Old:
211022 decicycles in speed,   32768 runs,      0 skips

Standalone FFT, 300000 transforms of size 960:
    PFA        Old FFT     kiss_fft    libfftw3f
    3.659695s, 15.726912s, 13.300789s, 1.182222s

Being only 3x slower than libfftw3f is a big achievement by itself.

There appears to be something capping the performance in the iMDCT side
of things, possibly during the pre-stage reindexing. However, it is
certainly fast enough for now.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agoimdct15: remove the AArch64 assembly
Rostislav Pehlivanov [Wed, 4 Jan 2017 01:16:11 +0000 (01:16 +0000)]
imdct15: remove the AArch64 assembly

Prep work for the next commit, which will add a new FFT algorithm
which makes the iMDCT over 3x faster than it is currently (standalone,
the FFT is with some framesizes over 10x faster).

The new FFT algorithm uses the already thouroughly SIMD'd power of two
FFT which already has SIMD for AArch64, so users of that platform will
still see an improvement.

The previous FFT+SIMD was barely 2.5x faster than the C versions on these
platforms.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agoavformat/hlsenc: fix Explicit null dereferenced in hlsenc
Steven Liu [Thu, 5 Jan 2017 22:29:12 +0000 (06:29 +0800)]
avformat/hlsenc: fix Explicit null dereferenced in hlsenc

CID: 1398228
Passing null pointer dirname to strlen, which dereferences it.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agodxva2: make ff_dxva2_get_surface() static and rename it
Steve Lhomme [Wed, 4 Jan 2017 13:36:41 +0000 (14:36 +0100)]
dxva2: make ff_dxva2_get_surface() static and rename it

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agodoc/muxers/hlsenc: typo hls_flag: discont_starts => discont_start
Bela Bodecs [Thu, 5 Jan 2017 12:21:13 +0000 (13:21 +0100)]
doc/muxers/hlsenc: typo hls_flag: discont_starts => discont_start

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agovformat/hlsenc: typo in default localtime pattern
Bela Bodecs [Thu, 5 Jan 2017 11:25:38 +0000 (19:25 +0800)]
vformat/hlsenc: typo in default localtime pattern

in get_default_pattern_localtime_fmt the default pattern contains
%Y%m%d%H%I%S but the original intention was %Y%m%d%H%M%S

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agolavc/Makefile: Clean up the amv encoder dependencies.
Carl Eugen Hoyos [Thu, 5 Jan 2017 11:17:54 +0000 (12:17 +0100)]
lavc/Makefile: Clean up the amv encoder dependencies.

2 years agoavcodec/bitstream: Document the values supported for *_size in ff_init_vlc_sparse()
Michael Niedermayer [Thu, 5 Jan 2017 10:57:17 +0000 (11:57 +0100)]
avcodec/bitstream: Document the values supported for *_size in ff_init_vlc_sparse()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavcodec/bitstream: assert that *_size in ff_init_vlc_sparse() is valid
Michael Niedermayer [Thu, 5 Jan 2017 10:56:00 +0000 (11:56 +0100)]
avcodec/bitstream: assert that *_size in ff_init_vlc_sparse() is valid

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoconfigure: Fix standalone compilation of the ljpeg encoder.
Carl Eugen Hoyos [Thu, 5 Jan 2017 10:44:04 +0000 (11:44 +0100)]
configure: Fix standalone compilation of the ljpeg encoder.

Also fixes compilation with --disable-error-resilience.
Fixes ticket #6060.

2 years agoavformat/hlsenc: fix memleak in hlsenc
Steven Liu [Thu, 5 Jan 2017 09:08:09 +0000 (17:08 +0800)]
avformat/hlsenc: fix memleak in hlsenc

fix CID: 1398364 Resource leak
refine the code of the new options

Reviewed-by: Bodecs Bela <bodecsb@vivanet.hu>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agoavformat/hlsenc: bugfix in duplicate filename detection
Bela Bodecs [Wed, 4 Jan 2017 23:39:00 +0000 (07:39 +0800)]
avformat/hlsenc: bugfix in duplicate filename detection

A wrong, unitialized variable is used for testing. This patch fixes this
typo.

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agoavfilter/avf_aphasemeter: fix memleaks
Paul B Mahol [Wed, 4 Jan 2017 12:15:19 +0000 (13:15 +0100)]
avfilter/avf_aphasemeter: fix memleaks

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agolavf/matroska: Fix the codec_id for mkv tag A_MPEG/L1.
Carl Eugen Hoyos [Tue, 3 Jan 2017 02:43:34 +0000 (03:43 +0100)]
lavf/matroska: Fix the codec_id for mkv tag A_MPEG/L1.

When the mapping was originally added AV_CODEC_ID_MP1 did not exist.

2 years agoavformat/hlsenc: size and duration in segment filenames
Bela Bodecs [Tue, 3 Jan 2017 14:57:51 +0000 (22:57 +0800)]
avformat/hlsenc: size and duration in segment filenames

1st:
This patch makes it possible to put actual segment file size (measured
in bytes) and/or duration (calculated in microseconds) into segment
filenames. This feature is useful when post-processing live streaming
access log files. New behaviour works only when -use_localtime option
is set and second_level_segment_size or/and
second_level_segment_duration new hls_flags are specified. %%s is the
placeholder for size and %%t for duration in hls_segment_filename
option. Fix sized trailing zeropadding also works eg. %%09s or %%023t.

A command to test new features:
./ffmpeg -loglevel info -y -f lavfi -i color=c=red:size=640x480:r=25 -f
lavfi -i sine=f=440:b=4:r=44100 -c:v mpeg2video -g 25 -acodec aac
-cutoff 20000 -ac 2 -ar 44100 -ab 192k -f hls -hls_time 3 -hls_list_size
5 -hls_flags
second_level_segment_index+second_level_segment_size+second_level_segment_duration
-use_localtime 1 -use_localtime_mkdir 1 -hls_segment_filename
"segment_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts" stream.m3u8

2nd:
doc/muxers: beside second_level_segment_duration and second_level_segment_size,
added some more details and example to hls_segment_filename,
use_localtime, use_localtime_mkdir, hls_flags. hls_flags option list
reformatted to table

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2 years agoavformat/avidec: clean-up identifier names
Tobias Rapp [Thu, 22 Dec 2016 13:16:30 +0000 (14:16 +0100)]
avformat/avidec: clean-up identifier names

Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavformat/flvenc: Check for extradata allocation failure
Michael Niedermayer [Tue, 3 Jan 2017 02:03:31 +0000 (03:03 +0100)]
avformat/flvenc: Check for extradata allocation failure

Fixes CID1396539

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agowmavoice: validate block alignment
Andreas Cadhalpun [Sun, 1 Jan 2017 21:48:38 +0000 (22:48 +0100)]
wmavoice: validate block alignment

This prevents a division by zero crash in wmavoice_decode_packet.

The problem was introduced by commit
3deb4b54a24f8cddce463d9f5751b01efeb976af.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2 years agowmavoice: truncate spillover_nbits if too large
Andreas Cadhalpun [Sun, 1 Jan 2017 21:42:44 +0000 (22:42 +0100)]
wmavoice: truncate spillover_nbits if too large

This fixes triggering the av_assert0(ret <= tmp.size).

The problem was reintroduced by commit
7b27dd5c16de785297ce4de4b88afa0b6685f61d and originally fixed by
2a4700a4f03280fa8ba4fc0f8a9987bb550f0d1e.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2 years agoavcodec/x86/vc1dsp_mc: Fix build with NASM 2.09.10
Michael Niedermayer [Mon, 2 Jan 2017 20:34:33 +0000 (21:34 +0100)]
avcodec/x86/vc1dsp_mc: Fix build with NASM 2.09.10

make fate passes

Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavcodec/x86/imdct36: fix building with nasm 2.11.05
John Comeau [Sun, 1 Jan 2017 07:52:37 +0000 (23:52 -0800)]
avcodec/x86/imdct36: fix building with nasm 2.11.05

fixes `operation size not specified` errors as described here:
http://stackoverflow.com/questions/36854583/compiling-ffmpeg-for-kali-linux-2

I rebuilt again with yasm and made sure it didn't break that.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavformat/rtmphttp: fix bug for rtmphttp
Steven Liu [Mon, 2 Jan 2017 02:05:35 +0000 (10:05 +0800)]
avformat/rtmphttp: fix bug for rtmphttp

if the http server don't response the http command,
then the thread will be blocked and never be interrupted.

Reported-by: yinyunjiang <yinyunjiang1991@qq.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavfilter/vf_pad: Fix segfault if reconfiguration fails
Michael Niedermayer [Mon, 2 Jan 2017 17:19:54 +0000 (18:19 +0100)]
avfilter/vf_pad: Fix segfault if reconfiguration fails

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agolavc/psd: Support indexed files.
Carl Eugen Hoyos [Mon, 2 Jan 2017 10:39:21 +0000 (11:39 +0100)]
lavc/psd: Support indexed files.

Fixes ticket #6045.