aboutsummaryrefslogtreecommitdiffstats
path: root/src/native/macosx
diff options
context:
space:
mode:
authorLyubomir Marinov <lyubomir.marinov@jitsi.org>2010-01-13 17:57:36 +0000
committerLyubomir Marinov <lyubomir.marinov@jitsi.org>2010-01-13 17:57:36 +0000
commit23faa28981bb78cc2aece0418284100c017acd6e (patch)
treed355f70fed47a9c2e068cb81967a1d5f72dbc1af /src/native/macosx
parent7f86c6aee0bee38f96eb9b6671b5cec1d4c0d56e (diff)
downloadjitsi-23faa28981bb78cc2aece0418284100c017acd6e.zip
jitsi-23faa28981bb78cc2aece0418284100c017acd6e.tar.gz
jitsi-23faa28981bb78cc2aece0418284100c017acd6e.tar.bz2
Implements a video CaptureDevice which uses QuickTime/QTKit on Mac OS X to provide video capture on Mac OS X Snow Leopard, Java 1.6 on Mac OS X and when CIVIL fails.
Diffstat (limited to 'src/native/macosx')
-rw-r--r--src/native/macosx/quicktime/common.h9
-rw-r--r--src/native/macosx/quicktime/common.m20
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.h21
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.m31
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h37
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.m24
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.h21
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.m24
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.h29
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.m35
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.h29
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.m17
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h53
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.m214
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.h69
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.m196
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.h21
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.m31
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.h53
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.m78
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.h29
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.m89
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.h29
-rw-r--r--src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.m61
24 files changed, 1220 insertions, 0 deletions
diff --git a/src/native/macosx/quicktime/common.h b/src/native/macosx/quicktime/common.h
new file mode 100644
index 0000000..a0b947c
--- /dev/null
+++ b/src/native/macosx/quicktime/common.h
@@ -0,0 +1,9 @@
+#ifndef _IMPL_NEOMEDIA_QUICKTIME_COMMON_H_
+#define _IMPL_NEOMEDIA_QUICKTIME_COMMON_H_
+
+#import <Foundation/NSObject.h>
+#import <Foundation/NSString.h>
+
+id NSObject_performSelector(id obj, NSString *selectorName);
+
+#endif /* _IMPL_NEOMEDIA_QUICKTIME_COMMON_H_ */
diff --git a/src/native/macosx/quicktime/common.m b/src/native/macosx/quicktime/common.m
new file mode 100644
index 0000000..205beb1
--- /dev/null
+++ b/src/native/macosx/quicktime/common.m
@@ -0,0 +1,20 @@
+#include "common.h"
+
+#import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSObject.h> /* NSSelectorFromString */
+#import <Foundation/NSString.h>
+
+id NSObject_performSelector(id obj, NSString *selectorName)
+{
+ NSAutoreleasePool *autoreleasePool;
+ SEL selector;
+ id ret;
+
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ selector = NSSelectorFromString(selectorName);
+ ret = [obj performSelector:selector];
+
+ [autoreleasePool release];
+ return ret;
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.h
new file mode 100644
index 0000000..434bc32
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.h
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer
+ * Method: getBytes
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer_getBytes
+ (JNIEnv *, jclass, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.m
new file mode 100644
index 0000000..4d27bca
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.m
@@ -0,0 +1,31 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer.h"
+
+#import <CoreVideo/CVPixelBuffer.h>
+
+JNIEXPORT jbyteArray JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBuffer_getBytes
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ CVPixelBufferRef pixelBuffer;
+ size_t byteCount;
+ jbyteArray bytes;
+
+ pixelBuffer = (CVPixelBufferRef) ptr;
+
+ byteCount
+ = CVPixelBufferGetBytesPerRow(pixelBuffer)
+ * CVPixelBufferGetHeight(pixelBuffer);
+ bytes = (*jniEnv)->NewByteArray(jniEnv, byteCount);
+ if (!bytes)
+ return NULL;
+
+ if (kCVReturnSuccess == CVPixelBufferLockBaseAddress(pixelBuffer, 0))
+ {
+ jbyte *cBytes;
+
+ cBytes = CVPixelBufferGetBaseAddress(pixelBuffer);
+ (*jniEnv)->SetByteArrayRegion(jniEnv, bytes, 0, byteCount, cBytes);
+ CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
+ }
+ return bytes;
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h
new file mode 100644
index 0000000..73e69fe
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h
@@ -0,0 +1,37 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey
+ * Method: kCVPixelBufferHeightKey
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferHeightKey
+ (JNIEnv *, jclass);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey
+ * Method: kCVPixelBufferPixelFormatTypeKey
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferPixelFormatTypeKey
+ (JNIEnv *, jclass);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey
+ * Method: kCVPixelBufferWidthKey
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferWidthKey
+ (JNIEnv *, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.m
new file mode 100644
index 0000000..687416c
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.m
@@ -0,0 +1,24 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h"
+
+#import <CoreVideo/CVPixelBuffer.h>
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferHeightKey
+ (JNIEnv *jniEnv, jclass clazz)
+{
+ return (jlong) kCVPixelBufferHeightKey;
+}
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferPixelFormatTypeKey
+ (JNIEnv *jniEnv, jclass clazz)
+{
+ return (jlong) kCVPixelBufferPixelFormatTypeKey;
+}
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferWidthKey
+ (JNIEnv *jniEnv, jclass clazz)
+{
+ return (jlong) kCVPixelBufferWidthKey;
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.h
new file mode 100644
index 0000000..8698e47
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.h
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary
+ * Method: intForKey
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary_intForKey
+ (JNIEnv *, jclass, jlong, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.m
new file mode 100644
index 0000000..c81d081
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.m
@@ -0,0 +1,24 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary.h"
+
+#import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSDictionary.h>
+#import <Foundation/NSValue.h>
+
+JNIEXPORT jint JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_NSDictionary_intForKey
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr, jlong key)
+{
+ NSDictionary *dictionary;
+ NSAutoreleasePool *autoreleasePool;
+ NSNumber *value;
+ jint jvalue;
+
+ dictionary = (NSDictionary *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ value = [dictionary objectForKey:(id)key];
+ jvalue = value ? [value intValue] : 0;
+
+ [autoreleasePool release];
+ return jvalue;
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.h
new file mode 100644
index 0000000..08038c7
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.h
@@ -0,0 +1,29 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary
+ * Method: allocAndInit
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary_allocAndInit
+ (JNIEnv *, jclass);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary
+ * Method: setIntForKey
+ * Signature: (JIJ)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary_setIntForKey
+ (JNIEnv *, jclass, jlong, jint, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.m
new file mode 100644
index 0000000..6276c30
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.m
@@ -0,0 +1,35 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary.h"
+
+#import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSDictionary.h>
+#import <Foundation/NSValue.h>
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary_allocAndInit
+ (JNIEnv *jniEnv, jclass clazz)
+{
+ NSAutoreleasePool *autoreleasePool;
+ NSMutableDictionary *mutableDictionary;
+
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ mutableDictionary = [[NSMutableDictionary alloc] init];
+
+ [autoreleasePool release];
+ return (jlong) mutableDictionary;
+}
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_NSMutableDictionary_setIntForKey
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr, jint value, jlong key)
+{
+ NSMutableDictionary *mutableDictionary;
+ NSAutoreleasePool *autoreleasePool;
+
+ mutableDictionary = (NSMutableDictionary *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ [mutableDictionary setObject:[NSNumber numberWithInt:value] forKey:(id)key];
+
+ [autoreleasePool release];
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.h
new file mode 100644
index 0000000..19a0fb5
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.h
@@ -0,0 +1,29 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_NSObject */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_NSObject
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_NSObject
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_NSObject
+ * Method: release
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_NSObject_release
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_NSObject
+ * Method: retain
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_NSObject_retain
+ (JNIEnv *, jclass, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.m
new file mode 100644
index 0000000..fda1d3d
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_NSObject.m
@@ -0,0 +1,17 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_NSObject.h"
+
+#include "common.h"
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_NSObject_release
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ NSObject_performSelector((id) ptr, @"release");
+}
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_NSObject_retain
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ NSObject_performSelector((id) ptr, @"retain");
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h
new file mode 100644
index 0000000..23006f3
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h
@@ -0,0 +1,53 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput
+ * Method: allocAndInit
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_allocAndInit
+ (JNIEnv *, jclass);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput
+ * Method: pixelBufferAttributes
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_pixelBufferAttributes
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput
+ * Method: setAutomaticallyDropsLateVideoFrames
+ * Signature: (JZ)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setAutomaticallyDropsLateVideoFrames
+ (JNIEnv *, jclass, jlong, jboolean);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput
+ * Method: setDelegate
+ * Signature: (JLnet/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput/Delegate;)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setDelegate
+ (JNIEnv *, jclass, jlong, jobject);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput
+ * Method: setPixelBufferAttributes
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setPixelBufferAttributes
+ (JNIEnv *, jclass, jlong, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.m
new file mode 100644
index 0000000..6f7f66e
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.m
@@ -0,0 +1,214 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h"
+
+#include <stdio.h>
+
+#import <CoreVideo/CVImageBuffer.h>
+#import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSDictionary.h>
+#import <Foundation/NSObject.h>
+#import <QTKit/QTCaptureDecompressedVideoOutput.h>
+#import <QTKit/QTCaptureConnection.h>
+#import <QTKit/QTCaptureOutput.h>
+#import <QTKit/QTSampleBuffer.h>
+
+@interface QTCaptureDecompressedVideoOutputDelegate : NSObject
+{
+@private
+ jobject delegate;
+ JavaVM *vm;
+}
+
+- (void)captureOutput:(QTCaptureOutput *)captureOutput
+ didOutputVideoFrame:(CVImageBufferRef *)videoFrame
+ withSampleBuffer:(QTSampleBuffer *)sampleBuffer
+ fromConnection:(QTCaptureConnection *)connection;
+- (void)dealloc;
+- (id)init;
+- (void)setDelegate:(jobject)delegate inJNIEnv:(JNIEnv *)jniEnv;
+
+@end
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_allocAndInit
+ (JNIEnv *jniEnv, jclass clazz)
+{
+ NSAutoreleasePool *autoreleasePool;
+ QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput;
+
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ captureDecompressedVideoOutput
+ = [[QTCaptureDecompressedVideoOutput alloc] init];
+
+ [autoreleasePool release];
+ return (jlong) captureDecompressedVideoOutput;
+}
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_pixelBufferAttributes
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput;
+ NSAutoreleasePool *autoreleasePool;
+ NSDictionary *pixelBufferAttributes;
+
+ captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ pixelBufferAttributes
+ = [captureDecompressedVideoOutput pixelBufferAttributes];
+ if (pixelBufferAttributes)
+ [pixelBufferAttributes retain];
+
+ [autoreleasePool release];
+ return (jlong) pixelBufferAttributes;
+}
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setAutomaticallyDropsLateVideoFrames
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr,
+ jboolean automaticallyDropsLateVideoFrames)
+{
+ QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput;
+ NSAutoreleasePool *autoreleasePool;
+
+ captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ [captureDecompressedVideoOutput
+ setAutomaticallyDropsLateVideoFrames:
+ ((JNI_TRUE == automaticallyDropsLateVideoFrames) ? YES : NO)];
+
+ [autoreleasePool release];
+}
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setDelegate
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr, jobject delegate)
+{
+ QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput;
+ NSAutoreleasePool *autoreleasePool;
+ QTCaptureDecompressedVideoOutputDelegate *oDelegate;
+ id oPrevDelegate;
+
+ captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ if (delegate)
+ {
+ oDelegate = [[QTCaptureDecompressedVideoOutputDelegate alloc] init];
+ [oDelegate setDelegate:delegate inJNIEnv:jniEnv];
+ }
+ else
+ oDelegate = nil;
+ oPrevDelegate = [captureDecompressedVideoOutput delegate];
+ if (oDelegate != oPrevDelegate)
+ {
+ [captureDecompressedVideoOutput setDelegate:oDelegate];
+ if (oPrevDelegate)
+ [oPrevDelegate release];
+ }
+
+ [autoreleasePool release];
+}
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setPixelBufferAttributes
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr, jlong pixelBufferAttributesPtr)
+{
+ QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput;
+ NSDictionary *pixelBufferAttributes;
+ NSAutoreleasePool *autoreleasePool;
+
+ captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) ptr;
+ pixelBufferAttributes = (NSDictionary *) pixelBufferAttributesPtr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ [captureDecompressedVideoOutput
+ setPixelBufferAttributes:pixelBufferAttributes];
+
+ [autoreleasePool release];
+}
+
+@implementation QTCaptureDecompressedVideoOutputDelegate
+
+- (void)captureOutput:(QTCaptureOutput *)captureOutput
+ didOutputVideoFrame:(CVImageBufferRef *)videoFrame
+ withSampleBuffer:(QTSampleBuffer *)sampleBuffer
+ fromConnection:(QTCaptureConnection *)connection;
+{
+ jobject delegate;
+ JavaVM *vm;
+ JNIEnv *jniEnv;
+ jclass delegateClass;
+
+ delegate = self->delegate;
+ if (!delegate)
+ return;
+
+ vm = self->vm;
+ if (0 != (*vm)->AttachCurrentThreadAsDaemon(vm, &jniEnv, NULL))
+ return;
+
+ delegateClass = (*jniEnv)->GetObjectClass(jniEnv, delegate);
+ if (delegateClass)
+ {
+ jmethodID didOutputVideoFrameWithSampleBufferMethodID;
+
+ didOutputVideoFrameWithSampleBufferMethodID
+ = (*jniEnv)
+ ->GetMethodID(
+ jniEnv,
+ delegateClass,
+ "outputVideoFrameWithSampleBuffer",
+ "(JJ)V");
+ if (didOutputVideoFrameWithSampleBufferMethodID)
+ (*jniEnv)
+ ->CallVoidMethod(
+ jniEnv,
+ delegate,
+ didOutputVideoFrameWithSampleBufferMethodID,
+ (jlong) videoFrame,
+ (jlong) sampleBuffer);
+ }
+ (*jniEnv)->ExceptionClear(jniEnv);
+}
+
+- (void)dealloc
+{
+ [self setDelegate:NULL inJNIEnv:NULL];
+ [super dealloc];
+}
+
+- (id)init
+{
+ if ((self = [super init]))
+ {
+ self->delegate = NULL;
+ self->vm = NULL;
+ }
+ return self;
+}
+
+- (void)setDelegate:(jobject) delegate inJNIEnv:(JNIEnv *)jniEnv
+{
+ if (self->delegate)
+ {
+ if (!jniEnv)
+ (*(self->vm))->AttachCurrentThread(self->vm, &jniEnv, NULL);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, self->delegate);
+ self->delegate = NULL;
+ self->vm = NULL;
+ }
+ if (delegate)
+ {
+ delegate = (*jniEnv)->NewGlobalRef(jniEnv, delegate);
+ if (delegate)
+ {
+ (*jniEnv)->GetJavaVM(jniEnv, &(self->vm));
+ self->delegate = delegate;
+ }
+ }
+}
+
+@end
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.h
new file mode 100644
index 0000000..ff47d37
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.h
@@ -0,0 +1,69 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+ * Method: close
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_close
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+ * Method: formatDescriptions
+ * Signature: (J)[J
+ */
+JNIEXPORT jlongArray JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_formatDescriptions
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+ * Method: inputDevicesWithMediaType
+ * Signature: (Ljava/lang/String;)[J
+ */
+JNIEXPORT jlongArray JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_inputDevicesWithMediaType
+ (JNIEnv *, jclass, jstring);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+ * Method: isConnected
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_isConnected
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+ * Method: localizedDisplayName
+ * Signature: (J)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_localizedDisplayName
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+ * Method: open
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_open
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice
+ * Method: uniqueID
+ * Signature: (J)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_uniqueID
+ (JNIEnv *, jclass, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.m
new file mode 100644
index 0000000..bf070e0
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.m
@@ -0,0 +1,196 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice.h"
+
+#include "common.h"
+
+#include <string.h>
+
+#import <Foundation/NSArray.h>
+#import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSError.h>
+#import <Foundation/NSObject.h> /* NSSelectorFromString */
+#import <Foundation/NSString.h>
+#import <QTKit/QTCaptureDevice.h>
+#import <QTKit/QTFormatDescription.h>
+#import <QTKit/QTMedia.h>
+
+jstring QTCaptureDevice_getString(JNIEnv *, jlong, NSString *);
+NSString * QTCaptureDevice_jstringToMediaType(JNIEnv *, jobject);
+jlongArray QTCaptureDevice_nsArrayToJlongArray(JNIEnv *, NSArray *);
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_close
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ NSObject_performSelector((id) ptr, @"close");
+}
+
+JNIEXPORT jlongArray JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_formatDescriptions
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ QTCaptureDevice *captureDevice;
+ NSAutoreleasePool *autoreleasePool;
+ NSArray *formatDescriptions;
+ jlongArray formatDescriptionPtrs;
+
+ captureDevice = (QTCaptureDevice *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ formatDescriptions = [captureDevice formatDescriptions];
+ formatDescriptionPtrs
+ = QTCaptureDevice_nsArrayToJlongArray(jniEnv, formatDescriptions);
+
+ [autoreleasePool release];
+ return formatDescriptionPtrs;
+}
+
+JNIEXPORT jlongArray JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_inputDevicesWithMediaType
+ (JNIEnv *jniEnv, jclass clazz, jstring mediaType)
+{
+ NSAutoreleasePool *autoreleasePool;
+ NSArray *inputDevices;
+ jlongArray inputDevicePtrs;
+
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ inputDevices
+ = [QTCaptureDevice
+ inputDevicesWithMediaType:
+ QTCaptureDevice_jstringToMediaType(jniEnv, mediaType)];
+ inputDevicePtrs = QTCaptureDevice_nsArrayToJlongArray(jniEnv, inputDevices);
+
+ [autoreleasePool release];
+ return inputDevicePtrs;
+}
+
+JNIEXPORT jboolean JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_isConnected
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ return
+ (YES == (BOOL) NSObject_performSelector((id) ptr, @"isConnected"))
+ ? JNI_TRUE
+ : JNI_FALSE;
+}
+
+JNIEXPORT jstring JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_localizedDisplayName
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ return QTCaptureDevice_getString (jniEnv, ptr, @"localizedDisplayName");
+}
+
+JNIEXPORT jboolean JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_open
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ QTCaptureDevice *captureDevice;
+ NSAutoreleasePool *autoreleasePool;
+ BOOL ret;
+ NSError *error;
+
+ captureDevice = (QTCaptureDevice *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ ret = [captureDevice open:&error];
+
+ [autoreleasePool release];
+ return (YES == ret) ? JNI_TRUE : JNI_FALSE;
+}
+
+JNIEXPORT jstring JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDevice_uniqueID
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ return QTCaptureDevice_getString (jniEnv, ptr, @"uniqueID");
+}
+
+jstring
+QTCaptureDevice_getString(JNIEnv *jniEnv, jlong ptr, NSString *selectorName)
+{
+ id obj;
+ NSAutoreleasePool *autoreleasePool;
+ SEL selector;
+ NSString *str;
+ jstring jstr;
+
+ obj = (id) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ selector = NSSelectorFromString(selectorName);
+ if (selector)
+ {
+ str = [obj performSelector:selector];
+ jstr = str ? (*jniEnv)->NewStringUTF(jniEnv, [str UTF8String]) : NULL;
+ }
+ else
+ jstr = NULL;
+
+ [autoreleasePool release];
+ return jstr;
+}
+
+NSString *
+QTCaptureDevice_jstringToMediaType(JNIEnv *jniEnv, jstring str)
+{
+ const char *cstr;
+ NSString *mediaType;
+
+ cstr = (const char *) (*jniEnv)->GetStringUTFChars (jniEnv, str, NULL);
+ if (cstr)
+ {
+ if (0 == strcmp ("Muxed", cstr))
+ mediaType = QTMediaTypeMuxed;
+ else if (0 == strcmp ("Sound", cstr))
+ mediaType = QTMediaTypeSound;
+ else if (0 == strcmp ("Video", cstr))
+ mediaType = QTMediaTypeVideo;
+ else
+ mediaType = nil;
+ (*jniEnv)->ReleaseStringUTFChars (jniEnv, str, cstr);
+ }
+ else
+ mediaType = nil;
+ return mediaType;
+}
+
+jlongArray
+QTCaptureDevice_nsArrayToJlongArray(JNIEnv *jniEnv, NSArray *oArray)
+{
+ jlongArray jArray;
+
+ if (oArray)
+ {
+ NSUInteger count;
+
+ count = [oArray count];
+ jArray = (*jniEnv)->NewLongArray(jniEnv, count);
+ if (jArray)
+ {
+ NSUInteger i;
+
+ for (i = 0; i < count; i++)
+ {
+ id obj;
+ jlong ptr;
+
+ obj = [oArray objectAtIndex:i];
+ ptr = (jlong) obj;
+ (*jniEnv)->SetLongArrayRegion(jniEnv, jArray, i, 1, &ptr);
+ [obj retain];
+ if ((*jniEnv)->ExceptionCheck(jniEnv))
+ {
+ NSUInteger j;
+
+ for (j = 0; j < i; j++)
+ [[oArray objectAtIndex:j] release];
+ break;
+ }
+ }
+ }
+ }
+ else
+ jArray = NULL;
+ return jArray;
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.h
new file mode 100644
index 0000000..c20b878
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.h
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput
+ * Method: deviceInputWithDevice
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput_deviceInputWithDevice
+ (JNIEnv *, jclass, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.m
new file mode 100644
index 0000000..596171f
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.m
@@ -0,0 +1,31 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput.h"
+
+#import <Foundation/NSException.h>
+#import <QTKit/QTCaptureDevice.h>
+#import <QTKit/QTCaptureDeviceInput.h>
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureDeviceInput_deviceInputWithDevice
+ (JNIEnv *jniEnv, jclass clazz, jlong devicePtr)
+{
+ QTCaptureDevice *device;
+ NSAutoreleasePool *autoreleasePool;
+ id deviceInput;
+
+ device = (QTCaptureDevice *) devicePtr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ @try
+ {
+ deviceInput = [QTCaptureDeviceInput deviceInputWithDevice:device];
+ }
+ @catch (NSException *ex)
+ {
+ deviceInput = nil;
+ }
+ if (deviceInput)
+ [deviceInput retain];
+
+ [autoreleasePool release];
+ return (jlong) deviceInput;
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.h
new file mode 100644
index 0000000..34c1a6d
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.h
@@ -0,0 +1,53 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession
+ * Method: addInput
+ * Signature: (JJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_addInput
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession
+ * Method: addOutput
+ * Signature: (JJ)Z
+ */
+JNIEXPORT jboolean JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_addOutput
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession
+ * Method: allocAndInit
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_allocAndInit
+ (JNIEnv *, jclass);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession
+ * Method: startRunning
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_startRunning
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession
+ * Method: stopRunning
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_stopRunning
+ (JNIEnv *, jclass, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.m
new file mode 100644
index 0000000..6719d68
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.m
@@ -0,0 +1,78 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession.h"
+
+#include "common.h"
+
+#import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSError.h>
+#import <QTKit/QTCaptureInput.h>
+#import <QTKit/QTCaptureOutput.h>
+#import <QTKit/QTCaptureSession.h>
+
+JNIEXPORT jboolean JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_addInput
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr, jlong inputPtr)
+{
+ QTCaptureSession *captureSession;
+ QTCaptureInput *input;
+ NSAutoreleasePool *autoreleasePool;
+ BOOL ret;
+ NSError *error;
+
+ captureSession = (QTCaptureSession *) ptr;
+ input = (QTCaptureInput *) inputPtr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ ret = [captureSession addInput:input error:&error];
+
+ [autoreleasePool release];
+ return (YES == ret) ? JNI_TRUE : JNI_FALSE;
+}
+
+JNIEXPORT jboolean JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_addOutput
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr, jlong outputPtr)
+{
+ QTCaptureSession *captureSession;
+ QTCaptureOutput *output;
+ NSAutoreleasePool *autoreleasePool;
+ BOOL ret;
+ NSError *error;
+
+ captureSession = (QTCaptureSession *) ptr;
+ output = (QTCaptureOutput *) outputPtr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ ret = [captureSession addOutput:output error:&error];
+
+ [autoreleasePool release];
+ return (YES == ret) ? JNI_TRUE : JNI_FALSE;
+}
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_allocAndInit
+ (JNIEnv *jniEnv, jclass clazz)
+{
+ NSAutoreleasePool *autoreleasePool;
+ QTCaptureSession *captureSession;
+
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ captureSession = [[QTCaptureSession alloc] init];
+
+ [autoreleasePool release];
+ return (jlong) captureSession;
+}
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_startRunning
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ NSObject_performSelector((id) ptr, @"startRunning");
+}
+
+JNIEXPORT void JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTCaptureSession_stopRunning
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ NSObject_performSelector((id) ptr, @"stopRunning");
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.h
new file mode 100644
index 0000000..e7fd08d
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.h
@@ -0,0 +1,29 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription
+ * Method: sizeForKey
+ * Signature: (JLjava/lang/String;)Ljava/awt/Dimension;
+ */
+JNIEXPORT jobject JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription_sizeForKey
+ (JNIEnv *, jclass, jlong, jstring);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription
+ * Method: VideoEncodedPixelsSizeAttribute
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription_VideoEncodedPixelsSizeAttribute
+ (JNIEnv *, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.m
new file mode 100644
index 0000000..4140681
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.m
@@ -0,0 +1,89 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription.h"
+
+#import <Foundation/NSAutoreleasePool.h>
+#import <Foundation/NSGeometry.h>
+#import <Foundation/NSString.h>
+#import <Foundation/NSValue.h>
+#import <QTKit/QTFormatDescription.h>
+
+JNIEXPORT jobject JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription_sizeForKey
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr, jstring key)
+{
+ const char *cKey;
+ jobject size;
+
+ cKey = (const char *) (*jniEnv)->GetStringUTFChars(jniEnv, key, NULL);
+ if (cKey)
+ {
+ QTFormatDescription *formatDescription;
+ NSAutoreleasePool *autoreleasePool;
+ NSString *oKey;
+ NSValue *attribute;
+
+ formatDescription = (QTFormatDescription *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ oKey = [NSString stringWithUTF8String:cKey];
+ (*jniEnv)->ReleaseStringUTFChars(jniEnv, key, cKey);
+
+ attribute = [formatDescription attributeForKey:oKey];
+ if (attribute)
+ {
+ NSSize oSize;
+ jclass dimensionClass;
+
+ oSize = [attribute sizeValue];
+
+ dimensionClass = (*jniEnv)->FindClass(jniEnv, "java/awt/Dimension");
+ if (dimensionClass)
+ {
+ jmethodID dimensionCtorMethodID;
+
+ dimensionCtorMethodID
+ = (*jniEnv)
+ ->GetMethodID(
+ jniEnv,
+ dimensionClass,
+ "<init>",
+ "(II)V");
+ if (dimensionCtorMethodID)
+ size
+ = (*jniEnv)
+ ->NewObject(
+ jniEnv,
+ dimensionClass,
+ dimensionCtorMethodID,
+ (jint) oSize.width,
+ (jint) oSize.height);
+ }
+ }
+ else
+ size = NULL;
+
+ [autoreleasePool release];
+ }
+ else
+ size = NULL;
+ return size;
+}
+
+JNIEXPORT jstring JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTFormatDescription_VideoEncodedPixelsSizeAttribute
+ (JNIEnv *jniEnv, jclass clazz)
+{
+ NSAutoreleasePool *autoreleasePool;
+ jstring jstr;
+
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ jstr
+ = (*jniEnv)
+ ->NewStringUTF(
+ jniEnv,
+ [QTFormatDescriptionVideoEncodedPixelsSizeAttribute
+ UTF8String]);
+
+ [autoreleasePool release];
+ return jstr;
+}
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.h b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.h
new file mode 100644
index 0000000..67a30fe
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.h
@@ -0,0 +1,29 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer */
+
+#ifndef _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer
+#define _Included_net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer
+ * Method: bytesForAllSamples
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer_bytesForAllSamples
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer
+ * Method: formatDescription
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer_formatDescription
+ (JNIEnv *, jclass, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.m b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.m
new file mode 100644
index 0000000..0c51334
--- /dev/null
+++ b/src/native/macosx/quicktime/net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.m
@@ -0,0 +1,61 @@
+#include "net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer.h"
+
+#import <Foundation/NSAutoreleasePool.h>
+#import <QTKit/QTFormatDescription.h>
+#import <QTKit/QTSampleBuffer.h>
+
+JNIEXPORT jbyteArray JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer_bytesForAllSamples
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ QTSampleBuffer *sampleBuffer;
+ NSAutoreleasePool *autoreleasePool;
+ NSUInteger lengthForAllSamples;
+ jbyteArray jBytesForAllSamples;
+
+ sampleBuffer = (QTSampleBuffer *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ lengthForAllSamples = [sampleBuffer lengthForAllSamples];
+ if (lengthForAllSamples)
+ {
+ jBytesForAllSamples
+ = (*jniEnv)->NewByteArray(jniEnv, lengthForAllSamples);
+ if (jBytesForAllSamples)
+ {
+ jbyte *bytesForAllSamples = [sampleBuffer bytesForAllSamples];
+
+ (*jniEnv)
+ ->SetByteArrayRegion(
+ jniEnv,
+ jBytesForAllSamples,
+ 0,
+ lengthForAllSamples,
+ bytesForAllSamples);
+ }
+ }
+ else
+ jBytesForAllSamples = NULL;
+
+ [autoreleasePool release];
+ return jBytesForAllSamples;
+}
+
+JNIEXPORT jlong JNICALL
+Java_net_java_sip_communicator_impl_neomedia_quicktime_QTSampleBuffer_formatDescription
+ (JNIEnv *jniEnv, jclass clazz, jlong ptr)
+{
+ QTSampleBuffer *sampleBuffer;
+ NSAutoreleasePool *autoreleasePool;
+ QTFormatDescription *formatDescription;
+
+ sampleBuffer = (QTSampleBuffer *) ptr;
+ autoreleasePool = [[NSAutoreleasePool alloc] init];
+
+ formatDescription = [sampleBuffer formatDescription];
+ if (formatDescription)
+ [formatDescription retain];
+
+ [autoreleasePool release];
+ return (jlong) formatDescription;
+}