ffmpeg.git
3 months agoavcodec/smacker: Add FF_CODEC_CAP_INIT_CLEANUP
Andreas Rheinhardt [Thu, 25 Jun 2020 08:19:55 +0000 (10:19 +0200)]
avcodec/smacker: Add FF_CODEC_CAP_INIT_CLEANUP

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 months agoavcodec/mpeg12dec: Fix uninitialized data in fate-sub-cc-scte20
Limin Wang [Sun, 28 Jun 2020 12:46:19 +0000 (20:46 +0800)]
avcodec/mpeg12dec: Fix uninitialized data in fate-sub-cc-scte20

The issue is introduced in a705bcd763e344fa, please tested with below command line:
make V=1 fate-sub-cc-scte20 TARGET_EXEC="valgrind --error-exitcode=1"

Reported-by: Martin Storsjö <martin@martin.st>
Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agofate: Update fate refs after cca982ee018aad54214e94f2a0a5921c8bbf1328
Andreas Rheinhardt [Mon, 29 Jun 2020 15:48:54 +0000 (17:48 +0200)]
fate: Update fate refs after cca982ee018aad54214e94f2a0a5921c8bbf1328

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 months agoavfilter/vf_colorbalance: remove wrong addition
Paul B Mahol [Mon, 29 Jun 2020 12:50:06 +0000 (14:50 +0200)]
avfilter/vf_colorbalance: remove wrong addition

3 months agoMAINTAINERS: remove myself as Twitter maintainer
Lou Logan [Sun, 28 Jun 2020 20:37:55 +0000 (12:37 -0800)]
MAINTAINERS: remove myself as Twitter maintainer

Signed-off-by: Lou Logan <lou@lrcd.com>
3 months agolavf/movenc: Use a dynamic buffer when writing the mfra box
Derek Buitenhuis [Tue, 23 Jun 2020 15:05:18 +0000 (16:05 +0100)]
lavf/movenc: Use a dynamic buffer when writing the mfra box

When doing streamed output, with e.g. +dash, if the mfra box ended
up being larger than the AVIOContext write buffer, the (unchecked)
seeking back to update the box size would silently fail and produce
an invalid mfra box.

This is similar to how other boxes are written in fragmented mode.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
3 months agoavcodec/nvenc: support for HEVC timecode passthrough
Limin Wang [Sun, 28 Jun 2020 02:34:12 +0000 (10:34 +0800)]
avcodec/nvenc: support for HEVC timecode passthrough

Reviewed-by: Timo Rothenpieler <timo@rothenpieler.org>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavcodec/nvenc: add more sei data support
Limin Wang [Mon, 15 Jun 2020 14:08:40 +0000 (22:08 +0800)]
avcodec/nvenc: add more sei data support

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavcodec/utils: add ff_alloc_timecode_sei() for hevc timecode sei
Limin Wang [Thu, 18 Jun 2020 03:58:50 +0000 (11:58 +0800)]
avcodec/utils: add ff_alloc_timecode_sei() for hevc timecode sei

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavcodec/hevcdec: create AVFrame side data from HEVC timecodes like H.264
Limin Wang [Wed, 24 Jun 2020 06:29:32 +0000 (14:29 +0800)]
avcodec/hevcdec: create AVFrame side data from HEVC timecodes like H.264

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavcodec/hevc_sei: support HEVC timecode decode
Limin Wang [Mon, 15 Jun 2020 12:55:17 +0000 (20:55 +0800)]
avcodec/hevc_sei: support HEVC timecode decode

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavcodec/h264_slice: use av_timecode_get_smpte()
Limin Wang [Wed, 24 Jun 2020 06:07:22 +0000 (14:07 +0800)]
avcodec/h264_slice: use av_timecode_get_smpte()

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavutil/timecode: add function av_timecode_get_smpte()
Limin Wang [Wed, 24 Jun 2020 05:59:34 +0000 (13:59 +0800)]
avutil/timecode: add function av_timecode_get_smpte()

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavfilter/vf_showinfo: add a \n for end of ERROR and WARNNING log
Limin Wang [Fri, 26 Jun 2020 11:10:47 +0000 (19:10 +0800)]
avfilter/vf_showinfo: add a \n for end of ERROR and WARNNING log

 Note for info level, one extra \n will be print after the log.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavcodec/bitstream: Avoid allocation when creating VLC tables
