ffmpeg.git
12 months agoavformat/dashenc: addition of segment index correction logic
Vishwanath Dixit [Wed, 11 Apr 2018 07:02:25 +0000 (12:32 +0530)]
avformat/dashenc: addition of segment index correction logic

The logic is applicable only when use_template is enabled and use_timeline
is disabled. The logic monitors the flow of segment indexes. If a streams's
segment index value is not at the expected real time position, then
the logic corrects that index value.

Typically this logic is needed in live streaming use cases. The network
bandwidth fluctuations are common during long run streaming. Each
fluctuation can cause the segment indexes fall behind the expected real
time position. Without this logic, players will not be able to consume
the content, even after encoder's network condition comes back to
normal state.

12 months agoavformat/dashenc: addition of muxer overhead for @bandwidth param in MPD
Vishwanath Dixit [Wed, 11 Apr 2018 07:02:19 +0000 (12:32 +0530)]
avformat/dashenc: addition of muxer overhead for @bandwidth param in MPD

12 months agoavformat/dashenc: constructing MPD's bandwidth string locally
Vishwanath Dixit [Wed, 11 Apr 2018 07:02:11 +0000 (12:32 +0530)]
avformat/dashenc: constructing MPD's bandwidth string locally

12 months agoavformat/dashenc: addition of muxer overhead in master playlist's bandwidth
Vishwanath Dixit [Wed, 11 Apr 2018 07:02:03 +0000 (12:32 +0530)]
avformat/dashenc: addition of muxer overhead in master playlist's bandwidth

12 months agoavformat/dashenc: logic to compute muxer overhead
Vishwanath Dixit [Wed, 11 Apr 2018 07:01:55 +0000 (12:31 +0530)]
avformat/dashenc: logic to compute muxer overhead

12 months agoavformat/dashenc: addition of @availabilityTimeOffset in MPD
Vishwanath Dixit [Wed, 11 Apr 2018 07:01:47 +0000 (12:31 +0530)]
avformat/dashenc: addition of @availabilityTimeOffset in MPD

availability time of Nth segment = availabilityStartTime + (N*segment duration) - availabilityTimeOffset.
This field helps to reduce the latency by about a segment duration in streaming mode.

12 months agoavformat/dashenc: setting @availabilityStartTime when the first frame is ready
Vishwanath Dixit [Wed, 11 Apr 2018 07:01:36 +0000 (12:31 +0530)]
avformat/dashenc: setting @availabilityStartTime when the first frame is ready

@availabilityStartTime specifies the anchor for the computation of the earliest
availability time (in UTC) for any Segment in the Media Presentation.

As per this requirement, the @AvailabilityStartTime should be set to the
wallclock time at which the first frame of the first segment begins encoding.
But, it was getting set only when the first segment was completely ready. Making
the required correction in this patch. This correction is mainly needed to reduce
the latency in live streaming use cases.

12 months agoavformat/dashenc: removed 'write_manifest' call from 'write_header'
Vishwanath Dixit [Wed, 11 Apr 2018 07:01:26 +0000 (12:31 +0530)]
avformat/dashenc: removed 'write_manifest' call from 'write_header'

Calling 'write_manifest' from 'write_header' was causing creation of
first MPD with invalid values. Ex: zero @duration param value. Also,
the manifest files (MPD or M3U8s) should be created when at-least
one media frame is ready for consumption.

12 months agoavformat/dashenc: writing average segment duration for @duration in template mode
Vishwanath Dixit [Wed, 11 Apr 2018 07:00:29 +0000 (12:30 +0530)]
avformat/dashenc: writing average segment duration for @duration in template mode

12 months agoavformat/dashenc: segmentation at the configured segment duration rate
Vishwanath Dixit [Wed, 11 Apr 2018 07:00:18 +0000 (12:30 +0530)]
avformat/dashenc: segmentation at the configured segment duration rate

When use_template is enabled and use_timeline is disabled, typically
it is required to generate the segments at the configured segment duration
rate on an average. This commit is particularly needed to handle the
segmentation when video frame rates are fractional like 29.97 or 59.94 fps.

12 months agoavformat/dashenc: replacing 'min_seg_duration' with 'seg_duration'
Vishwanath Dixit [Mon, 16 Apr 2018 05:25:45 +0000 (10:55 +0530)]
avformat/dashenc: replacing 'min_seg_duration' with 'seg_duration'

There are use cases where average segment duration needs to be configured
and muxer is expected to maintain the average segment duration. So, using
the name 'min_seg_duration' will be misleading. So, changing the parameter
name to 'seg_duration', where it can be minimum segment duration or average
segment duration based on the use-case. The additional updates needed for
this functinality are made the sub-sequent patches of this patch series.

