diff options
Diffstat (limited to 'meta/recipes-multimedia/ffmpeg/ffmpeg')
3 files changed, 0 insertions, 231 deletions
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-avcodec-rpzaenc-stop-accessing-out-of-bounds-frame.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-avcodec-rpzaenc-stop-accessing-out-of-bounds-frame.patch deleted file mode 100644 index 2775a81cc8..0000000000 --- a/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-avcodec-rpzaenc-stop-accessing-out-of-bounds-frame.patch +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | From 92f9b28ed84a77138105475beba16c146bdaf984 Mon Sep 17 00:00:00 2001 | ||
2 | From: Paul B Mahol <onemda@gmail.com> | ||
3 | Date: Sat, 12 Nov 2022 16:12:00 +0100 | ||
4 | Subject: [PATCH] avcodec/rpzaenc: stop accessing out of bounds frame | ||
5 | |||
6 | Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/92f9b28ed84a77138105475beba16c146bdaf984] | ||
7 | |||
8 | Signed-off-by: <narpat.mali@windriver.com> | ||
9 | |||
10 | --- | ||
11 | libavcodec/rpzaenc.c | 22 +++++++++++++++------- | ||
12 | 1 file changed, 15 insertions(+), 7 deletions(-) | ||
13 | |||
14 | diff --git a/libavcodec/rpzaenc.c b/libavcodec/rpzaenc.c | ||
15 | index d710eb4f82..4ced9523e2 100644 | ||
16 | --- a/libavcodec/rpzaenc.c | ||
17 | +++ b/libavcodec/rpzaenc.c | ||
18 | @@ -205,7 +205,7 @@ static void get_max_component_diff(const BlockInfo *bi, const uint16_t *block_pt | ||
19 | |||
20 | // loop thru and compare pixels | ||
21 | for (y = 0; y < bi->block_height; y++) { | ||
22 | - for (x = 0; x < bi->block_width; x++){ | ||
23 | + for (x = 0; x < bi->block_width; x++) { | ||
24 | // TODO: optimize | ||
25 | min_r = FFMIN(R(block_ptr[x]), min_r); | ||
26 | min_g = FFMIN(G(block_ptr[x]), min_g); | ||
27 | @@ -278,7 +278,7 @@ static int leastsquares(const uint16_t *block_ptr, const BlockInfo *bi, | ||
28 | return -1; | ||
29 | |||
30 | for (i = 0; i < bi->block_height; i++) { | ||
31 | - for (j = 0; j < bi->block_width; j++){ | ||
32 | + for (j = 0; j < bi->block_width; j++) { | ||
33 | x = GET_CHAN(block_ptr[j], xchannel); | ||
34 | y = GET_CHAN(block_ptr[j], ychannel); | ||
35 | sumx += x; | ||
36 | @@ -325,7 +325,7 @@ static int calc_lsq_max_fit_error(const uint16_t *block_ptr, const BlockInfo *bi | ||
37 | int max_err = 0; | ||
38 | |||
39 | for (i = 0; i < bi->block_height; i++) { | ||
40 | - for (j = 0; j < bi->block_width; j++){ | ||
41 | + for (j = 0; j < bi->block_width; j++) { | ||
42 | int x_inc, lin_y, lin_x; | ||
43 | x = GET_CHAN(block_ptr[j], xchannel); | ||
44 | y = GET_CHAN(block_ptr[j], ychannel); | ||
45 | @@ -420,7 +420,9 @@ static void update_block_in_prev_frame(const uint16_t *src_pixels, | ||
46 | uint16_t *dest_pixels, | ||
47 | const BlockInfo *bi, int block_counter) | ||
48 | { | ||
49 | - for (int y = 0; y < 4; y++) { | ||
50 | + const int y_size = FFMIN(4, bi->image_height - bi->row * 4); | ||
51 | + | ||
52 | + for (int y = 0; y < y_size; y++) { | ||
53 | memcpy(dest_pixels, src_pixels, 8); | ||
54 | dest_pixels += bi->rowstride; | ||
55 | src_pixels += bi->rowstride; | ||
56 | @@ -730,14 +732,15 @@ post_skip : | ||
57 | |||
58 | if (err > s->sixteen_color_thresh) { // DO SIXTEEN COLOR BLOCK | ||
59 | uint16_t *row_ptr; | ||
60 | - int rgb555; | ||
61 | + int y_size, rgb555; | ||
62 | |||
63 | block_offset = get_block_info(&bi, block_counter); | ||
64 | |||
65 | row_ptr = &src_pixels[block_offset]; | ||
66 | + y_size = FFMIN(4, bi.image_height - bi.row * 4); | ||
67 | |||
68 | - for (int y = 0; y < 4; y++) { | ||
69 | - for (int x = 0; x < 4; x++){ | ||
70 | + for (int y = 0; y < y_size; y++) { | ||
71 | + for (int x = 0; x < 4; x++) { | ||
72 | rgb555 = row_ptr[x] & ~0x8000; | ||
73 | |||
74 | put_bits(&s->pb, 16, rgb555); | ||
75 | @@ -745,6 +748,11 @@ post_skip : | ||
76 | row_ptr += bi.rowstride; | ||
77 | } | ||
78 | |||
79 | + for (int y = y_size; y < 4; y++) { | ||
80 | + for (int x = 0; x < 4; x++) | ||
81 | + put_bits(&s->pb, 16, 0); | ||
82 | + } | ||
83 | + | ||
84 | block_counter++; | ||
85 | } else { // FOUR COLOR BLOCK | ||
86 | block_counter += encode_four_color_block(min_color, max_color, | ||
87 | -- | ||
88 | 2.34.1 | ||
89 | |||
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-avcodec-smcenc-stop-accessing-out-of-bounds-frame.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-avcodec-smcenc-stop-accessing-out-of-bounds-frame.patch deleted file mode 100644 index 923fc6a9c1..0000000000 --- a/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-avcodec-smcenc-stop-accessing-out-of-bounds-frame.patch +++ /dev/null | |||
@@ -1,108 +0,0 @@ | |||
1 | From 13c13109759090b7f7182480d075e13b36ed8edd Mon Sep 17 00:00:00 2001 | ||
2 | From: Paul B Mahol <onemda@gmail.com> | ||
3 | Date: Sat, 12 Nov 2022 15:19:21 +0100 | ||
4 | Subject: [PATCH] avcodec/smcenc: stop accessing out of bounds frame | ||
5 | |||
6 | Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/13c13109759090b7f7182480d075e13b36ed8edd] | ||
7 | |||
8 | Signed-off-by: <narpat.mali@windriver.com> | ||
9 | |||
10 | --- | ||
11 | libavcodec/smcenc.c | 18 ++++++++++++++---- | ||
12 | 1 file changed, 14 insertions(+), 4 deletions(-) | ||
13 | |||
14 | diff --git a/libavcodec/smcenc.c b/libavcodec/smcenc.c | ||
15 | index f3d26a4e8d..33549b8ab4 100644 | ||
16 | --- a/libavcodec/smcenc.c | ||
17 | +++ b/libavcodec/smcenc.c | ||
18 | @@ -61,6 +61,7 @@ typedef struct SMCContext { | ||
19 | { \ | ||
20 | row_ptr += stride * 4; \ | ||
21 | pixel_ptr = row_ptr; \ | ||
22 | + cur_y += 4; \ | ||
23 | } \ | ||
24 | } \ | ||
25 | } | ||
26 | @@ -117,6 +118,7 @@ static void smc_encode_stream(SMCContext *s, const AVFrame *frame, | ||
27 | const uint8_t *prev_pixels = (const uint8_t *)s->prev_frame->data[0]; | ||
28 | uint8_t *distinct_values = s->distinct_values; | ||
29 | const uint8_t *pixel_ptr, *row_ptr; | ||
30 | + const int height = frame->height; | ||
31 | const int width = frame->width; | ||
32 | uint8_t block_values[16]; | ||
33 | int block_counter = 0; | ||
34 | @@ -125,13 +127,14 @@ static void smc_encode_stream(SMCContext *s, const AVFrame *frame, | ||
35 | int color_octet_index = 0; | ||
36 | int color_table_index; /* indexes to color pair, quad, or octet tables */ | ||
37 | int total_blocks; | ||
38 | + int cur_y = 0; | ||
39 | |||
40 | memset(s->color_pairs, 0, sizeof(s->color_pairs)); | ||
41 | memset(s->color_quads, 0, sizeof(s->color_quads)); | ||
42 | memset(s->color_octets, 0, sizeof(s->color_octets)); | ||
43 | |||
44 | /* Number of 4x4 blocks in frame. */ | ||
45 | - total_blocks = ((frame->width + 3) / 4) * ((frame->height + 3) / 4); | ||
46 | + total_blocks = ((width + 3) / 4) * ((height + 3) / 4); | ||
47 | |||
48 | pixel_ptr = row_ptr = src_pixels; | ||
49 | |||
50 | @@ -145,11 +148,13 @@ static void smc_encode_stream(SMCContext *s, const AVFrame *frame, | ||
51 | int cache_index; | ||
52 | int distinct = 0; | ||
53 | int blocks = 0; | ||
54 | + int frame_y = cur_y; | ||
55 | |||
56 | while (prev_pixels && s->key_frame == 0 && block_counter + inter_skip_blocks < total_blocks) { | ||
57 | + const int y_size = FFMIN(4, height - cur_y); | ||
58 | int compare = 0; | ||
59 | |||
60 | - for (int y = 0; y < 4; y++) { | ||
61 | + for (int y = 0; y < y_size; y++) { | ||
62 | const ptrdiff_t offset = pixel_ptr - src_pixels; | ||
63 | const uint8_t *prev_pixel_ptr = prev_pixels + offset; | ||
64 | |||
65 | @@ -170,8 +175,10 @@ static void smc_encode_stream(SMCContext *s, const AVFrame *frame, | ||
66 | |||
67 | pixel_ptr = xpixel_ptr; | ||
68 | row_ptr = xrow_ptr; | ||
69 | + cur_y = frame_y; | ||
70 | |||
71 | while (block_counter > 0 && block_counter + intra_skip_blocks < total_blocks) { | ||
72 | + const int y_size = FFMIN(4, height - cur_y); | ||
73 | const ptrdiff_t offset = pixel_ptr - src_pixels; | ||
74 | const int sy = offset / stride; | ||
75 | const int sx = offset % stride; | ||
76 | @@ -180,7 +187,7 @@ static void smc_encode_stream(SMCContext *s, const AVFrame *frame, | ||
77 | const uint8_t *old_pixel_ptr = src_pixels + nx + ny * stride; | ||
78 | int compare = 0; | ||
79 | |||
80 | - for (int y = 0; y < 4; y++) { | ||
81 | + for (int y = 0; y < y_size; y++) { | ||
82 | compare |= memcmp(old_pixel_ptr + y * stride, pixel_ptr + y * stride, 4); | ||
83 | if (compare) | ||
84 | break; | ||
85 | @@ -197,9 +204,11 @@ static void smc_encode_stream(SMCContext *s, const AVFrame *frame, | ||
86 | |||
87 | pixel_ptr = xpixel_ptr; | ||
88 | row_ptr = xrow_ptr; | ||
89 | + cur_y = frame_y; | ||
90 | |||
91 | while (block_counter + coded_blocks < total_blocks && coded_blocks < 256) { | ||
92 | - for (int y = 0; y < 4; y++) | ||
93 | + const int y_size = FFMIN(4, height - cur_y); | ||
94 | + for (int y = 0; y < y_size; y++) | ||
95 | memcpy(block_values + y * 4, pixel_ptr + y * stride, 4); | ||
96 | |||
97 | qsort(block_values, 16, sizeof(block_values[0]), smc_cmp_values); | ||
98 | @@ -224,6 +233,7 @@ static void smc_encode_stream(SMCContext *s, const AVFrame *frame, | ||
99 | |||
100 | pixel_ptr = xpixel_ptr; | ||
101 | row_ptr = xrow_ptr; | ||
102 | + cur_y = frame_y; | ||
103 | |||
104 | blocks = coded_blocks; | ||
105 | distinct = coded_distinct; | ||
106 | -- | ||
107 | 2.34.1 | ||
108 | |||
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/ffmpeg-fix-vulkan.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/ffmpeg-fix-vulkan.patch deleted file mode 100644 index 95bd608a27..0000000000 --- a/meta/recipes-multimedia/ffmpeg/ffmpeg/ffmpeg-fix-vulkan.patch +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | From: Lynne <dev@lynne.ee> | ||
2 | Date: Sun, 25 Dec 2022 00:03:30 +0000 (+0100) | ||
3 | Subject: hwcontext_vulkan: remove optional encode/decode extensions from the list | ||
4 | X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff_plain/eb0455d64690 | ||
5 | |||
6 | hwcontext_vulkan: remove optional encode/decode extensions from the list | ||
7 | |||
8 | They're not currently used, so they don't need to be there. | ||
9 | Vulkan stabilized the decode extensions less than a week ago, and their | ||
10 | name prefixes were changed from EXT to KHR. It's a bit too soon to be | ||
11 | depending on it, so rather than bumping, just remove these for now. | ||
12 | |||
13 | Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff_plain/eb0455d64690] | ||
14 | --- | ||
15 | |||
16 | diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c | ||
17 | index f1db1c7291..2a9b5f4aac 100644 | ||
18 | --- a/libavutil/hwcontext_vulkan.c | ||
19 | +++ b/libavutil/hwcontext_vulkan.c | ||
20 | @@ -358,14 +358,6 @@ static const VulkanOptExtension optional_device_exts[] = { | ||
21 | { VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_MEMORY }, | ||
22 | { VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_SEM }, | ||
23 | #endif | ||
24 | - | ||
25 | - /* Video encoding/decoding */ | ||
26 | - { VK_KHR_VIDEO_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, | ||
27 | - { VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, | ||
28 | - { VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, | ||
29 | - { VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, | ||
30 | - { VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, | ||
31 | - { VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, | ||
32 | }; | ||
33 | |||
34 | /* Converts return values to strings */ | ||