Andreas Rheinhardt [Thu, 25 Jun 2020 11:20:19 +0000 (13:20 +0200)]
avcodec/bitstream: Avoid allocation when creating VLC tables

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 months agoavcodec/bitstream: Don't check for undefined behaviour after it happened
Andreas Rheinhardt [Thu, 25 Jun 2020 13:10:35 +0000 (15:10 +0200)]
avcodec/bitstream: Don't check for undefined behaviour after it happened

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 months agoavformat/smoothstreaming: Add deinit function
Andreas Rheinhardt [Fri, 20 Dec 2019 18:57:34 +0000 (19:57 +0100)]
avformat/smoothstreaming: Add deinit function

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 months agoavformat/smoothstreaming: Don't write trailer of subcontext
Andreas Rheinhardt [Fri, 20 Dec 2019 18:26:00 +0000 (19:26 +0100)]
avformat/smoothstreaming: Don't write trailer of subcontext

Nothing written in avformat_write_trailer() for the submuxers will be
output anyway because the AVIOContexts used for actual output have been
closed before the call. Writing the trailer of the subcontext has probably
only been done in order to free the memory allocated by the submuxer.
And this job has been taken over by the deinit functions.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 months agoavformat/mvdec: Fix integer overflow with billions of channels
Michael Niedermayer [Mon, 22 Jun 2020 23:01:53 +0000 (01:01 +0200)]
avformat/mvdec: Fix integer overflow with billions of channels

Fixes: signed integer overflow: 1394614304 * 2 cannot be represented in type 'int'
Fixes: 23491/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5697377020411904

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 months agolibavcodec/jpeg2000dec.c Fixed WRITE_FRAME and tile co-ordinates:
Gautam Ramakrishnan [Sun, 21 Jun 2020 18:42:06 +0000 (00:12 +0530)]
libavcodec/jpeg2000dec.c Fixed WRITE_FRAME and tile co-ordinates:

libopenjpeg2000 uses ceiling division while dividing tile
co-ordinates with the sample separation. Also, corrections
were made to the WRITE_FRAME macro.

Improves: p1_01.j2k and p1_07.j2k

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 months agolibavcodec/jpeg2000dec.c: Modify image dimensions
Gautam Ramakrishnan [Sun, 21 Jun 2020 18:42:05 +0000 (00:12 +0530)]
libavcodec/jpeg2000dec.c: Modify image dimensions

Reduce image size of the image if all components have
a non zero sample separation. This is to replicate the
output of opj_decompress.

Improves: p1_01.j2k

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 months agoavcodec/adpcm_ima_apm: support new extradata format
Zane van Iperen [Sat, 20 Jun 2020 10:59:14 +0000 (10:59 +0000)]
avcodec/adpcm_ima_apm: support new extradata format

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 months agoavcodec/mpeg12dec: switch to AVBufferRef buffer for a53 caption
Limin Wang [Sun, 21 Jun 2020 12:57:22 +0000 (20:57 +0800)]
avcodec/mpeg12dec: switch to AVBufferRef buffer for a53 caption

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 months agoavformat/avc, mxfenc: Avoid allocation of H264 SPS structure, fix memleak
Andreas Rheinhardt [Wed, 24 Jun 2020 15:51:58 +0000 (17:51 +0200)]
avformat/avc, mxfenc: Avoid allocation of H264 SPS structure, fix memleak

Up until now, ff_avc_decode_sps would parse a SPS and return some
properties from it in a freshly allocated structure. Yet said structure
is very small and completely internal to libavformat, so there is no
reason to use the heap for it. This commit therefore changes the
function to return an int and to modify a caller-provided structure.
This will also allow ff_avc_decode_sps to return better error codes in
the future.

It also fixes a memleak in mxfenc: If a packet contained multiple SPS,
only the SPS structure belonging to the last SPS would be freed, the
other ones would leak when the pointer is overwritten to point to the
new SPS structure. Of course, without allocations there are no leaks.
This is Coverity issue #1445194.

Furthermore, the SPS structure has been renamed from
H264SequenceParameterSet to H264SPS in order to avoid overlong lines.

Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 months agoavformat/avc: Don't use ff_ prefix for static function
Andreas Rheinhardt [Wed, 24 Jun 2020 14:54:43 +0000 (16:54 +0200)]
avformat/avc: Don't use ff_ prefix for static function

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/webvttdec: Accept \r as newline
Andreas Rheinhardt [Sat, 20 Jun 2020 05:06:04 +0000 (07:06 +0200)]
avformat/webvttdec: Accept \r as newline

After parsing the end timestamp of a WebVTT cue block, the current code
skips everything after the start of the timestamp that is not a \t, ' '
or \n and treats what is next as the start of a WebVTT cue settings list.
Yet if there is no such list, but a single \r, this will skip a part of
the cue payload (namely everything until the first occurence of \t, ' '
or \n) and treat what has not been skipped as the beginning of the
WebVTT cue settings list that extends until the next \r or \n (or the
end).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/av1: Avoid using dynamic buffer when assembling av1c
Andreas Rheinhardt [Sun, 21 Jun 2020 10:58:21 +0000 (12:58 +0200)]
avformat/av1: Avoid using dynamic buffer when assembling av1c

Given that AV1 only has exactly one sequence header, it is unnecessary
to copy the content of said sequence header into an intermediate dynamic
buffer; instead the sequence header can be copied from where it is in
the input buffer.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec: add AV1 profiles to profile.h
James Almer [Fri, 26 Jun 2020 02:28:57 +0000 (23:28 -0300)]
avcodec: add AV1 profiles to profile.h

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavcodec/cbs_h265: set default VUI parameters when vui_parameters_present_flag is...
James Almer [Sun, 21 Jun 2020 18:30:45 +0000 (15:30 -0300)]
avcodec/cbs_h265: set default VUI parameters when vui_parameters_present_flag is false

Based on cbs_h264 code.

Should fix ticket #8752.

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agolavc/aac_ac3_parser: improve the raw AAC file bit rate calculation
Jun Zhao [Sun, 17 May 2020 04:10:05 +0000 (12:10 +0800)]
lavc/aac_ac3_parser: improve the raw AAC file bit rate calculation

Now we just use one ADTS raw frame to calculate the bit rate, it's
lead to a larger error when get the duration from bit rate, the
improvement cumulate Nth ADTS frames to get the average bit rate.

e,g used the command get the duration like:
ffprobe -show_entries format=duration -i fate-suite/aac/foo.aac

before this improvement dump the duration=2.173935
after this improvement  dump the duration=1.979267

in fact, the real duration can be get by command like:
ffmpeg -i fate-suite/aac/foo.aac -f null /dev/null with time=00:00:01.97

Also update the fate-adtstoasc_ticket3715.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
4 months agoavformat/microdvddec: skip malformed lines without frame number.
Michael Niedermayer [Mon, 22 Jun 2020 23:43:14 +0000 (01:43 +0200)]
avformat/microdvddec: skip malformed lines without frame number.

Fixes: signed integer overflow: 1 - -9223372036854775808 cannot be represented in type 'long'
Fixes: 23490/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5133490093031424

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavfilter/zoompan: add in_time variable
exwm [Fri, 19 Jun 2020 15:58:41 +0000 (15:58 +0000)]
avfilter/zoompan: add in_time variable

Currently, the zoompan filter exposes a 'time' variable (missing from docs) for use in
the 'zoom', 'x', and 'y' expressions. This variable is perhaps better named
'out_time' as it represents the timestamp in seconds of each output frame
produced by zoompan. This patch adds aliases 'out_time' and 'ot' for 'time'.

This patch also adds an 'in_time' (alias 'it') variable that provides access
to the timestamp in seconds of each input frame to the zoompan filter.
This helps to design zoompan filters that depend on the input video timestamps.
For example, it makes it easy to zoom in instantly for only some portion of a video.
Both the 'out_time' and 'in_time' variables have been added in the documentation
for zoompan.

Example usage of 'in_time' in the zoompan filter to zoom in 2x for the
first second of the input video and 1x for the rest:
    zoompan=z='if(between(in_time,0,1),2,1):d=1'

V2: Fix zoompan filter documentation stating that the time variable
would be NAN if the input timestamp is unknown.

V3: Add 'it' alias for 'in_time. Add 'out_time' and 'ot' aliases for 'time'.
Minor corrections to zoompan docs.

Signed-off-by: exwm <thighsman@protonmail.com>
4 months agoavformat/libamqp: add option delivery_mode
Levis Florian [Sat, 20 Jun 2020 17:16:50 +0000 (19:16 +0200)]
avformat/libamqp: add option delivery_mode