12 months agoavformat/hls: clean up duplicate option fields
Richard Shaffer [Tue, 17 Apr 2018 06:40:06 +0000 (14:40 +0800)]
avformat/hls: clean up duplicate option fields

The HLSContext struct contains fields which duplicate the data stored in the
avio_opts field. This change removes those fields in favor of avio_opts, and
updates the code accordingly.
The original patch caused the buffer pointed to by new_cookies in open_url to be
leaked. The only thing that buffer is used for is to store the value until it
can be passed to av_dict_set. To fix the leak, v2 of the patch simply calls
av_dict_set with the AV_DICT_DONT_STRDUP_VAL flag, so that the dictionary takes
ownership of the memory instead of copying it again.

Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: Richard Shaffer <rshaffer@tunein.com>
12 months agoavformat/hls: copy rw_timeout from parent to child AVIOContexts.
Richard Shaffer [Tue, 17 Apr 2018 06:39:26 +0000 (14:39 +0800)]
avformat/hls: copy rw_timeout from parent to child AVIOContexts.

The rw_timeout option is currently not applied when opening media playlist,
segment, or encryption key URLs. This can cause the HLS demuxer to block
indefinitely, even when the rw_timeout option has been specified. This change
simply enables carrying over the rw_timeout option when the demuxer opens these
URLs.

Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: Richard Shaffer <rshaffer@tunein.com>
12 months agolibavformat/dashdec: Avoid multiple HTTP requests for initialization segment that...
sanilraut [Tue, 17 Apr 2018 06:36:45 +0000 (14:36 +0800)]
libavformat/dashdec: Avoid multiple HTTP requests for initialization segment that is common among all representations

Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: sanilraut <raut.sanil@gmail.com>
12 months agoRevert "avformat/hls: copy rw_timeout from parent to child AVIOContexts."
Steven Liu [Tue, 17 Apr 2018 06:33:36 +0000 (14:33 +0800)]
Revert "avformat/hls: copy rw_timeout from parent to child AVIOContexts."

This reverts commit 36deec010cc87c8990477e1703dbf785212992b5.

12 months agoRevert "avformat/dashdec: Avoid multiple HTTP requests for initialization segment...
Steven Liu [Tue, 17 Apr 2018 06:32:27 +0000 (14:32 +0800)]
Revert "avformat/dashdec: Avoid multiple HTTP requests for initialization segment that is common among all representations"

This reverts commit 4effd1c4a2c52a68c25ed0bc5474f6b4c64fd644.

12 months agoavformat/hls: copy rw_timeout from parent to child AVIOContexts.
Steven Liu [Tue, 17 Apr 2018 06:25:07 +0000 (14:25 +0800)]
avformat/hls: copy rw_timeout from parent to child AVIOContexts.

The rw_timeout option is currently not applied when opening media playlist,
segment, or encryption key URLs. This can cause the HLS demuxer to block
indefinitely, even when the rw_timeout option has been specified. This change
simply enables carrying over the rw_timeout option when the demuxer opens these
URLs.

Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: Richard Shaffer <rshaffer@tunein.com>
12 months agoavformat/dashdec: Avoid multiple HTTP requests for initialization segment that is...
Steven Liu [Tue, 17 Apr 2018 06:19:00 +0000 (14:19 +0800)]
avformat/dashdec: Avoid multiple HTTP requests for initialization segment that is common among all representations

Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: sanilraut <raut.sanil@gmail.com>
12 months agoavformat/hls: remove redundant code
Steven Liu [Tue, 17 Apr 2018 05:16:33 +0000 (13:16 +0800)]
avformat/hls: remove redundant code

Reviewed-by: Jun Zhao <mypopydev@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
12 months agoconfigure: add nvcc to CMDLINE_SET
Timo Rothenpieler [Mon, 16 Apr 2018 20:35:23 +0000 (22:35 +0200)]
configure: add nvcc to CMDLINE_SET

This was somehow forgotten and nobody noticed until now.

12 months agodoc/APIchanges: Fix typos in hashes
Michael Niedermayer [Mon, 16 Apr 2018 16:23:12 +0000 (18:23 +0200)]
doc/APIchanges: Fix typos in hashes

Thanks-to: Moritz Barsnick <barsnick@gmx.net> for finding the correct ones

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavfilter/af_afir: make max IR length configurable
Paul B Mahol [Mon, 16 Apr 2018 17:06:09 +0000 (19:06 +0200)]
avfilter/af_afir: make max IR length configurable

Also increase max allowed dry/wet value.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavformat/flacenc: add flac_init()
James Almer [Mon, 16 Apr 2018 15:44:35 +0000 (12:44 -0300)]
avformat/flacenc: add flac_init()

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoavformat/flacenc: support writing attached pictures
Rodger Combs [Wed, 4 Apr 2018 04:17:24 +0000 (01:17 -0300)]
avformat/flacenc: support writing attached pictures

