aboutsummaryrefslogtreecommitdiff
path: root/cast/streaming/rtp_defines.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cast/streaming/rtp_defines.cc')
-rw-r--r--cast/streaming/rtp_defines.cc51
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