Reviewed-by: Andriy Gelman <andriy.gelman@gmail.com>
Signed-off-by: Levis Florian <levis.florian@gmail.com>
4 months agodnn-layer-math-unary-test: add unit test for atan
Ting Fu [Thu, 18 Jun 2020 09:15:36 +0000 (17:15 +0800)]
dnn-layer-math-unary-test: add unit test for atan

Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
4 months agodnn_backend_native_layer_mathunary: add atan support
Ting Fu [Thu, 18 Jun 2020 09:15:35 +0000 (17:15 +0800)]
dnn_backend_native_layer_mathunary: add atan support

It can be tested with the model generated with below python script:

import tensorflow as tf
import numpy as np
import imageio

in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]

x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.atan(x)
x2 = tf.divide(x1, 3.1416/4) # pi/4
y = tf.identity(x2, name='dnn_out')

sess=tf.Session()
sess.run(tf.global_variables_initializer())

graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)

print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")

output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))

Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
4 months agodnn-layer-math-unary-test: add unit test for acos
Ting Fu [Thu, 18 Jun 2020 09:15:34 +0000 (17:15 +0800)]
dnn-layer-math-unary-test: add unit test for acos

Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
4 months agodnn_backend_native_layer_mathunary: add acos support
Ting Fu [Thu, 18 Jun 2020 09:15:33 +0000 (17:15 +0800)]
dnn_backend_native_layer_mathunary: add acos support

It can be tested with the model generated with below python script:

import tensorflow as tf
import numpy as np
import imageio

in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]

x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.acos(x)
x2 = tf.divide(x1, 3.1416/2) # pi/2
y = tf.identity(x2, name='dnn_out')

sess=tf.Session()
sess.run(tf.global_variables_initializer())

graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)

print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")

output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))

Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
4 months agodnn-layer-math-unary-test: add unit test for asin
Ting Fu [Thu, 18 Jun 2020 09:15:32 +0000 (17:15 +0800)]
dnn-layer-math-unary-test: add unit test for asin

Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
4 months agodnn_backend_native_layer_mathunary: add asin support
Ting Fu [Thu, 18 Jun 2020 09:15:31 +0000 (17:15 +0800)]
dnn_backend_native_layer_mathunary: add asin support

It can be tested with the model generated with below python script:

import tensorflow as tf
import numpy as np
import imageio

in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]

x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.asin(x)
x2 = tf.divide(x1, 3.1416/2) # pi/2
y = tf.identity(x2, name='dnn_out')

sess=tf.Session()
sess.run(tf.global_variables_initializer())

graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)

print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")

output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))

Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
4 months agoavformat/smoothstreaming: Forward errors from copying white/blacklists
Andreas Rheinhardt [Fri, 20 Dec 2019 17:50:21 +0000 (18:50 +0100)]
avformat/smoothstreaming: Forward errors from copying white/blacklists

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/cbs_av1: Simplify writing uvlc elements
Andreas Rheinhardt [Thu, 18 Jun 2020 17:55:30 +0000 (19:55 +0200)]
avcodec/cbs_av1: Simplify writing uvlc elements

There is no reason to special-case writing a value of zero as uvlc
element as the generic code is perfectly capable of doing so.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/cbs_av1: Fix writing uvlc numbers >= INT_MAX
Andreas Rheinhardt [Thu, 18 Jun 2020 12:37:38 +0000 (14:37 +0200)]
avcodec/cbs_av1: Fix writing uvlc numbers >= INT_MAX

Fixes: assertion failure
Fixes: left shift of 1 by 31 places cannot be represented in type 'int'
Fixes: 23264/clusterfuzz-testcase-minimized-ffmpeg_BSF_AV1_METADATA_fuzzer-6308429248593920

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/hevc: export chroma sample location
Hendrik Leppkes [Wed, 11 Apr 2018 11:46:10 +0000 (13:46 +0200)]
avcodec/hevc: export chroma sample location

4 months agoavfilter/vf_v360: do not ignore return value of allocate_plane()
Paul B Mahol [Tue, 23 Jun 2020 19:53:39 +0000 (21:53 +0200)]
avfilter/vf_v360: do not ignore return value of allocate_plane()

4 months agoavcodec/ccaption_dec: add support for background colors
Paul B Mahol [Sun, 21 Jun 2020 12:21:46 +0000 (14:21 +0200)]
avcodec/ccaption_dec: add support for background colors

4 months agolavc: Lower MediaFoundation audio encoder priority.
Carl Eugen Hoyos [Tue, 23 Jun 2020 18:41:46 +0000 (20:41 +0200)]
lavc: Lower MediaFoundation audio encoder priority.