Usage of packet queueing API and some cleaning done by the committer.

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoavfilter/af_headphone: switch to activate
Paul B Mahol [Mon, 16 Apr 2018 14:08:55 +0000 (16:08 +0200)]
avfilter/af_headphone: switch to activate

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavformat/movenc: forbid muxing AV1 streams until the spec is finished
James Almer [Mon, 16 Apr 2018 00:33:44 +0000 (21:33 -0300)]
avformat/movenc: forbid muxing AV1 streams until the spec is finished

This prevents creating potentially broken files, as both the AV1 and
the AV1 in ISOMBFF specs are unfinished.

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoconfigure: extend the check for bcrypt
James Almer [Sun, 15 Apr 2018 23:33:37 +0000 (20:33 -0300)]
configure: extend the check for bcrypt

Some old mingw-w64 builds seem to provide an incomplete implementation
of the API. Add an extra check to make sure it's disabled for those.

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoBump minor versions after release/4.0 branching n4.1-dev
Michael Niedermayer [Mon, 16 Apr 2018 09:57:36 +0000 (11:57 +0200)]
Bump minor versions after release/4.0 branching

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoBump minor versions for branching release/4.0
Michael Niedermayer [Mon, 16 Apr 2018 09:47:03 +0000 (11:47 +0200)]
Bump minor versions for branching release/4.0

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agodoc/APIchanges: Add 4.0 cut point
Michael Niedermayer [Mon, 16 Apr 2018 10:21:39 +0000 (12:21 +0200)]
doc/APIchanges: Add 4.0 cut point

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agodoc/APIchanges: Fill in missing stuff
Michael Niedermayer [Mon, 16 Apr 2018 10:06:47 +0000 (12:06 +0200)]
doc/APIchanges: Fill in missing stuff

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavfilter/showvolume : cosmetic move bracket after func declaration to a new line
Martin Vignali [Mon, 16 Apr 2018 09:33:14 +0000 (11:33 +0200)]
avfilter/showvolume : cosmetic move bracket after func declaration to a new line

12 months agoavfilter/showvolume : add persistent max display
Martin Vignali [Mon, 16 Apr 2018 09:32:48 +0000 (11:32 +0200)]
avfilter/showvolume : add persistent max display

draw a color line for the max level in the given duration

12 months agoavfilter/showvolume : add display scale option
Martin Vignali [Mon, 16 Apr 2018 09:31:43 +0000 (11:31 +0200)]
avfilter/showvolume : add display scale option

linear (current behaviour) or log display (more close to classic audio meter)

12 months agoavfilter/af_headphone: fix type=time with hrir=multich
Paul B Mahol [Mon, 16 Apr 2018 07:31:11 +0000 (09:31 +0200)]
avfilter/af_headphone: fix type=time with hrir=multich

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavformat/hlsenc: avformat/hlsenc: add error message for encrypt fmp4 mode
Steven Liu [Mon, 16 Apr 2018 06:35:14 +0000 (14:35 +0800)]
avformat/hlsenc: avformat/hlsenc: add error message for encrypt fmp4 mode

and refine the warning message when use both hls_key_info_file and hls_enc

Reviewed-by: Gyan Doshi <ffmpeg@gyani.pro>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
12 months agoamfenc: Remove spurious initialisations
Mark Thompson [Sat, 14 Apr 2018 14:46:15 +0000 (15:46 +0100)]
amfenc: Remove spurious initialisations

Also minor cosmetics.

12 months agoamfenc: Add DXVA2 hardware frame input support
Alexander Kravchenko [Sat, 14 Apr 2018 14:46:10 +0000 (15:46 +0100)]
amfenc: Add DXVA2 hardware frame input support

Adds support for AMF initialisation from a DXVA2 (Direct3D9) device, and
then allows passing DXVA2 surfaces into an AMF encoder.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
12 months agoamfenc: Ensure that the software format of hardware frames is valid
Alexander Kravchenko [Sat, 14 Apr 2018 14:46:05 +0000 (15:46 +0100)]
amfenc: Ensure that the software format of hardware frames is valid

Signed-off-by: Mark Thompson <sw@jkqxz.net>
12 months agoamfenc: Do not automatically download/upload unknown hardware input frames
Mark Thompson [Sat, 14 Apr 2018 14:46:00 +0000 (15:46 +0100)]
amfenc: Do not automatically download/upload unknown hardware input frames

Supplying a hardware input frame which is not in the input hardware frames
context is not allowed by the API, so additional code to handle it is not
necessary.  Further, handling it automatically results in very low
performance - it is more appropriate to fail immediately so that the user
can fix their incorrect setup.

