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}
This commit is contained in:

committed by
WebRTC LUCI CQ

parent
52b9e1ecfb
commit
6b19d8273b
@ -21,9 +21,9 @@ namespace webrtc {
|
||||
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 @@ VideoCodecType PayloadStringToCodecType(const std::string& name) {
|
||||
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;
|
||||
|
@ -96,7 +96,6 @@ public class PeerConnectionClient {
|
||||
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 @@ public class PeerConnectionClient {
|
||||
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;
|
||||
|
@ -99,7 +99,8 @@ const char kComfortNoiseCodecName[] = "CN";
|
||||
|
||||
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
|
||||
|
@ -122,6 +122,8 @@ extern const char kComfortNoiseCodecName[];
|
||||
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
|
||||
|
@ -55,11 +55,13 @@ TEST(InternalDecoderFactory, Av1) {
|
||||
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))));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -172,7 +172,8 @@ std::vector<VideoCodec> GetPayloadTypesAndDefaultCodecs(
|
||||
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);
|
||||
|
||||
|
@ -1025,7 +1025,7 @@ TEST_P(PeerConnectionSignalingTest, ReceiveFlexFecReoffer) {
|
||||
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);
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
|
||||
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 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
|
||||
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)) {
|
||||
|
@ -21,14 +21,14 @@ public class SoftwareVideoDecoderFactory implements VideoDecoderFactory {
|
||||
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 @@ public class SoftwareVideoDecoderFactory implements VideoDecoderFactory {
|
||||
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()]);
|
||||
|
@ -21,14 +21,14 @@ public class SoftwareVideoEncoderFactory implements VideoEncoderFactory {
|
||||
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 @@ public class SoftwareVideoEncoderFactory implements VideoEncoderFactory {
|
||||
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()]);
|
||||
|
@ -73,7 +73,7 @@ public class DefaultVideoEncoderFactoryTest {
|
||||
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 @@ public class DefaultVideoEncoderFactoryTest {
|
||||
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 @@ public class DefaultVideoEncoderFactoryTest {
|
||||
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);
|
||||
|
@ -46,7 +46,7 @@ class MediaCodecVideoDecoderFactory implements VideoDecoderFactory {
|
||||
@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 @@ class MediaCodecVideoDecoderFactory implements VideoDecoderFactory {
|
||||
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 @@ class MediaCodecVideoDecoderFactory implements VideoDecoderFactory {
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
@ -26,12 +26,4 @@ enum VideoCodecMimeType {
|
||||
String mimeType() {
|
||||
return mimeType;
|
||||
}
|
||||
|
||||
static VideoCodecMimeType fromSdpCodecName(String codecName) {
|
||||
return codecName.equals("AV1X") ? AV1 : valueOf(codecName);
|
||||
}
|
||||
|
||||
String toSdpCodecName() {
|
||||
return this == AV1 ? "AV1X" : name();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user