diff --git a/modules/video_coding/codecs/test/video_codec_test.cc b/modules/video_coding/codecs/test/video_codec_test.cc index 535254a7f3..42e92c5a26 100644 --- a/modules/video_coding/codecs/test/video_codec_test.cc +++ b/modules/video_coding/codecs/test/video_codec_test.cc @@ -581,7 +581,7 @@ TEST_P(SpatialQualityTest, DISABLED_SpatialQuality) { INSTANTIATE_TEST_SUITE_P( All, SpatialQualityTest, - Combine(Values("AV1", "VP9", "VP8", "H264"), + Combine(Values("AV1", "VP9", "VP8", "H264", "H265"), #if defined(WEBRTC_ANDROID) Values("builtin", "mediacodec"), #else @@ -663,7 +663,7 @@ TEST_P(BitrateAdaptationTest, DISABLED_BitrateAdaptation) { INSTANTIATE_TEST_SUITE_P(All, BitrateAdaptationTest, - Combine(Values("AV1", "VP9", "VP8", "H264"), + Combine(Values("AV1", "VP9", "VP8", "H264", "H265"), #if defined(WEBRTC_ANDROID) Values("builtin", "mediacodec"), #else @@ -737,7 +737,7 @@ TEST_P(FramerateAdaptationTest, DISABLED_FramerateAdaptation) { INSTANTIATE_TEST_SUITE_P(All, FramerateAdaptationTest, - Combine(Values("AV1", "VP9", "VP8", "H264"), + Combine(Values("AV1", "VP9", "VP8", "H264", "H265"), #if defined(WEBRTC_ANDROID) Values("builtin", "mediacodec"), #else diff --git a/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java b/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java index b48a39aaa6..d43fc27fa0 100644 --- a/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java +++ b/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java @@ -132,9 +132,10 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { public VideoCodecInfo[] getSupportedCodecs() { List supportedCodecInfos = new ArrayList(); // Generate a list of supported codecs in order of preference: - // VP8, VP9, H264 (high profile), H264 (baseline profile) and AV1. - for (VideoCodecMimeType type : new VideoCodecMimeType[] {VideoCodecMimeType.VP8, - VideoCodecMimeType.VP9, VideoCodecMimeType.H264, VideoCodecMimeType.AV1}) { + // VP8, VP9, H264 (high profile), H264 (baseline profile), AV1 and H265. + for (VideoCodecMimeType type : + new VideoCodecMimeType[] {VideoCodecMimeType.VP8, VideoCodecMimeType.VP9, + VideoCodecMimeType.H264, VideoCodecMimeType.AV1, VideoCodecMimeType.H265}) { MediaCodecInfo codec = findCodecForType(type); if (codec != null) { String name = type.name(); @@ -201,6 +202,7 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { return isHardwareSupportedInCurrentSdkVp9(info); case H264: return isHardwareSupportedInCurrentSdkH264(info); + case H265: case AV1: return false; } diff --git a/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java b/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java index 915383b89c..41d97359eb 100644 --- a/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java +++ b/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java @@ -173,7 +173,7 @@ class HardwareVideoEncoder implements VideoEncoder { * intervals, and bitrateAdjuster. * * @param codecName the hardware codec implementation to use - * @param codecType the type of the given video codec (eg. VP8, VP9, H264 or AV1) + * @param codecType the type of the given video codec (eg. VP8, VP9, H264, H265, AV1) * @param surfaceColorFormat color format for surface mode or null if not available * @param yuvColorFormat color format for bytebuffer mode * @param keyFrameIntervalSec interval in seconds between key frames; used to initialize the codec diff --git a/sdk/android/src/java/org/webrtc/MediaCodecUtils.java b/sdk/android/src/java/org/webrtc/MediaCodecUtils.java index d5ccae9688..5417fec4d4 100644 --- a/sdk/android/src/java/org/webrtc/MediaCodecUtils.java +++ b/sdk/android/src/java/org/webrtc/MediaCodecUtils.java @@ -85,6 +85,7 @@ class MediaCodecUtils { case VP8: case VP9: case AV1: + case H265: return new HashMap(); case H264: return H264Utils.getDefaultH264Params(highProfile); diff --git a/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java b/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java index bf591dda26..9a73bc49ff 100644 --- a/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java +++ b/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java @@ -63,9 +63,10 @@ class MediaCodecVideoDecoderFactory implements VideoDecoderFactory { public VideoCodecInfo[] getSupportedCodecs() { List supportedCodecInfos = new ArrayList(); // Generate a list of supported codecs in order of preference: - // VP8, VP9, H264 (high profile), and H264 (baseline profile). - for (VideoCodecMimeType type : new VideoCodecMimeType[] {VideoCodecMimeType.VP8, - VideoCodecMimeType.VP9, VideoCodecMimeType.H264, VideoCodecMimeType.AV1}) { + // VP8, VP9, H264 (high profile), H264 (baseline profile), AV1 and H265. + for (VideoCodecMimeType type : + new VideoCodecMimeType[] {VideoCodecMimeType.VP8, VideoCodecMimeType.VP9, + VideoCodecMimeType.H264, VideoCodecMimeType.AV1, VideoCodecMimeType.H265}) { MediaCodecInfo codec = findCodecForType(type); if (codec != null) { String name = type.name(); diff --git a/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java b/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java index 26a030919d..5538f3201a 100644 --- a/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java +++ b/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java @@ -15,7 +15,8 @@ enum VideoCodecMimeType { VP8("video/x-vnd.on2.vp8"), VP9("video/x-vnd.on2.vp9"), H264("video/avc"), - AV1("video/av01"); + AV1("video/av01"), + H265("video/hevc"); private final String mimeType;