12 months agoamfenc: Fail to open if the user-supplied device is not usable
Mark Thompson [Sat, 14 Apr 2018 14:45:55 +0000 (15:45 +0100)]
amfenc: Fail to open if the user-supplied device is not usable

If the user supplies a device or frames context then it is an error
not to use it; this is consistent with other hardware components.

Also factorise out the D3D11 initialisation and improve error
messages.

12 months agoconfigure: fix clang-cl detection
Alexander Bilyak [Thu, 1 Feb 2018 10:52:24 +0000 (11:52 +0100)]
configure: fix clang-cl detection

When using clang-cl it expects parameters passed in MSVC-style, so appropriate toolchain should be selected.
As soon as both clang and clang-cl report themselfs as "clang" with -v option the only chance to detect
clang-cl is passing -? option to both which is valid for clang-cl.exe and not for clang.exe.

Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavfilter/af_headphone: add single hrir multichannel stream mode
Paul B Mahol [Sun, 15 Apr 2018 10:48:12 +0000 (12:48 +0200)]
avfilter/af_headphone: add single hrir multichannel stream mode

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavcodec/nvdec: correctly set intra_pic_flag for h264/hevc
Timo Rothenpieler [Fri, 13 Apr 2018 17:39:24 +0000 (19:39 +0200)]
avcodec/nvdec: correctly set intra_pic_flag for h264/hevc

12 months agoavcodec/aac_ac3_parser: account for data already in the parsing buffer
Hendrik Leppkes [Thu, 5 Apr 2018 15:09:35 +0000 (17:09 +0200)]
avcodec/aac_ac3_parser: account for data already in the parsing buffer

If a frame starts very close to a packet boundary, the start code may
already have been added to the parsing buffer, indicated by a small
negative value of "i", while the header is still being tracked in the
"state" variable.

Reduce the remaining size accordingly, otherwise trying to find the next
frame could skip over the frame header and lump two frames together as
one.

12 months agoavcodec/dxv: add support for "high" quality mode
Paul B Mahol [Thu, 5 Apr 2018 14:44:28 +0000 (16:44 +0200)]
avcodec/dxv: add support for "high" quality mode

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavutil/random_seed: use bcrypt instead of the old wincrypt API
Steve Lhomme [Tue, 3 Apr 2018 09:44:25 +0000 (11:44 +0200)]
avutil/random_seed: use bcrypt instead of the old wincrypt API

Remove the wincrypt API calls since we don't support XP anymore and bcrypt is
available since Vista, even on Windows Store builds.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoavfilter/af_headphone: fix memory leak and overread
Paul B Mahol [Sat, 14 Apr 2018 17:42:16 +0000 (19:42 +0200)]
avfilter/af_headphone: fix memory leak and overread

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavfilter/af_headphone: do not output invalid samples when flushing
Paul B Mahol [Sat, 14 Apr 2018 16:38:54 +0000 (18:38 +0200)]
avfilter/af_headphone: do not output invalid samples when flushing

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavfilter/af_headphone: fix flushing
Paul B Mahol [Sat, 14 Apr 2018 15:49:54 +0000 (17:49 +0200)]
avfilter/af_headphone: fix flushing

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavfilter/af_headphone: improve performance and reduce latency
Paul B Mahol [Sat, 14 Apr 2018 15:25:06 +0000 (17:25 +0200)]
avfilter/af_headphone: improve performance and reduce latency

Remove not needed code.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agotests/checkasm/checkasm: Provide verbose failure information on float_near_abs_eps...
Michael Niedermayer [Fri, 13 Apr 2018 00:34:01 +0000 (02:34 +0200)]
tests/checkasm/checkasm: Provide verbose failure information on float_near_abs_eps() failures

This will make understanding failures and adjusting EPS easier

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavformat/utils: use the existing packet reference when parsing complete frames
James Almer [Thu, 12 Apr 2018 03:06:30 +0000 (00:06 -0300)]
avformat/utils: use the existing packet reference when parsing complete frames

If the parser returns full frames, then the output pointer retured by
av_parser_parse2() is guaranteed to point to data contained in the
input packet's buffer.

Create a new reference to said buffer in that case, to avoid
unnecessary data copy when queueing the packet later in the function.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit '8f144d9e3d5cb2ca92e5bdf7cc9f72effa1bd2ce'
James Almer [Fri, 13 Apr 2018 23:59:12 +0000 (20:59 -0300)]
Merge commit '8f144d9e3d5cb2ca92e5bdf7cc9f72effa1bd2ce'

