summaryrefslogtreecommitdiff
path: root/D139698.diff
blob: 7bf7af97c0c9590ea1632712f91250b9adfdbb82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
diff --git a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
--- a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
+++ b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
@@ -64,14 +64,16 @@
     AV_FUNC_56 = 1 << 3,
     AV_FUNC_57 = 1 << 4,
     AV_FUNC_58 = 1 << 5,
+    AV_FUNC_59 = 1 << 6,
     AV_FUNC_AVUTIL_53 = AV_FUNC_53 | AV_FUNC_AVUTIL_MASK,
     AV_FUNC_AVUTIL_54 = AV_FUNC_54 | AV_FUNC_AVUTIL_MASK,
     AV_FUNC_AVUTIL_55 = AV_FUNC_55 | AV_FUNC_AVUTIL_MASK,
     AV_FUNC_AVUTIL_56 = AV_FUNC_56 | AV_FUNC_AVUTIL_MASK,
     AV_FUNC_AVUTIL_57 = AV_FUNC_57 | AV_FUNC_AVUTIL_MASK,
     AV_FUNC_AVUTIL_58 = AV_FUNC_58 | AV_FUNC_AVUTIL_MASK,
+    AV_FUNC_AVUTIL_59 = AV_FUNC_59 | AV_FUNC_AVUTIL_MASK,
     AV_FUNC_AVCODEC_ALL = AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 |
-                          AV_FUNC_57 | AV_FUNC_58,
+                          AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59,
     AV_FUNC_AVUTIL_ALL = AV_FUNC_AVCODEC_ALL | AV_FUNC_AVUTIL_MASK
   };
 
@@ -94,6 +96,9 @@
     case 58:
       version = AV_FUNC_58;
       break;
+    case 59:
+      version = AV_FUNC_59;
+      break;
     default:
       FFMPEG_LOG("Unknown avcodec version");
       Unlink();
@@ -128,15 +133,19 @@
                     : LinkResult::MissingLibAVFunction; \
   }
 
