mirror of
https://abf.rosa.ru/djam/chromium-browser-stable.git
synced 2025-02-24 07:02:48 +00:00
387 lines
13 KiB
Diff
387 lines
13 KiB
Diff
diff -up chromium-62.0.3192.0/media/base/audio_codecs.cc.extra-media chromium-62.0.3192.0/media/base/audio_codecs.cc
|
|
--- chromium-62.0.3192.0/media/base/audio_codecs.cc.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/base/audio_codecs.cc 2017-08-30 15:39:09.735186077 +0200
|
|
@@ -46,6 +46,10 @@ std::string GetCodecName(AudioCodec code
|
|
return "ac3";
|
|
case kCodecMpegHAudio:
|
|
return "mpeg-h-audio";
|
|
+ case kCodecMP2:
|
|
+ return "mp2";
|
|
+ case kCodecDTS:
|
|
+ return "dts";
|
|
}
|
|
NOTREACHED();
|
|
return "";
|
|
@@ -72,6 +74,10 @@ AudioCodec StringToAudioCodec(const std:
|
|
return kCodecVorbis;
|
|
if (base::StartsWith(codec_id, "mp4a.40.", base::CompareCase::SENSITIVE))
|
|
return kCodecAAC;
|
|
+ if (codec_id == "mp2")
|
|
+ return kCodecMP2;
|
|
+ if (codec_id == "dts")
|
|
+ return kCodecDTS;
|
|
return kUnknownAudioCodec;
|
|
}
|
|
|
|
diff -up chromium-62.0.3192.0/media/base/audio_codecs.h.extra-media chromium-62.0.3192.0/media/base/audio_codecs.h
|
|
--- chromium-62.0.3192.0/media/base/audio_codecs.h.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/base/audio_codecs.h 2017-08-30 15:39:09.735186077 +0200
|
|
@@ -33,13 +33,15 @@
|
|
kCodecALAC = 15,
|
|
kCodecAC3 = 16,
|
|
kCodecMpegHAudio = 17,
|
|
+ kCodecMP2 = 18,
|
|
+ kCodecDTS = 19,
|
|
// DO NOT ADD RANDOM AUDIO CODECS!
|
|
//
|
|
// The only acceptable time to add a new codec is if there is production code
|
|
// that uses said codec in the same CL.
|
|
|
|
// Must always be equal to the largest entry ever logged.
|
|
- kAudioCodecMax = kCodecMpegHAudio,
|
|
+ kAudioCodecMax = kCodecDTS,
|
|
};
|
|
|
|
std::string MEDIA_EXPORT GetCodecName(AudioCodec codec);
|
|
diff -up chromium-62.0.3192.0/media/base/mime_util_internal.cc.extra-media chromium-62.0.3192.0/media/base/mime_util_internal.cc
|
|
--- chromium-62.0.3192.0/media/base/mime_util_internal.cc.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/base/mime_util_internal.cc 2017-08-30 15:44:46.519076991 +0200
|
|
@@ -87,6 +87,10 @@
|
|
{"vp8", MimeUtil::VP8},
|
|
{"vp8.0", MimeUtil::VP8},
|
|
{"theora", MimeUtil::THEORA},
|
|
+ {"dts", MimeUtil::DTS},
|
|
+ {"mp2", MimeUtil::MP2},
|
|
+ {"mp4v.20.8", MimeUtil::MPEG4_SP},
|
|
+ {"mp4v.20.240", MimeUtil::MPEG4_ASP},
|
|
});
|
|
|
|
return *kStringToCodecMap;
|
|
@@ -162,6 +166,10 @@
|
|
return kCodecOpus;
|
|
case MimeUtil::FLAC:
|
|
return kCodecFLAC;
|
|
+ case MimeUtil::DTS:
|
|
+ return kCodecDTS;
|
|
+ case MimeUtil::MP2:
|
|
+ return kCodecMP2;
|
|
default:
|
|
break;
|
|
}
|
|
@@ -184,6 +192,9 @@
|
|
return kCodecTheora;
|
|
case MimeUtil::DOLBY_VISION:
|
|
return kCodecDolbyVision;
|
|
+ case MimeUtil::MPEG4_SP:
|
|
+ case MimeUtil::MPEG4_ASP:
|
|
+ return kCodecMPEG4;
|
|
default:
|
|
break;
|
|
}
|
|
@@ -274,6 +285,35 @@
|
|
CodecSet ogg_codecs(ogg_audio_codecs);
|
|
ogg_codecs.insert(ogg_video_codecs.begin(), ogg_video_codecs.end());
|
|
|
|
+ CodecSet matroska_audio_codecs;
|
|
+ matroska_audio_codecs.emplace(OPUS);
|
|
+ matroska_audio_codecs.emplace(VORBIS);
|
|
+ matroska_audio_codecs.emplace(AC3);
|
|
+ matroska_audio_codecs.emplace(EAC3);
|
|
+ matroska_audio_codecs.emplace(DTS);
|
|
+ matroska_audio_codecs.emplace(MP3);
|
|
+ matroska_audio_codecs.emplace(MP2);
|
|
+ matroska_audio_codecs.emplace(MPEG2_AAC);
|
|
+ matroska_audio_codecs.emplace(MPEG4_AAC);
|
|
+ matroska_audio_codecs.emplace(PCM);
|
|
+ matroska_audio_codecs.emplace(FLAC);
|
|
+
|
|
+ CodecSet matroska_video_codecs;
|
|
+ matroska_video_codecs.emplace(THEORA);
|
|
+ matroska_video_codecs.emplace(VP8);
|
|
+ matroska_video_codecs.emplace(VP9);
|
|
+ matroska_video_codecs.emplace(H264);
|
|
+ matroska_video_codecs.emplace(MPEG4_SP);
|
|
+ matroska_video_codecs.emplace(MPEG4_ASP);
|
|
+#if BUILDFLAG(ENABLE_AV1_DECODER)
|
|
+ matroska_video_codecs.emplace(AV1);
|
|
+#endif
|
|
+#if BUILDFLAG(ENABLE_HEVC_DEMUXING)
|
|
+ matroska_video_codecs.emplace(HEVC);
|
|
+#endif // BUILDFLAG(ENABLE_HEVC_DEMUXING)
|
|
+ CodecSet matroska_codecs(matroska_audio_codecs);
|
|
+ matroska_codecs.insert(matroska_video_codecs.begin(), matroska_video_codecs.end());
|
|
+
|
|
const CodecSet webm_audio_codecs{OPUS, VORBIS};
|
|
CodecSet webm_video_codecs{VP8, VP9};
|
|
#if BUILDFLAG(ENABLE_AV1_DECODER)
|
|
@@ -283,9 +323,9 @@
|
|
CodecSet webm_codecs(webm_audio_codecs);
|
|
webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end());
|
|
|
|
- const CodecSet mp3_codecs{MP3};
|
|
+ const CodecSet mp3_codecs{MP3, MP2};
|
|
|
|
- CodecSet mp4_audio_codecs{FLAC, MP3, OPUS};
|
|
+ CodecSet mp4_audio_codecs{FLAC, MP3, OPUS, MP2, DTS, AC3, EAC3};
|
|
|
|
// Only VP9 with valid codec string vp09.xx.xx.xx.xx.xx.xx.xx is supported.
|
|
// See ParseVp9CodecID for details.
|
|
@@ -309,6 +349,8 @@
|
|
#endif // BUILDFLAG(ENABLE_MPEG_H_AUDIO_DEMUXING)
|
|
|
|
mp4_video_codecs.emplace(H264);
|
|
+ mp4_video_codecs.emplace(MPEG4_SP);
|
|
+ mp4_video_codecs.emplace(MPEG4_ASP);
|
|
#if BUILDFLAG(ENABLE_HEVC_DEMUXING)
|
|
mp4_video_codecs.emplace(HEVC);
|
|
#endif // BUILDFLAG(ENABLE_HEVC_DEMUXING)
|
|
@@ -345,6 +387,10 @@
|
|
DCHECK(!mp4_video_codecs.empty());
|
|
AddContainerWithCodecs("video/mp4", mp4_codecs);
|
|
|
|
+ AddContainerWithCodecs("audio/x-matroska", matroska_audio_codecs);
|
|
+ AddContainerWithCodecs("video/x-matroska", matroska_codecs);
|
|
+ AddContainerWithCodecs("video/x-msvideo", matroska_codecs);
|
|
+
|
|
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
|
|
AddContainerWithCodecs("audio/aac", implicit_codec); // AAC / ADTS.
|
|
// These strings are supported for backwards compatibility only and thus only
|
|
diff -up chromium-62.0.3192.0/media/base/mime_util_internal.h.extra-media chromium-62.0.3192.0/media/base/mime_util_internal.h
|
|
--- chromium-62.0.3192.0/media/base/mime_util_internal.h.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/base/mime_util_internal.h 2017-08-30 15:39:09.734186095 +0200
|
|
@@ -46,7 +46,11 @@ class MEDIA_EXPORT MimeUtil {
|
|
DOLBY_VISION,
|
|
AV1,
|
|
MPEG_H_AUDIO,
|
|
- LAST_CODEC = MPEG_H_AUDIO
|
|
+ DTS,
|
|
+ MP2,
|
|
+ MPEG4_SP,
|
|
+ MPEG4_ASP,
|
|
+ LAST_CODEC = MPEG4_ASP
|
|
};
|
|
|
|
// Platform configuration structure. Controls which codecs are supported at
|
|
diff -up chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc.extra-media chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc
|
|
--- chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/ffmpeg/ffmpeg_common.cc 2017-08-30 15:39:09.735186077 +0200
|
|
@@ -115,6 +115,10 @@ AudioCodec CodecIDToAudioCodec(AVCodecID
|
|
return kCodecOpus;
|
|
case AV_CODEC_ID_ALAC:
|
|
return kCodecALAC;
|
|
+ case AV_CODEC_ID_MP2:
|
|
+ return kCodecMP2;
|
|
+ case AV_CODEC_ID_DTS:
|
|
+ return kCodecDTS;
|
|
default:
|
|
DVLOG(1) << "Unknown audio CodecID: " << codec_id;
|
|
}
|
|
@@ -166,6 +168,14 @@ AVCodecID AudioCodecToCodecID(AudioCodec
|
|
return AV_CODEC_ID_PCM_MULAW;
|
|
case kCodecOpus:
|
|
return AV_CODEC_ID_OPUS;
|
|
+ case kCodecAC3:
|
|
+ return AV_CODEC_ID_AC3;
|
|
+ case kCodecEAC3:
|
|
+ return AV_CODEC_ID_EAC3;
|
|
+ case kCodecMP2:
|
|
+ return AV_CODEC_ID_MP2;
|
|
+ case kCodecDTS:
|
|
+ return AV_CODEC_ID_DTS;
|
|
default:
|
|
DVLOG(1) << "Unknown AudioCodec: " << audio_codec;
|
|
}
|
|
@@ -389,23 +389,6 @@ bool AVCodecContextToAudioDecoderConfig(
|
|
codec_context->channels);
|
|
|
|
int sample_rate = codec_context->sample_rate;
|
|
- switch (codec) {
|
|
- // For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does
|
|
- // not fill |sample_fmt|.
|
|
- case kCodecAC3:
|
|
- case kCodecEAC3:
|
|
-#if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
|
|
- // The spec for AC3/EAC3 audio is ETSI TS 102 366. According to sections
|
|
- // F.3.1 and F.5.1 in that spec the sample_format for AC3/EAC3 must be 16.
|
|
- sample_format = kSampleFormatS16;
|
|
-#else
|
|
- NOTREACHED();
|
|
-#endif
|
|
- break;
|
|
-
|
|
- default:
|
|
- break;
|
|
- }
|
|
|
|
base::TimeDelta seek_preroll;
|
|
if (codec_context->seek_preroll > 0) {
|
|
@@ -435,13 +418,6 @@ bool AVCodecContextToAudioDecoderConfig(
|
|
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
|
|
config->SetChannelsForDiscrete(codec_context->channels);
|
|
|
|
-#if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
|
|
- // These are bitstream formats unknown to ffmpeg, so they don't have
|
|
- // a known sample format size.
|
|
- if (codec == kCodecAC3 || codec == kCodecEAC3)
|
|
- return true;
|
|
-#endif
|
|
-
|
|
// Verify that AudioConfig.bits_per_channel was calculated correctly for
|
|
// codecs that have |sample_fmt| set by FFmpeg.
|
|
DCHECK_EQ(av_get_bytes_per_sample(codec_context->sample_fmt) * 8,
|
|
diff -up chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc.extra-media chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc
|
|
--- chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/filters/ffmpeg_video_decoder.cc 2017-08-30 15:39:09.736186059 +0200
|
|
@@ -38,7 +38,6 @@
|
|
case kUnknownVideoCodec:
|
|
case kCodecVC1:
|
|
case kCodecMPEG2:
|
|
- case kCodecHEVC:
|
|
case kCodecVP9:
|
|
case kCodecAV1:
|
|
case kCodecDolbyVision:
|
|
@@ -52,6 +51,7 @@
|
|
|
|
case kCodecH264:
|
|
case kCodecVP8:
|
|
+ case kCodecHEVC:
|
|
// Normalize to three threads for 1080p content, then scale linearly
|
|
// with number of pixels.
|
|
// Examples:
|
|
diff -up chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc.extra-media chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc
|
|
--- chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/remoting/proto_enum_utils.cc 2017-08-30 15:39:09.736186059 +0200
|
|
@@ -58,6 +58,8 @@ base::Optional<AudioCodec> ToMediaAudioC
|
|
CASE_RETURN_OTHER(kCodecALAC);
|
|
CASE_RETURN_OTHER(kCodecAC3);
|
|
CASE_RETURN_OTHER(kCodecMpegHAudio);
|
|
+ CASE_RETURN_OTHER(kCodecMP2);
|
|
+ CASE_RETURN_OTHER(kCodecDTS);
|
|
}
|
|
return base::nullopt; // Not a 'default' to ensure compile-time checks.
|
|
}
|
|
@@ -85,6 +86,8 @@ base::Optional<pb::AudioDecoderConfig::C
|
|
CASE_RETURN_OTHER(kCodecALAC);
|
|
CASE_RETURN_OTHER(kCodecAC3);
|
|
CASE_RETURN_OTHER(kCodecMpegHAudio);
|
|
+ CASE_RETURN_OTHER(kCodecMP2);
|
|
+ CASE_RETURN_OTHER(kCodecDTS);
|
|
}
|
|
return base::nullopt; // Not a 'default' to ensure compile-time checks.
|
|
}
|
|
diff -up chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto.extra-media chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto
|
|
--- chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto.extra-media 2017-08-22 21:04:45.000000000 +0200
|
|
+++ chromium-62.0.3192.0/media/remoting/media_remoting_rpc.proto 2017-08-30 15:39:09.736186059 +0200
|
|
@@ -67,6 +67,8 @@ message AudioDecoderConfig {
|
|
kCodecALAC = 15;
|
|
kCodecAC3 = 16;
|
|
kCodecMpegHAudio = 17;
|
|
+ kCodecMP2 = 18;
|
|
+ kCodecDTS = 19;
|
|
}
|
|
|
|
// Proto version of media::SampleFormat.
|
|
diff -up chromium-62.0.3192.0/net/base/mime_util.cc.extra-media chromium-62.0.3192.0/net/base/mime_util.cc
|
|
--- chromium-62.0.3192.0/net/base/mime_util.cc.extra-media 2017-08-22 21:04:46.000000000 +0200
|
|
+++ chromium-62.0.3192.0/net/base/mime_util.cc 2017-08-30 15:47:23.952221630 +0200
|
|
@@ -94,6 +94,9 @@
|
|
{"image/png", "png"},
|
|
{"image/apng", "png"},
|
|
{"image/webp", "webp"},
|
|
+ {"video/x-matroska", "mkv"},
|
|
+ {"audio/x-matroska", "mkv"},
|
|
+ {"video/x-msvideo", "avi"},
|
|
{"multipart/related", "mht,mhtml"},
|
|
{"text/css", "css"},
|
|
{"text/html", "html,htm,shtml,shtm"},
|
|
@@ -495,6 +498,7 @@
|
|
"audio/vorbis",
|
|
"audio/wav",
|
|
"audio/webm",
|
|
+ "audio/x-matroska",
|
|
"audio/x-m4a",
|
|
"audio/x-ms-wma",
|
|
"audio/vnd.rn-realaudio",
|
|
@@ -512,8 +516,10 @@
|
|
"video/webm",
|
|
"video/x-dv",
|
|
"video/x-m4v",
|
|
+ "video/x-matroska",
|
|
"video/x-mpeg",
|
|
"video/x-ms-asf",
|
|
+ "video/x-msvideo",
|
|
"video/x-ms-wmv"
|
|
};
|
|
|
|
--- chromium-73.0.3683.75/media/base/supported_types.cc.extra-media 2019-03-11 23:00:59.000000000 +0100
|
|
+++ chromium-73.0.3683.75/media/base/supported_types.cc 2019-03-17 18:40:07.610556592 +0100
|
|
@@ -144,6 +144,7 @@ bool IsAudioCodecProprietary(AudioCodec
|
|
case kCodecAAC:
|
|
case kCodecAC3:
|
|
case kCodecEAC3:
|
|
+ case kCodecDTS:
|
|
case kCodecAMR_NB:
|
|
case kCodecAMR_WB:
|
|
case kCodecGSM_MS:
|
|
@@ -152,6 +153,7 @@ bool IsAudioCodecProprietary(AudioCodec
|
|
return true;
|
|
|
|
case kCodecFLAC:
|
|
+ case kCodecMP2:
|
|
case kCodecMP3:
|
|
case kCodecOpus:
|
|
case kCodecVorbis:
|
|
@@ -174,6 +176,7 @@ bool IsDefaultSupportedAudioType(const A
|
|
switch (type.codec) {
|
|
case kCodecAAC:
|
|
case kCodecFLAC:
|
|
+ case kCodecMP2:
|
|
case kCodecMP3:
|
|
case kCodecOpus:
|
|
case kCodecPCM:
|
|
@@ -182,6 +185,10 @@ bool IsDefaultSupportedAudioType(const A
|
|
case kCodecPCM_S24BE:
|
|
case kCodecPCM_ALAW:
|
|
case kCodecVorbis:
|
|
+ case kCodecEAC3:
|
|
+ case kCodecALAC:
|
|
+ case kCodecAC3:
|
|
+ case kCodecDTS:
|
|
return true;
|
|
|
|
case kCodecAMR_NB:
|
|
@@ -193,9 +200,6 @@ bool IsDefaultSupportedAudioType(const A
|
|
return false;
|
|
#endif
|
|
|
|
- case kCodecEAC3:
|
|
- case kCodecALAC:
|
|
- case kCodecAC3:
|
|
case kCodecMpegHAudio:
|
|
case kUnknownAudioCodec:
|
|
return false;
|
|
@@ -246,21 +250,15 @@ bool IsDefaultSupportedVideoType(const V
|
|
case kCodecH264:
|
|
case kCodecVP8:
|
|
case kCodecTheora:
|
|
- return true;
|
|
-
|
|
- case kUnknownVideoCodec:
|
|
case kCodecVC1:
|
|
case kCodecMPEG2:
|
|
case kCodecHEVC:
|
|
- case kCodecDolbyVision:
|
|
- return false;
|
|
-
|
|
case kCodecMPEG4:
|
|
-#if defined(OS_CHROMEOS)
|
|
return true;
|
|
-#else
|
|
+
|
|
+ case kUnknownVideoCodec:
|
|
+ case kCodecDolbyVision:
|
|
return false;
|
|
-#endif
|
|
}
|
|
|
|
NOTREACHED();
|