The actual encoders may not be available.
Fixes ticket #8699.

4 months agodoc/general: mention BT20 decoder
Paul B Mahol [Tue, 23 Jun 2020 14:04:31 +0000 (16:04 +0200)]
doc/general: mention BT20 decoder

4 months agodoc/general: merge dupe ProRes entries
Paul B Mahol [Tue, 23 Jun 2020 13:53:45 +0000 (15:53 +0200)]
doc/general: merge dupe ProRes entries

While here add missing fourcc.

4 months agodoc/general: mention NotchLC
Paul B Mahol [Tue, 23 Jun 2020 13:51:13 +0000 (15:51 +0200)]
doc/general: mention NotchLC

4 months agoavfilter/vf_v360: add orthographic projection support
Paul B Mahol [Mon, 22 Jun 2020 18:16:22 +0000 (20:16 +0200)]
avfilter/vf_v360: add orthographic projection support

4 months agoavfilters/vf_v360: add equisolid projection support
Paul B Mahol [Mon, 22 Jun 2020 12:39:35 +0000 (14:39 +0200)]
avfilters/vf_v360: add equisolid projection support

4 months agoavfilter/vf_showpalette: Don't pretend disp_palette can fail
Andreas Rheinhardt [Mon, 15 Jun 2020 18:01:07 +0000 (20:01 +0200)]
avfilter/vf_showpalette: Don't pretend disp_palette can fail

It can't fail, yet it returns an int and other code checks whether it
failed; yet if it did fail, an AVFrame would leak. One could of course
add an av_frame_free for this (that compilers could optimize away), yet
it is easier to simply stop pretending that disp_palette could fail.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/sccdec: Avoid variable that is always zero
Andreas Rheinhardt [Sun, 14 Jun 2020 19:27:54 +0000 (21:27 +0200)]
avformat/sccdec: Avoid variable that is always zero

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/pjsdec: Avoid variable that is always zero
Andreas Rheinhardt [Sun, 14 Jun 2020 19:27:35 +0000 (21:27 +0200)]
avformat/pjsdec: Avoid variable that is always zero

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/mpl2dec: Avoid variable that is always zero
Andreas Rheinhardt [Sun, 14 Jun 2020 19:27:00 +0000 (21:27 +0200)]
avformat/mpl2dec: Avoid variable that is always zero

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/mov: Cosmetics
Andreas Rheinhardt [Sun, 14 Jun 2020 19:26:16 +0000 (21:26 +0200)]
avformat/mov: Cosmetics

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/mov: Avoid allocation when reading ddts atom
Andreas Rheinhardt [Sun, 14 Jun 2020 19:18:23 +0000 (21:18 +0200)]
avformat/mov: Avoid allocation when reading ddts atom

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/mov: Use ffio_read_size where appropriate
Andreas Rheinhardt [Sun, 14 Jun 2020 19:12:56 +0000 (21:12 +0200)]
avformat/mov: Use ffio_read_size where appropriate

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/mov: Avoid allocation+copy when moving extradata
Andreas Rheinhardt [Sun, 14 Jun 2020 19:04:36 +0000 (21:04 +0200)]
avformat/mov: Avoid allocation+copy when moving extradata

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/mov: Read attached pics directly into st->attached_pic
Andreas Rheinhardt [Sun, 14 Jun 2020 07:39:17 +0000 (09:39 +0200)]
avformat/mov: Read attached pics directly into st->attached_pic

Given that av_get_packet returns a blank packet on error, the only
difference to the current approach (that uses intermediate AVPackets on
the stack) is that st->attached_pic will be properly initialized on error
(i.e. the timestamps are AV_NOPTS_VALUE) whereas right now st->attached_pic
is only zeroed.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/mov: Check earlier whether reel_name string is empty
Andreas Rheinhardt [Sun, 14 Jun 2020 18:50:29 +0000 (20:50 +0200)]
avformat/mov: Check earlier whether reel_name string is empty

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec, avformat: Remove unnecessary initializations of side data size
Andreas Rheinhardt [Sun, 21 Jun 2020 04:50:03 +0000 (06:50 +0200)]
avcodec, avformat: Remove unnecessary initializations of side data size

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/avformat: Improve documentation of av_stream_get_side_data
Andreas Rheinhardt [Sun, 21 Jun 2020 04:47:23 +0000 (06:47 +0200)]
avformat/avformat: Improve documentation of av_stream_get_side_data

