1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-29 22:00:58 +02:00

24783 Commits

Author SHA1 Message Date
Andreas Rheinhardt
3cfae9e038 avformat/internal: Move definition of FFStream->info to demux.h
It is only used by avformat_find_stream_info().

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:37:43 +02:00
Andreas Rheinhardt
35ec5c819b avformat/demux: Add new demux.h header
And move those stuff already in demuxer-only files to it.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:37:38 +02:00
Andreas Rheinhardt
20ca491664 avformat/utils: Move ff_stream_encode_params_copy() to mux_utils.c
Only used by muxers.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:32:16 +02:00
Andreas Rheinhardt
08c14e67bb avformat/utils: Move av_stream_get_end_pts() to mux_utils.c
It is only to be used with muxers.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:32:13 +02:00
Andreas Rheinhardt
d4455d37c4 avformat/utils: Move avformat_query_codec() to mux_utils.c
It is obviously muxer-only.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:32:10 +02:00
Andreas Rheinhardt
437484a66a avformat/utils: Move ff_format_output_open() to mux_utils.c
It is obviously a muxing-only function.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:31:47 +02:00
Andreas Rheinhardt
d78838414b avformat/utils: Move creation-time functions to mux_utils
Only used by muxers.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:30:31 +02:00
Andreas Rheinhardt
533836b8e0 avformat/utils: Move ff_get_packet_palette() to rawutils.c
ff_get_packet_palette() and ff_reshuffle_raw_rgb() belong together:
E.g. the former takes the return value of the latter as argument.
So move ff_get_packet_palette() to rawutils.c (which consists solely
of ff_reshuffle_raw_rgb()).
Also add a separate header for these two functions.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:29:32 +02:00
Andreas Rheinhardt
ba49acf143 avformat/mux_utils: Move ff_format_shift_data to new file for mux utils
It is only used by muxers. Given that it is not part of
the core muxing code and given that mux.c is already big enough,
it is moved to a new file for utility functions for muxing.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:29:15 +02:00
Andreas Rheinhardt
b9f6d416ec avformat/utils: Move stream_options, avformat_new_stream to options.c
This is the appropriate place given that AVStream is about to
become an AVOpt-enabled struct.
Also move av_disposition_(to|from)_string, as these are tied
to the disposition stream option.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:28:54 +02:00
Andreas Rheinhardt
7547f13548 avformat/utils: Move ff_stream_add_bitstream_filter to mux.c
It is muxing-only; in fact, it should be considered part of
the core muxing code.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:27:36 +02:00
Andreas Rheinhardt
5130bbb7ef avformat/mux: Move ff_choose_chroma_location to mxfenc, its only user
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:27:26 +02:00
Andreas Rheinhardt
107bdd97a9 avformat/mux: Move ff_choose_timebase to nutenc, its only user
(This function does not seem to abide by its documentation.)

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:27:09 +02:00
Andreas Rheinhardt
f4a2d722aa avformat/internal: Move muxing-only functions to new mux.h header
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 07:27:01 +02:00
Andreas Rheinhardt
84091cd029 avformat/utils: Use av_realloc_array for reallocating array
Also improve the size check a bit; given that av_realloc_array()
checks for overflow itself, we only have to check for
nb_side_data + 1 still being representable in an int.
But given that we can check for representability in size_t
at no additional cost we do so as it leads to a nicer error code.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 06:49:32 +02:00
Andreas Rheinhardt
f2b79c5b85 lib*/version: Move library version functions into files of their own
This avoids having to rebuild big files every time FFMPEG_VERSION
changes (which it does with every commit).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 06:49:32 +02:00
Andreas Rheinhardt
3417379d5e avformat/dhav: Don't truncate return value of avio_skip()
Fixes demuxing files bigger than INT_MAX.

Reported-by: jenster
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-05-10 06:17:39 +02:00
Marton Balint
0a58fdfd3e avformat/mov: fix timecode with rounded down tmcd nb_frames
Regression since 8dd5bb728038f21d17ec789e21d65fe8f3f364a6.
Fixes ticket #5978.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-05-09 22:21:59 +02:00
softworkz
f77ac5131c libavformat/asfdec: remove unused parameters
Signed-off-by: softworkz <softworkz@hotmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-05-08 20:52:41 +02:00
Zhao Zhili
6c1b685e20 avformat/mov: fix use invalid box size/type due to eof 2022-05-08 23:46:52 +08:00
Zhao Zhili
4f698be741 avformat/mov: reindent after previous commit 2022-05-08 23:46:48 +08:00
Zhao Zhili
43fe6e18f2 avformat/mov: remove an always true condition 2022-05-08 23:46:44 +08:00
Jun Zhao
93d6d697fa lavf/cavsvideodec: Add GuangDian profile support
Enable the Guangdian profile support

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2022-05-08 10:50:30 +08:00
Steven Liu
f1c19867d7 avformat/hlsenc: remove unnecessary http/https shutdown status operate
Fix ticket: 9010
there have been get http/https shutdown status in ffurl_shutdown.
so unnecessary http/https shutdown status operate.

Tested-by: RytoEX
Tested-by: ushadow
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2022-05-07 21:10:13 +08:00
Michael Niedermayer
e06b1ba7d7 avformat/libzmq: Improve r redundancy in occured
Reviewed-by: "mypopy@gmail.com" <mypopy@gmail.com>
2022-05-06 15:57:45 +02:00
Michael Niedermayer
9a6dafa0ee avformat/jvdec: Remove redundant ;
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-05-06 15:57:45 +02:00
Zhao Zhili
580fb6a8c9 avformat/mov: skip call ff_codec_get_id if possible
ff_codec_get_id loops over ff_codec_movvideo_tags (which is a large
array) two times. The result is unused most of the cases.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2022-05-04 00:35:50 +08:00
erankor
4d52d8c9f6 movenc: add write_btrt option
supports forcing or disabling the writing of the btrt atom.
the default behavior is to write the atom only for mp4 mode.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2022-05-02 21:02:43 +08:00
Zhao Zhili
301141b576 avformat/movenc: sidx earliest_presentation_time is applied after editlist
Fix #8334

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2022-04-29 17:22:52 +08:00
Andreas Rheinhardt
3946cb02fc avformat/jpegxl_probe: Fix potential incorrect and UB shift
Fixes Coverity issue #1504273.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-29 01:30:14 +02:00
Andreas Rheinhardt
33d1c71931 avformat/format: Also search for image2-codecs for image2pipe
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-28 02:40:49 +02:00
Andreas Rheinhardt
52af16bbf5 avformat/fitsenc: Simplify writing header padding
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-28 02:39:37 +02:00
Timo Rothenpieler
4fc806bbe6 lavf/tls_mbedtls: add support for mbedtls version 3
- certs.h is gone. Only contains test data, and was not used at all.
- config.h is renamed. Was seemingly not used, so can be removed.
- MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE is gone, instead
  MBEDTLS_ERR_SSL_HANDSHAKE_FAILURE will be thrown.
- mbedtls_pk_parse_keyfile now needs to be passed a properly seeded
  RNG. Hence, move the call to after RNG seeding.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2022-04-27 18:43:01 +02:00
Zhao Zhili
43afd8c681 avformat/mov: log the right variable
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2022-04-27 21:00:17 +08:00
Yubo Xie
7795f045a0 libavformat/rtsp: pkt_size option is not honored in rtsp
Signed-off-by: xyb <xyb@xyb.name>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2022-04-27 20:47:59 +08:00
Zhao Zhili
d114f064c6 avformat/mov: fix missing extra data updating
The stsc_index is checked and updated for the next sample. If the
next sample needs to update stsd_index and stsc_index, then only
stsc_index is updated, which leads to a missing
AV_PKT_DATA_NEW_EXTRADATA. For example, the sample in the second
chunk needs to update both.

entry[0]
    first_chunk = 1
    samples_per_chunk = 3
    sample_description_index = 1
entry[1]
    first_chunk = 2
    samples_per_chunk = 1
    sample_description_index = 2
entry[2]
    first_chunk = 3
    samples_per_chunk = 8
    sample_description_index = 2

The fix is simple: first check and update stsd_index for current
sample, then check and update stsc_index for the next.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2022-04-27 20:14:18 +08:00
Vignesh Venkatasubramanian
f2724d2b69 avformat/mov: Add avif to list of supported extensions
AVIF still and animations are now supported by the MOV parser.
Add the "avif" extension to the list of supported extensions to
AVInputFormat.

Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
2022-04-25 15:42:11 +05:30
Leo Izen
58039129e5 avformat/version: bump minor version for Jpeg XL
The version.h bump got missed with the Jpeg XL patchset. This should
bump the minor version in accordance with the contributing guidelines.
2022-04-23 22:57:56 +03:00
Leo Izen
3ac23440ef avformat/image2: add Jpeg XL as image2 format
This commit adds support to libavformat for muxing
and demuxing Jpeg XL images as image2 streams.
2022-04-23 19:51:46 +02:00
Vignesh Venkatasubramanian
499e245b85 avformat/mov: Add support for still image AVIF parsing
This patch supports AVIF still images conforming to the
final specification that have exactly one item (i.e. no alpha channel).
The iloc box is parsed and the mov index populated.

