Added missing files, updated to build2
This commit is contained in:
parent
34e2f4991c
commit
12e554d703
1
.gitignore
vendored
1
.gitignore
vendored
@ -497,3 +497,4 @@ firefox-3.6.4.source.tar.bz2
|
|||||||
/firefox-langpacks-97.0.1-20220218.tar.xz
|
/firefox-langpacks-97.0.1-20220218.tar.xz
|
||||||
/firefox-98.0.source.tar.xz
|
/firefox-98.0.source.tar.xz
|
||||||
/firefox-langpacks-98.0-20220301.tar.xz
|
/firefox-langpacks-98.0-20220301.tar.xz
|
||||||
|
/firefox-langpacks-98.0-20220304.tar.xz
|
||||||
|
13808
D139696.diff
Normal file
13808
D139696.diff
Normal file
File diff suppressed because it is too large
Load Diff
27
D139697.diff
Normal file
27
D139697.diff
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
diff --git a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
|
||||||
|
--- a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
|
||||||
|
+++ b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
|
||||||
|
@@ -29,9 +29,6 @@
|
||||||
|
if CONFIG['MOZ_WAYLAND']:
|
||||||
|
CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
|
||||||
|
DEFINES['MOZ_WAYLAND_USE_VAAPI'] = 1
|
||||||
|
- UNIFIED_SOURCES += [
|
||||||
|
- '../FFmpegVideoFramePool.cpp',
|
||||||
|
- ]
|
||||||
|
USE_LIBS += ['mozva']
|
||||||
|
|
||||||
|
include("/ipc/chromium/chromium-config.mozbuild")
|
||||||
|
diff --git a/dom/media/platforms/ffmpeg/ffvpx/moz.build b/dom/media/platforms/ffmpeg/ffvpx/moz.build
|
||||||
|
--- a/dom/media/platforms/ffmpeg/ffvpx/moz.build
|
||||||
|
+++ b/dom/media/platforms/ffmpeg/ffvpx/moz.build
|
||||||
|
@@ -41,6 +41,9 @@
|
||||||
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
||||||
|
DEFINES["MOZ_WAYLAND_USE_VAAPI"] = 1
|
||||||
|
USE_LIBS += ["mozva"]
|
||||||
|
+ UNIFIED_SOURCES += [
|
||||||
|
+ "../FFmpegVideoFramePool.cpp",
|
||||||
|
+ ]
|
||||||
|
|
||||||
|
include("/ipc/chromium/chromium-config.mozbuild")
|
||||||
|
|
||||||
|
|
191
D139698.diff
Normal file
191
D139698.diff
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
|
127
D139699.diff
Normal file
127
D139699.diff
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
diff --git a/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp
|
||||||
|
--- a/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp
|
||||||
|
+++ b/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp
|
||||||
|
@@ -206,15 +206,49 @@
|
||||||
|
media::TimeUnit pts = aSample->mTime;
|
||||||
|
|
||||||
|
while (packet.size > 0) {
|
||||||
|
- int decoded;
|
||||||
|
- int bytesConsumed =
|
||||||
|
+ int decoded = false;
|
||||||
|
+ int bytesConsumed = -1;
|
||||||
|
+#if LIBAVCODEC_VERSION_MAJOR < 59
|
||||||
|
+ bytesConsumed =
|
||||||
|
mLib->avcodec_decode_audio4(mCodecContext, mFrame, &decoded, &packet);
|
||||||
|
-
|
||||||
|
if (bytesConsumed < 0) {
|
||||||
|
NS_WARNING("FFmpeg audio decoder error.");
|
||||||
|
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||||
|
RESULT_DETAIL("FFmpeg audio error:%d", bytesConsumed));
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+# define AVERROR_OK 0
|
||||||
|
+
|
||||||
|
+ int ret = mLib->avcodec_receive_frame(mCodecContext, mFrame);
|
||||||
|
+ switch (ret) {
|
||||||
|
+ case AVERROR_OK:
|
||||||
|
+ decoded = true;
|
||||||
|
+ break;
|
||||||
|
+ case AVERROR(EAGAIN):
|
||||||
|
+ break;
|
||||||
|
+ case int(AVERROR_EOF): {
|
||||||
|
+ FFMPEG_LOG(" End of stream.");
|
||||||
|
+ return MediaResult(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
|
||||||
|
+ RESULT_DETAIL("End of stream"));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ ret = mLib->avcodec_send_packet(mCodecContext, &packet);
|
||||||
|
+ switch (ret) {
|
||||||
|
+ case AVERROR_OK:
|
||||||
|
+ bytesConsumed = packet.size;
|
||||||
|
+ break;
|
||||||
|
+ case AVERROR(EAGAIN):
|
||||||
|
+ break;
|
||||||
|
+ case int(AVERROR_EOF):
|
||||||
|
+ FFMPEG_LOG(" End of stream.");
|
||||||
|
+ return MediaResult(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
|
||||||
|
+ RESULT_DETAIL("End of stream"));
|
||||||
|
+ default:
|
||||||
|
+ NS_WARNING("FFmpeg audio decoder error.");
|
||||||
|
+ return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||||
|
+ RESULT_DETAIL("FFmpeg audio error"));
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (decoded) {
|
||||||
|
if (mFrame->format != AV_SAMPLE_FMT_FLT &&
|
||||||
|
diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||||
|
--- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||||
|
+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||||
|
@@ -39,6 +39,9 @@
|
||||||
|
# define AV_PIX_FMT_YUV444P10LE PIX_FMT_YUV444P10LE
|
||||||
|
# define AV_PIX_FMT_NONE PIX_FMT_NONE
|
||||||
|
#endif
|
||||||
|
+#if LIBAVCODEC_VERSION_MAJOR > 58
|
||||||
|
+# define AV_PIX_FMT_VAAPI_VLD AV_PIX_FMT_VAAPI
|
||||||
|
+#endif
|
||||||
|
#include "mozilla/PodOperations.h"
|
||||||
|
#include "mozilla/StaticPrefs_media.h"
|
||||||
|
#include "mozilla/TaskQueue.h"
|
||||||
|
@@ -766,6 +769,14 @@
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+static int64_t GetFramePts(AVFrame* aFrame) {
|
||||||
|
+#if LIBAVCODEC_VERSION_MAJOR > 58
|
||||||
|
+ return aFrame->pts;
|
||||||
|
+#else
|
||||||
|
+ return aFrame->pkt_pts;
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
MediaResult FFmpegVideoDecoder<LIBAV_VER>::DoDecode(
|
||||||
|
MediaRawData* aSample, uint8_t* aData, int aSize, bool* aGotFrame,
|
||||||
|
MediaDataDecoder::DecodedData& aResults) {
|
||||||
|
@@ -831,7 +842,7 @@
|
||||||
|
MediaResult rv;
|
||||||
|
# ifdef MOZ_WAYLAND_USE_VAAPI
|
||||||
|
if (IsHardwareAccelerated()) {
|
||||||
|
- rv = CreateImageVAAPI(mFrame->pkt_pos, mFrame->pkt_pts,
|
||||||
|
+ rv = CreateImageVAAPI(mFrame->pkt_pos, GetFramePts(mFrame),
|
||||||
|
mFrame->pkt_duration, aResults);
|
||||||
|
// If VA-API playback failed, just quit. Decoder is going to be restarted
|
||||||
|
// without VA-API.
|
||||||
|
@@ -844,8 +855,8 @@
|
||||||
|
} else
|
||||||
|
# endif
|
||||||
|
{
|
||||||
|
- rv = CreateImage(mFrame->pkt_pos, mFrame->pkt_pts, mFrame->pkt_duration,
|
||||||
|
- aResults);
|
||||||
|
+ rv = CreateImage(mFrame->pkt_pos, GetFramePts(mFrame),
|
||||||
|
+ mFrame->pkt_duration, aResults);
|
||||||
|
}
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
return rv;
|
||||||
|
@@ -879,9 +890,9 @@
|
||||||
|
"DoDecodeFrame:decode_video: rv=%d decoded=%d "
|
||||||
|
"(Input: pts(%" PRId64 ") dts(%" PRId64 ") Output: pts(%" PRId64
|
||||||
|
") "
|
||||||
|
- "opaque(%" PRId64 ") pkt_pts(%" PRId64 ") pkt_dts(%" PRId64 "))",
|
||||||
|
+ "opaque(%" PRId64 ") pts(%" PRId64 ") pkt_dts(%" PRId64 "))",
|
||||||
|
bytesConsumed, decoded, packet.pts, packet.dts, mFrame->pts,
|
||||||
|
- mFrame->reordered_opaque, mFrame->pkt_pts, mFrame->pkt_dts);
|
||||||
|
+ mFrame->reordered_opaque, mFrame->pts, mFrame->pkt_dts);
|
||||||
|
|
||||||
|
if (bytesConsumed < 0) {
|
||||||
|
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||||
|
@@ -896,7 +907,8 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we've decoded a frame then we need to output it
|
||||||
|
- int64_t pts = mPtsContext.GuessCorrectPts(mFrame->pkt_pts, mFrame->pkt_dts);
|
||||||
|
+ int64_t pts =
|
||||||
|
+ mPtsContext.GuessCorrectPts(GetFramePts(mFrame), mFrame->pkt_dts);
|
||||||
|
// Retrieve duration from dts.
|
||||||
|
// We use the first entry found matching this dts (this is done to
|
||||||
|
// handle damaged file with multiple frames with the same dts)
|
||||||
|
|
@ -1074,6 +1074,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
|||||||
* Wed Mar 2 2022 Martin Stransky <stransky@redhat.com> - 98.0-2
|
* Wed Mar 2 2022 Martin Stransky <stransky@redhat.com> - 98.0-2
|
||||||
- Added support for ffmpeg 5.0
|
- Added support for ffmpeg 5.0
|
||||||
- Spec tweaks
|
- Spec tweaks
|
||||||
|
- Updated to Build 2
|
||||||
|
|
||||||
* Tue Mar 1 2022 Martin Stransky <stransky@redhat.com> - 98.0-1
|
* Tue Mar 1 2022 Martin Stransky <stransky@redhat.com> - 98.0-1
|
||||||
- Updated to 98.0
|
- Updated to 98.0
|
||||||
|
4
sources
4
sources
@ -1,4 +1,4 @@
|
|||||||
SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
|
SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
|
||||||
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
|
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
|
||||||
SHA512 (firefox-98.0.source.tar.xz) = e4728316d919cad2c7b9bfc08cd6fa651c0706e14dba1629382ef1e8d723ebf22c6a892f23928ee05d98b9eadfa1c3e3fd803077c64919786c176c5e8d87863a
|
SHA512 (firefox-98.0.source.tar.xz) = 119005c92b579897c4a9c5b2b9f88ab1e77ad41d05fc8058d3378865f8538870789e5a9bd1066bcbe1662bde1501d9fe8c97c277e2985506f6d5586b6cea4ff2
|
||||||
SHA512 (firefox-langpacks-98.0-20220301.tar.xz) = 54cc19003903da31bdc485eaf208e35759a390c71bb96a10757cbe10fbc65a1524a8d33c071589ee3f949508df66ced7115c0e4203e17bd672672fe303b4a5ee
|
SHA512 (firefox-langpacks-98.0-20220304.tar.xz) = d736ebdf11848b812073e342906aae86368cf2aa248ad34af98c11bb47cec6820ed805d9ffac81d195dba9e93a348ece50cc54740b4750b7ff32392cdcac028a
|
||||||
|
Loading…
Reference in New Issue
Block a user