* commit '8f144d9e3d5cb2ca92e5bdf7cc9f72effa1bd2ce':
  Drop Windows XP support remnants

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit 'c7ab6aff66cba2f265f656ce8d56aa428d4ada76'
James Almer [Fri, 13 Apr 2018 23:53:31 +0000 (20:53 -0300)]
Merge commit 'c7ab6aff66cba2f265f656ce8d56aa428d4ada76'

* commit 'c7ab6aff66cba2f265f656ce8d56aa428d4ada76':
  w32pthreads: always use Vista+ API, drop XP support

This commit is a noop, see 9b121dfc32810250938021952aab4172a988cb56

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit 'c31f6b1d61759436ef50c094e7f4c8005e97614a'
James Almer [Fri, 13 Apr 2018 23:44:56 +0000 (20:44 -0300)]
Merge commit 'c31f6b1d61759436ef50c094e7f4c8005e97614a'

* commit 'c31f6b1d61759436ef50c094e7f4c8005e97614a':
  avprobe: Print a user-friendly version of the display matrix
  avprobe: Support printing strings with empty keys

This commit is a noop. ffprobe is considerably different than avprobe
and is already printing display matrix values in a user readable way.

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit 'cc06f7bd10c236539b4f6f87b795c459dd873770'
James Almer [Fri, 13 Apr 2018 23:41:00 +0000 (20:41 -0300)]
Merge commit 'cc06f7bd10c236539b4f6f87b795c459dd873770'

* commit 'cc06f7bd10c236539b4f6f87b795c459dd873770':
  libx265: Support tiny video sizes

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit '54307b35311e9a871b3d8ecb2b2eecfc16de0163'
James Almer [Fri, 13 Apr 2018 23:38:46 +0000 (20:38 -0300)]
Merge commit '54307b35311e9a871b3d8ecb2b2eecfc16de0163'

* commit '54307b35311e9a871b3d8ecb2b2eecfc16de0163':
  lavc/qsvdec: set complete_frame flags for progressive picture

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit 'cca5e4f040971db6de0bfe6968f00c021d8a9c42'
James Almer [Fri, 13 Apr 2018 23:34:23 +0000 (20:34 -0300)]
Merge commit 'cca5e4f040971db6de0bfe6968f00c021d8a9c42'

* commit 'cca5e4f040971db6de0bfe6968f00c021d8a9c42':
  qsv: adding Multi Frame Encode support

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit '29a8ed766354c45c9be4b8512c5b2eb25a450cdc'
James Almer [Fri, 13 Apr 2018 22:58:47 +0000 (19:58 -0300)]
Merge commit '29a8ed766354c45c9be4b8512c5b2eb25a450cdc'

* commit '29a8ed766354c45c9be4b8512c5b2eb25a450cdc':
  lavf/qsvvpp: bypass vpp if not needed.

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit '52ed83fa1a7f5170447eff6fad0b6c57119596e9'
James Almer [Fri, 13 Apr 2018 22:58:05 +0000 (19:58 -0300)]
Merge commit '52ed83fa1a7f5170447eff6fad0b6c57119596e9'

* commit '52ed83fa1a7f5170447eff6fad0b6c57119596e9':
  lavc/qsvdec: expose frame pic_type and key_frame

Merged-by: James Almer <jamrial@gmail.com>
12 months agoMerge commit 'b0958698ea2b976063cb1d683becc213040c709b'
James Almer [Fri, 13 Apr 2018 22:54:29 +0000 (19:54 -0300)]
Merge commit 'b0958698ea2b976063cb1d683becc213040c709b'

* commit 'b0958698ea2b976063cb1d683becc213040c709b':
  libaom: remove references to RGB pixfmts
  libaom: remove references to yuv440p pixfmt

This commit is a noop, see d039d7d4a4a56861e210761902bcf0617e0800fa

Merged-by: James Almer <jamrial@gmail.com>
12 months agoavformat/utils: Check cur_dts in update_initial_timestamps() more
Michael Niedermayer [Fri, 13 Apr 2018 09:38:48 +0000 (11:38 +0200)]
avformat/utils: Check cur_dts in update_initial_timestamps() more

Fixes: runtime error: signed integer overflow: 18133149658382192 - -9223090561878065151 cannot be represented in type 'long long'
Fixes: crbug 831552

Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/utils: Enforce minimum width also for VP5/6
Michael Niedermayer [Wed, 11 Apr 2018 17:50:52 +0000 (19:50 +0200)]
avcodec/utils: Enforce minimum width also for VP5/6

Fixes: out of array access
Fixes: poc_0411

Found-by: GwanYeong Kim <gy741.kim@gmail.com>
Tested-by: GwanYeong Kim <gy741.kim@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/truemotion2: Propagate out of bounds error from GET_TOK()
Michael Niedermayer [Tue, 10 Apr 2018 20:24:03 +0000 (22:24 +0200)]
avcodec/truemotion2: Propagate out of bounds error from GET_TOK()