-  AV_FUNC(av_lockmgr_register, AV_FUNC_AVCODEC_ALL)
+  AV_FUNC(av_lockmgr_register, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
+                                   AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
   AV_FUNC(avcodec_alloc_context3, AV_FUNC_AVCODEC_ALL)
   AV_FUNC(avcodec_close, AV_FUNC_AVCODEC_ALL)
-  AV_FUNC(avcodec_decode_audio4, AV_FUNC_AVCODEC_ALL)
-  AV_FUNC(avcodec_decode_video2, AV_FUNC_AVCODEC_ALL)
+  AV_FUNC(avcodec_decode_audio4, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
+                                     AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
+  AV_FUNC(avcodec_decode_video2, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
+                                     AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
   AV_FUNC(avcodec_find_decoder, AV_FUNC_AVCODEC_ALL)
   AV_FUNC(avcodec_flush_buffers, AV_FUNC_AVCODEC_ALL)
   AV_FUNC(avcodec_open2, AV_FUNC_AVCODEC_ALL)
-  AV_FUNC(avcodec_register_all, AV_FUNC_AVCODEC_ALL)
+  AV_FUNC(avcodec_register_all, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
+                                    AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
   AV_FUNC(av_init_packet, AV_FUNC_AVCODEC_ALL)
   AV_FUNC(av_parser_init, AV_FUNC_AVCODEC_ALL)
   AV_FUNC(av_parser_close, AV_FUNC_AVCODEC_ALL)
@@ -145,49 +154,56 @@
   AV_FUNC(avcodec_alloc_frame, (AV_FUNC_53 | AV_FUNC_54))
   AV_FUNC(avcodec_get_frame_defaults, (AV_FUNC_53 | AV_FUNC_54))
   AV_FUNC(avcodec_free_frame, AV_FUNC_54)
-  AV_FUNC(avcodec_send_packet, AV_FUNC_58)
-  AV_FUNC(avcodec_receive_frame, AV_FUNC_58)
+  AV_FUNC(avcodec_send_packet, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC(avcodec_receive_frame, AV_FUNC_58 | AV_FUNC_59)
   AV_FUNC(avcodec_default_get_buffer2,
-          (AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58))
+          (AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59))
   AV_FUNC_OPTION(av_rdft_init, AV_FUNC_AVCODEC_ALL)
   AV_FUNC_OPTION(av_rdft_calc, AV_FUNC_AVCODEC_ALL)
   AV_FUNC_OPTION(av_rdft_end, AV_FUNC_AVCODEC_ALL)
   AV_FUNC(av_log_set_level, AV_FUNC_AVUTIL_ALL)
   AV_FUNC(av_malloc, AV_FUNC_AVUTIL_ALL)
   AV_FUNC(av_freep, AV_FUNC_AVUTIL_ALL)
-  AV_FUNC(av_frame_alloc, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
-                           AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
-  AV_FUNC(av_frame_free, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
-                          AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
-  AV_FUNC(av_frame_unref, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
-                           AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
+  AV_FUNC(av_frame_alloc,
+          (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
+           AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
+  AV_FUNC(av_frame_free,
+          (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
+           AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
+  AV_FUNC(av_frame_unref,
+          (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
+           AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
   AV_FUNC(av_image_check_size, AV_FUNC_AVUTIL_ALL)
   AV_FUNC(av_image_get_buffer_size, AV_FUNC_AVUTIL_ALL)
-  AV_FUNC_OPTION(av_buffer_get_opaque,
-                 (AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
-  AV_FUNC(av_buffer_create, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
-                             AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
+  AV_FUNC_OPTION(av_buffer_get_opaque, (AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
+                                        AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
+  AV_FUNC(av_buffer_create,
+          (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
+           AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
   AV_FUNC_OPTION(av_frame_get_colorspace, AV_FUNC_AVUTIL_ALL)
   AV_FUNC_OPTION(av_frame_get_color_range, AV_FUNC_AVUTIL_ALL)
 
 #ifdef MOZ_WAYLAND
-  AV_FUNC_OPTION_SILENT(avcodec_get_hw_config, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_codec_iterate, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_codec_is_decoder, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_init, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_alloc, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_hwdevice_hwconfig_alloc, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_hwdevice_get_hwframe_constraints, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_hwframe_constraints_free, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_buffer_ref, AV_FUNC_AVUTIL_58)
-  AV_FUNC_OPTION_SILENT(av_buffer_unref, AV_FUNC_AVUTIL_58)
-  AV_FUNC_OPTION_SILENT(av_hwframe_transfer_get_formats, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_create_derived, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_hwframe_ctx_alloc, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_dict_set, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_dict_free, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(avcodec_get_name, AV_FUNC_58)
-  AV_FUNC_OPTION_SILENT(av_get_pix_fmt_string, AV_FUNC_AVUTIL_58)
+  AV_FUNC_OPTION_SILENT(avcodec_get_hw_config, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_codec_iterate, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_codec_is_decoder, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_init, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_alloc, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwdevice_hwconfig_alloc, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwdevice_get_hwframe_constraints,
+                        AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwframe_constraints_free, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_buffer_ref, AV_FUNC_AVUTIL_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_buffer_unref, AV_FUNC_AVUTIL_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwframe_transfer_get_formats,
+                        AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_create_derived, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_hwframe_ctx_alloc, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_dict_set, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_dict_free, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(avcodec_get_name, AV_FUNC_58 | AV_FUNC_59)
+  AV_FUNC_OPTION_SILENT(av_get_pix_fmt_string,
+                        AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59)
 #endif
 #undef AV_FUNC
 #undef AV_FUNC_OPTION
@@ -219,7 +235,9 @@
 #  undef VAD_FUNC_OPTION_SILENT
 #endif
 
-  avcodec_register_all();
+  if (avcodec_register_all) {
+    avcodec_register_all();
+  }
   if (MOZ_LOG_TEST(sPDMLog, LogLevel::Debug)) {
     av_log_set_level(AV_LOG_DEBUG);
   } else if (MOZ_LOG_TEST(sPDMLog, LogLevel::Info)) {
diff --git a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
--- a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
+++ b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
@@ -27,6 +27,7 @@
 static const char* sLibs[] = {
 // clang-format off
 #if defined(XP_DARWIN)
+  "libavcodec.59.dylib",
   "libavcodec.58.dylib",
   "libavcodec.57.dylib",
   "libavcodec.56.dylib",
@@ -34,6 +35,7 @@
   "libavcodec.54.dylib",
   "libavcodec.53.dylib",
 #else
+  "libavcodec.so.59",
   "libavcodec.so.58",
   "libavcodec-ffmpeg.so.58",
   "libavcodec-ffmpeg.so.57",
@@ -76,7 +78,6 @@
           sLinkStatusLibraryName = lib;
           return true;
         case FFmpegLibWrapper::LinkResult::NoProvidedLib:
-          MOZ_ASSERT_UNREACHABLE("Incorrectly-setup sLibAV");
           break;
         case FFmpegLibWrapper::LinkResult::NoAVCodecVersion:
           if (sLinkStatus > LinkStatus_INVALID_CANDIDATE) {
@@ -152,6 +153,9 @@
     case 58:
       module = FFmpegDecoderModule<58>::Create(&sLibAV);
       break;
+    case 59:
+      module = FFmpegDecoderModule<59>::Create(&sLibAV);
+      break;
     default:
       module = nullptr;
   }

bgstack15