[pjsip] OSX QTkit has ben deprecated

Eeri Kask Eeri.Kask at mailbox.tu-dresden.de
Wed May 28 03:04:54 EDT 2014

On Tue, 27 May 2014 12:48:49 +0200, Sa?l Ibarra Corretg? wrote:
> On May 26, 2014, at 9:07 PM, Eeri Kask wrote:
>> As probably more OSX versions support QTKit as there is support for
>> AVFoundation (esp. older hardware), please do not change anything at the
>> expense of QTKit in PJSIP, it works very well.  :-)
> It would probably need to be another backend. 


> Now, I'm interested about you impression that it works "very well".  Have you tried multiple USB cameras? After connecting / disconnecting them several times QTKit goes nuts and when querying the camera for its supported formats it returns weird stuff, this creates an interesting situation, where PJSIP detected a video device, which as 0 working formats.

It is essential to differentiate QTKit as a media subsystem and PJSIP
dealing with this subsystem.  On many OSX machines QTKit is the only
media subsystem, so replacing PJSIP's support for QTKit with something
else would mean one day PJSIP not supporting these systems at all.

To your question, it's empirical finding: "very well" means PJSIP
appears working better with QTKit as many other voip-related programs
do, including "competing" SIP technologies (for the sake of record,
today PJSIP/PJSUA is the only voip (SIP based or not) technology from a
handful of others available to me personally, which has proven reliable
enough e.g. on Apple's ppc-based systems, to be used in a "production
environment"; not counting iChat).

Though I had to create a tweak for PJSIP which is attached, in order to
support cameras besides iSight:  take a look at hunk 3, this would give
some insight, if the camera is supported by QTKit at all, or simply not
recognised by PJSIP, which then, can be corrected.

(QTKit is by far not perfect, e.g. even up to the end of QTKit's support
Apple hasn't managed (didn't care) to make it to run more than one
firewire cameras in parallel; unknown is IIDC format-7 support, etc.)

    Eeri Kask

-------------- next part --------------
--- pjmedia/src/pjmedia-videodev/qt_dev.m.orig	2014-04-18 10:39:45.000000000 +0200
+++ pjmedia/src/pjmedia-videodev/qt_dev.m	2014-05-28 07:41:19.000000000 +0200
@@ -34,6 +34,9 @@
 #define DEFAULT_FPS		15
 #define kCVPixelFormatType_422YpCbCr8_yuvs 'yuvs'
+#define kCVPixelFormatType_422YpCbCr8      '2vuy'
+#define kCVPixelFormatType_24RGB                        0x18
+#define kCVPixelFormatType_8IndexedGray_WhiteIsZero     0x28
 typedef struct qt_fmt_info
@@ -45,6 +48,8 @@
     {PJMEDIA_FORMAT_YUY2, kCVPixelFormatType_422YpCbCr8_yuvs},
     {PJMEDIA_FORMAT_UYVY, kCVPixelFormatType_422YpCbCr8},
+    {PJMEDIA_FORMAT_UYVY, kCVPixelFormatType_24RGB},                       /* IIDC Firewire: AVT Marlin      */
+    {PJMEDIA_FORMAT_UYVY, kCVPixelFormatType_8IndexedGray_WhiteIsZero}     /* IIDC Firewire: Point Grey Flea */
 /* qt device info */
@@ -276,6 +281,8 @@
+		if (l == PJ_ARRAY_SIZE(qt_fmts))
+		    PJ_LOG(4, (THIS_FILE, " skipping %s kCVPixelFormatType 0x%08x", qdi->info.name, [desc formatType]));
 	    PJ_LOG(4, (THIS_FILE, " dev_id %d: %s", i, qdi->info.name));    

More information about the pjsip mailing list