From c299ccf7e4433bb463552a1ae27454cc5deefc84 Mon Sep 17 00:00:00 2001 From: ybai001 Date: Mon, 7 Jun 2021 22:15:54 +0800 Subject: [PATCH 1/5] DD+JOC track can't be selected if there are multi tracks in manifest file DD+JOC track can't be selected if there are multi tracks in manifest file. --- .../exoplayer2/source/dash/manifest/DashManifestParser.java | 3 +++ .../exoplayer2/source/hls/playlist/HlsPlaylistParser.java | 1 + 2 files changed, 4 insertions(+) diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java index 2b849e9eba..a3d43d6c31 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java @@ -765,6 +765,9 @@ public class DashManifestParser extends DefaultHandler @Nullable String sampleMimeType = getSampleMimeType(containerMimeType, codecs); if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) { sampleMimeType = parseEac3SupplementalProperties(supplementalProperties); + if (MimeTypes.AUDIO_E_AC3_JOC.equals(sampleMimeType)) { + codecs = "ec+3"; + } } @C.SelectionFlags int selectionFlags = parseSelectionFlagsFromRoleDescriptors(roleDescriptors); @C.RoleFlags int roleFlags = parseRoleFlagsFromRoleDescriptors(roleDescriptors); diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java index c8d16efe43..1d11e38307 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java @@ -515,6 +515,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser Date: Thu, 10 Jun 2021 09:33:46 +0800 Subject: [PATCH 2/5] Update solution that DD+JOC track can't be selected --- .../google/android/exoplayer2/mediacodec/MediaCodecInfo.java | 3 +++ .../exoplayer2/source/dash/manifest/DashManifestParser.java | 3 --- .../exoplayer2/source/hls/playlist/HlsPlaylistParser.java | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java index 6d4c11603a..c6690a846a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java @@ -279,6 +279,9 @@ public final class MediaCodecInfo { if (format.codecs == null || mimeType == null) { return true; } + if (MimeTypes.AUDIO_E_AC3_JOC.equals(mimeType)) { + return true; + } String codecMimeType = MimeTypes.getMediaMimeType(format.codecs); if (codecMimeType == null) { return true; diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java index a3d43d6c31..2b849e9eba 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java @@ -765,9 +765,6 @@ public class DashManifestParser extends DefaultHandler @Nullable String sampleMimeType = getSampleMimeType(containerMimeType, codecs); if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) { sampleMimeType = parseEac3SupplementalProperties(supplementalProperties); - if (MimeTypes.AUDIO_E_AC3_JOC.equals(sampleMimeType)) { - codecs = "ec+3"; - } } @C.SelectionFlags int selectionFlags = parseSelectionFlagsFromRoleDescriptors(roleDescriptors); @C.RoleFlags int roleFlags = parseRoleFlagsFromRoleDescriptors(roleDescriptors); diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java index 1d11e38307..c8d16efe43 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java @@ -515,7 +515,6 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser Date: Thu, 10 Jun 2021 20:54:44 +0800 Subject: [PATCH 3/5] Restore to the original solution after further discussion --- demos/main/src/main/assets/media.exolist.json | 13 +++++++++++++ .../exoplayer2/mediacodec/MediaCodecInfo.java | 3 --- .../source/dash/manifest/DashManifestParser.java | 3 +++ .../source/hls/playlist/HlsPlaylistParser.java | 1 + 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/demos/main/src/main/assets/media.exolist.json b/demos/main/src/main/assets/media.exolist.json index 05a36b7fa0..44216e5c11 100644 --- a/demos/main/src/main/assets/media.exolist.json +++ b/demos/main/src/main/assets/media.exolist.json @@ -1,4 +1,17 @@ [ + { + "name": "Nanda Stream", + "samples": [ + { + "name": "HLS", + "uri": "https://ott.dolby.com/OnDelKits/AC-4/Dolby_AC-4_Online_Delivery_Kit_1.5/Test_Signals/example_streams/HLS/Manifest_fMP4/Holi_25fps_example_2.m3u8" + }, + { + "name": "DASH", + "uri": "https://ott.dolby.com/OnDelKits/AC-4/Dolby_AC-4_Online_Delivery_Kit_1.5/Test_Signals/example_streams/DASH/OnDemand/MPD/Holi_25fps_example_2.mpd" + } + ] + }, { "name": "Clear DASH", "samples": [ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java index c6690a846a..6d4c11603a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java @@ -279,9 +279,6 @@ public final class MediaCodecInfo { if (format.codecs == null || mimeType == null) { return true; } - if (MimeTypes.AUDIO_E_AC3_JOC.equals(mimeType)) { - return true; - } String codecMimeType = MimeTypes.getMediaMimeType(format.codecs); if (codecMimeType == null) { return true; diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java index 2b849e9eba..a3d43d6c31 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java @@ -765,6 +765,9 @@ public class DashManifestParser extends DefaultHandler @Nullable String sampleMimeType = getSampleMimeType(containerMimeType, codecs); if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) { sampleMimeType = parseEac3SupplementalProperties(supplementalProperties); + if (MimeTypes.AUDIO_E_AC3_JOC.equals(sampleMimeType)) { + codecs = "ec+3"; + } } @C.SelectionFlags int selectionFlags = parseSelectionFlagsFromRoleDescriptors(roleDescriptors); @C.RoleFlags int roleFlags = parseRoleFlagsFromRoleDescriptors(roleDescriptors); diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java index c8d16efe43..1d11e38307 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java @@ -515,6 +515,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser Date: Thu, 10 Jun 2021 20:55:46 +0800 Subject: [PATCH 4/5] Revert "Restore to the original solution after further discussion" This reverts commit e7d1adf9176148aa07c56d540a9e0ddf65aa15e6. --- demos/main/src/main/assets/media.exolist.json | 13 ------------- .../exoplayer2/mediacodec/MediaCodecInfo.java | 3 +++ .../source/dash/manifest/DashManifestParser.java | 3 --- .../source/hls/playlist/HlsPlaylistParser.java | 1 - 4 files changed, 3 insertions(+), 17 deletions(-) diff --git a/demos/main/src/main/assets/media.exolist.json b/demos/main/src/main/assets/media.exolist.json index 44216e5c11..05a36b7fa0 100644 --- a/demos/main/src/main/assets/media.exolist.json +++ b/demos/main/src/main/assets/media.exolist.json @@ -1,17 +1,4 @@ [ - { - "name": "Nanda Stream", - "samples": [ - { - "name": "HLS", - "uri": "https://ott.dolby.com/OnDelKits/AC-4/Dolby_AC-4_Online_Delivery_Kit_1.5/Test_Signals/example_streams/HLS/Manifest_fMP4/Holi_25fps_example_2.m3u8" - }, - { - "name": "DASH", - "uri": "https://ott.dolby.com/OnDelKits/AC-4/Dolby_AC-4_Online_Delivery_Kit_1.5/Test_Signals/example_streams/DASH/OnDemand/MPD/Holi_25fps_example_2.mpd" - } - ] - }, { "name": "Clear DASH", "samples": [ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java index 6d4c11603a..c6690a846a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java @@ -279,6 +279,9 @@ public final class MediaCodecInfo { if (format.codecs == null || mimeType == null) { return true; } + if (MimeTypes.AUDIO_E_AC3_JOC.equals(mimeType)) { + return true; + } String codecMimeType = MimeTypes.getMediaMimeType(format.codecs); if (codecMimeType == null) { return true; diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java index a3d43d6c31..2b849e9eba 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java @@ -765,9 +765,6 @@ public class DashManifestParser extends DefaultHandler @Nullable String sampleMimeType = getSampleMimeType(containerMimeType, codecs); if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) { sampleMimeType = parseEac3SupplementalProperties(supplementalProperties); - if (MimeTypes.AUDIO_E_AC3_JOC.equals(sampleMimeType)) { - codecs = "ec+3"; - } } @C.SelectionFlags int selectionFlags = parseSelectionFlagsFromRoleDescriptors(roleDescriptors); @C.RoleFlags int roleFlags = parseRoleFlagsFromRoleDescriptors(roleDescriptors); diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java index 1d11e38307..c8d16efe43 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java @@ -515,7 +515,6 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser Date: Thu, 10 Jun 2021 21:00:10 +0800 Subject: [PATCH 5/5] Restore to the original solution after further discussion --- .../google/android/exoplayer2/mediacodec/MediaCodecInfo.java | 3 --- .../exoplayer2/source/dash/manifest/DashManifestParser.java | 3 +++ .../exoplayer2/source/hls/playlist/HlsPlaylistParser.java | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java index c6690a846a..6d4c11603a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecInfo.java @@ -279,9 +279,6 @@ public final class MediaCodecInfo { if (format.codecs == null || mimeType == null) { return true; } - if (MimeTypes.AUDIO_E_AC3_JOC.equals(mimeType)) { - return true; - } String codecMimeType = MimeTypes.getMediaMimeType(format.codecs); if (codecMimeType == null) { return true; diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java index 2b849e9eba..a3d43d6c31 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java @@ -765,6 +765,9 @@ public class DashManifestParser extends DefaultHandler @Nullable String sampleMimeType = getSampleMimeType(containerMimeType, codecs); if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) { sampleMimeType = parseEac3SupplementalProperties(supplementalProperties); + if (MimeTypes.AUDIO_E_AC3_JOC.equals(sampleMimeType)) { + codecs = "ec+3"; + } } @C.SelectionFlags int selectionFlags = parseSelectionFlagsFromRoleDescriptors(roleDescriptors); @C.RoleFlags int roleFlags = parseRoleFlagsFromRoleDescriptors(roleDescriptors); diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java index c8d16efe43..1d11e38307 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java @@ -515,6 +515,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser