Codec.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Unity.WebRTC;
  4. namespace Unity.RenderStreaming
  5. {
  6. internal static class RTCRtpCodecCapabilityExtension
  7. {
  8. public static string GetCodecName(this string mimeType)
  9. {
  10. if (mimeType == null)
  11. return null;
  12. string[] substrings = mimeType.Split('/');
  13. if (substrings.Length > 1)
  14. return substrings[1];
  15. return null;
  16. }
  17. public static IEnumerable<RTCRtpCodecCapability> SelectCodecCapabilities(this RTCRtpCapabilities capabilities, IEnumerable<VideoCodecInfo> codecs)
  18. {
  19. var caps = capabilities.codecs;
  20. return codecs
  21. .Where(codec => codec != null)
  22. .Select(codec => caps.FirstOrDefault(cap => codec.Equals(cap)))
  23. .Where(cap => cap != null);
  24. }
  25. public static IEnumerable<RTCRtpCodecCapability> SelectCodecCapabilities(this RTCRtpCapabilities capabilities, IEnumerable<AudioCodecInfo> codecs)
  26. {
  27. var caps = capabilities.codecs;
  28. return codecs
  29. .Where(codec => codec != null)
  30. .Select(codec => caps.FirstOrDefault(cap => codec.Equals(cap)))
  31. .Where(cap => cap != null);
  32. }
  33. }
  34. }