summaryrefslogtreecommitdiff
path: root/D139698.diff
diff options
context:
space:
mode:
Diffstat (limited to 'D139698.diff')
-rw-r--r--D139698.diff191
1 files changed, 191 insertions, 0 deletions
diff --git a/D139698.diff b/D139698.diff
new file mode 100644
index 0000000..7bf7af9
--- /dev/null
+++ b/D139698.diff
@@ -0,0 +1,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