Paul B Mahol
e1530a319a
avcodec/cdgraphics: fix for negative linesize and vertical scrolling
2023-09-26 20:27:57 +02:00
8fa83ad70f
lavc/aarch64: new optimization for 8-bit hevc_qpel_uni_hv
...
checkasm bench:
put_hevc_qpel_uni_hv4_8_c: 489.2
put_hevc_qpel_uni_hv4_8_i8mm: 105.7
put_hevc_qpel_uni_hv6_8_c: 852.7
put_hevc_qpel_uni_hv6_8_i8mm: 268.7
put_hevc_qpel_uni_hv8_8_c: 1345.7
put_hevc_qpel_uni_hv8_8_i8mm: 300.4
put_hevc_qpel_uni_hv12_8_c: 2757.4
put_hevc_qpel_uni_hv12_8_i8mm: 581.4
put_hevc_qpel_uni_hv16_8_c: 4458.9
put_hevc_qpel_uni_hv16_8_i8mm: 860.2
put_hevc_qpel_uni_hv24_8_c: 9582.2
put_hevc_qpel_uni_hv24_8_i8mm: 2086.7
put_hevc_qpel_uni_hv32_8_c: 16401.9
put_hevc_qpel_uni_hv32_8_i8mm: 3217.4
put_hevc_qpel_uni_hv48_8_c: 36402.4
put_hevc_qpel_uni_hv48_8_i8mm: 7082.7
put_hevc_qpel_uni_hv64_8_c: 62713.2
put_hevc_qpel_uni_hv64_8_i8mm: 12408.9
Co-Authored-By: J. Dekker <jdek@itanimul.li >
Signed-off-by: Martin Storsjö <martin@martin.st >
2023-09-26 15:50:44 +03:00
23ca61b7de
lavc/aarch64: new optimization for 8-bit hevc_qpel_uni_v
...
checkasm bench:
put_hevc_qpel_uni_v4_8_c: 146.2
put_hevc_qpel_uni_v4_8_neon: 43.2
put_hevc_qpel_uni_v6_8_c: 303.9
put_hevc_qpel_uni_v6_8_neon: 69.7
put_hevc_qpel_uni_v8_8_c: 495.2
put_hevc_qpel_uni_v8_8_neon: 74.7
put_hevc_qpel_uni_v12_8_c: 1100.9
put_hevc_qpel_uni_v12_8_neon: 222.4
put_hevc_qpel_uni_v16_8_c: 1955.2
put_hevc_qpel_uni_v16_8_neon: 269.2
put_hevc_qpel_uni_v24_8_c: 4571.9
put_hevc_qpel_uni_v24_8_neon: 832.4
put_hevc_qpel_uni_v32_8_c: 8226.4
put_hevc_qpel_uni_v32_8_neon: 1035.7
put_hevc_qpel_uni_v48_8_c: 18324.2
put_hevc_qpel_uni_v48_8_neon: 2321.2
put_hevc_qpel_uni_v64_8_c: 37659.4
put_hevc_qpel_uni_v64_8_neon: 4122.2
Co-Authored-By: J. Dekker <jdek@itanimul.li >
Signed-off-by: Martin Storsjö <martin@martin.st >
2023-09-26 15:50:44 +03:00
b7a3150bc5
lavc/aarch64: new optimization for 8-bit hevc_epel_uni_hv
...
checkasm bench:
put_hevc_epel_uni_hv4_8_c: 204.7
put_hevc_epel_uni_hv4_8_i8mm: 70.2
put_hevc_epel_uni_hv6_8_c: 378.2
put_hevc_epel_uni_hv6_8_i8mm: 131.9
put_hevc_epel_uni_hv8_8_c: 637.7
put_hevc_epel_uni_hv8_8_i8mm: 137.9
put_hevc_epel_uni_hv12_8_c: 1301.9
put_hevc_epel_uni_hv12_8_i8mm: 314.2
put_hevc_epel_uni_hv16_8_c: 2203.4
put_hevc_epel_uni_hv16_8_i8mm: 454.7
put_hevc_epel_uni_hv24_8_c: 4848.2
put_hevc_epel_uni_hv24_8_i8mm: 1065.2
put_hevc_epel_uni_hv32_8_c: 8517.4
put_hevc_epel_uni_hv32_8_i8mm: 1898.4
put_hevc_epel_uni_hv48_8_c: 19591.7
put_hevc_epel_uni_hv48_8_i8mm: 4107.2
put_hevc_epel_uni_hv64_8_c: 33880.2
put_hevc_epel_uni_hv64_8_i8mm: 6568.7
Co-Authored-By: J. Dekker <jdek@itanimul.li >
Signed-off-by: Martin Storsjö <martin@martin.st >
2023-09-26 15:50:44 +03:00
Logan Lyu and Martin Storsjö
c0374f77f4
lavc/aarch64: move macros calc_epelh, calc_epelh2, load_epel_filterh
...
Signed-off-by: Martin Storsjö <martin@martin.st >
2023-09-26 15:50:40 +03:00
7ce5a2f640
lavc/aarch64: new optimization for 8-bit hevc_epel_uni_v
...
checkasm bench:
put_hevc_epel_uni_hv64_8_i8mm: 6568.7
put_hevc_epel_uni_v4_8_c: 88.7
put_hevc_epel_uni_v4_8_neon: 32.7
put_hevc_epel_uni_v6_8_c: 185.4
put_hevc_epel_uni_v6_8_neon: 44.9
put_hevc_epel_uni_v8_8_c: 333.9
put_hevc_epel_uni_v8_8_neon: 44.4
put_hevc_epel_uni_v12_8_c: 728.7
put_hevc_epel_uni_v12_8_neon: 119.7
put_hevc_epel_uni_v16_8_c: 1224.2
put_hevc_epel_uni_v16_8_neon: 139.7
put_hevc_epel_uni_v24_8_c: 2531.2
put_hevc_epel_uni_v24_8_neon: 329.9
put_hevc_epel_uni_v32_8_c: 4739.9
put_hevc_epel_uni_v32_8_neon: 562.7
put_hevc_epel_uni_v48_8_c: 10618.7
put_hevc_epel_uni_v48_8_neon: 1256.2
put_hevc_epel_uni_v64_8_c: 19169.9
put_hevc_epel_uni_v64_8_neon: 2179.2
Co-Authored-By: J. Dekker <jdek@itanimul.li >
Signed-off-by: Martin Storsjö <martin@martin.st >
2023-09-26 15:50:40 +03:00
Paul B Mahol
56085e057f
avcodec/vlc: use logctx instead of NULL
2023-09-26 12:44:16 +02:00
Michael Niedermayer and Paul B Mahol
768704b640
avcodec/vlc: free multi on fail
...
Fixes: leak
Fixes: 62164/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_UTVIDEO_fuzzer-6449246523752448
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-26 12:44:15 +02:00
Michael Niedermayer and Paul B Mahol
2e04d35c69
avcodec/vlc: Attempt to free buf after use in ff_vlc_init_multi_from_lengths()
...
Fixes: use after free
Fixes: 62153/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MAGICYUV_fuzzer-4702814909366272
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-26 12:44:13 +02:00
Andreas Rheinhardt
8d5db120c2
tests/fate-run: Ensure that THREADS=random is actually random
...
From the documentation of GNU awk [1]:
"In most awk implementations, including gawk, rand() starts generating
numbers from the same starting number, or seed, each time you run awk.45
Thus, a program generates the same results each time you run it. The
numbers are random within one awk run but predictable from run to run.
This is convenient for debugging, but if you want a program to do
different things each time it is used, you must change the seed to a
value that is different in each run. To do this, use srand()."
This commit does exactly this.
[1]: https://www.gnu.org/software/gawk/manual/html_node/Numeric-Functions.html#index-rand_0028_0029-function
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2023-09-25 22:02:24 +02:00
Paul B Mahol and Michael Niedermayer
3bef108fa9
libswresample/swresample: avoid s16p internal transfer format
...
Instead use float one by default for sample rate conversions.
The s16p internal transfer format produces visible and hearable
quantization artifacts.
Signed-off-by: Paul B Mahol <onemda@gmail.com >
for S8 we continue to use S16 as it should have enough precision
Fate is adjusted so bitexactness is maintained between mips/arm/x86
if more tests became bit-inexact on some platform, the same change
can be done to them
The use of higher precision and float intermediates inevitably
leads to more differences between platforms.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-25 21:41:35 +02:00
Michael Niedermayer
d897f82cf8
avcodec/vmixdec: Fix signed integer overflow in dc
...
Fixes: signed integer overflow: 2147483181 + 1024 cannot be represented in type 'int'
Fixes: 61117/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VMIX_fuzzer-5387692433866752
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-25 21:41:35 +02:00
Paul B Mahol
fb05bc8eee
avfilter/af_astats: extend and improve bit depth output
2023-09-25 19:07:11 +02:00
Paul B Mahol
9e768c8133
avcodec/dxa: use uint8_t for type of arrays
2023-09-25 19:07:10 +02:00
Paul B Mahol
13a3e2a9b4
avcodec/rtv1: stop returning incomplete frames
2023-09-24 14:22:04 +02:00
Paul B Mahol
b61733f61f
avcodec/notchlc: make variables that can be negative as signed
2023-09-23 22:48:43 +02:00
Chema Gonzalez and Niklas Haas
984d0b6e6f
pixdesc: add limited|full aliases for -color_range parameter
...
Aliases are also used in scale and zscale filters.
Tested:
```
$ ./ffmpeg -hide_banner -y -i ~/src/media/images/y4m/lena.490x490.y4m -pix_fmt yuv420p -color_range unknown /tmp/unknown.y4m
...
$ md5sum /tmp/unknown.y4m
69aa7bf52bbd72444268a544c81d7643 /tmp/unknown.y4m
$ ./ffmpeg -hide_banner -y -i ~/src/media/images/y4m/lena.490x490.y4m -pix_fmt yuv420p -color_range tv /tmp/tv.y4m
...
$ md5sum /tmp/tv.y4m
5c1c8759708ff6b25dd8a660da5200e7 /tmp/tv.y4m
$ ./ffmpeg -hide_banner -y -i ~/src/media/images/y4m/lena.490x490.y4m -pix_fmt yuv420p -color_range pc /tmp/pc.y4m
...
$ md5sum /tmp/pc.y4m
1ccb85d14a3dfecb22e625711587ba97 /tmp/pc.y4m
$ ./ffmpeg -hide_banner -y -i ~/src/media/images/y4m/lena.490x490.y4m -pix_fmt yuv420p -color_range limited /tmp/limited.y4m
...
$ md5sum /tmp/limited.y4m
5c1c8759708ff6b25dd8a660da5200e7 /tmp/limited.y4m
$ ./ffmpeg -hide_banner -y -i ~/src/media/images/y4m/lena.490x490.y4m -pix_fmt yuv420p -color_range full /tmp/full.y4m
...
$ md5sum /tmp/full.y4m
1ccb85d14a3dfecb22e625711587ba97 /tmp/full.y4m
```
Also ran fate.
```
$ make fate -j
...
TEST ffprobe_xsd
TEST flv-add_keyframe_index
```
2023-09-23 15:58:14 +01:00
Chema Gonzalez and Niklas Haas
c0f89dccc8
lavfi/vf_libvmaf: add warning when color ranges differ
...
The VMAF filter uses the pixel values without considering
the color ranges. This is incorrect. Patch adds a warning
so at least the user knows it.
Let's see an example.
(1) Let's get FR and LR versions of the same image.
```
$ ffmpeg -y -i /tmp/lena.490x490.ppm -vf scale="out_range=full" -pix_fmt yuv420p /tmp/lena.full.y4m
$ xxd /tmp/lena.full.y4m |head
00000000: 5955 5634 4d50 4547 3220 5734 3930 2048 YUV4MPEG2 W490 H
00000010: 3439 3020 4632 353a 3120 4970 2041 303a 490 F25:1 Ip A0:
00000020: 3020 4334 3230 6a70 6567 2058 5953 4353 0 C420jpeg XYSCS
00000030: 533d 3432 304a 5045 4720 5843 4f4c 4f52 S=420JPEG XCOLOR
00000040: 5241 4e47 453d 4655 4c4c 0a46 5241 4d45 RANGE=FULL.FRAME
00000050: 0a72 7271 7070 706f 6f6e 6d6d 6c6d 6d6d .rrqpppoonmmlmmm
00000060: 6c6e 6e6d 6d6e 6e6e 6d6c 6d6d 6d6d 6d6d lnnmmnnnmlmmmmmm
00000070: 6d6e 6d6b 6c6d 6e6e 6d6c 6d6d 6e6e 6f6f mnmklmnnmlmmnnoo
00000080: 6f6f 6e6e 6e6e 6f70 7172 7375 7676 7370 oonnnnopqrsuvvsp
00000090: 6d69 6662 5e59 534d 4845 3d35 302e 2d2c mifb^YSMHE=50.-,
```
```
$ ffmpeg -y -i /tmp/lena.490x490.ppm -vf scale="out_range=limited" -pix_fmt yuv420p /tmp/lena.limited.y4m
$ xxd /tmp/lena.limited.y4m | head
00000000: 5955 5634 4d50 4547 3220 5734 3930 2048 YUV4MPEG2 W490 H
00000010: 3439 3020 4632 353a 3120 4970 2041 303a 490 F25:1 Ip A0:
00000020: 3020 4334 3230 6a70 6567 2058 5953 4353 0 C420jpeg XYSCS
00000030: 533d 3432 304a 5045 4720 5843 4f4c 4f52 S=420JPEG XCOLOR
00000040: 5241 4e47 453d 4c49 4d49 5445 440a 4652 RANGE=LIMITED.FR
00000050: 414d 450a 7272 7170 7070 6f6f 6e6e 6e6d AME.rrqpppoonnnm
00000060: 6e6e 6e6d 6f6e 6e6e 6e6e 6e6e 6d6e 6e6e nnnmonnnnnnnmnnn
00000070: 6e6e 6e6e 6f6e 6c6d 6e6f 6e6e 6d6e 6e6f nnnnonlmnonnmnno
00000080: 6f6f 6f6f 6f6f 6f6f 6f6f 7071 7273 7576 oooooooooopqrsuv
00000090: 7673 706e 6a68 6461 5c57 524e 4b44 3d39 vspnjhda\WRNKD=9
```
Note that the 2x images are the same. Only difference is the range,
and the precision issues related to range conversion.
(2) Let's calculate the VMAF score:
```
$ ./ffmpeg -filter_threads 1 -filter_complex_threads 1 -i /tmp/lena.full.y4m -i /tmp/lena.limited.y4m -lavfi libvmaf="model=path=/usr/share/model/vmaf_v0.6.1neg.json" -report -f null -
...
[Parsed_libvmaf_0 @ 0x3cc9b40] VMAF score: 85.530109
```
As we are comparing an image with itself, we expect the score to
be close to 100. Issue here is that the VMAF filter just uses the
pixel values, ignoring the color ranges.
Proposed solution is to add a warning.
```
$ ./ffmpeg -filter_threads 1 -filter_complex_threads 1 -i /tmp/lena.full.y4m -i /tmp/lena.limited.y4m -lavfi libvmaf="model=path=/us
r/share/model/vmaf_v0.6.1neg.json" -report -f null -
...
[Parsed_libvmaf_0 @ 0x3cc9b40] distorted and reference frames use different color ranges (pc != tv)
...
[Parsed_libvmaf_0 @ 0x3cc9b40] VMAF score: 85.530109
```
Tested:
Ran fate.
```
$ make fate -j
...
TEST seek-lavf-ppmpipe
TEST seek-lavf-pgmpipe
TEST seek-lavf-mxf_opatom
```
2023-09-23 15:55:50 +01:00
Chema Gonzalez and Niklas Haas
a53545a374
lavfi/vf_ssim: add warning when color ranges differ
...
The SSIM filter uses the pixel values without considering
the color ranges. This is incorrect. Patch adds a warning
so at least the user knows it.
Let's see an example.
(1) Let's get FR and LR versions of the same image.
```
$ ffmpeg -y -i /tmp/lena.490x490.ppm -vf scale="out_range=full" -pix_fmt yuv420p /tmp/lena.full.y4m
$ xxd /tmp/lena.full.y4m |head
00000000: 5955 5634 4d50 4547 3220 5734 3930 2048 YUV4MPEG2 W490 H
00000010: 3439 3020 4632 353a 3120 4970 2041 303a 490 F25:1 Ip A0:
00000020: 3020 4334 3230 6a70 6567 2058 5953 4353 0 C420jpeg XYSCS
00000030: 533d 3432 304a 5045 4720 5843 4f4c 4f52 S=420JPEG XCOLOR
00000040: 5241 4e47 453d 4655 4c4c 0a46 5241 4d45 RANGE=FULL.FRAME
00000050: 0a72 7271 7070 706f 6f6e 6d6d 6c6d 6d6d .rrqpppoonmmlmmm
00000060: 6c6e 6e6d 6d6e 6e6e 6d6c 6d6d 6d6d 6d6d lnnmmnnnmlmmmmmm
00000070: 6d6e 6d6b 6c6d 6e6e 6d6c 6d6d 6e6e 6f6f mnmklmnnmlmmnnoo
00000080: 6f6f 6e6e 6e6e 6f70 7172 7375 7676 7370 oonnnnopqrsuvvsp
00000090: 6d69 6662 5e59 534d 4845 3d35 302e 2d2c mifb^YSMHE=50.-,
```
```
$ ffmpeg -y -i /tmp/lena.490x490.ppm -vf scale="out_range=limited" -pix_fmt yuv420p /tmp/lena.limited.y4m
$ xxd /tmp/lena.limited.y4m | head
00000000: 5955 5634 4d50 4547 3220 5734 3930 2048 YUV4MPEG2 W490 H
00000010: 3439 3020 4632 353a 3120 4970 2041 303a 490 F25:1 Ip A0:
00000020: 3020 4334 3230 6a70 6567 2058 5953 4353 0 C420jpeg XYSCS
00000030: 533d 3432 304a 5045 4720 5843 4f4c 4f52 S=420JPEG XCOLOR
00000040: 5241 4e47 453d 4c49 4d49 5445 440a 4652 RANGE=LIMITED.FR
00000050: 414d 450a 7272 7170 7070 6f6f 6e6e 6e6d AME.rrqpppoonnnm
00000060: 6e6e 6e6d 6f6e 6e6e 6e6e 6e6e 6d6e 6e6e nnnmonnnnnnnmnnn
00000070: 6e6e 6e6e 6f6e 6c6d 6e6f 6e6e 6d6e 6e6f nnnnonlmnonnmnno
00000080: 6f6f 6f6f 6f6f 6f6f 6f6f 7071 7273 7576 oooooooooopqrsuv
00000090: 7673 706e 6a68 6461 5c57 524e 4b44 3d39 vspnjhda\WRNKD=9
```
Note that the 2x images are the same. Only difference is the range,
and the precision issues related to range conversion.
(2) Let's calculate the SSIM score:
```
$ ./ffmpeg -filter_threads 1 -filter_complex_threads 1 -i /tmp/lena.full.y4m -i /tmp/lena.limited.y4m -lavfi "ssim" -f null -
...
[Parsed_ssim_0 @ 0x360ab00] SSIM Y:0.942347 (12.391801) U:0.995808 (23.776062) V:0.996104 (24.093747) All:0.960217 (14.003012)
```
As we are comparing an image with itself, we expect "Y: 1" as the
luma SSIM. Issue here is that the SSIM filter just uses the pixel
values, ignoring the color ranges.
Proposed solution is to add a warning.
```
$ ./ffmpeg -filter_threads 1 -filter_complex_threads 1 -i /tmp/foo.full.y4m -i /tmp/foo.limited.y4m -lavfi "ssim" -f null -
...
[Parsed_ssim_0 @ 0x3766280] master and reference frames use different color ranges (pc != tv)
...
[Parsed_ssim_0 @ 0x3766280] SSIM Y:0.000000 (0.000000) U:0.000000 (0.000000) V:0.000000 (0.000000) All:0.000000 (0.000000)
```
Tested:
Ran fate.
```
$ make fate -j
...
TEST seek-lavf-ppmpipe
TEST seek-lavf-pgmpipe
TEST seek-lavf-mxf_opatom
```
2023-09-23 15:55:47 +01:00
Chema Gonzalez and Niklas Haas
7311fcc869
lavfi/vf_psnr: add warning when color ranges differ
...
The PSNR filter uses the pixel values without considering
the color ranges. This is incorrect. Patch adds a warning
so at least the user knows it.
Let's see an example:
(1) Let's get a simple black pixel/white pixel image.
```
$ echo -n -e "\x00\x00\x00\xff\xff\xff" > /tmp/foo.rgb24
```
(2) From this image, let's distill full and limited range y4m
copies.
```
$ ffmpeg -y -f rawvideo -video_size 2x1 -pix_fmt rgb24 -i /tmp/foo.rgb24 -vf scale="out_range=full" -pix_fmt yuv420p /tmp/foo.full.y4m
$ xxd /tmp/foo.full.y4m
00000000: 5955 5634 4d50 4547 3220 5732 2048 3120 YUV4MPEG2 W2 H1
00000010: 4632 353a 3120 4970 2041 303a 3020 4334 F25:1 Ip A0:0 C4
00000020: 3230 6a70 6567 2058 5953 4353 533d 3432 20jpeg XYSCSS=42
00000030: 304a 5045 4720 5843 4f4c 4f52 5241 4e47 0JPEG XCOLORRANG
00000040: 453d 4655 4c4c 0a46 5241 4d45 0a00 ff80 E=FULL.FRAME....
00000050: 80 .
```
and
```
$ ffmpeg -y -f rawvideo -video_size 2x1 -pix_fmt rgb24 -i /tmp/foo.rgb24 -vf scale="out_range=limited" -pix_fmt yuv420p /tmp/foo.limited.y4m
$ xxd /tmp/foo.limited.y4m
00000000: 5955 5634 4d50 4547 3220 5732 2048 3120 YUV4MPEG2 W2 H1
00000010: 4632 353a 3120 4970 2041 303a 3020 4334 F25:1 Ip A0:0 C4
00000020: 3230 6a70 6567 2058 5953 4353 533d 3432 20jpeg XYSCSS=42
00000030: 304a 5045 4720 5843 4f4c 4f52 5241 4e47 0JPEG XCOLORRANG
00000040: 453d 4c49 4d49 5445 440a 4652 414d 450a E=LIMITED.FRAME.
00000050: 10eb 8080 ....
```
Note that the 2x images are the same (both have 1x pixel at the
darkest black, and one at the brightest white). Only difference
is the range.
(3) Let's calculate the PSNR score:
```
$ ./ffmpeg -filter_threads 1 -filter_complex_threads 1 -i /tmp/foo.full.y4m -i /tmp/foo.limited.y4m -lavfi "psnr" -f null -
...
[Parsed_psnr_0 @ 0x2f5dac0] PSNR y:22.972065 u:inf v:inf average:25.982365 min:25.982365 max:25.982365
```
As we are comparing an image with itself, we expect "y:inf" as the
luma PSNR. Issue here is that the PSNR filter just uses the pixel
values, ignoring the color ranges.
A possible solution would be to have the filter do the conversion.
Proposed solution is to add a warning.
```
$ ./ffmpeg -filter_threads 1 -filter_complex_threads 1 -i /tmp/foo.full.y4m -i /tmp/foo.limited.y4m -lavfi "psnr" -f null -
...
[Parsed_psnr_0 @ 0x2f5dac0] master and reference frames use different color ranges (pc != tv)
...
[Parsed_psnr_0 @ 0x2f5dac0] PSNR y:22.972065 u:inf v:inf average:25.982365 min:25.982365 max:25.982365
```
Tested:
Ran fate.
```
$ make fate -j
...
TEST seek-lavf-ppmpipe
TEST seek-lavf-pgmpipe
TEST seek-lavf-mxf_opatom
```
2023-09-23 15:55:44 +01:00
Paul B Mahol
c7f8d42c12
avcodec/flicvideo: fix decoding with AVFrame's negative linesize
2023-09-23 15:31:44 +02:00
Paul B Mahol
cb26b85953
avcodec/svq1dec: fix runtime error: applying non-zero offset 4 to null pointer
2023-09-23 10:04:08 +02:00
Paul B Mahol
5d98259841
avcodec/pnmdec: fix decoding with AVFrame's negative linesize
2023-09-23 01:42:49 +02:00
Paul B Mahol
cdf0931fdb
avcodec/pcx: fix decoding with AVFrame's negative linesize
2023-09-23 01:42:48 +02:00
Paul B Mahol
ee357d6991
avcodec/rasc: fix decoding with AVFrame's negative linesize
2023-09-23 01:14:12 +02:00
Michael Niedermayer
284d1a8a6a
avcodec/wavarc: Use unsigned for samples in 1dif, 2slp, 5elp
...
Fixes: signed integer overflow: 141394472 + 2038060365 cannot be represented in type 'int'
Fixes: 61787/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WAVARC_fuzzer-5882604925878272
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-22 23:47:41 +02:00
Michael Niedermayer
b12444fe72
avcodec/xvididct: Fix integer overflow in idct_row()
...
Fixes: signed integer overflow: 1871429831 + 343006811 cannot be represented in type 'int'
Fixes: 61784/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AIC_fuzzer-5372151001120768
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-22 23:47:41 +02:00
Michael Niedermayer
6580a7b2b2
avcodec/celp_math: avoid overflow in shift
...
by making gain unsigned we have 1 bit more available
alternatively we can clip twice as in the g729 reference
Fixes: left shift of 23404 by 17 places cannot be represented in type 'int'
Fixes: 61728/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ACELP_KELVIN_fuzzer-6280412547383296
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-22 23:47:40 +02:00
Michael Niedermayer
f1954ff8d1
avcodec/vvc_parser: Avoid undefined overflow in POC computation
...
The comments to the function say that it does not implement the spec and
instead follows VTM.
This patch is quite likely not the right solution and more intended to show
the issue to people knowing the specific part of VTM ...
Fixes: signed integer overflow: 2147483392 + 256 cannot be represented in type 'int'
Fixes: 60505/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-6216675924770816
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-22 23:47:40 +02:00
Michael Niedermayer
9ee87245c5
tools/target_dec_fuzzer: Adjust threshold for rtv1
...
Fixes: 60499/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_RTV1_fuzzer-5020295866744832
Fixes: Timeout
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-22 23:47:40 +02:00
Michael Niedermayer
3aff8503a9
avformat/mov: Avoid cloning encryption info if its unchanged
...
Fixes: OOM
Fixes: 45834/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-5419540462305280
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-22 23:47:39 +02:00
Michael Niedermayer
120f74650d
avcodec/evc_ps: Check cpb_cnt_minus1 and propagate error
...
Fixes: out of array access
Fixes: 60949/clusterfuzz-testcase-minimized-ffmpeg_dem_EVC_fuzzer-5959738853294080
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2023-09-22 23:47:39 +02:00
Paul B Mahol
87cf1be905
avcodec/lcldec: fix decoding with AVFrame's negative linesize
2023-09-22 23:38:00 +02:00
Paul B Mahol
445167d5fd
avcodec/cdxl: fix decoding with AVFrame's negative linesize
2023-09-22 23:12:55 +02:00
Paul B Mahol
24f63cb2b7
avcodec/gifdec: rewrite functions that fill block/frame
...
Also fix AVFrame's negative linesize decoding.
2023-09-22 22:56:59 +02:00
Paul B Mahol
1242d172e2
avfilter: use ptrdiff_t instead of int for linesize
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2023-09-22 22:56:57 +02:00
Paul B Mahol
c192ebc806
avcodec/cdgraphics: fix decoding with AVFrame's negative linesize
2023-09-22 22:56:22 +02:00
Paul B Mahol
035d187c4d
avformat/hca: add support for decryption
2023-09-22 08:52:18 +02:00
Fei Wang and Haihao Xiang
63371cde9d
lavc/av1: Add unit test for level handling
...
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Reviewed-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:01 +08:00
Fei Wang and Haihao Xiang
3be81e3b44
lavc/vaapi_encode: Add VAAPI AV1 encoder
...
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Acked-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:00 +08:00
Fei Wang and Haihao Xiang
254c5a8134
lavc/vaapi_encode: Separate reference frame into previous/future list
...
To support more reference frames from different directions.
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Reviewed-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:00 +08:00
Fei Wang and Haihao Xiang
11b81838ae
lavc/vaapi_encode: Extract set output pkt property function
...
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Reviewed-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:00 +08:00
Fei Wang and Haihao Xiang
4a4400709c
lavc/vaapi_encode: Init pic at the beginning of API
...
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Reviewed-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:00 +08:00
Fei Wang and Haihao Xiang
695477a1c7
avcodec/cbs_av1: Allow specifying obu size byte length
...
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Reviewed-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:00 +08:00
Mark Thompson and Haihao Xiang
abe16daea1
cbs: Make tracing more general
...
Turn tracing into callbacks for each syntax element, with default
callbacks to match current trace_headers behaviour for debug. Move
the construction of bit strings into the trace callback, which
simplifies all of the read and write functions.
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Reviewed-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:00 +08:00
Fei Wang and Haihao Xiang
6c3a5d625f
avcodec/cbs_av1: Add tx mode enum values
...
Signed-off-by: Fei Wang <fei.w.wang@intel.com >
Reviewed-by: Neal Gompa <ngompa13@gmail.com >
2023-09-22 13:15:00 +08:00
James Almer
95b5c81729
avcodec/extract_extradata: use size_t as parameter type in val_in_array()
...
It only gets passed the return value of FF_ARRAY_ELEMS(), which is a size_t.
Signed-off-by: James Almer <jamrial@gmail.com >
2023-09-21 22:04:22 -03:00
Paul B Mahol
365529178d
avformat/cafdec: improve probing
2023-09-21 22:41:10 +02:00
Paul B Mahol
ea06317190
avcodec/osq: do not return immediately on fatal error
2023-09-21 20:32:41 +02:00
Damiano Galassi and Kieran Kunhya
33b2646d61
lavf/movenc: enable dvh1 FourCC
...
This is required to pass through Dolby Vision metadata to x265.
Profiles 5 and 8 require the "dvh1" fourCC:
https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolby-vision-streams-within-the-http-live-streaming-format-v2.0-13-november-2018.pdf#unique_10
https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolbyvisioninmpegdashspecification_v2_0_public_20190107.pdf#unique_13
https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolby_vision_bitstreams_within_the_iso_base_media_file_format_dec2017.pdf
See also https://github.com/HandBrake/HandBrake/pull/4838 for more
details.
Fixes: https://trac.ffmpeg.org/ticket/10257
2023-09-20 21:19:45 +01:00