diff --git a/inc/BaseServerMediaSubsession.h b/inc/BaseServerMediaSubsession.h index 56e9ffb..1ab3d8d 100755 --- a/inc/BaseServerMediaSubsession.h +++ b/inc/BaseServerMediaSubsession.h @@ -58,14 +58,19 @@ class BaseServerMediaSubsession std::string rtpFormat; switch(format) { - case V4L2_PIX_FMT_HEVC : rtpFormat = "video/H265"; break; - case V4L2_PIX_FMT_H264 : rtpFormat = "video/H264"; break; - case V4L2_PIX_FMT_MJPEG: rtpFormat = "video/JPEG"; break; - case V4L2_PIX_FMT_JPEG : rtpFormat = "video/JPEG"; break; - case V4L2_PIX_FMT_VP8 : rtpFormat = "video/VP8" ; break; - case V4L2_PIX_FMT_VP9 : rtpFormat = "video/VP9" ; break; - case V4L2_PIX_FMT_YUYV : rtpFormat = "video/RAW" ; break; - case V4L2_PIX_FMT_UYVY : rtpFormat = "video/RAW" ; break; + case V4L2_PIX_FMT_HEVC : rtpFormat = "video/H265"; break; + case V4L2_PIX_FMT_H264 : rtpFormat = "video/H264"; break; + case V4L2_PIX_FMT_MJPEG : rtpFormat = "video/JPEG"; break; + case V4L2_PIX_FMT_JPEG : rtpFormat = "video/JPEG"; break; + case V4L2_PIX_FMT_VP8 : rtpFormat = "video/VP8" ; break; + case V4L2_PIX_FMT_VP9 : rtpFormat = "video/VP9" ; break; + case V4L2_PIX_FMT_YUV444: rtpFormat = "video/RAW" ; break; + case V4L2_PIX_FMT_UYVY : rtpFormat = "video/RAW" ; break; + case V4L2_PIX_FMT_NV12 : rtpFormat = "video/RAW" ; break; + case V4L2_PIX_FMT_BGR24 : rtpFormat = "video/RAW" ; break; + case V4L2_PIX_FMT_BGR32 : rtpFormat = "video/RAW" ; break; + case V4L2_PIX_FMT_RGB24 : rtpFormat = "video/RAW" ; break; + case V4L2_PIX_FMT_RGB32 : rtpFormat = "video/RAW" ; break; } return rtpFormat; diff --git a/src/ServerMediaSubsession.cpp b/src/ServerMediaSubsession.cpp index c5ffd39..53beffe 100755 --- a/src/ServerMediaSubsession.cpp +++ b/src/ServerMediaSubsession.cpp @@ -81,8 +81,12 @@ RTPSink* BaseServerMediaSubsession::createSink(UsageEnvironment& env, Groupsock DeviceInterface* device = source->getDevice(); switch (device->getVideoFormat()) { case V4L2_PIX_FMT_YUV444: sampling = "YCbCr-4:4:4"; break; - case V4L2_PIX_FMT_YUYV: sampling = "YCbCr-4:2:2"; break; - case V4L2_PIX_FMT_UYVY: sampling = "YCbCr-4:2:2"; break; + case V4L2_PIX_FMT_UYVY : sampling = "YCbCr-4:2:2"; break; + case V4L2_PIX_FMT_NV12 : sampling = "YCbCr-4:2:0"; break; + case V4L2_PIX_FMT_RGB24 : sampling = "RGB" ; break; + case V4L2_PIX_FMT_RGB32 : sampling = "RGBA" ; break; + case V4L2_PIX_FMT_BGR24 : sampling = "BGR" ; break; + case V4L2_PIX_FMT_BGR32 : sampling = "BGRA" ; break; } videoSink = RawVideoRTPSink::createNew(env, rtpGroupsock, rtpPayloadTypeIfDynamic, device->getWidth(), device->getHeight(), 8, sampling.c_str(),"BT709-2"); }