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. Yes! > 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 @@ break; } } + 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));