diff options
Diffstat (limited to 'cast/streaming/rtp_defines.cc')
-rw-r--r-- | cast/streaming/rtp_defines.cc | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/cast/streaming/rtp_defines.cc b/cast/streaming/rtp_defines.cc index d64773d5..6ab389eb 100644 --- a/cast/streaming/rtp_defines.cc +++ b/cast/streaming/rtp_defines.cc @@ -4,15 +4,56 @@ #include "cast/streaming/rtp_defines.h" +#include "util/osp_logging.h" + namespace openscreen { namespace cast { -RtpPayloadType GetPayloadType(AudioCodec codec) { - return RtpPayloadType::kAudioHackForAndroidTV; +RtpPayloadType GetPayloadType(AudioCodec codec, bool use_android_rtp_hack) { + if (use_android_rtp_hack) { + return codec == AudioCodec::kNotSpecified + ? RtpPayloadType::kAudioVarious + : RtpPayloadType::kAudioHackForAndroidTV; + } + + switch (codec) { + case AudioCodec::kAac: + return RtpPayloadType::kAudioAac; + case AudioCodec::kOpus: + return RtpPayloadType::kAudioOpus; + case AudioCodec::kNotSpecified: + return RtpPayloadType::kAudioVarious; + default: + OSP_NOTREACHED(); + } } -RtpPayloadType GetPayloadType(VideoCodec codec) { - return RtpPayloadType::kVideoHackForAndroidTV; +RtpPayloadType GetPayloadType(VideoCodec codec, bool use_android_rtp_hack) { + if (use_android_rtp_hack) { + return codec == VideoCodec::kNotSpecified + ? RtpPayloadType::kVideoVarious + : RtpPayloadType::kVideoHackForAndroidTV; + } + switch (codec) { + // VP8 and VP9 share the same payload type. + case VideoCodec::kVp9: + case VideoCodec::kVp8: + return RtpPayloadType::kVideoVp8; + + // H264 and HEVC/H265 share the same payload type. + case VideoCodec::kHevc: // fallthrough + case VideoCodec::kH264: + return RtpPayloadType::kVideoH264; + + case VideoCodec::kAv1: + return RtpPayloadType::kVideoAv1; + + case VideoCodec::kNotSpecified: + return RtpPayloadType::kVideoVarious; + + default: + OSP_NOTREACHED(); + } } bool IsRtpPayloadType(uint8_t raw_byte) { @@ -23,6 +64,8 @@ bool IsRtpPayloadType(uint8_t raw_byte) { case RtpPayloadType::kAudioVarious: case RtpPayloadType::kVideoVp8: case RtpPayloadType::kVideoH264: + case RtpPayloadType::kVideoVp9: + case RtpPayloadType::kVideoAv1: case RtpPayloadType::kVideoVarious: case RtpPayloadType::kAudioHackForAndroidTV: // Note: RtpPayloadType::kVideoHackForAndroidTV has the same value as |