Replace AV1X with AV1
* Replace "AV1X" with "AV1";
* Keep mapping of "AV1X" payload name to kVideoCodecAv1 to not break
support of injectable "AV1X".
Bug: webrtc:13166
Change-Id: I9a50481209209f3857bbf28f4ed529ee6972377e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231560
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Emil Lundmark <lndmrk@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34987}
diff --git a/api/video_codecs/video_codec.cc b/api/video_codecs/video_codec.cc
index d05eb45..e96a63a 100644
--- a/api/video_codecs/video_codec.cc
+++ b/api/video_codecs/video_codec.cc
@@ -21,9 +21,9 @@
namespace {
constexpr char kPayloadNameVp8[] = "VP8";
constexpr char kPayloadNameVp9[] = "VP9";
-// TODO(bugs.webrtc.org/11042): Rename to AV1 when rtp payload format for av1 is
-// frozen.
-constexpr char kPayloadNameAv1[] = "AV1X";
+constexpr char kPayloadNameAv1[] = "AV1";
+// TODO(bugs.webrtc.org/13166): Delete after all dependent projects updated.
+constexpr char kPayloadNameAv1x[] = "AV1X";
constexpr char kPayloadNameH264[] = "H264";
constexpr char kPayloadNameGeneric[] = "Generic";
constexpr char kPayloadNameMultiplex[] = "Multiplex";
@@ -128,7 +128,8 @@
return kVideoCodecVP8;
if (absl::EqualsIgnoreCase(name, kPayloadNameVp9))
return kVideoCodecVP9;
- if (absl::EqualsIgnoreCase(name, kPayloadNameAv1))
+ if (absl::EqualsIgnoreCase(name, kPayloadNameAv1) ||
+ absl::EqualsIgnoreCase(name, kPayloadNameAv1x))
return kVideoCodecAV1;
if (absl::EqualsIgnoreCase(name, kPayloadNameH264))
return kVideoCodecH264;
diff --git a/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java b/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
index c5e9059..2872d0b 100644
--- a/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
+++ b/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
@@ -96,7 +96,6 @@
private static final String VIDEO_CODEC_H264_BASELINE = "H264 Baseline";
private static final String VIDEO_CODEC_H264_HIGH = "H264 High";
private static final String VIDEO_CODEC_AV1 = "AV1";
- private static final String VIDEO_CODEC_AV1_SDP_CODEC_NAME = "AV1X";
private static final String AUDIO_CODEC_OPUS = "opus";
private static final String AUDIO_CODEC_ISAC = "ISAC";
private static final String VIDEO_CODEC_PARAM_START_BITRATE = "x-google-start-bitrate";
@@ -985,7 +984,7 @@
case VIDEO_CODEC_VP9:
return VIDEO_CODEC_VP9;
case VIDEO_CODEC_AV1:
- return VIDEO_CODEC_AV1_SDP_CODEC_NAME;
+ return VIDEO_CODEC_AV1;
case VIDEO_CODEC_H264_HIGH:
case VIDEO_CODEC_H264_BASELINE:
return VIDEO_CODEC_H264;
diff --git a/media/base/media_constants.cc b/media/base/media_constants.cc
index 17a8a83..4e1fd1f 100644
--- a/media/base/media_constants.cc
+++ b/media/base/media_constants.cc
@@ -99,7 +99,8 @@
const char kVp8CodecName[] = "VP8";
const char kVp9CodecName[] = "VP9";
-const char kAv1CodecName[] = "AV1X";
+const char kAv1CodecName[] = "AV1";
+const char kAv1xCodecName[] = "AV1X";
const char kH264CodecName[] = "H264";
// RFC 6184 RTP Payload Format for H.264 video
diff --git a/media/base/media_constants.h b/media/base/media_constants.h
index 1f471e7..617ba44 100644
--- a/media/base/media_constants.h
+++ b/media/base/media_constants.h
@@ -122,6 +122,8 @@
RTC_EXPORT extern const char kVp8CodecName[];
RTC_EXPORT extern const char kVp9CodecName[];
RTC_EXPORT extern const char kAv1CodecName[];
+// TODO(bugs.webrtc.org/13166): Delete after all dependent projects updated.
+RTC_EXPORT extern const char kAv1xCodecName[];
RTC_EXPORT extern const char kH264CodecName[];
// RFC 6184 RTP Payload Format for H.264 video
diff --git a/media/engine/internal_decoder_factory_unittest.cc b/media/engine/internal_decoder_factory_unittest.cc
index a2a6921..9d3acee 100644
--- a/media/engine/internal_decoder_factory_unittest.cc
+++ b/media/engine/internal_decoder_factory_unittest.cc
@@ -55,11 +55,13 @@
InternalDecoderFactory factory;
if (kIsLibaomAv1DecoderSupported) {
EXPECT_THAT(factory.GetSupportedFormats(),
- Contains(Field(&SdpVideoFormat::name, "AV1X")));
- EXPECT_TRUE(factory.CreateVideoDecoder(SdpVideoFormat("AV1X")));
+ Contains(Field(&SdpVideoFormat::name, cricket::kAv1CodecName)));
+ EXPECT_TRUE(
+ factory.CreateVideoDecoder(SdpVideoFormat(cricket::kAv1CodecName)));
} else {
- EXPECT_THAT(factory.GetSupportedFormats(),
- Not(Contains(Field(&SdpVideoFormat::name, "AV1X"))));
+ EXPECT_THAT(
+ factory.GetSupportedFormats(),
+ Not(Contains(Field(&SdpVideoFormat::name, cricket::kAv1CodecName))));
}
}
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index b7c9983..dc50a8e 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -172,7 +172,8 @@
VideoCodec codec(format);
bool isCodecValidForLowerRange =
absl::EqualsIgnoreCase(codec.name, kFlexfecCodecName) ||
- absl::EqualsIgnoreCase(codec.name, kAv1CodecName);
+ absl::EqualsIgnoreCase(codec.name, kAv1CodecName) ||
+ absl::EqualsIgnoreCase(codec.name, kAv1xCodecName);
bool isFecCodec = absl::EqualsIgnoreCase(codec.name, kUlpfecCodecName) ||
absl::EqualsIgnoreCase(codec.name, kFlexfecCodecName);
diff --git a/pc/peer_connection_signaling_unittest.cc b/pc/peer_connection_signaling_unittest.cc
index d20dc70..13b54d9 100644
--- a/pc/peer_connection_signaling_unittest.cc
+++ b/pc/peer_connection_signaling_unittest.cc
@@ -1025,7 +1025,7 @@
ASSERT_EQ(flexfec_it->id, 35);
auto av1_it = std::find_if(
offer_codecs.begin(), offer_codecs.end(),
- [](const cricket::Codec& codec) { return codec.name == "AV1X"; });
+ [](const cricket::Codec& codec) { return codec.name == "AV1"; });
if (av1_it != offer_codecs.end()) {
ASSERT_NE(av1_it->id, 35);
}
diff --git a/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java b/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java
index f2cde8f..9cd4aa2 100644
--- a/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java
+++ b/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java
@@ -94,7 +94,7 @@
return null;
}
- VideoCodecMimeType type = VideoCodecMimeType.fromSdpCodecName(input.getName());
+ VideoCodecMimeType type = VideoCodecMimeType.valueOf(input.getName());
MediaCodecInfo info = findCodecForType(type);
if (info == null) {
@@ -142,7 +142,7 @@
VideoCodecMimeType.VP9, VideoCodecMimeType.H264, VideoCodecMimeType.AV1}) {
MediaCodecInfo codec = findCodecForType(type);
if (codec != null) {
- String name = type.toSdpCodecName();
+ String name = type.name();
// TODO(sakal): Always add H264 HP once WebRTC correctly removes codecs that are not
// supported by the decoder.
if (type == VideoCodecMimeType.H264 && isH264HighProfileSupported(codec)) {
diff --git a/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java b/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java
index e767aee..ebcf204 100644
--- a/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java
+++ b/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java
@@ -21,14 +21,14 @@
public VideoDecoder createDecoder(VideoCodecInfo codecInfo) {
String codecName = codecInfo.getName();
- if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP8.toSdpCodecName())) {
+ if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP8.name())) {
return new LibvpxVp8Decoder();
}
- if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP9.toSdpCodecName())
+ if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP9.name())
&& LibvpxVp9Decoder.nativeIsSupported()) {
return new LibvpxVp9Decoder();
}
- if (codecName.equalsIgnoreCase(VideoCodecMimeType.AV1.toSdpCodecName())
+ if (codecName.equalsIgnoreCase(VideoCodecMimeType.AV1.name())
&& LibaomAv1Decoder.nativeIsSupported()) {
return new LibaomAv1Decoder();
}
@@ -44,12 +44,12 @@
static VideoCodecInfo[] supportedCodecs() {
List<VideoCodecInfo> codecs = new ArrayList<VideoCodecInfo>();
- codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.toSdpCodecName(), new HashMap<>()));
+ codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.name(), new HashMap<>()));
if (LibvpxVp9Decoder.nativeIsSupported()) {
- codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.toSdpCodecName(), new HashMap<>()));
+ codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.name(), new HashMap<>()));
}
if (LibaomAv1Decoder.nativeIsSupported()) {
- codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.toSdpCodecName(), new HashMap<>()));
+ codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.name(), new HashMap<>()));
}
return codecs.toArray(new VideoCodecInfo[codecs.size()]);
diff --git a/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java b/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java
index 6074be2..1e3e181 100644
--- a/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java
+++ b/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java
@@ -21,14 +21,14 @@
public VideoEncoder createEncoder(VideoCodecInfo codecInfo) {
String codecName = codecInfo.getName();
- if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP8.toSdpCodecName())) {
+ if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP8.name())) {
return new LibvpxVp8Encoder();
}
- if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP9.toSdpCodecName())
+ if (codecName.equalsIgnoreCase(VideoCodecMimeType.VP9.name())
&& LibvpxVp9Encoder.nativeIsSupported()) {
return new LibvpxVp9Encoder();
}
- if (codecName.equalsIgnoreCase(VideoCodecMimeType.AV1.toSdpCodecName())
+ if (codecName.equalsIgnoreCase(VideoCodecMimeType.AV1.name())
&& LibaomAv1Encoder.nativeIsSupported()) {
return new LibaomAv1Encoder();
}
@@ -44,12 +44,12 @@
static VideoCodecInfo[] supportedCodecs() {
List<VideoCodecInfo> codecs = new ArrayList<VideoCodecInfo>();
- codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.toSdpCodecName(), new HashMap<>()));
+ codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.name(), new HashMap<>()));
if (LibvpxVp9Encoder.nativeIsSupported()) {
- codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.toSdpCodecName(), new HashMap<>()));
+ codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.name(), new HashMap<>()));
}
if (LibaomAv1Encoder.nativeIsSupported()) {
- codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.toSdpCodecName(), new HashMap<>()));
+ codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.name(), new HashMap<>()));
}
return codecs.toArray(new VideoCodecInfo[codecs.size()]);
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java b/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
index 4ec0d94..197a5bc 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java
@@ -73,7 +73,7 @@
assertEquals(5, videoCodecs.length);
assertEquals("VP8", videoCodecs[0].name);
assertEquals("VP9", videoCodecs[1].name);
- assertEquals("AV1X", videoCodecs[2].name);
+ assertEquals("AV1", videoCodecs[2].name);
assertEquals("H264", videoCodecs[3].name);
assertEquals("42e01f", videoCodecs[3].params.get("profile-level-id"));
assertEquals("H264", videoCodecs[4].name);
@@ -89,7 +89,7 @@
assertEquals(4, videoCodecs.length);
assertEquals("VP8", videoCodecs[0].name);
assertEquals("VP9", videoCodecs[1].name);
- assertEquals("AV1X", videoCodecs[2].name);
+ assertEquals("AV1", videoCodecs[2].name);
assertEquals("H264", videoCodecs[3].name);
assertEquals("42e01f", videoCodecs[3].params.get("profile-level-id"));
}
@@ -103,7 +103,7 @@
assertEquals(5, videoCodecs.length);
assertEquals("VP8", videoCodecs[0].name);
assertEquals("VP9", videoCodecs[1].name);
- assertEquals("AV1X", videoCodecs[2].name);
+ assertEquals("AV1", videoCodecs[2].name);
assertEquals("H264", videoCodecs[3].name);
assertEquals("42e01f", videoCodecs[3].params.get("profile-level-id"));
assertEquals("H264", videoCodecs[4].name);
diff --git a/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java b/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java
index 9410c4c..4ee8b1a 100644
--- a/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java
+++ b/sdk/android/src/java/org/webrtc/MediaCodecVideoDecoderFactory.java
@@ -46,7 +46,7 @@
@Nullable
@Override
public VideoDecoder createDecoder(VideoCodecInfo codecType) {
- VideoCodecMimeType type = VideoCodecMimeType.fromSdpCodecName(codecType.getName());
+ VideoCodecMimeType type = VideoCodecMimeType.valueOf(codecType.getName());
MediaCodecInfo info = findCodecForType(type);
if (info == null) {
@@ -68,7 +68,7 @@
VideoCodecMimeType.VP9, VideoCodecMimeType.H264, VideoCodecMimeType.AV1}) {
MediaCodecInfo codec = findCodecForType(type);
if (codec != null) {
- String name = type.toSdpCodecName();
+ String name = type.name();
if (type == VideoCodecMimeType.H264 && isH264HighProfileSupported(codec)) {
supportedCodecInfos.add(new VideoCodecInfo(
name, MediaCodecUtils.getCodecProperties(type, /* highProfile= */ true)));
@@ -110,7 +110,6 @@
// Returns true if the given MediaCodecInfo indicates a supported encoder for the given type.
private boolean isSupportedCodec(MediaCodecInfo info, VideoCodecMimeType type) {
- String name = info.getName();
if (!MediaCodecUtils.codecSupportsType(info, type)) {
return false;
}
diff --git a/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java b/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java
index 93a9286..26a0309 100644
--- a/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java
+++ b/sdk/android/src/java/org/webrtc/VideoCodecMimeType.java
@@ -26,12 +26,4 @@
String mimeType() {
return mimeType;
}
-
- static VideoCodecMimeType fromSdpCodecName(String codecName) {
- return codecName.equals("AV1X") ? AV1 : valueOf(codecName);
- }
-
- String toSdpCodecName() {
- return this == AV1 ? "AV1X" : name();
- }
}