Document that it also sets the size in case the desired side data is
absent (if the pointer has been supplied).

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/packet: Improve documentation of av_packet_get_side_data
Andreas Rheinhardt [Sun, 21 Jun 2020 04:40:19 +0000 (06:40 +0200)]
avcodec/packet: Improve documentation of av_packet_get_side_data

Document that it also sets the size in case the desired side data is
absent (if the pointer has been supplied).

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/flvdec: Cosmetics
Andreas Rheinhardt [Sun, 21 Jun 2020 06:36:08 +0000 (08:36 +0200)]
avformat/flvdec: Cosmetics

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/nellymoserdec: Don't use invalid AVPacketSideDataType
Andreas Rheinhardt [Sun, 21 Jun 2020 03:17:08 +0000 (05:17 +0200)]
avcodec/nellymoserdec: Don't use invalid AVPacketSideDataType

Commits 957a593cd95b15a5dcb2f50306fbac59f09d8e9e and
11828b8885cc1d87ffc7b1b4bbe642ce9720b194 made the flv demuxer export
a certain flag as side data to be used by the nellymoser decoder for
mid-stream sample rate changes. It used a custom side data type 'F' that
was never officially documented.

Yet since 2215c39e94e01f57b3191a29e0e51d7e230daf49 (merged in commit
52c522c72090233edeeb0486a9bd8bee925a710a) this information is exported
via the properly documented AV_PKT_DATA_PARAM_CHANGE side data.
The merge commit therefore stopped exporting the 'F' sidedata; yet the
changes in the Nellymoser decoder (which are now dead code (and would
become dangerous if lots of new side data types were added)) have not
been removed. This commit does this.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/dashenc: Calculate average bitrate for adaptation sets in static manifest
Przemysław Sobala [Wed, 17 Jun 2020 11:50:12 +0000 (13:50 +0200)]
avformat/dashenc: Calculate average bitrate for adaptation sets in static manifest

If stream's bitrate is not specified:
- for static manifest: an average bitrate will be calculated and used,
- for dynamic manifest: first segment's bitrate will be calculated and used, as before,
for bandwidth setting in adaptation sets.

4 months agoRevert "avformat/dashenc: use AVStream timebase when computing missing bitrate"
Przemysław Sobala [Tue, 16 Jun 2020 12:32:03 +0000 (14:32 +0200)]
Revert "avformat/dashenc: use AVStream timebase when computing missing bitrate"

This reverts commit 2a9ffd89fcb09bd69b2130da039ad2caba79cf33 as duration is always in AV_TIME_BASE units

4 months agoavfilter/af_ladspa: check return value of getenv()
Paul B Mahol [Sun, 21 Jun 2020 19:34:18 +0000 (21:34 +0200)]
avfilter/af_ladspa: check return value of getenv()

4 months agoavfilter/af_ladspa: add latency compensation
Paul B Mahol [Sun, 21 Jun 2020 19:25:56 +0000 (21:25 +0200)]
avfilter/af_ladspa: add latency compensation

4 months agoavfilter/af_ladspa: check another directory for plugins
Paul B Mahol [Sun, 21 Jun 2020 12:46:29 +0000 (14:46 +0200)]
avfilter/af_ladspa: check another directory for plugins

4 months agoavcodec/hcadec: get intensity from correct channel
summertriangle.dev@gmail.com [Wed, 17 Jun 2020 21:45:07 +0000 (14:45 -0700)]
avcodec/hcadec: get intensity from correct channel

Fixes an issue with one output channel being slightly louder than
the other. The output now matches other public HCA decoders.

Signed-off-by: t <summertriangle.dev@gmail.com>
4 months agoavcodec/hcadec: fix decoding of hfr channels
summertriangle.dev@gmail.com [Wed, 17 Jun 2020 21:45:06 +0000 (14:45 -0700)]
avcodec/hcadec: fix decoding of hfr channels

I suspect this was originally broken by b7e5c8f , but even
then, it only worked because it read out of bounds from
intensity_ratio_table.

Signed-off-by: t <summertriangle.dev@gmail.com>
4 months agoavcodec/adpcmenc: remove forward declaration
Andriy Gelman [Sat, 20 Jun 2020 18:31:53 +0000 (14:31 -0400)]
avcodec/adpcmenc: remove forward declaration

Reviewed-by: Limin Wang <lance.lmwang@gmail.com>
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
4 months agoavcodec/mpeg12dec: do not discard older a53 captions
Paul B Mahol [Sat, 20 Jun 2020 13:02:48 +0000 (15:02 +0200)]
avcodec/mpeg12dec: do not discard older a53 captions

Fixes #6105.

4 months agoavcodec/ccaption_dec: use uint8_t type for prev_cmd array
Paul B Mahol [Fri, 19 Jun 2020 21:14:26 +0000 (23:14 +0200)]
avcodec/ccaption_dec: use uint8_t type for prev_cmd array

Commands are unsigned so be consistent.

4 months agoavcodec/ccaption_dec: do not modify packet data in case of parity error
Paul B Mahol [Fri, 19 Jun 2020 14:23:53 +0000 (16:23 +0200)]
avcodec/ccaption_dec: do not modify packet data in case of parity error

To dissallow similar errors in future, make pointers const.

4 months agoavcodec/ccaption_dec: allow selection of second field captions
Paul B Mahol [Fri, 19 Jun 2020 14:16:28 +0000 (16:16 +0200)]
avcodec/ccaption_dec: allow selection of second field captions

4 months agoavcodec/ccaption_dec: rework non-real-time mode with pop-on captions by delaying
Paul B Mahol [Wed, 17 Jun 2020 18:56:53 +0000 (20:56 +0200)]
avcodec/ccaption_dec: rework non-real-time mode with pop-on captions by delaying

So it give similar output as visual output of real-time mode.

4 months agodoc/encoders: fix the misleading usage of profile
Limin Wang [Fri, 19 Jun 2020 23:20:11 +0000 (07:20 +0800)]
doc/encoders: fix the misleading usage of profile

users are getting mislead by the integer, although profile
can support both const string and integer.
http://ffmpeg.org/pipermail/ffmpeg-user/2020-June/049025.html

Also fix the order of high and main, it's not my intention.

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavfilter: add D2TS, TS2D, TS2T as a common macro in internal.h
Limin Wang [Mon, 1 Jun 2020 16:14:45 +0000 (00:14 +0800)]
avfilter: add D2TS, TS2D, TS2T as a common macro in internal.h

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavformat/dvenc: return error code of dv_assemble_frame()
Limin Wang [Fri, 12 Jun 2020 13:06:25 +0000 (21:06 +0800)]
avformat/dvenc: return error code of dv_assemble_frame()

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavcodec/av1_parser: initialize avctx->pix_fmt
Manoj Bonda [Fri, 19 Jun 2020 07:01:22 +0000 (12:31 +0530)]
avcodec/av1_parser: initialize avctx->pix_fmt

Initialize avctx->pix_fmt in av1_parser.c
AV1 Chroma format is invalid when quering using below code if no AV1 decoder
is available:

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>
4 months agoavcodec/av1_parser: add missing parsing for RGB pixel format signaling
James Almer [Fri, 19 Jun 2020 13:56:20 +0000 (10:56 -0300)]
avcodec/av1_parser: add missing parsing for RGB pixel format signaling

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavcodec/av1_parser: set context values outside the OBU parsing loop
James Almer [Fri, 19 Jun 2020 12:56:49 +0000 (09:56 -0300)]
avcodec/av1_parser: set context values outside the OBU parsing loop

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agofate: add yuv420p10 and yuv422p10 tests for overlay filter
Limin Wang [Fri, 5 Jun 2020 13:58:02 +0000 (21:58 +0800)]
fate: add yuv420p10 and yuv422p10 tests for overlay filter

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavfilter/vf_overlay: add yuv420p10 and yuv422p10 10bit format support
Limin Wang [Fri, 5 Jun 2020 13:58:01 +0000 (21:58 +0800)]
avfilter/vf_overlay: add yuv420p10 and yuv422p10 10bit format support

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavfilter/vf_overlay: support for 8bit and 10bit overlay with macro-based function
Limin Wang [Fri, 5 Jun 2020 13:58:00 +0000 (21:58 +0800)]
avfilter/vf_overlay: support for 8bit and 10bit overlay with macro-based function

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavcodec/libx265: Fix integer overflow in computation of max and avg bitrate
Limin Wang [Mon, 8 Jun 2020 11:51:33 +0000 (19:51 +0800)]
avcodec/libx265: Fix integer overflow in computation of max and avg bitrate

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavcodec/encode: restructure the old encode API
James Almer [Tue, 9 Jun 2020 21:35:00 +0000 (18:35 -0300)]
avcodec/encode: restructure the old encode API

Following the same logic as 061a0c14bb, this commit turns the old encode API
into a wrapper for the new one.

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavcodec/encode: restructure the core encoding code
James Almer [Tue, 9 Jun 2020 21:31:32 +0000 (18:31 -0300)]
avcodec/encode: restructure the core encoding code

This commit follows the same logic as 061a0c14bb, but for the encode API: The
new public encoding API will no longer be a wrapper around the old deprecated
one, and the internal API used by the encoders now consists of a single
receive_packet() callback that pulls frames as required.

amf encoders adapted by James Almer
librav1e encoder adapted by James Almer
nvidia encoders adapted by James Almer
MediaFoundation encoders adapted by James Almer
vaapi encoders adapted by Linjie Fu
v4l2_m2m encoders adapted by Andriy Gelman

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavformat: add MCC demuxer
Paul B Mahol [Sat, 13 Jun 2020 13:07:41 +0000 (15:07 +0200)]
avformat: add MCC demuxer

Fixes #7680

4 months agoavformat/sccdec: make splitting more robust
Paul B Mahol [Wed, 17 Jun 2020 08:24:05 +0000 (10:24 +0200)]
avformat/sccdec: make splitting more robust

4 months agolavf/dashdec: Add missed side data/disposition
Jun Zhao [Thu, 4 Jun 2020 14:00:48 +0000 (22:00 +0800)]
lavf/dashdec: Add missed side data/disposition

dash demuxer get the stream info from sub-stream, but missed side
data/disposition part, e,g, missed the DOVI side data when the
stream is Dolby Vision streams

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
4 months agolavf/hls: Add missed side data/disposition
vacingfang [Thu, 4 Jun 2020 13:59:43 +0000 (21:59 +0800)]
lavf/hls: Add missed side data/disposition

hls demuxer get the stream info from sub-stream, but missed side
data/disposition part, e,g, missed the DOVI side data when the
stream is Dolby Vision streams.

Reviewed-by <liuqi05@kuaishou.com>
Signed-off-by: vacingfang <vacingfang@tencent.com>
4 months agofftools/ffmpeg_filter: add -autoscale to disable/enable the default scale
Linjie Fu [Mon, 8 Jun 2020 08:58:05 +0000 (16:58 +0800)]
fftools/ffmpeg_filter: add -autoscale to disable/enable the default scale

Currently, ffmpeg inserts scale filter by default in the filter graph
to force the whole decoded stream to scale into the same size with the
first frame. It's not quite make sense in resolution changing cases if
user wants the rawvideo without any scale.

Using autoscale/noautoscale as an output option to indicate whether auto
inserting the scale filter in the filter graph:
    -noautoscale or -autoscale 0:
    disable the default auto scale filter inserting.

ffmpeg -y -i input.mp4 out1.yuv -noautoscale out2.yuv -autoscale 0 out3.yuv

Update docs.

Suggested-by: Mark Thompson <sw@jkqxz.net>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
Signed-off-by: Linjie Fu <linjie.fu@intel.com>
4 months agoavformat/apm: check codec tag in probe and add constant
Zane van Iperen [Fri, 12 Jun 2020 11:46:15 +0000 (11:46 +0000)]
avformat/apm: check codec tag in probe and add constant

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavformat/movenc: Write 'av01' as a compatible brand when muxing AV1
Derek Buitenhuis [Wed, 17 Jun 2020 13:43:28 +0000 (14:43 +0100)]
avformat/movenc: Write 'av01' as a compatible brand when muxing AV1

This is a requirement of the AV1-ISOBMFF spec. Section 2.1.
General Requirements & Brands states:

    * It SHALL have the av01 brand among the compatible brands array of the FileTypeBox

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
4 months agomailmap: add entry for myself
Zhong Li [Wed, 17 Jun 2020 14:11:34 +0000 (22:11 +0800)]
mailmap: add entry for myself

Signed-off-by: Zhong Li <zhongli_dev@126.com>
4 months agodnn_backend_native: check operand index
Guo Yejun [Wed, 10 Jun 2020 05:36:11 +0000 (13:36 +0800)]
dnn_backend_native: check operand index

it fixed the issue in https://trac.ffmpeg.org/ticket/8716