Fixes: Timeout
Fixes: 6389/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TRUEMOTION2_fuzzer-5695918121680896

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavformat/utils: Fix integer overflow in end time calculation in update_stream_timings()
Michael Niedermayer [Wed, 11 Apr 2018 16:55:57 +0000 (18:55 +0200)]
avformat/utils: Fix integer overflow in end time calculation in update_stream_timings()

Fixes: crbug 829153

Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agotests/fate/filter-video: Use a bitexact/lossless input sample for fate-filter-metadat...
Michael Niedermayer [Fri, 13 Apr 2018 13:50:54 +0000 (15:50 +0200)]
tests/fate/filter-video: Use a bitexact/lossless input sample for fate-filter-metadata-silencedetect

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavformat/utils: Stream specifier enhancement 2.
Bela Bodecs [Fri, 13 Apr 2018 10:11:32 +0000 (12:11 +0200)]
avformat/utils: Stream specifier enhancement 2.

In some cases, mainly working with multiprogram mpeg-ts containers as
input, it would be handy to select sub stream of a specific program by
their metadata.
This patch makes it possible to narrow the stream selection among
streams of the specified program by stream metadata.

Examples:
p:601:m:language:hun  will select all sub streams of program with id 601
where sub streams have metadata key named 'language' with value 'hun'.
p:602:m:guide  will select all sub streams of program with id 602 where
sub streams have metadata key named 'guide'.

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoMAINTAINERS: add myself to documentation section
Gyan Doshi [Wed, 11 Apr 2018 16:16:03 +0000 (21:46 +0530)]
MAINTAINERS: add myself to documentation section

Signed-off-by: Lou Logan <lou@lrcd.com>
12 months agoconfigure: make the C11 atomics check more robust
Michael Niedermayer [Fri, 13 Apr 2018 14:04:40 +0000 (11:04 -0300)]
configure: make the C11 atomics check more robust

C11 atomics allow direct access. This check should prevent the usage
of bogus stdatomic.h available on some systems.

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoconfigure: disable direct stripping in OpenBSD
James Almer [Sat, 7 Apr 2018 21:52:02 +0000 (18:52 -0300)]
configure: disable direct stripping in OpenBSD

It appears strip -o creates new files without preserving permissions
from the source binary, resulting in non executable files.

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoavcodec/magicyuvenc: mark as experimental
Paul B Mahol [Fri, 13 Apr 2018 11:33:44 +0000 (13:33 +0200)]
avcodec/magicyuvenc: mark as experimental

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavcodec/vp9: add profile 2 10-bit DXVA2/D3D11 decoding support
Hendrik Leppkes [Mon, 29 May 2017 10:09:47 +0000 (12:09 +0200)]
avcodec/vp9: add profile 2 10-bit DXVA2/D3D11 decoding support

Fixes trac ticket #7099.

12 months agoavcodec/dxva2: add VP9 10-bit Profile2 mode mappings
Hendrik Leppkes [Wed, 11 Apr 2018 11:59:36 +0000 (13:59 +0200)]
avcodec/dxva2: add VP9 10-bit Profile2 mode mappings

12 months agoavcodec/nv{enc,dec}: use sane version checking macro
Timo Rothenpieler [Fri, 13 Apr 2018 07:36:49 +0000 (09:36 +0200)]
avcodec/nv{enc,dec}: use sane version checking macro

For some odd reason, the Nvidia version macros puts the minor version in
the msb, so comparing against it is impossible.

12 months agoavformat/hlsenc: add option hls_delete_threshold
Steven Liu [Fri, 13 Apr 2018 07:39:49 +0000 (15:39 +0800)]
avformat/hlsenc: add option hls_delete_threshold

When using hls_list_size with hls_flags delete_segments, currently
hls_list_size * 2 +- segments remain on disk. With this new option,
the amount of disk space used can be controlled by the user.

fix ticket: #7131

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: Aman Gupta <aman@tmm1.net>
12 months agoavcodec/nvdec_hevc: add support for new extended sps/pps flags from SDK 8.1
Timo Rothenpieler [Wed, 11 Apr 2018 11:47:27 +0000 (13:47 +0200)]
avcodec/nvdec_hevc: add support for new extended sps/pps flags from SDK 8.1

12 months agoavfilter: add vfrdet filter
Paul B Mahol [Wed, 20 Dec 2017 13:15:02 +0000 (14:15 +0100)]
avfilter: add vfrdet filter

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavcodec/mjpegdec: Check input buffer size.
Michael Niedermayer [Tue, 10 Apr 2018 14:12:15 +0000 (16:12 +0200)]
avcodec/mjpegdec: Check input buffer size.