Partially fixes #7621.

Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Gyan Doshi <ffmpeg@gyani.pro>
2022-04-23 13:26:34 +05:30
Marton Balint
8dd5bb7280 avformat/mov: fix timecode with high frame rate content
60 fps content have "Number of Frames" set to 30 in the tmcd atom, but the
frame duration / timescale reflects the original video frame rate.

Therefore we multiply the frame count with the quotient of the rounded timecode
frame rate and the "Number of Frames" per second to get a frame count in the original
(higher) frame rate.

Note that the frames part in the timecode will be in high frame rate which will
make the timecode different to e.g. MediaInfo which seems to show the 30 fps
timecode even for 120 fps content.

Regression since 428b4aacb1a91a267650de644519882a5f700388.

Fixes ticket #9710.
Fixes ticket #9492.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-22 22:54:56 +02:00
Marton Balint
58454749a7 avformat/rtmpproto: send proper status for response to play command
This fixes referencing the uninitialized filename variable.

Fixes ticket #9711.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-22 22:06:04 +02:00
Michael Niedermayer
a3d790f197 avformat/genh: Check sample rate
Fixes: signed integer overflow: -2515507630940093440 * 4 cannot be represented in type 'long'
Fixes: 46318/clusterfuzz-testcase-minimized-ffmpeg_dem_GENH_fuzzer-5009637474172928

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>
2022-04-21 22:42:20 +02:00
Michael Niedermayer
6007d5688c avformat/demux: Use unsigned to check duration vs duration_text
Fixes: signed integer overflow: 9223371898743775808 - -138111000000 cannot be represented in type 'long'
Fixes: 46245/clusterfuzz-testcase-minimized-ffmpeg_dem_OGG_fuzzer-5075129786302464

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>
2022-04-21 22:42:20 +02:00
Tristan Matthews
25d3f96db7 librtmp: use AVBPrint instead of char *
This avoids having to do one pass to calculate the full length to allocate
followed by a second pass to actually append values.

Signed-off-by: Martin Storsjö <martin@martin.st>
2022-04-19 23:19:16 +03:00
Mark Gaiser
ea84eb2db1 avformat/ipfsgateway: define PATH_MAX
PATH_MAX is posix. Some compilers (MSVC) don't define this
thus failing to compile the ipfsgateway file.
Defining it fixes the compile.

Signed-off-by: Mark Gaiser <markg85@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2022-04-14 10:52:21 +03:00
Mark Gaiser
f889837e00 avformat: Add IPFS protocol support.
This patch adds support for:
- ffplay ipfs://<cid>
- ffplay ipns://<cid>

IPFS data can be played from so called "ipfs gateways".
A gateway is essentially a webserver that gives access to the
distributed IPFS network.

This protocol support (ipfs and ipns) therefore translates
ipfs:// and ipns:// to a http:// url. This resulting url is
then handled by the http protocol. It could also be https
depending on the gateway provided.

To use this protocol, a gateway must be provided.
If you do nothing it will try to find it in your
$HOME/.ipfs/gateway file. The ways to set it manually are:
1. Define a -gateway <url> to the gateway.
2. Define $IPFS_GATEWAY with the full http link to the gateway.
3. Define $IPFS_PATH and point it to the IPFS data path.
4. Have IPFS running in your local user folder (under $HOME/.ipfs).

Signed-off-by: Mark Gaiser <markg85@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-04-12 19:58:33 +02:00
Marton Balint
ee50cc18b3 avcodec/vbnenc: add VBN encoder
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
013d774e22 avcodec/vbndec: add VBN decoder
Add support for decoding Vizrt Binary Image (VBN) files.

LZW-compressed data is not supported yet.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Peter Ross
7f534d022e avformat/codec2: remove surplus include 'memory.h' statement
on glibc memory.h drags in string.h, but codec2 does not use any
str* or mem* functions. additionally, memory.h is not part of the
C99 or POSIX standards.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-09 21:05:18 +02:00