diff --git a/api/video/video_codec_type.h b/api/video/video_codec_type.h index 2e406c0755..efbe3cc8cb 100644 --- a/api/video/video_codec_type.h +++ b/api/video/video_codec_type.h @@ -20,6 +20,7 @@ enum VideoCodecType { kVideoCodecGeneric = 0, kVideoCodecVP8, kVideoCodecVP9, + kVideoCodecAV1, kVideoCodecH264, kVideoCodecMultiplex, }; diff --git a/call/rtp_payload_params.cc b/call/rtp_payload_params.cc index cc9712c7f2..c71af6b097 100644 --- a/call/rtp_payload_params.cc +++ b/call/rtp_payload_params.cc @@ -267,7 +267,8 @@ void RtpPayloadParams::SetGeneric(const CodecSpecificInfo* codec_specific_info, } return; case VideoCodecType::kVideoCodecVP9: - // TODO(philipel): Implement VP9 to new generic descriptor. + case VideoCodecType::kVideoCodecAV1: + // TODO(philipel): Implement VP9 and AV1 to generic descriptor. return; case VideoCodecType::kVideoCodecH264: if (codec_specific_info) { diff --git a/modules/rtp_rtcp/source/rtp_depacketizer_av1.cc b/modules/rtp_rtcp/source/rtp_depacketizer_av1.cc index 9383ce27d6..45122dac48 100644 --- a/modules/rtp_rtcp/source/rtp_depacketizer_av1.cc +++ b/modules/rtp_rtcp/source/rtp_depacketizer_av1.cc @@ -382,8 +382,7 @@ bool RtpDepacketizerAv1::Parse(ParsedPayload* parsed_payload, uint8_t aggregation_header; RTC_CHECK(payload.ReadUInt8(&aggregation_header)); - // TODO(danilchap): Set AV1 codec when there is such enum value - parsed_payload->video.codec = VideoCodecType::kVideoCodecGeneric; + parsed_payload->video.codec = VideoCodecType::kVideoCodecAV1; // These are not accurate since frame may consist of several packet aligned // chunks of obus, but should be good enough for most cases. It might produce // frame that do not map to any real frame, but av1 decoder should be able to diff --git a/rtc_base/experiments/min_video_bitrate_experiment.cc b/rtc_base/experiments/min_video_bitrate_experiment.cc index c3cf9377e4..ee62d2eaf4 100644 --- a/rtc_base/experiments/min_video_bitrate_experiment.cc +++ b/rtc_base/experiments/min_video_bitrate_experiment.cc @@ -74,15 +74,17 @@ absl::optional GetExperimentalMinVideoBitrate(VideoCodecType type) { // New experiment - per-codec minimum bitrate. webrtc::FieldTrialOptional min_bitrate_vp8("vp8_br"); webrtc::FieldTrialOptional min_bitrate_vp9("vp9_br"); + webrtc::FieldTrialOptional min_bitrate_av1("av1_br"); webrtc::FieldTrialOptional min_bitrate_h264("h264_br"); webrtc::ParseFieldTrial( {&enabled, &min_video_bitrate, &min_bitrate_vp8, &min_bitrate_vp9, - &min_bitrate_h264}, + &min_bitrate_av1, &min_bitrate_h264}, webrtc::field_trial::FindFullName(kMinVideoBitrateExperiment)); if (min_video_bitrate) { - if (min_bitrate_vp8 || min_bitrate_vp9 || min_bitrate_h264) { + if (min_bitrate_vp8 || min_bitrate_vp9 || min_bitrate_av1 || + min_bitrate_h264) { // "br" is mutually-exclusive with the other configuration possibilites. RTC_LOG(LS_WARNING) << "Self-contradictory experiment config."; } @@ -94,6 +96,8 @@ absl::optional GetExperimentalMinVideoBitrate(VideoCodecType type) { return min_bitrate_vp8.GetOptional(); case kVideoCodecVP9: return min_bitrate_vp9.GetOptional(); + case kVideoCodecAV1: + return min_bitrate_av1.GetOptional(); case kVideoCodecH264: return min_bitrate_h264.GetOptional(); case kVideoCodecGeneric: diff --git a/test/scenario/video_stream.cc b/test/scenario/video_stream.cc index b086a33f24..56e97efc57 100644 --- a/test/scenario/video_stream.cc +++ b/test/scenario/video_stream.cc @@ -211,6 +211,7 @@ CreateEncoderSpecificSettings(VideoStreamConfig config) { case Codec::kVideoCodecVP9: return CreateVp9SpecificSettings(config); case Codec::kVideoCodecGeneric: + case Codec::kVideoCodecAV1: return nullptr; case Codec::kVideoCodecMultiplex: RTC_NOTREACHED();