ffmpeg.git
9 months agoavcodec/aacdec_template: add more checks to make sure only 22.2 gets to 22.2
Jan Ekström [Tue, 18 Aug 2020 17:49:00 +0000 (20:49 +0300)]
avcodec/aacdec_template: add more checks to make sure only 22.2 gets to 22.2

Validates the set channel layout as well as verifies that the received
layout to the function matches the reference layout, so that it matches
the implemented re-ordering logic.

Fixes #8845

9 months agoavcodec/aacdec_template: keep tabs on layout in sniff_channel_order
Jan Ekström [Tue, 18 Aug 2020 17:25:03 +0000 (20:25 +0300)]
avcodec/aacdec_template: keep tabs on layout in sniff_channel_order

This way the layout set at various points can be checked instead
of only having the layout at the end.

9 months agoSet AVSTREAM_PARSE_HEADERS flag for AV1 MP4 streams
Vikas Agrawal [Fri, 21 Aug 2020 06:37:18 +0000 (12:07 +0530)]
Set AVSTREAM_PARSE_HEADERS flag for AV1 MP4 streams

It help initialize chroma format and other info properly
Chroma format wasn't correct if I use below code:
        avformat_find_stream_info(fmtc, NULL);
        iVideoStream = av_find_best_stream(fmtc, AVMEDIA_TYPE_VIDEO, -1, -1, NULL, 0);
        eChromaFormat = (AVPixelFormat)fmtc->streams[iVideoStream]->codecpar->format;

Signed-off-by: James Almer <jamrial@gmail.com>
9 months agofate: remove "-v 0" from ffprobe tests.
Nicolas George [Fri, 21 Aug 2020 11:03:50 +0000 (13:03 +0200)]
fate: remove "-v 0" from ffprobe tests.

9 months agodnn_backend_native_layer_mathbinary: add floormod support
Mingyu Yin [Sun, 23 Aug 2020 15:12:13 +0000 (23:12 +0800)]
dnn_backend_native_layer_mathbinary: add floormod support

Signed-off-by: Mingyu Yin <mingyu.yin@intel.com>
9 months agodnn_backend_native_layer_mathbinary: change to function pointer
Mingyu Yin [Sun, 23 Aug 2020 15:12:12 +0000 (23:12 +0800)]
dnn_backend_native_layer_mathbinary: change to function pointer

Signed-off-by: Mingyu Yin <mingyu.yin@intel.com>
9 months agoavcodec/av1_parser: read frame properties directly from AV1RawFrameHeader
James Almer [Sun, 23 Aug 2020 19:23:57 +0000 (16:23 -0300)]
avcodec/av1_parser: read frame properties directly from AV1RawFrameHeader

Simplifies code

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavcodec/cbs_av1: infer frame_type when parsing a show_existing_frame frame
James Almer [Sun, 23 Aug 2020 19:23:56 +0000 (16:23 -0300)]
avcodec/cbs_av1: infer frame_type when parsing a show_existing_frame frame

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavcodec/cbs_av1: infer frame sizes when not coded in the bitstream
James Almer [Sun, 23 Aug 2020 19:17:12 +0000 (16:17 -0300)]
avcodec/cbs_av1: infer frame sizes when not coded in the bitstream

This makes them available for all frames within a Temporal Unit.

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavfilter/af_aformat: Add uninit function
Andreas Rheinhardt [Sun, 9 Aug 2020 14:42:37 +0000 (16:42 +0200)]
avfilter/af_aformat: Add uninit function

Fixes memleaks in case init fails (e.g. because of invalid parameters
like 'aformat=sample_fmts=s16:cl=wtf') or also if query_formats is never
called.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/avfiltergraph: Remove unused macro parameter
Andreas Rheinhardt [Sun, 9 Aug 2020 13:21:25 +0000 (15:21 +0200)]
avfilter/avfiltergraph: Remove unused macro parameter

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter: Remove redundant ff_formats/channel_layouts_unref()
Andreas Rheinhardt [Fri, 7 Aug 2020 21:46:33 +0000 (23:46 +0200)]
avfilter: Remove redundant ff_formats/channel_layouts_unref()

ff_add_format() and ff_add_channel_layout() already unref the list upon
error.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/vf_hwdownload: Fix leak of formats list upon error
Andreas Rheinhardt [Fri, 7 Aug 2020 21:40:43 +0000 (23:40 +0200)]
avfilter/vf_hwdownload: Fix leak of formats list upon error

If adding the list of input formats to its AVFilterLink fails, the list
of output formats (which has not been attached to permanent storage yet)
leaks. This has been fixed by not creating the lists of in- and output
formats simultaneously. Instead creating said lists is relegated to
ff_formats_pixdesc_filter() (this also avoids the reallocations implicit
in using ff_add_format()) and the second list is only created after (and
if) the first list has been permanently attached to its AVFilterLink.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/formats: Fix double frees and memleaks on error
Andreas Rheinhardt [Fri, 7 Aug 2020 17:43:20 +0000 (19:43 +0200)]
avfilter/formats: Fix double frees and memleaks on error

The formats API deals with lists of channel layouts, sample rates,
pixel formats and sample formats. These lists are refcounted in a way in
which the list structure itself contains pointers to all of its owners.
Furthermore, it is possible for a list to be not owned by anyone yet;
this status is temporary until the list has been attached to an owner.
Adding an owner to a list involves reallocating the list's list of
owners and can therefore fail.

In order to reduce the amount of checks and cleanup code for the users
of this API, the API is supposed to be lenient when faced with input
lists that are NULL and it is supposed to clean up if adding an owner
to a list fails, so that a simple use case like

list = ff_make_format_list(foo_fmts);
if ((ret = ff_formats_ref(list, &ctx->inputs[0]->out_formats)) < 0)
    return ret;

needn't check whether list could be successfully allocated
(ff_formats_ref() return AVERROR(ENOMEM) if it couldn't) and it also
needn't free list if ff_formats_ref() couldn't add an owner for it.

But the cleaning up after itself was broken. The root cause was that
the refcount was decremented during unreferencing whether or not the
element to be unreferenced was actually an owner of the list or not.
This means that if the above sample code is continued by

if ((ret = ff_formats_ref(list, &ctx->inputs[1]->out_formats)) < 0)
    return ret;

and that if an error happens at the second ff_formats_ref() call, the
automatic cleaning of list will decrement the refcount from 1 (the sole
owner of list at this moment is ctx->input[0]->out_formats) to 0 and so
the list will be freed; yet ctx->input[0]->out_formats still points to
the list and this will lead to a double free/use-after-free when
ctx->input[0] is freed later.

Presumably in order to work around such an issue, commit
93afb338a405eac0f9e7b092bc26603378bfcca6 restricted unreferencing to
lists with owners. This does not solve the root cause (the above example
is not fixed by this) at all, but it solves some crashs.

This commit fixes the API: The list's refcount is only decremented if
an owner is removed from the list of owners and not if the
unref-function is called with a pointer that is not among the owners of
the list. Furtermore, the requirement for the list to have owners is
dropped.

This implies that if the first call to ff_formats_ref() in the above
example fails, the refcount which is initially zero during unreferencing
is not modified, so that the list will be freed automatically in said
call to ff_formats_ref() as every list whose refcount reaches zero is.

If on the other hand, the second call to ff_formats_ref() is the first
to fail, the refcount would stay at one during the automatic
unreferencing in ff_formats_ref(). The list would later be freed when
its last (and in this case sole) owner (namely
ctx->inputs[0]->out_formats) gets unreferenced.

The issues described here for ff_formats_ref() also affected the other
functions of this API. E.g. ff_add_format() failed to clean up after
itself if adding an entry to an already existing list failed (the case
of a freshly allocated list was handled specially and this commit also
removes said code). E.g. ff_all_formats() inherited the flaw.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/af_channelmap: Fix double-free of AVFilterChannelLayouts on error
Andreas Rheinhardt [Fri, 7 Aug 2020 16:54:18 +0000 (18:54 +0200)]
avfilter/af_channelmap: Fix double-free of AVFilterChannelLayouts on error

The query_formats function of the channelmap filter tries to allocate
a list of channel layouts which on success are attached to more permanent
objects (an AVFilterLink) for storage afterwards. If attaching succeeds,
the link becomes one of the common owners (in this case, the only owner)
of the list. Yet if the list has been successfully attached to the link
and an error happens lateron, the list was manually freed, which is wrong,
because it is owned by its link so that the link's pointer to the list will
become dangling and there will be a double-free/use-after-free when the link
is later cleaned up automatically.

This commit fixes this by removing the custom freeing code; this will
temporarily add a leaking codepath (if attaching the list fails, the list
will leak), but this will be fixed soon by making sure that an
AVFilterChannelLayouts without owner will be automatically freed when
attaching it to an AVFilterLink fails.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/vf_alphamerge: Fix double-free of AVFilterFormats on error
Andreas Rheinhardt [Fri, 7 Aug 2020 13:04:41 +0000 (15:04 +0200)]
avfilter/vf_alphamerge: Fix double-free of AVFilterFormats on error

The query_formats function of the alphamerge filter tries to allocate
two lists of formats which on success are attached to more permanent
objects (AVFilterLinks) for storage afterwards. If attaching a list
to an AVFilterLink succeeds, the link becomes one of the owners of
the list. Yet if attaching a list to one of its links succeeds and
an error happens lateron, both lists were manually freed, which is wrong
if the list is already owned by one or more links; these links' pointers
to their lists will become dangling and there will be a double-free/use-
after-free when these links are cleaned up automatically.

This commit fixes this by removing the custom freeing code; this will
temporarily add a leaking codepath (if attaching a list not already
owned by a link to a link fails, the list will leak), but this will
be fixed soon by making sure that an AVFilterFormats without owner will
be automatically freed when attaching it to an AVFilterLink fails.
At most one list leaks because as of this commit a new list is only
allocated after the old list has been successfully attached to a link.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/vf_overlay: Fix double-free of AVFilterFormats on error
Andreas Rheinhardt [Fri, 7 Aug 2020 12:42:57 +0000 (14:42 +0200)]
avfilter/vf_overlay: Fix double-free of AVFilterFormats on error

The query_formats function of the overlay filter tries to allocate
two lists (only one in a special case) of formats which on success
are attached to more permanent objects (AVFilterLinks) for storage
afterwards. If attaching a list to an AVFilterLink succeeds, it is
in turn owned by the AVFilterLink (or more exactly, the AVFilterLink
becomes one of the common owners of the list). Yet if attaching a list
to one of its links succeeds and an error happens lateron, both lists
were manually freed, whic is wrong if the list is already owned by one
or more links; these links' pointers to their lists will become dangling
and there will be a double-free/use-after-free when these links are
cleaned up automatically.

This commit fixes this by removing the custom freeing code; this will
temporarily add a leaking codepath (if attaching a list not already
owned by a link to a link fails, the list will leak), but this will
be fixed soon by making sure that an AVFilterFormats without owner will
be automatically freed when attaching it to an AVFilterLink fails.
Notice that at most one list leaks because a new list is only allocated
after the old list has been successfully attached to a link.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/vf_remap: Fix double-free of AVFilterFormats on error
Andreas Rheinhardt [Fri, 7 Aug 2020 12:21:56 +0000 (14:21 +0200)]
avfilter/vf_remap: Fix double-free of AVFilterFormats on error

The query_formats function of the remap filter tries to allocate
two lists of formats which on success are attached to more permanent objects
(AVFilterLinks) for storage afterwards. If attaching a list to an
AVFilterLink succeeds, it is in turn owned by the AVFilterLink (or more
exactly, the AVFilterLink becomes one of the common owners of the list).
Yet if attaching a list to one of its links succeeds and an error happens
lateron, both lists were manually freed, which means that is wrong if the
list is already owned by one or more links; these links' pointers to
their lists will become dangling and there will be a double-free/use-after-
free when these links are cleaned up automatically.

This commit fixes this by removing the custom free code; this will
temporarily add a leaking codepath (if attaching a list not already
owned by a link to a link fails, the list will leak), but this will
be fixed soon by making sure that an AVFilterFormats without owner will
be automatically freed when attaching it to an AVFilterLink fails.
Notice at most one list leaks because a new list is only allocated
after the old list has been successfully attached to a link.

Reviewed-by: Nicolas George <george@nsup.org>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/vf_showpalette: Fix double-free of AVFilterFormats on error
Andreas Rheinhardt [Fri, 7 Aug 2020 11:23:30 +0000 (13:23 +0200)]
avfilter/vf_showpalette: Fix double-free of AVFilterFormats on error

The query_formats function of the showpalette filter tries to allocate
two lists of formats which on success are attached to more permanent objects
(AVFilterLinks) for storage afterwards. If attaching a list to an
AVFilterLink succeeds, the link becomes one (in this case the only one)
of the owners of the list. Yet if attaching the first list to its link
succeeds and attaching the second list fails, both lists were manually
freed, which means that the first link's pointer to the first list
becomes dangling and there will be a double-free when the first link is
cleaned up automatically.

This commit fixes this by removing the custom free code; this will
temporarily add a leaking codepath (if attaching a list to a link fails,
the list will leak), but this will be fixed shortly by making sure that
an AVFilterFormats without owner will be automatically freed when
attaching it to an AVFilterLink fails. Notice at most one list leaks
because as of this commit a new list is only allocated after the old list
has been successfully attached to a link.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/af_amix: Fix double-free of AVFilterChannelLayouts on error
Andreas Rheinhardt [Fri, 7 Aug 2020 15:31:11 +0000 (17:31 +0200)]
avfilter/af_amix: Fix double-free of AVFilterChannelLayouts on error

The query_formats function of the amix filter tries to allocate a list
of channel layouts which are attached to more permanent objects
(an AVFilter's links) for storage afterwards on success. If attaching
a list to a link succeeds, the link becomes one of the common owners
of the list. Yet if a list has been successfully attached to links (or if
there were no links to attach it to in which case
ff_set_common_channel_layouts() already frees the list) and an error
happens lateron, the list was manually freed, which is wrong, because
the list has either already been freed or it is owned by its links in
which case these links' pointers to their list will become dangling and
there will be double-frees/uses-after-free when these links are cleaned
up automatically.

This commit fixes this by removing the custom freeing code; this is made
possible by using the list in ff_set_common_channel_layouts() directly
after its allocation (without anything that can fail in between).

Notice that ff_set_common_channel_layouts() is buggy itself which can
lead to double-frees on error. This is not fixed in this commit.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/af_amix: Don't needlessly reallocate table
Andreas Rheinhardt [Fri, 7 Aug 2020 14:08:42 +0000 (16:08 +0200)]
avfilter/af_amix: Don't needlessly reallocate table

Replace using ff_add_format() repeatedly by a single call to
ff_make_format_list(). (Right now this also fixes a memleak: If the
first ff_add_format() succeeds and a subsequent call fails, the list
leaks.)

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/vf_vpp_qsv: Fix leak of AVFilterFormats on error
Andreas Rheinhardt [Fri, 7 Aug 2020 03:54:34 +0000 (05:54 +0200)]
avfilter/vf_vpp_qsv: Fix leak of AVFilterFormats on error

The vpp_qsv's query_formats function allocated two AVFilterFormats,
before storing them permanently. If storing the first of them fails,
the function simply returns and the second leaks. This has been fixed by
only allocating the second AVFilterFormats structure after the first one
has been successfully stored.

Fixes Coverity issue #1422231.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/vf_paletteuse: Fix leaks of AVFilterFormats on error
Andreas Rheinhardt [Fri, 7 Aug 2020 04:09:59 +0000 (06:09 +0200)]
avfilter/vf_paletteuse: Fix leaks of AVFilterFormats on error

The paletteuse's query_formats function allocated three AVFilterFormats
before storing them permanently. If allocating one of them failed, the
three AVFilterFormats structures would be freed with av_freep() which
does not free separately allocated subelements (namely the formats
array) which leak.

Furthermore, if storing one of the first two fails, the function simply
returns and the ones not yet stored leak.

These leaks have been fixed by only creating a new AVFilterFormats after
the last one has already been permanently stored. Furthermore, it is
enough to check whether the elements have been properly stored as
ff_formats_ref() by design returns AVERROR(ENOMEM) if it is provided a
NULL AVFilterFormats *.

Fixes Coverity issues #1270818 and #1270819.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/graphparser: Fix memleak when linking filters fails
Andreas Rheinhardt [Sun, 23 Aug 2020 09:12:30 +0000 (11:12 +0200)]
avfilter/graphparser: Fix memleak when linking filters fails

Parsing labeled outputs involves a check for an already known match
(a labeled input with the same name) to pair them together. If yes,
it is attempted to create a link between the two filters; in this case
the AVFilterInOuts have fulfilled their purpose and are freed. Yet if
creating the link fails, these AVFilterInOuts have up until now not been
freed, although they had already been removed from their respective lists
(which means that they are not freed automatically). In other words:
They leak. This commit fixes this.

This fixes ticket #7084. Said ticket contains an example program to
reproduce a leak. It can also be reproduced with ffmpeg alone, e.g. with
the complex filters "[0]null[1],[2]anull[0]" or with "[0]abitscope[0]".
All of these three examples involve media type mismatches which make it
impossible to create the links. The bug could also be triggered by other
means, e.g. failure to allocate the necessary AVFilterLink.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agofftools/ffmpeg: Fix leak of AVFilterInOut in case of error
Andreas Rheinhardt [Sun, 23 Aug 2020 01:49:48 +0000 (03:49 +0200)]
fftools/ffmpeg: Fix leak of AVFilterInOut in case of error

The AVFilterInOuts normally get freed in init_output_filter() when
the corresponding streams get created; yet if an error happens before
one reaches said point, they leak. Therefore this commit makes
ffmpeg_cleanup free them, too.

Fixes ticket #8267.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/graphparser: Check allocations for success
Andreas Rheinhardt [Sat, 22 Aug 2020 23:51:22 +0000 (01:51 +0200)]
avfilter/graphparser: Check allocations for success

parse_filter() did not check the return value of av_get_token() for
success; in case name (the name of a filter) was NULL, one got a
segfault in av_strlcpy() (called from create_filter()).

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/graphparser: Don't set pointer to one beyond '\0' of string
Andreas Rheinhardt [Sat, 22 Aug 2020 22:31:17 +0000 (00:31 +0200)]
avfilter/graphparser: Don't set pointer to one beyond '\0' of string

This happened in parse_link_name() if there was a '[' without matching
']'. While this is not undefined behaviour (pointer arithmetic one
beyond the end of an array works fine as long as there are no accesses),
it is potentially dangerous. It currently isn't (all callers of
parse_link_name() treat this as an error and don't access the string any
more), but making sure that this will never cause trouble in the future
seems nevertheless worthwhile.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/graphparser: Fix leaks when parsing inputs fails
Andreas Rheinhardt [Sat, 22 Aug 2020 21:54:13 +0000 (23:54 +0200)]
avfilter/graphparser: Fix leaks when parsing inputs fails

parse_inputs() uses a temporary linked list to parse the labeled inputs
of a filter; said linked list owns its elements (and their names). On
success, the list of unlabeled inputs is appened to the end of the list
of labeled inputs and the new list is returned; yet on failures, nothing
frees the already existing elements of the temporary linked list, leading
to a leak.

This can be triggered by e.g. using '-vf [v][' in the FFmpeg
command-line tool.

This leak seems to exist since 4e781c25b7b1955d1a9a0b0771c3ce1acb0957bd.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agocbs_av1: Fix test for presence of buffer_removal_time element
Mark Thompson [Sun, 23 Aug 2020 16:06:06 +0000 (17:06 +0100)]
cbs_av1: Fix test for presence of buffer_removal_time element

The frame must be in both the spatial and temporal layers for the
operating point, not just one of them.

9 months agoavcodec/v4l2_m2m_enc: reindent after previous commit
Andriy Gelman [Sun, 23 Aug 2020 17:34:01 +0000 (13:34 -0400)]
avcodec/v4l2_m2m_enc: reindent after previous commit

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
9 months agoavcodec/v4l2_m2m_enc: buffer frame if it cannot be enqueued
Andriy Gelman [Sun, 23 Aug 2020 17:33:37 +0000 (13:33 -0400)]
avcodec/v4l2_m2m_enc: buffer frame if it cannot be enqueued

Currently if the frame buffers are full, the frame is unrefed and
dropped.  Instead buffer the frame so that it is enqueued in the
next v4l2_receive_packet() call.  The behavior was observed on
DragonBoard 410c.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
9 months agoavcodec/cbs_av1: always store temporal_id and spatial_id in CodedBitstreamAV1Context
James Almer [Sun, 23 Aug 2020 17:30:23 +0000 (14:30 -0300)]
avcodec/cbs_av1: always store temporal_id and spatial_id in CodedBitstreamAV1Context

Also infer them when not coded in the bitstream.

Reviewed-by: jkqxz
Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavfilter/af_afir: make use of vector_fmac_scalar() too
Paul B Mahol [Sun, 23 Aug 2020 15:50:00 +0000 (17:50 +0200)]
avfilter/af_afir: make use of vector_fmac_scalar() too

9 months agoavcodec/cbs_av1: fix storage size for render_{width,height}_minus_1
James Almer [Sun, 23 Aug 2020 15:20:07 +0000 (12:20 -0300)]
avcodec/cbs_av1: fix storage size for render_{width,height}_minus_1

Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavcodec/gif: fix disposal method for first frame and transparent gifs
Paul B Mahol [Sun, 23 Aug 2020 13:05:24 +0000 (15:05 +0200)]
avcodec/gif: fix disposal method for first frame and transparent gifs

Fixes #7902

9 months agoavcodec/notchlc: add initial alpha support
Paul B Mahol [Sun, 23 Aug 2020 09:40:40 +0000 (11:40 +0200)]
avcodec/notchlc: add initial alpha support

9 months agoavfilter: remove useless cast
Zhao Zhili [Sun, 27 Oct 2019 16:02:36 +0000 (00:02 +0800)]
avfilter: remove useless cast

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/f_sidedata: Add SEI_UNREGISTERED frame side data type
Limin Wang [Sun, 16 Aug 2020 16:10:50 +0000 (00:10 +0800)]
avfilter/f_sidedata: Add SEI_UNREGISTERED frame side data type

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
9 months agoavformat/mpegtsenc: support DVB 6A descriptor for AC-3
Limin Wang [Sat, 15 Aug 2020 13:57:03 +0000 (21:57 +0800)]
avformat/mpegtsenc: support DVB 6A descriptor for AC-3

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
9 months agolibavformat/ffmetadec.c: Fix Use-of-uninitialized-value
Thierry Foucu [Thu, 20 Aug 2020 19:14:52 +0000 (12:14 -0700)]
libavformat/ffmetadec.c: Fix Use-of-uninitialized-value

Check the return value of sscanf as it can return -1(EOF), for example
when the first char in the line is 0x00

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9 months agolibavformat/nut: Support SSA and ASS subtitles
hax@riseup.net [Sat, 22 Aug 2020 04:16:52 +0000 (21:16 -0700)]
libavformat/nut: Support SSA and ASS subtitles

ffmpeg documentation says the NUT container supports SubStation Alpha
This brings actual functionality in line with documentation.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9 months agoavcodec/dvbsubdec: error out on unsupported coding methods
Clément Bœsch [Tue, 18 Aug 2020 15:22:06 +0000 (17:22 +0200)]
avcodec/dvbsubdec: error out on unsupported coding methods

9 months agoavcodec/dvbsubdec: request samples for missing coding methods
Clément Bœsch [Tue, 18 Aug 2020 15:21:23 +0000 (17:21 +0200)]
avcodec/dvbsubdec: request samples for missing coding methods

9 months agoavcodec/dvbsubenc: fix onject/object typo
Clément Bœsch [Tue, 18 Aug 2020 14:47:53 +0000 (16:47 +0200)]
avcodec/dvbsubenc: fix onject/object typo

9 months agoavcodec/dvbsubenc: reindent after previous commit
Clément Bœsch [Tue, 18 Aug 2020 08:32:50 +0000 (10:32 +0200)]
avcodec/dvbsubenc: reindent after previous commit

9 months agoavcodec/dvbsubenc: merge rectangle encode code blocks
Clément Bœsch [Tue, 18 Aug 2020 08:29:22 +0000 (10:29 +0200)]
avcodec/dvbsubenc: merge rectangle encode code blocks

9 months agoavcodec/dvbsub: add "enc" suffix to encoder
Clément Bœsch [Mon, 17 Aug 2020 14:57:04 +0000 (16:57 +0200)]
avcodec/dvbsub: add "enc" suffix to encoder

9 months agoavcodec/dvbsub: remove useless indirection in dvbsub_encode.
Clément Bœsch [Tue, 1 Oct 2013 19:08:16 +0000 (21:08 +0200)]
avcodec/dvbsub: remove useless indirection in dvbsub_encode.

9 months agofate: add fate-sub-dvb test
Clément Bœsch [Mon, 10 Aug 2020 13:59:26 +0000 (15:59 +0200)]
fate: add fate-sub-dvb test

The dvbsubtest_filter.ts sample is a filtered version of the Videolan
sample database (samples/sub/dvbsub/dvbsubtest.ts) using Project X. It
originates from ticket #8844.

9 months agoavcodec/rzpaenc: Remove set-but-unused variable
Andreas Rheinhardt [Fri, 21 Aug 2020 22:17:49 +0000 (00:17 +0200)]
avcodec/rzpaenc: Remove set-but-unused variable

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavcodec/libaomdec: Set SAR based on RenderWidth and RenderHeight
Derek Buitenhuis [Fri, 21 Aug 2020 15:28:02 +0000 (16:28 +0100)]
avcodec/libaomdec: Set SAR based on RenderWidth and RenderHeight

This is the same thing we do in libdav1d.c

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
9 months agoavcodec/proresenc: infer array lengths
Michael Bradshaw [Fri, 21 Aug 2020 17:08:57 +0000 (10:08 -0700)]
avcodec/proresenc: infer array lengths

Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
9 months agoavfilter/af_biquads: add different transform types
Paul B Mahol [Fri, 21 Aug 2020 20:42:45 +0000 (22:42 +0200)]
avfilter/af_biquads: add different transform types

9 months agoavfilter/af_arnndn: use RNN_COPY macro to copy
Paul B Mahol [Fri, 21 Aug 2020 20:16:56 +0000 (22:16 +0200)]
avfilter/af_arnndn: use RNN_COPY macro to copy

9 months agoavcodec: add RPZA encoder
Paul B Mahol [Wed, 15 Jul 2020 19:43:59 +0000 (21:43 +0200)]
avcodec: add RPZA encoder

9 months agoavcodec/proresenc: add support for PQ and HLG
Michael Bradshaw [Thu, 20 Aug 2020 02:13:21 +0000 (19:13 -0700)]
avcodec/proresenc: add support for PQ and HLG

Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
9 months agoavformat/movenc: write the colr atom by default
Michael Bradshaw [Mon, 13 Apr 2020 17:11:38 +0000 (11:11 -0600)]
avformat/movenc: write the colr atom by default

The write_colr flag has been marked as experimental for over 5 years.
It should be safe to enable its behavior by default as follows:

  - Write the colr atom by default for mp4/mov if any of the following:
     - The primaries/trc/matrix are all specified, OR
     - There is an ICC profile, OR
     - The user specified +write_colr
  - Keep the write_colr flag for situations where the user wants to
    write the colr atom even if the color info is unspecified (e.g.,
    http://ffmpeg.org/pipermail/ffmpeg-devel/2020-March/259334.html)

This fixes https://trac.ffmpeg.org/ticket/7961

Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
9 months agoavfilter/formats: Remove unused functions
Andreas Rheinhardt [Fri, 21 Aug 2020 13:40:01 +0000 (15:40 +0200)]
avfilter/formats: Remove unused functions

This commit removes ff_parse_sample_format(), ff_parse_time_base() and
ff_query_formats_all_layouts() from libavfilter/formats.c. All of these
functions were completely unused. ff_parse_time_base() has not been used
at all since it had been added in 3448404a707b6e236a2ffa7b0453b3300de41b7b;
the last caller of ff_parse_sample_format has been removed in commit
d1c49bcae9b7fd41df5c6804ac7f6a5c271a7c2e. And the one and only caller of
ff_query_formats_all_layouts() (the asyncts filter) has been removed in
commit a8fe8d6b4a35c95aa94fccde5f001041278d197c.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/audio: Remove unused array, move used-only-once array
Andreas Rheinhardt [Fri, 21 Aug 2020 13:13:02 +0000 (15:13 +0200)]
avfilter/audio: Remove unused array, move used-only-once array

ff_planar_sample_fmts_array is unused (and was unused since it was added
in 4d4098da009c8340997b8d1abedbf2062e4aa991) and therefore this commit
removes it; ff_packed_sample_fmts_array meanwhile is used only once (in
the amerge filter) and therefore it has been moved to this place.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agodnn_backend_native_layer_avgpool: Fix invalid assignment, use av_assert
Andreas Rheinhardt [Fri, 21 Aug 2020 11:47:27 +0000 (13:47 +0200)]
dnn_backend_native_layer_avgpool: Fix invalid assignment, use av_assert

dnn_execute_layer_avg_pool() contains the following line:

assert(avgpool_params->padding_method = VALID);

This statement contains an assignment where obviously a comparison was
intended. Furthermore, *avgpool_params is const, so that the attempted
assignment leads to a compilation failure if asserts are enabled
(i.e. if DEBUG is defined which leads libavutil/internal.h to not define
NDEBUG). Moreover, the enumeration constant VALID actually has the value 0,
so that the assert would be triggered if a compiler compiles this with
asserts enabled. Finally, the statement uses assert() directly instead
of av_assert*().

All these errors have been fixed.

Thanks to ubitux for providing a FATE-box [1] where DEBUG is defined.

[1]: http://fate.ffmpeg.org/history.cgi?slot=x86_64-archlinux-gcc-ddebug

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
9 months agoavcodec/qdmc: reduce insanely huge tables
Paul B Mahol [Fri, 21 Aug 2020 11:53:23 +0000 (13:53 +0200)]
avcodec/qdmc: reduce insanely huge tables

9 months agoavfilter/vf_overlay: Remove superfluous ;
Andreas Rheinhardt [Fri, 21 Aug 2020 09:46:49 +0000 (11:46 +0200)]
avfilter/vf_overlay: Remove superfluous ;

In a function body, a redundant ; is just a null statement that does
nothing. Yet outside a function body, a superfluous ';' like one that
exists if one adds a ';' immediately after a function body's closing
brace is actually invalid C that compilers happen to accept. Yet when
compiled in -pedantic mode, both GCC as well as Clang emit warnings for
this like "ISO C does not allow extra ‘;’ outside of a function
[-Wpedantic]".

The scenario described above existed in vf_overlay.c as a result of
macro expansion. This commit fixes it.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agodoc/APIchanges: Remove version conflict separator
Andreas Rheinhardt [Fri, 21 Aug 2020 10:38:30 +0000 (12:38 +0200)]
doc/APIchanges: Remove version conflict separator

Added in 06f26512046de1a84e045d219e7fa211c37ad0e4.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/fifo: Remove unused functions and headers
Andreas Rheinhardt [Fri, 21 Aug 2020 09:15:21 +0000 (11:15 +0200)]
avfilter/fifo: Remove unused functions and headers

The functions were forgotten in 03c8fe49ea3f2a2444607e541dff15a1ccd7f0c2;
removing them also means that the avassert.h and samplefmt.h headers are
no longer used any more, so they have been removed, too.

Moreover, video.h is unused since b077d8d9082d057d4c7abd9e0b1a98f9651cfaa8
and channel_layout.h is since fdd9663781e3ebc8ebed0704607abd174095a905.
Both headers have therefore been removed, too.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agolavu/buffer: forward av_buffer_realloc() error code.
Nicolas George [Sat, 4 Jan 2020 18:52:08 +0000 (19:52 +0100)]
lavu/buffer: forward av_buffer_realloc() error code.

Fix CID 1457235.

9 months agolavu/avstring: deprecate av_d2str().
Nicolas George [Thu, 26 Dec 2019 18:32:23 +0000 (19:32 +0100)]
lavu/avstring: deprecate av_d2str().

It is no longer used in our code base and does not seem
to be used much in other projects.

9 months agoavfilter/libvmaf: mention csv as available log format
Harry Mallon [Thu, 20 Aug 2020 16:39:27 +0000 (17:39 +0100)]
avfilter/libvmaf: mention csv as available log format

Signed-off-by: Harry Mallon <harry.mallon@codex.online>
Signed-off-by: Gyan Doshi <ffmpeg@gyani.pro>
9 months agodnn/native: rename struct ConvolutionalNetwork to NativeModel
Ting Fu [Wed, 19 Aug 2020 13:43:13 +0000 (21:43 +0800)]
dnn/native: rename struct ConvolutionalNetwork to NativeModel

Signed-off-by: Ting Fu <ting.fu@intel.com>
Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
9 months agoavfilter/formats: Cosmetics
Andreas Rheinhardt [Fri, 14 Aug 2020 17:21:18 +0000 (19:21 +0200)]
avfilter/formats: Cosmetics

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/formats: Factor checking for mergeability out of ff_merge_*
Andreas Rheinhardt [Fri, 14 Aug 2020 14:47:01 +0000 (16:47 +0200)]
avfilter/formats: Factor checking for mergeability out of ff_merge_*

The callers of the ff_merge_*() functions fall into two categories with
quite different needs:

One caller is can_merge_formats() which only wants to test for mergeability
without it merging anything. In order to do so, it duplicates the lists
it intends to test and resets their owners so that they are not modified
by ff_merge_*(). It also means that it needs to receive the merged list
(and not only an int containing whether the lists are mergeable) to
properly free it.

The other callers want the lists to be actually merged. But given the
fact that ff_merge_*() automatically updates the owners of the lists,
they only want the information whether the merge succeeded or not; they
don't want a link to the new list.

Therefore this commit splits these functions in two: ff_merge_*() for
the latter callers and ff_can_merge_*() for the former.
ff_merge_*() doesn't need to return a pointer to the combined list at all
and hence these functions have been modified to return an int, which
allows to distinguish between incompability and memory allocation failures.

ff_can_merge_*() meanwhile doesn't modify its arguments at all obviating
the need for copies. This in turn implies that there is no reason to
return a pointer to the new list, as nothing needs to be freed. These
functions therefore return an int as well. This allowed to completely
remove can_merge_formats() in avfiltergraph.c.

Notice that no ff_can_merge_channel_layouts() has been created, because
there is currently no caller for this. It could be added if needed.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/formats: Avoid code duplication when merging samplerates
Andreas Rheinhardt [Thu, 13 Aug 2020 22:18:09 +0000 (00:18 +0200)]
avfilter/formats: Avoid code duplication when merging samplerates

Right now, ff_merge_samplerates() contains three instances of the
MERGE_REF() macro, a macro which reallocates an array, updates some
pointers in a loop and frees several buffers. This commit makes it
possible to contain only one instance of said macro in the function,
thereby reducing codesize.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoswscale/x86/output: add missing AVX2 support preprocessor wrappers
James Almer [Thu, 20 Aug 2020 18:14:56 +0000 (15:14 -0300)]
swscale/x86/output: add missing AVX2 support preprocessor wrappers

Fixes compilation with old yasm

Signed-off-by: James Almer <jamrial@gmail.com>
9 months agolavfi: remove request_samples.
Nicolas George [Wed, 12 Aug 2020 17:17:29 +0000 (19:17 +0200)]
lavfi: remove request_samples.

Filters can use min_samples/max_samples if the number is constant
or activate and ff_inlink_consume_samples().

9 months agolavfi: remove needs_fifo.
Nicolas George [Wed, 12 Aug 2020 17:13:37 +0000 (19:13 +0200)]
lavfi: remove needs_fifo.

9 months agolavfi/vaf_spectrumsynth: switch to activate.
Nicolas George [Wed, 12 Aug 2020 17:01:34 +0000 (19:01 +0200)]
lavfi/vaf_spectrumsynth: switch to activate.

Preserve the original workings, that does not use frames timestamps
and therefore is very fragile.

Allow to remove needs_fifo.

9 months agolavfi/vf_overlay_qsv: remove needs_fifo.
Nicolas George [Wed, 12 Aug 2020 15:22:21 +0000 (17:22 +0200)]
lavfi/vf_overlay_qsv: remove needs_fifo.

It is not relevant when using activate and framesync.

9 months agoavcodec/h2645_parse: reset the H2645NAL type value before parsing a NAL header
James Almer [Wed, 12 Aug 2020 18:03:52 +0000 (15:03 -0300)]
avcodec/h2645_parse: reset the H2645NAL type value before parsing a NAL header

This will prevent reporting a bogus value in the log message when
the header parsing fails.

Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavcodec/h2645_parse: skip empty NAL units earlier
James Almer [Wed, 12 Aug 2020 17:46:35 +0000 (14:46 -0300)]
avcodec/h2645_parse: skip empty NAL units earlier

No point in trying to parse nonexistent header bits.

Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavcodec/h2645_parse: always return 0 on successful h{264,evc}_parse_nal_header()...
James Almer [Wed, 12 Aug 2020 17:26:50 +0000 (14:26 -0300)]
avcodec/h2645_parse: always return 0 on successful h{264,evc}_parse_nal_header() calls

HEVC NALs are no longer being skipped based on their nuh_layer_id
value since ad326379c6.

Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavcodec/decode: move the ff_decode_frame_props() prototype to the proper header
James Almer [Sun, 16 Aug 2020 14:43:48 +0000 (11:43 -0300)]
avcodec/decode: move the ff_decode_frame_props() prototype to the proper header

Signed-off-by: James Almer <jamrial@gmail.com>
9 months agoavformat/libsrt: close listen fd in listener mode
Nicolas Sugino [Fri, 14 Aug 2020 01:18:26 +0000 (22:18 -0300)]
avformat/libsrt: close listen fd in listener mode

In listener mode the first fd is not closed when libsrt_close() is called
because it is overwritten by the new accept fd.  Added the listen_fd to the
context to properly close it when libsrt_close() is called.

Fixes trac ticket #8372.

Signed-off-by: Nicolas Sugino <nsugino@3way.com.ar>
Signed-off-by: Marton Balint <cus@passwd.hu>
9 months agoavformat/siff: Reject audio packets without audio stream
Michael Niedermayer [Tue, 11 Aug 2020 12:41:13 +0000 (14:41 +0200)]
avformat/siff: Reject audio packets without audio stream

Fixes: Assertion failure
Fixes: 24612/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-6600899842277376.fuzz

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9 months agolibavformat/r3d.c: Fix Use-of-uninitialized-value in filename.
Thierry Foucu [Wed, 19 Aug 2020 22:51:02 +0000 (15:51 -0700)]
libavformat/r3d.c: Fix Use-of-uninitialized-value in filename.

While reading the filename tag, it may return a EOF and we are still
copying the file with uninitialized value.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9 months agolibavcodec/proresdec2: Setup qmat_chroma according to RDD36
Harry Mallon [Wed, 19 Aug 2020 20:32:47 +0000 (21:32 +0100)]
libavcodec/proresdec2: Setup qmat_chroma according to RDD36

Signed-off-by: Harry Mallon <harry.mallon@codex.online>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9 months agoffplay: do not set redundant channel count on abuffersink.
Nicolas George [Fri, 14 Aug 2020 09:25:09 +0000 (11:25 +0200)]
ffplay: do not set redundant channel count on abuffersink.

9 months agolavfi/buffersink: add a summary documentation of the API.
Nicolas George [Fri, 14 Aug 2020 09:21:39 +0000 (11:21 +0200)]
lavfi/buffersink: add a summary documentation of the API.

9 months agolavfi/buffersink: clearly document that the Params struct are unused.
Nicolas George [Fri, 14 Aug 2020 08:56:50 +0000 (10:56 +0200)]
lavfi/buffersink: clearly document that the Params struct are unused.

9 months agoavutil/video_enc_params: fix code comment
leozhang [Thu, 13 Aug 2020 03:57:05 +0000 (11:57 +0800)]
avutil/video_enc_params: fix code comment

Reviewed-by: Zhao Zhili <zhilizhao@tencent.com>
Signed-off-by: leozhang <leozhang@qiyi.com>
9 months agolavc/libkvazaar: export encoded frame stats
Jun Zhao [Sun, 26 Jul 2020 02:43:10 +0000 (10:43 +0800)]
lavc/libkvazaar: export encoded frame stats

Export choosen pict_type and qp.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
9 months agoavfilter/formats: Avoid allocations when merging formats and samplerates
Andreas Rheinhardt [Thu, 13 Aug 2020 19:20:22 +0000 (21:20 +0200)]
avfilter/formats: Avoid allocations when merging formats and samplerates

This is the analogue of cfc65520324ae640299bd321ef88ae76dcee6f78 for
formats and samplerates; in contrast to said commit, one can avoid
allocating a new array for formats as well (the complications of the
generic channel layouts made this impossible for channel layouts).

This commit also starts to move the line continuation '\' chars to the
left to keep them in line with MERGE_REF() as well as with the 80 lines
limit.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/formats: Make check for buffer overflow redundant
Andreas Rheinhardt [Thu, 13 Aug 2020 16:31:04 +0000 (18:31 +0200)]
avfilter/formats: Make check for buffer overflow redundant

and remove the redundant check.

This check for whether the allocated buffer is sufficient has been added
in commit 1cbf7fb4345a3e5b7791d483241bf4759bde4ece (merging commit
5775a1832c4165e6acc1d307004b38701bb463f4). It is not sufficient to
detect invalid input lists (namely lists with duplicates); its only use
is to avoid buffer overflows. And this can be achieved by simpler means:
Make sure that one allocates space for so many elements as the outer loop
ranges over and break out of the inner loop if a match has been found.
For valid input without duplicates, no further match will be found anyway.

This change will temporarily make the allocated formats array larger
than before and larger than necessary; this will be fixed in a later
commit that avoids the allocation altogether.

If a check for duplicates in the lists is deemed necessary, it should be
done properly somewhere else.

Finally, the error message that is removed in this commit used
__FUNCTION__, which is a GCC extension (C99 added __func__ for this).
So this commit removes a warning when compiling in -pedantic mode.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
9 months agoavfilter/af_afir: Fix leak of AVFilterChannelLayout in case of error
Andreas Rheinhardt [Fri, 7 Aug 2020 02:58:56 +0000 (04:58 +0200)]
avfilter/af_afir: Fix leak of AVFilterChannelLayout in case of error

If an error happens between the allocation of an AVFilterChannelLayout
and its usage (which involves attaching said object to a more permanent
object), the channel layout array leaks. This can simply be fixed by
making sure that nothing is between the allocation and the
aforementioned usage.

Fixes Coverity issue #1250334.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
10 months agoswresample/rematrix: handle 22.2 as a 9 channel layout
Jan Ekström [Thu, 6 Aug 2020 21:35:55 +0000 (00:35 +0300)]
swresample/rematrix: handle 22.2 as a 9 channel layout

This is as far as 22.2 follows the same channel order as
WaveFormatExtensible's channel mask (and the AV_CH_* defines).

After LFE2 the side channels would follow, but that offset of
one stops us from utilizing them without further tweaks.

This change was verified by using swresample to downmix to 5.1,
and then feeding that to WASAPI.

10 months agoavformat/mpegts: only reset timestamps to NOPTS for DVB teletext
Jan Ekström [Wed, 12 Aug 2020 21:27:09 +0000 (00:27 +0300)]
avformat/mpegts: only reset timestamps to NOPTS for DVB teletext

While having the possibility of non-NOPTS values that can suddenly
jump in time due to adjustments to match PCR is not nice for DVB
subtitles, apparently the parser for this format bases its behavior on
whether the packets' timestamps are NOPTS or not. Thus while we can
adjust timestamps, we should exclude DVB subtitles from the timestamp
unsetting logic.

Fixes #8844

10 months agoavformat/mpeg: Check avio_read() return value in get_pts()
Michael Niedermayer [Fri, 14 Aug 2020 23:07:44 +0000 (01:07 +0200)]
avformat/mpeg: Check avio_read() return value in get_pts()

Found-by: Thierry Foucu <tfoucu@gmail.com>
Fixes: Use-of-uninitialized-value
Reviewed-by: Thierry Foucu <tfoucu@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
10 months agotools/target_dec_fuzzer: Adjust threshold for DST
Michael Niedermayer [Sun, 16 Aug 2020 18:04:08 +0000 (20:04 +0200)]
tools/target_dec_fuzzer: Adjust threshold for DST

Fixes: Timeout (too long -> 3sec)
Fixes: 24239/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DST_fuzzer-5189061015502848

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
10 months agoavformat/mlvdec: Only store dimensions after having validated them
Andreas Rheinhardt [Mon, 10 Aug 2020 00:33:19 +0000 (02:33 +0200)]
avformat/mlvdec: Only store dimensions after having validated them

Otherwise it might happen that invalid dimensions are used when reading
a video packet; this might lead to undefined overflow.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
10 months agoavformat/mlvdec: Don't leak open AVIOContexts on error
Andreas Rheinhardt [Mon, 10 Aug 2020 00:19:35 +0000 (02:19 +0200)]
avformat/mlvdec: Don't leak open AVIOContexts on error

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
10 months agoavformat/mlvdec: Check for existence of AVIOContext before using it
Andreas Rheinhardt [Sun, 9 Aug 2020 23:32:42 +0000 (01:32 +0200)]
avformat/mlvdec: Check for existence of AVIOContext before using it

The mlv demuxer supports input split into multiple files; if invalid
data is encountered when parsing one of the subsequent files, that file
is closed. But at this point some index entries belonging to this file
might already have been added. In this case, the read_packet function
might try to use the AVIOContext (which is NULL) to read data which will
of course crash. This commit fixes this.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
10 months agoavformat/hls: Use av_init_pkt() directly
Andreas Rheinhardt [Fri, 14 Aug 2020 20:59:57 +0000 (22:59 +0200)]
avformat/hls: Use av_init_pkt() directly

and remove reset_packet(). The packet's data pointer is already zeroed,
so the only thing that reset_packet() does that av_init_pkt() doesn't is
redundant.

Reviewed-by: Steven Liu <lingjiujianke@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>