Fixes: Timeout
Fixes: 6381/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_JPEGLS_fuzzer-5665032743419904

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/h264_slice: Fix integer overflow with last_poc
Michael Niedermayer [Fri, 6 Apr 2018 22:34:25 +0000 (00:34 +0200)]
avcodec/h264_slice: Fix integer overflow with last_poc

Fixes: signed integer overflow: 2147483646 - -2816 cannot be represented in type 'int'
Fixes: crbug 823145

Reported-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavformat/mov: Fix extradata memleak
Michael Niedermayer [Fri, 6 Apr 2018 21:56:57 +0000 (23:56 +0200)]
avformat/mov: Fix extradata memleak

Fixes: crbug 822705

Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agofate: to test program sub stream selection by its type in mpegts
Bela Bodecs [Wed, 11 Apr 2018 20:33:02 +0000 (22:33 +0200)]
fate: to test program sub stream selection by its type in mpegts

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavformat/utils: Stream specifier enhancement
Bela Bodecs [Sun, 1 Apr 2018 21:29:14 +0000 (23:29 +0200)]
avformat/utils: Stream specifier enhancement

Currently when specifying the program id you can only decide to select
all stream of the specified program (e.g. p:103 will select all streams
of program 103) or narrow the selection to a specific stream sub index
(e.g. p:145:1 will select 2nd stream of program 145.) But you can not
specify like all audio streams of program 145 or 3rd video stream of
program 311.
In some case, mainly working with multiprogram mpeg-ts containers as
input, this feature would be handy.
This patch makes it possible to narrow the stream selection among
streams of the specified program by stream type and optionally its
index. Handled types: a, v, s, d.
Examples: p:601:a  will select all audio streams of program 601,
p:603:a:1 will select 2nd audio streams of program 603,
p:604:v:0 will select first video stream of program 604.

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agodoc/filters: fix lenscorrection k1 & k2 typo
Lou Logan [Thu, 12 Apr 2018 20:44:49 +0000 (12:44 -0800)]
doc/filters: fix lenscorrection k1 & k2 typo

0 means no correction, not 0.5.

Also document ranges and defaults for options.

Signed-off-by: Lou Logan <lou@lrcd.com>
12 months agolavf/hlsproto: use ff_get_chomp_line
Jun Zhao [Mon, 9 Apr 2018 15:13:03 +0000 (23:13 +0800)]
lavf/hlsproto: use ff_get_chomp_line

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
12 months agolavf/hlsenc: use ff_get_chomp_line
Jun Zhao [Mon, 9 Apr 2018 15:12:16 +0000 (23:12 +0800)]
lavf/hlsenc: use ff_get_chomp_line

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
12 months agolavf/hls: use ff_get_chomp_line
Jun Zhao [Mon, 9 Apr 2018 15:11:02 +0000 (23:11 +0800)]
lavf/hls: use ff_get_chomp_line

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
12 months agolavf/aviobuf: add ff_get_chomp_line
Jun Zhao [Mon, 9 Apr 2018 15:05:42 +0000 (23:05 +0800)]
lavf/aviobuf: add ff_get_chomp_line

Same as ff_get_line but strip the white-space characters in the
string tail.

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
12 months agodoc: update loglevel option documentation
Tobias Rapp [Tue, 3 Apr 2018 07:24:21 +0000 (09:24 +0200)]
doc: update loglevel option documentation

Updates documentation after the changes to loglevel flag prefix parsing
in 4b736bc921ed96ad6d312ce0cbe0de29b9e3fe81.

Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
12 months agolibavformat/aac: Parse all ID3 tags present between ADTS frames
Mattias Amnefelt [Mon, 2 Apr 2018 09:30:40 +0000 (11:30 +0200)]
libavformat/aac: Parse all ID3 tags present between ADTS frames

Some ADTS streams can have multiple ID3 tags between frames. This
change parses all of them, rather than just the first one.

Signed-off-by: Mattias Amnefelt <mattiasa@avm.se>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/dpx: Support for RGB 12-bit packed decoding
Jérôme Martinez [Tue, 10 Apr 2018 16:20:23 +0000 (18:20 +0200)]
avcodec/dpx: Support for RGB 12-bit packed decoding

Limited to widths multiple of 8 (RGB) due to lack of test files for such corner case

This partially fixes ticket #5639

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoconfigure: Disable direct stripping for AIX.
Carl Eugen Hoyos [Thu, 12 Apr 2018 00:30:21 +0000 (02:30 +0200)]
configure: Disable direct stripping for AIX.

AIX strip doesn't know the option -o.

