![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/self/root/usr/local/lib/node_modules/mediasoup/worker/include/RTC/Codecs/ |
Upload File : |
#ifndef MS_RTC_CODECS_TOOLS_HPP #define MS_RTC_CODECS_TOOLS_HPP #include "common.hpp" #include "RTC/Codecs/H264.hpp" #include "RTC/Codecs/PayloadDescriptorHandler.hpp" #include "RTC/Codecs/VP8.hpp" #include "RTC/Codecs/VP9.hpp" #include "RTC/RtpDictionaries.hpp" #include "RTC/RtpPacket.hpp" namespace RTC { namespace Codecs { class Tools { public: static bool CanBeKeyFrame(const RTC::RtpCodecMimeType& mimeType) { MS_TRACE(); switch (mimeType.type) { case RTC::RtpCodecMimeType::Type::VIDEO: { switch (mimeType.subtype) { case RTC::RtpCodecMimeType::Subtype::VP8: case RTC::RtpCodecMimeType::Subtype::VP9: case RTC::RtpCodecMimeType::Subtype::H264: return true; default: return false; } } default: { return false; } } } static void ProcessRtpPacket(RTC::RtpPacket* packet, const RTC::RtpCodecMimeType& mimeType) { switch (mimeType.type) { case RTC::RtpCodecMimeType::Type::VIDEO: { switch (mimeType.subtype) { case RTC::RtpCodecMimeType::Subtype::VP8: { RTC::Codecs::VP8::ProcessRtpPacket(packet); break; } case RTC::RtpCodecMimeType::Subtype::VP9: { RTC::Codecs::VP9::ProcessRtpPacket(packet); break; } case RTC::RtpCodecMimeType::Subtype::H264: { RTC::Codecs::H264::ProcessRtpPacket(packet); break; } default:; } } default:; } } static bool IsValidTypeForCodec(RTC::RtpParameters::Type type, const RTC::RtpCodecMimeType& mimeType) { switch (type) { case RTC::RtpParameters::Type::NONE: { return false; } case RTC::RtpParameters::Type::SIMPLE: { return true; } case RTC::RtpParameters::Type::SIMULCAST: { switch (mimeType.type) { case RTC::RtpCodecMimeType::Type::VIDEO: { switch (mimeType.subtype) { case RTC::RtpCodecMimeType::Subtype::VP8: case RTC::RtpCodecMimeType::Subtype::H264: return true; default: return false; } } default: { return false; } } } case RTC::RtpParameters::Type::SVC: { switch (mimeType.type) { case RTC::RtpCodecMimeType::Type::VIDEO: { switch (mimeType.subtype) { case RTC::RtpCodecMimeType::Subtype::VP9: return true; default: return false; } } default: { return false; } } } case RTC::RtpParameters::Type::PIPE: { return true; } default: { return false; } } } static EncodingContext* GetEncodingContext( const RTC::RtpCodecMimeType& mimeType, RTC::Codecs::EncodingContext::Params& params) { switch (mimeType.type) { case RTC::RtpCodecMimeType::Type::VIDEO: { switch (mimeType.subtype) { case RTC::RtpCodecMimeType::Subtype::VP8: return new RTC::Codecs::VP8::EncodingContext(params); case RTC::RtpCodecMimeType::Subtype::VP9: return new RTC::Codecs::VP9::EncodingContext(params); case RTC::RtpCodecMimeType::Subtype::H264: return new RTC::Codecs::H264::EncodingContext(params); default: return nullptr; } } default: { return nullptr; } } } }; } // namespace Codecs } // namespace RTC #endif