12 months agoavcodec/mpegpicture: fix "stride changed" failures in gray mode
Aman Gupta [Tue, 10 Apr 2018 17:17:52 +0000 (10:17 -0700)]
avcodec/mpegpicture: fix "stride changed" failures in gray mode

Before adding uvlinesize check, I was seeing failures decoding
some video with ffmpeg compiled with --enable-gray and using AV_CODEC_FLAG_GRAY.

[mpeg2video @ 0x7fa193818c00] get_buffer() failed (stride changed: linesize=1280/1280 uvlinesize=0/640)
[mpeg2video @ 0x7fa193818c00] get_buffer() failed (stride changed: linesize=1280/1280 uvlinesize=0/640)

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/nvenc: update required driver versions for nvenc
Timo Rothenpieler [Wed, 11 Apr 2018 12:28:36 +0000 (14:28 +0200)]
avcodec/nvenc: update required driver versions for nvenc

12 months agoavcodec/nvenc: add support for B frames as ref
Timo Rothenpieler [Wed, 11 Apr 2018 12:22:20 +0000 (14:22 +0200)]
avcodec/nvenc: add support for B frames as ref

12 months agospdifenc: support ac3 core+eac3 dependent streams
Hendrik Leppkes [Tue, 3 Apr 2018 10:35:27 +0000 (12:35 +0200)]
spdifenc: support ac3 core+eac3 dependent streams

Such streams are found on Blu-ray, and identified as EAC3 type in
avformat, while the bitstream of the core stream is actually a pure AC3
frame.

Adjust the parsing accordingly, since AC3 frames always hold 6 blocks
and the numblkscod syntax element is not present.

12 months agoavformat/hlsenc: fix handling of delete_segments when %v is present
Bela Bodecs [Wed, 11 Apr 2018 03:15:54 +0000 (11:15 +0800)]
avformat/hlsenc: fix handling of delete_segments when %v is present

When var_stream_map option is used, %v must appear either in segment
name template or in the directory path. This latter case currently is
not handled and delete_segments flag of hls_flags is broken now. This
patch fix this. The root cause of the bug was that HLSSegment struct
only stores the final filename part, but not the final directory path.
Most of the cases, final path info is unneded, It only necessary when
you want to delete old segments (e.g in case of live streaming).
Without variant streams it was unnecessary to store the final directory
path, because all segment were stored into the same directory. But
introducing %v in directory names either require to store the final
directory path into HLSSegment or associate segments with their variant
streams to be able deleting them later. I have choosen the second
solution and introduced a variant index data member into the segment
struct.

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Steven Liu <lq@onvideo.cn>
12 months agoavformat/movenc: use correct iTunes copyright atom
Timo Teräs [Tue, 3 Apr 2018 06:05:18 +0000 (09:05 +0300)]
avformat/movenc: use correct iTunes copyright atom

Support for writing copyright metadata was added in commit bed4fc54c9
for 3GP, MOV and iTunes metadata. 3GP and MOV cases are formally
specified. However, iTunes format does not have specification, and
it seems to have been assumed that it would use the same atom as
MOV (both being Apple formats).

However, Apple uses 'cprt' atom for iTunes metadata (do note that
the iTunes 'cprt' encoding is generic iTunes ItemList atom, not
the 3GP 'cprt' encoding. These are also inside different parent
atoms).

Most references trying to document iTunes atoms mention only
the 'cprt' tag. See:
 - http://atomicparsley.sourceforge.net/mpeg-4files.html
 - http://mutagen.readthedocs.io/en/latest/api/mp4.html

Same applies to other software supporting this tag. Most of them
encode and decode only the 'cprt' atom.

ffmpeg mov demuxer supports both atoms in this context. There are
few pieces of other software that support similarly both 'cprt' and
the incorrect '\251cpy' atom in this context. I believe they do it in
order to read the ffmpeg encoded incorrect copyright atom.

In light of the above this changes the copyright atom to 'cprt' as
it seems to be supported univerally and is the correct atom to use.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agolavc/libopusdec: Allow avcodec_open2 to call .close
Matt Wolenetz [Tue, 10 Apr 2018 20:59:25 +0000 (13:59 -0700)]
lavc/libopusdec: Allow avcodec_open2 to call .close

If there is a decoder initialization failure detected in avcodec_open2
after .init is called, allow graceful decoder .close to prevent leaking
libopus decoder allocations.

BUG=828526

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoconfigure: check for INIT_ONCE before enabling w32threads
James Almer [Sun, 8 Apr 2018 17:00:47 +0000 (14:00 -0300)]
configure: check for INIT_ONCE before enabling w32threads

Should fix compilation wiht some old mingw-w64 builds that
don't seem to define it.

Signed-off-by: James Almer <jamrial@gmail.com>