diff --git a/lib/fmj.jar b/lib/fmj.jar index 03d23a97d9e397999dab4bdf3ff5619b24a83d4b..2c9c69913dc13e1413f788cdfd4d035f96d9ce22 100644 Binary files a/lib/fmj.jar and b/lib/fmj.jar differ diff --git a/lib/native/mac/libjnquicktime.jnilib b/lib/native/mac/libjnquicktime.jnilib index 72f4d6953df8fa8d0deadc21341169fe326a4642..6ad0945456facae9ea57eba402c5bf106c20f194 100755 Binary files a/lib/native/mac/libjnquicktime.jnilib and b/lib/native/mac/libjnquicktime.jnilib differ diff --git a/src/native/macosx/quicktime/common.h b/src/native/macosx/quicktime/common.h new file mode 100644 index 0000000000000000000000000000000000000000..a8cecb31c9587f178ca592767aebf7b8a009dc29 --- /dev/null +++ b/src/native/macosx/quicktime/common.h @@ -0,0 +1,16 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#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 0000000000000000000000000000000000000000..134f5979822d0adf6699018eda537c652bf0c303 --- /dev/null +++ b/src/native/macosx/quicktime/common.m @@ -0,0 +1,27 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#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/org_jitsi_impl_neomedia_quicktime_CVPixelBuffer.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBuffer.h new file mode 100644 index 0000000000000000000000000000000000000000..ccc1614d27015b816d35c86d72e197636aa6f4ef --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBuffer.h @@ -0,0 +1,68 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_CVPixelBuffer */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer +#define _Included_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBuffer + * Method: getByteCount + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getByteCount + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBuffer + * Method: getBytes + * Signature: (J)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getBytes__J + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBuffer + * Method: getBytes + * Signature: (JJI)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getBytes__JJI + (JNIEnv *, jclass, jlong, jlong, jint); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBuffer + * Method: getHeight + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getHeight + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBuffer + * Method: getWidth + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getWidth + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBuffer + * Method: memcpy + * Signature: ([BIIJ)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_memcpy + (JNIEnv *, jclass, jbyteArray, jint, jint, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBuffer.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBuffer.m new file mode 100644 index 0000000000000000000000000000000000000000..3188277dd91ccb52b790c6007390561667b76102 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBuffer.m @@ -0,0 +1,190 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_CVPixelBuffer.h" + +#import <CoreVideo/CVPixelBuffer.h> +#include <stdint.h> +#include <string.h> + +static size_t +CVPixelBuffer_getByteCount(CVPixelBufferRef pixelBuffer, size_t planeCount) +{ + size_t byteCount; + + if (planeCount) + { + size_t planeIndex; + + byteCount = 0; + for (planeIndex = 0; planeIndex < planeCount; planeIndex++) + { + byteCount + += CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, planeIndex) + * CVPixelBufferGetHeightOfPlane(pixelBuffer, planeIndex); + } + } + else + { + byteCount + = CVPixelBufferGetBytesPerRow(pixelBuffer) + * CVPixelBufferGetHeight(pixelBuffer); + } + return byteCount; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getByteCount + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + CVPixelBufferRef pixelBuffer; + size_t planeCount; + + pixelBuffer = (CVPixelBufferRef) (intptr_t) ptr; + + planeCount = CVPixelBufferGetPlaneCount(pixelBuffer); + return (jint) CVPixelBuffer_getByteCount(pixelBuffer, planeCount); +} + +JNIEXPORT jbyteArray JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getBytes__J + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + CVPixelBufferRef pixelBuffer; + size_t planeCount; + size_t byteCount; + jbyteArray bytes; + + pixelBuffer = (CVPixelBufferRef) (intptr_t) ptr; + + planeCount = CVPixelBufferGetPlaneCount(pixelBuffer); + byteCount = CVPixelBuffer_getByteCount(pixelBuffer, planeCount); + bytes = (*jniEnv)->NewByteArray(jniEnv, byteCount); + if (!bytes) + return NULL; + + if (kCVReturnSuccess == CVPixelBufferLockBaseAddress(pixelBuffer, 0)) + { + jbyte *cBytes; + + if (planeCount) + { + size_t byteOffset; + size_t planeIndex; + + byteOffset = 0; + for (planeIndex = 0; planeIndex < planeCount; planeIndex++) + { + cBytes + = CVPixelBufferGetBaseAddressOfPlane( + pixelBuffer, + planeIndex); + byteCount + += CVPixelBufferGetBytesPerRowOfPlane( + pixelBuffer, + planeIndex) + * CVPixelBufferGetHeightOfPlane( + pixelBuffer, + planeIndex); + (*jniEnv) + ->SetByteArrayRegion( + jniEnv, + bytes, + byteOffset, + byteCount, + cBytes); + byteOffset += byteCount; + } + } + else + { + cBytes = CVPixelBufferGetBaseAddress(pixelBuffer); + (*jniEnv)->SetByteArrayRegion(jniEnv, bytes, 0, byteCount, cBytes); + } + CVPixelBufferUnlockBaseAddress(pixelBuffer, 0); + } + return bytes; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getBytes__JJI + (JNIEnv *jniEnv, jclass clazz, jlong ptr, jlong buf, jint bufLength) +{ + CVPixelBufferRef pixelBuffer; + size_t byteCount; + + pixelBuffer = (CVPixelBufferRef) (intptr_t) ptr; + + if (kCVReturnSuccess == CVPixelBufferLockBaseAddress(pixelBuffer, 0)) + { + size_t planeCount; + jbyte *cBytes; + + planeCount = CVPixelBufferGetPlaneCount(pixelBuffer); + byteCount = CVPixelBuffer_getByteCount(pixelBuffer, planeCount); + + if (planeCount) + { + size_t byteOffset; + size_t planeIndex; + + byteOffset = 0; + for (planeIndex = 0; planeIndex < planeCount; planeIndex++) + { + cBytes + = CVPixelBufferGetBaseAddressOfPlane( + pixelBuffer, + planeIndex); + byteCount + += CVPixelBufferGetBytesPerRowOfPlane( + pixelBuffer, + planeIndex) + * CVPixelBufferGetHeightOfPlane( + pixelBuffer, + planeIndex); + memcpy((void *) (intptr_t) buf, (const void *) cBytes, byteCount); + byteOffset += byteCount; + } + byteCount = byteOffset; + } + else + { + cBytes = CVPixelBufferGetBaseAddress(pixelBuffer); + memcpy((void *) (intptr_t) buf, (const void *) cBytes, byteCount); + } + CVPixelBufferUnlockBaseAddress(pixelBuffer, 0); + } + else + byteCount = 0; + return byteCount; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getHeight + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + return (jint) CVPixelBufferGetHeight((CVPixelBufferRef) (intptr_t) ptr); +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_getWidth + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + return (jint) CVPixelBufferGetWidth((CVPixelBufferRef) (intptr_t) ptr); +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBuffer_memcpy + (JNIEnv *jniEnv, jclass clazz, + jbyteArray dst, jint dstOffset, jint dstLength, + jlong src) +{ + (*jniEnv)->SetByteArrayRegion( + jniEnv, + dst, dstOffset, dstLength, + (jbyte *) (intptr_t) src); +} diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h new file mode 100644 index 0000000000000000000000000000000000000000..9302833612dd8ede73c9fcc3a2347940139d98a0 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h @@ -0,0 +1,44 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey +#define _Included_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey + * Method: kCVPixelBufferHeightKey + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferHeightKey + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey + * Method: kCVPixelBufferPixelFormatTypeKey + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferPixelFormatTypeKey + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey + * Method: kCVPixelBufferWidthKey + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferWidthKey + (JNIEnv *, jclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey.m new file mode 100644 index 0000000000000000000000000000000000000000..b1324fd8602fb7fe8bc52801bace40be55fcd24f --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey.m @@ -0,0 +1,32 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey.h" + +#import <CoreVideo/CVPixelBuffer.h> +#include <stdint.h> + +JNIEXPORT jlong JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferHeightKey + (JNIEnv *jniEnv, jclass clazz) +{ + return (jlong) (intptr_t) kCVPixelBufferHeightKey; +} + +JNIEXPORT jlong JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferPixelFormatTypeKey + (JNIEnv *jniEnv, jclass clazz) +{ + return (jlong) (intptr_t) kCVPixelBufferPixelFormatTypeKey; +} + +JNIEXPORT jlong JNICALL +Java_org_jitsi_impl_neomedia_quicktime_CVPixelBufferAttributeKey_kCVPixelBufferWidthKey + (JNIEnv *jniEnv, jclass clazz) +{ + return (jlong) (intptr_t) kCVPixelBufferWidthKey; +} diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSDictionary.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSDictionary.h new file mode 100644 index 0000000000000000000000000000000000000000..6761c1d4a81227a6c97a62ab9a1fd79af7511745 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSDictionary.h @@ -0,0 +1,28 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_NSDictionary */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_NSDictionary +#define _Included_org_jitsi_impl_neomedia_quicktime_NSDictionary +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_NSDictionary + * Method: intForKey + * Signature: (JJ)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_quicktime_NSDictionary_intForKey + (JNIEnv *, jclass, jlong, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSDictionary.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSDictionary.m new file mode 100644 index 0000000000000000000000000000000000000000..162e4358c1ac35f809b662c29c88bcfda08f5e46 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSDictionary.m @@ -0,0 +1,32 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_NSDictionary.h" + +#import <Foundation/NSAutoreleasePool.h> +#import <Foundation/NSDictionary.h> +#import <Foundation/NSValue.h> +#include <stdint.h> + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_quicktime_NSDictionary_intForKey + (JNIEnv *jniEnv, jclass clazz, jlong ptr, jlong key) +{ + NSDictionary *dictionary; + NSAutoreleasePool *autoreleasePool; + NSNumber *value; + jint jvalue; + + dictionary = (NSDictionary *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + value = [dictionary objectForKey:(id)(intptr_t)key]; + jvalue = value ? [value intValue] : 0; + + [autoreleasePool release]; + return jvalue; +} diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSMutableDictionary.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSMutableDictionary.h new file mode 100644 index 0000000000000000000000000000000000000000..ec8da40c1270b903486c3e06a06653969545750a --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSMutableDictionary.h @@ -0,0 +1,36 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_NSMutableDictionary */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_NSMutableDictionary +#define _Included_org_jitsi_impl_neomedia_quicktime_NSMutableDictionary +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_NSMutableDictionary + * Method: allocAndInit + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_NSMutableDictionary_allocAndInit + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_NSMutableDictionary + * Method: setIntForKey + * Signature: (JIJ)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_NSMutableDictionary_setIntForKey + (JNIEnv *, jclass, jlong, jint, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSMutableDictionary.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSMutableDictionary.m new file mode 100644 index 0000000000000000000000000000000000000000..fc6e9b2c13a802051b783b207c33133004462268 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSMutableDictionary.m @@ -0,0 +1,43 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_NSMutableDictionary.h" + +#import <Foundation/NSAutoreleasePool.h> +#import <Foundation/NSDictionary.h> +#import <Foundation/NSValue.h> +#include <stdint.h> + +JNIEXPORT jlong JNICALL +Java_org_jitsi_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) (intptr_t) mutableDictionary; +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_NSMutableDictionary_setIntForKey + (JNIEnv *jniEnv, jclass clazz, jlong ptr, jint value, jlong key) +{ + NSMutableDictionary *mutableDictionary; + NSAutoreleasePool *autoreleasePool; + + mutableDictionary = (NSMutableDictionary *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + [mutableDictionary setObject:[NSNumber numberWithInt:value] forKey:(id)(intptr_t)key]; + + [autoreleasePool release]; +} diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSObject.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSObject.h new file mode 100644 index 0000000000000000000000000000000000000000..1c49207878d35288f828a594849d9ecbf34e8c72 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSObject.h @@ -0,0 +1,36 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_NSObject */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_NSObject +#define _Included_org_jitsi_impl_neomedia_quicktime_NSObject +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_NSObject + * Method: release + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_NSObject_release + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_NSObject + * Method: retain + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_NSObject_retain + (JNIEnv *, jclass, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSObject.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSObject.m new file mode 100644 index 0000000000000000000000000000000000000000..7bfce652f2ebcb766fdbaf97856297146c1dbef2 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_NSObject.m @@ -0,0 +1,25 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_NSObject.h" + +#include "common.h" +#include <stdint.h> + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_NSObject_release + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + NSObject_performSelector((id) (intptr_t) ptr, @"release"); +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_NSObject_retain + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + NSObject_performSelector((id) (intptr_t) ptr, @"retain"); +} diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h new file mode 100644 index 0000000000000000000000000000000000000000..6d61b20ab4d4bb5338e77b4b55c02ada4398682f --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.h @@ -0,0 +1,69 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput +#define _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput + * Method: allocAndInit + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_allocAndInit + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput + * Method: minimumVideoFrameInterval + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_minimumVideoFrameInterval + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput + * Method: pixelBufferAttributes + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_pixelBufferAttributes + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput + * Method: setAutomaticallyDropsLateVideoFrames + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setAutomaticallyDropsLateVideoFrames + (JNIEnv *, jclass, jlong, jboolean); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput + * Method: setDelegate + * Signature: (JLorg/jitsi/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput/Delegate;)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setDelegate + (JNIEnv *, jclass, jlong, jobject); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput + * Method: setMinimumVideoFrameInterval + * Signature: (JD)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setMinimumVideoFrameInterval + (JNIEnv *, jclass, jlong, jdouble); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput + * Method: setPixelBufferAttributes + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setPixelBufferAttributes + (JNIEnv *, jclass, jlong, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.m new file mode 100644 index 0000000000000000000000000000000000000000..e15f1e07989c92a7fc2960fc94f4b78f22179e98 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.m @@ -0,0 +1,262 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput.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> +#import <stdint.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_org_jitsi_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) (intptr_t) captureDecompressedVideoOutput; +} + +JNIEXPORT jdouble JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_minimumVideoFrameInterval + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput; + NSAutoreleasePool *autoreleasePool; + NSTimeInterval minimumVideoFrameInterval; + + captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + minimumVideoFrameInterval + = [captureDecompressedVideoOutput minimumVideoFrameInterval]; + + [autoreleasePool release]; + return (jdouble) minimumVideoFrameInterval; +} + +JNIEXPORT jlong JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_pixelBufferAttributes + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput; + NSAutoreleasePool *autoreleasePool; + NSDictionary *pixelBufferAttributes; + + captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + pixelBufferAttributes + = [captureDecompressedVideoOutput pixelBufferAttributes]; + if (pixelBufferAttributes) + [pixelBufferAttributes retain]; + + [autoreleasePool release]; + return (jlong) (intptr_t) pixelBufferAttributes; +} + +JNIEXPORT jboolean JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setAutomaticallyDropsLateVideoFrames + (JNIEnv *jniEnv, jclass clazz, jlong ptr, + jboolean automaticallyDropsLateVideoFrames) +{ + QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput; + NSAutoreleasePool *autoreleasePool; + + captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + if ([captureDecompressedVideoOutput + respondsToSelector:@selector(setAutomaticallyDropsLateVideoFrames)]) + { + [captureDecompressedVideoOutput + setAutomaticallyDropsLateVideoFrames: + ((JNI_TRUE == automaticallyDropsLateVideoFrames) ? YES : NO)]; + automaticallyDropsLateVideoFrames + = [captureDecompressedVideoOutput automaticallyDropsLateVideoFrames]; + } + else + automaticallyDropsLateVideoFrames = JNI_FALSE; + + [autoreleasePool release]; + return automaticallyDropsLateVideoFrames; +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setDelegate + (JNIEnv *jniEnv, jclass clazz, jlong ptr, jobject delegate) +{ + QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput; + NSAutoreleasePool *autoreleasePool; + QTCaptureDecompressedVideoOutputDelegate *oDelegate; + id oPrevDelegate; + + captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) (intptr_t) 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_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setMinimumVideoFrameInterval + (JNIEnv *jniEnv, jclass clazz, jlong ptr, jdouble minimumVideoFrameInterval) +{ + QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput; + NSAutoreleasePool *autoreleasePool; + + captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + [captureDecompressedVideoOutput + setMinimumVideoFrameInterval:(NSTimeInterval)minimumVideoFrameInterval]; + + [autoreleasePool release]; +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDecompressedVideoOutput_setPixelBufferAttributes + (JNIEnv *jniEnv, jclass clazz, jlong ptr, jlong pixelBufferAttributesPtr) +{ + QTCaptureDecompressedVideoOutput *captureDecompressedVideoOutput; + NSDictionary *pixelBufferAttributes; + NSAutoreleasePool *autoreleasePool; + + captureDecompressedVideoOutput = (QTCaptureDecompressedVideoOutput *) (intptr_t) ptr; + pixelBufferAttributes = (NSDictionary *) (intptr_t) 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, (void **) &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) (intptr_t) videoFrame, + (jlong) (intptr_t) 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, (void **) &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/org_jitsi_impl_neomedia_quicktime_QTCaptureDevice.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDevice.h new file mode 100644 index 0000000000000000000000000000000000000000..36d3b012783730d0710f86bb6d391eebade998f2 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDevice.h @@ -0,0 +1,76 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_QTCaptureDevice */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice +#define _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDevice + * Method: close + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_close + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDevice + * Method: formatDescriptions + * Signature: (J)[J + */ +JNIEXPORT jlongArray JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_formatDescriptions + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDevice + * Method: inputDevicesWithMediaType + * Signature: (Ljava/lang/String;)[J + */ +JNIEXPORT jlongArray JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_inputDevicesWithMediaType + (JNIEnv *, jclass, jstring); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDevice + * Method: isConnected + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_isConnected + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDevice + * Method: localizedDisplayName + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_localizedDisplayName + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDevice + * Method: open + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_open + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDevice + * Method: uniqueID + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_uniqueID + (JNIEnv *, jclass, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDevice.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDevice.m new file mode 100644 index 0000000000000000000000000000000000000000..255a7738a05c9c4cb639371874bc91b6d236e0f1 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDevice.m @@ -0,0 +1,204 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_QTCaptureDevice.h" + +#include "common.h" + +#include <stdint.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_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_close + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + NSObject_performSelector((id) (intptr_t) ptr, @"close"); +} + +JNIEXPORT jlongArray JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_formatDescriptions + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + QTCaptureDevice *captureDevice; + NSAutoreleasePool *autoreleasePool; + NSArray *formatDescriptions; + jlongArray formatDescriptionPtrs; + + captureDevice = (QTCaptureDevice *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + formatDescriptions = [captureDevice formatDescriptions]; + formatDescriptionPtrs + = QTCaptureDevice_nsArrayToJlongArray(jniEnv, formatDescriptions); + + [autoreleasePool release]; + return formatDescriptionPtrs; +} + +JNIEXPORT jlongArray JNICALL +Java_org_jitsi_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_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_isConnected + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + return + (YES == (BOOL) (intptr_t) NSObject_performSelector((id) (intptr_t) ptr, @"isConnected")) + ? JNI_TRUE + : JNI_FALSE; +} + +JNIEXPORT jstring JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_localizedDisplayName + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + return QTCaptureDevice_getString (jniEnv, ptr, @"localizedDisplayName"); +} + +JNIEXPORT jboolean JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDevice_open + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + QTCaptureDevice *captureDevice; + NSAutoreleasePool *autoreleasePool; + BOOL ret; + NSError *error; + + captureDevice = (QTCaptureDevice *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + ret = [captureDevice open:&error]; + + [autoreleasePool release]; + return (YES == ret) ? JNI_TRUE : JNI_FALSE; +} + +JNIEXPORT jstring JNICALL +Java_org_jitsi_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) (intptr_t) 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) (intptr_t) 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/org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput.h new file mode 100644 index 0000000000000000000000000000000000000000..60d6b16f6b0ea8fb6748ed25343bfcb203273fb1 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput.h @@ -0,0 +1,28 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput +#define _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput + * Method: deviceInputWithDevice + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput_deviceInputWithDevice + (JNIEnv *, jclass, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput.m new file mode 100644 index 0000000000000000000000000000000000000000..d82539024c75f3f10ffe6e047fa517847b72471a --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput.m @@ -0,0 +1,39 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput.h" + +#import <Foundation/NSException.h> +#import <QTKit/QTCaptureDevice.h> +#import <QTKit/QTCaptureDeviceInput.h> +#include <stdint.h> + +JNIEXPORT jlong JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureDeviceInput_deviceInputWithDevice + (JNIEnv *jniEnv, jclass clazz, jlong devicePtr) +{ + QTCaptureDevice *device; + NSAutoreleasePool *autoreleasePool; + id deviceInput; + + device = (QTCaptureDevice *) (intptr_t) devicePtr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + @try + { + deviceInput = [QTCaptureDeviceInput deviceInputWithDevice:device]; + } + @catch (NSException *ex) + { + deviceInput = nil; + } + if (deviceInput) + [deviceInput retain]; + + [autoreleasePool release]; + return (jlong) (intptr_t) deviceInput; +} diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureSession.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureSession.h new file mode 100644 index 0000000000000000000000000000000000000000..5c83458b64c31b21575d3d4284d66d850370940a --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureSession.h @@ -0,0 +1,60 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_QTCaptureSession */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureSession +#define _Included_org_jitsi_impl_neomedia_quicktime_QTCaptureSession +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureSession + * Method: addInput + * Signature: (JJ)Z + */ +JNIEXPORT jboolean JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureSession_addInput + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureSession + * Method: addOutput + * Signature: (JJ)Z + */ +JNIEXPORT jboolean JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureSession_addOutput + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureSession + * Method: allocAndInit + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureSession_allocAndInit + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureSession + * Method: startRunning + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureSession_startRunning + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTCaptureSession + * Method: stopRunning + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTCaptureSession_stopRunning + (JNIEnv *, jclass, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureSession.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureSession.m new file mode 100644 index 0000000000000000000000000000000000000000..052bda8fbeb07e26275ebd12ca498018332a2755 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTCaptureSession.m @@ -0,0 +1,86 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_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> +#include <stdint.h> + +JNIEXPORT jboolean JNICALL +Java_org_jitsi_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 *) (intptr_t) ptr; + input = (QTCaptureInput *) (intptr_t) inputPtr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + ret = [captureSession addInput:input error:&error]; + + [autoreleasePool release]; + return (YES == ret) ? JNI_TRUE : JNI_FALSE; +} + +JNIEXPORT jboolean JNICALL +Java_org_jitsi_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 *) (intptr_t) ptr; + output = (QTCaptureOutput *) (intptr_t) outputPtr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + ret = [captureSession addOutput:output error:&error]; + + [autoreleasePool release]; + return (YES == ret) ? JNI_TRUE : JNI_FALSE; +} + +JNIEXPORT jlong JNICALL +Java_org_jitsi_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) (intptr_t) captureSession; +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureSession_startRunning + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + NSObject_performSelector((id) (intptr_t) ptr, @"startRunning"); +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTCaptureSession_stopRunning + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + NSObject_performSelector((id) (intptr_t) ptr, @"stopRunning"); +} diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTFormatDescription.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTFormatDescription.h new file mode 100644 index 0000000000000000000000000000000000000000..d590b3a61baef62229825de8762f5c93e9351dcd --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTFormatDescription.h @@ -0,0 +1,36 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_QTFormatDescription */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_QTFormatDescription +#define _Included_org_jitsi_impl_neomedia_quicktime_QTFormatDescription +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTFormatDescription + * Method: sizeForKey + * Signature: (JLjava/lang/String;)Ljava/awt/Dimension; + */ +JNIEXPORT jobject JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTFormatDescription_sizeForKey + (JNIEnv *, jclass, jlong, jstring); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTFormatDescription + * Method: VideoEncodedPixelsSizeAttribute + * Signature: ()Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTFormatDescription_VideoEncodedPixelsSizeAttribute + (JNIEnv *, jclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTFormatDescription.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTFormatDescription.m new file mode 100644 index 0000000000000000000000000000000000000000..13d5a7862f728a83709434f71057856630c1df3c --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTFormatDescription.m @@ -0,0 +1,93 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_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> +#include <stdint.h> + +JNIEXPORT jobject JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTFormatDescription_sizeForKey + (JNIEnv *jniEnv, jclass clazz, jlong ptr, jstring key) +{ + const char *cKey; + jobject size = NULL; + + cKey = (const char *) (*jniEnv)->GetStringUTFChars(jniEnv, key, NULL); + if (cKey) + { + QTFormatDescription *formatDescription; + NSAutoreleasePool *autoreleasePool; + NSString *oKey; + NSValue *attribute; + + formatDescription = (QTFormatDescription *) (intptr_t) 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); + } + } + + [autoreleasePool release]; + } + return size; +} + +JNIEXPORT jstring JNICALL +Java_org_jitsi_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/org_jitsi_impl_neomedia_quicktime_QTSampleBuffer.h b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTSampleBuffer.h new file mode 100644 index 0000000000000000000000000000000000000000..e78a269429e67448b75a88b20f542a9f89d270b5 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTSampleBuffer.h @@ -0,0 +1,36 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_quicktime_QTSampleBuffer */ + +#ifndef _Included_org_jitsi_impl_neomedia_quicktime_QTSampleBuffer +#define _Included_org_jitsi_impl_neomedia_quicktime_QTSampleBuffer +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTSampleBuffer + * Method: bytesForAllSamples + * Signature: (J)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTSampleBuffer_bytesForAllSamples + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_quicktime_QTSampleBuffer + * Method: formatDescription + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_quicktime_QTSampleBuffer_formatDescription + (JNIEnv *, jclass, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTSampleBuffer.m b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTSampleBuffer.m new file mode 100644 index 0000000000000000000000000000000000000000..2fe4f7866ef281e79e491d85349ba3c2fdcecef5 --- /dev/null +++ b/src/native/macosx/quicktime/org_jitsi_impl_neomedia_quicktime_QTSampleBuffer.m @@ -0,0 +1,69 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +#include "org_jitsi_impl_neomedia_quicktime_QTSampleBuffer.h" + +#import <Foundation/NSAutoreleasePool.h> +#import <QTKit/QTFormatDescription.h> +#import <QTKit/QTSampleBuffer.h> +#include <stdint.h> + +JNIEXPORT jbyteArray JNICALL +Java_org_jitsi_impl_neomedia_quicktime_QTSampleBuffer_bytesForAllSamples + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + QTSampleBuffer *sampleBuffer; + NSAutoreleasePool *autoreleasePool; + NSUInteger lengthForAllSamples; + jbyteArray jBytesForAllSamples; + + sampleBuffer = (QTSampleBuffer *) (intptr_t) 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_org_jitsi_impl_neomedia_quicktime_QTSampleBuffer_formatDescription + (JNIEnv *jniEnv, jclass clazz, jlong ptr) +{ + QTSampleBuffer *sampleBuffer; + NSAutoreleasePool *autoreleasePool; + QTFormatDescription *formatDescription; + + sampleBuffer = (QTSampleBuffer *) (intptr_t) ptr; + autoreleasePool = [[NSAutoreleasePool alloc] init]; + + formatDescription = [sampleBuffer formatDescription]; + if (formatDescription) + [formatDescription retain]; + + [autoreleasePool release]; + return (jlong) (intptr_t) formatDescription; +} diff --git a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/video/JAWTRenderer.java b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/video/JAWTRenderer.java index ba6ab5d0e431ff41c6bbc074e4d7a5f213d36200..07b66f37d45a3fc586c1d6301a5841c621723cbc 100644 --- a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/video/JAWTRenderer.java +++ b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/video/JAWTRenderer.java @@ -226,7 +226,10 @@ public synchronized Component getComponent() { StringBuilder componentClassName = new StringBuilder(); - componentClassName.append(JAWTRenderer.class.getName()); + componentClassName.append( + "org.jitsi" + + ".impl.neomedia.jmfext.media.renderer.video" + + ".JAWTRenderer"); if (USE_MACOSX_CALAYERS && OSUtils.IS_MAC) componentClassName.append("Swing"); else if (OSUtils.IS_ANDROID) diff --git a/src/org/jitsi/impl/neomedia/device/DeviceConfiguration.java b/src/org/jitsi/impl/neomedia/device/DeviceConfiguration.java index 3c7c4660d9c6f6b475051ff05932e2a316e7bc1d..8c025e56e4506e13ccfc645ada82dd9181724d78 100644 --- a/src/org/jitsi/impl/neomedia/device/DeviceConfiguration.java +++ b/src/org/jitsi/impl/neomedia/device/DeviceConfiguration.java @@ -800,14 +800,14 @@ private void registerCustomRenderers() { int pluginCount = plugins.size(); int pluginBeginIndex = 0; - String preferred = "org.jitsi.impl.neomedia."; for (int pluginIndex = pluginCount - 1; pluginIndex >= pluginBeginIndex;) { String plugin = plugins.get(pluginIndex); - if (plugin.startsWith(preferred)) + if (plugin.startsWith("org.jitsi.") + || plugin.startsWith("net.java.sip.communicator.")) { plugins.remove(pluginIndex); plugins.add(0, plugin); diff --git a/src/org/jitsi/impl/neomedia/device/QuickTimeSystem.java b/src/org/jitsi/impl/neomedia/device/QuickTimeSystem.java index c1e9f237b8f6f82df1766fc4637fcb286cadbb76..304ad6ad1814cf46531bf259cdce21060d80e8d0 100644 --- a/src/org/jitsi/impl/neomedia/device/QuickTimeSystem.java +++ b/src/org/jitsi/impl/neomedia/device/QuickTimeSystem.java @@ -10,7 +10,6 @@ import javax.media.format.*; import net.java.sip.communicator.impl.neomedia.codec.*; -import net.java.sip.communicator.impl.neomedia.quicktime.*; import org.jitsi.impl.neomedia.*; import org.jitsi.impl.neomedia.codec.video.*; diff --git a/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/DataSource.java b/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/DataSource.java index 181995444d5ecab8cde48e6ac926e6afa1a667b9..6489cdaba67e10b649a3c69b8b0fb1eb4ec577c0 100644 --- a/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/DataSource.java +++ b/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/DataSource.java @@ -16,14 +16,11 @@ import javax.media.control.*; import javax.media.format.*; -import net.java.sip.communicator.impl.neomedia.quicktime.*; - import org.jitsi.impl.neomedia.control.*; import org.jitsi.impl.neomedia.device.*; import org.jitsi.impl.neomedia.jmfext.media.protocol.*; import org.jitsi.impl.neomedia.quicktime.*; import org.jitsi.util.*; -// disambiguation /** * Implements a <tt>PushBufferDataSource</tt> and <tt>CaptureDevice</tt> using diff --git a/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/QuickTimeStream.java b/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/QuickTimeStream.java index 2e1b66643e8a623cb59894aedd104c9d35bf738f..f148b873e1720263e6e48e0421f9ad79a9660cc6 100644 --- a/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/QuickTimeStream.java +++ b/src/org/jitsi/impl/neomedia/jmfext/media/protocol/quicktime/QuickTimeStream.java @@ -15,7 +15,6 @@ import javax.media.protocol.*; import net.java.sip.communicator.impl.neomedia.codec.*; -import net.java.sip.communicator.impl.neomedia.quicktime.*; import org.jitsi.impl.neomedia.*; import org.jitsi.impl.neomedia.codec.video.*; diff --git a/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java b/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java index 7c3977dfc3844cfd639f9f0ac785d3edb1545f6f..e8b1b0899aa53e4557bea13e37a91a133a529106 100644 --- a/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java +++ b/src/org/jitsi/impl/neomedia/jmfext/media/renderer/video/JAWTRendererVideoComponent.java @@ -57,6 +57,11 @@ public JAWTRendererVideoComponent(JAWTRenderer renderer) this.renderer = renderer; } + /** + * Overrides {@link Component#addNotify()} to reset the indicator which + * determines whether the native counterpart of this <tt>JAWTRenderer</tt> + * wants <tt>paint</tt> calls on its AWT <tt>Component</tt> to be delivered. + */ @Override public void addNotify() { @@ -90,6 +95,10 @@ protected Object getHandleLock() return renderer.getHandleLock(); } + /** + * Overrides {@link Canvas#paint(Graphics)} to paint this <tt>Component</tt> + * in the native counterpart of its associated <tt>JAWTRenderer</tt>. + */ @Override public void paint(Graphics g) { @@ -105,6 +114,11 @@ public void paint(Graphics g) } } + /** + * Overrides {@link Component#removeNotify()} to reset the indicator which + * determines whether the native counterpart of this <tt>JAWTRenderer</tt> + * wants <tt>paint</tt> calls on its AWT <tt>Component</tt> to be delivered. + */ @Override public void removeNotify() { @@ -118,6 +132,10 @@ public void removeNotify() super.removeNotify(); } + /** + * Overrides {@link Canvas#update(Graphics)} to skip the filling with the + * background color in order to prevent flickering. + */ @Override public void update(Graphics g) { diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/CVImageBuffer.java b/src/org/jitsi/impl/neomedia/quicktime/CVImageBuffer.java similarity index 95% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/CVImageBuffer.java rename to src/org/jitsi/impl/neomedia/quicktime/CVImageBuffer.java index 21fb32b3149211fc7f651b30b208cb5239a5d482..d17a18aad6828b825bc577344ffa94e115bfcff7 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/CVImageBuffer.java +++ b/src/org/jitsi/impl/neomedia/quicktime/CVImageBuffer.java @@ -4,7 +4,7 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; /** * Represents a CoreVideo <tt>CVImageBufferRef</tt>. diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/CVPixelBuffer.java b/src/org/jitsi/impl/neomedia/quicktime/CVPixelBuffer.java similarity index 98% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/CVPixelBuffer.java rename to src/org/jitsi/impl/neomedia/quicktime/CVPixelBuffer.java index ee6fa7cfcd21f174f1c7884ceb57cb17735442ff..cf96fa51eeedad9aeb892647ee2ed772e3e560c4 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/CVPixelBuffer.java +++ b/src/org/jitsi/impl/neomedia/quicktime/CVPixelBuffer.java @@ -4,12 +4,12 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; /** * Represents a CoreVideo <tt>CVPixelBufferRef</tt>. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class CVPixelBuffer extends CVImageBuffer diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/CVPixelBufferAttributeKey.java b/src/org/jitsi/impl/neomedia/quicktime/CVPixelBufferAttributeKey.java similarity index 94% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/CVPixelBufferAttributeKey.java rename to src/org/jitsi/impl/neomedia/quicktime/CVPixelBufferAttributeKey.java index 8ae76e9d62930bd2a75bc0e8f7c4a67540bce532..0a90d489b6e0db3a1655cb992f3c31215ed3a811 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/CVPixelBufferAttributeKey.java +++ b/src/org/jitsi/impl/neomedia/quicktime/CVPixelBufferAttributeKey.java @@ -4,7 +4,7 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; /** * @author Lyubomir Marinov diff --git a/src/org/jitsi/impl/neomedia/quicktime/CVPixelFormatType.java b/src/org/jitsi/impl/neomedia/quicktime/CVPixelFormatType.java index aeba6d60fad677df4463a0cdf675dddca030f181..ed967b6b0ceb72b6eeae76b87ece0b1a704c7c5e 100644 --- a/src/org/jitsi/impl/neomedia/quicktime/CVPixelFormatType.java +++ b/src/org/jitsi/impl/neomedia/quicktime/CVPixelFormatType.java @@ -10,7 +10,7 @@ * Defines the types of <tt>CVPixelBuffer</tt>s to be output by * <tt>QTCaptureDecompressedVideoOutput</tt>. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public final class CVPixelFormatType { diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/NSDictionary.java b/src/org/jitsi/impl/neomedia/quicktime/NSDictionary.java similarity index 92% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/NSDictionary.java rename to src/org/jitsi/impl/neomedia/quicktime/NSDictionary.java index 44749f71ef8229d35d25676532b240901f4ca289..0f3a608ba04f640b12ce92f80bfd0bc8de306b51 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/NSDictionary.java +++ b/src/org/jitsi/impl/neomedia/quicktime/NSDictionary.java @@ -4,12 +4,12 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; /** * Represents an Objective-C <tt>NSDictionary</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class NSDictionary extends NSObject diff --git a/src/org/jitsi/impl/neomedia/quicktime/NSError.java b/src/org/jitsi/impl/neomedia/quicktime/NSError.java index 9bc7761f36021e1b383a543382866130a28df301..ad65eb698fe421a9c429ca83b2e6e1edcd831a22 100644 --- a/src/org/jitsi/impl/neomedia/quicktime/NSError.java +++ b/src/org/jitsi/impl/neomedia/quicktime/NSError.java @@ -6,12 +6,10 @@ */ package org.jitsi.impl.neomedia.quicktime; -import net.java.sip.communicator.impl.neomedia.quicktime.*; - /** * Represents an Objective-C <tt>NSError</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class NSError extends NSObject diff --git a/src/org/jitsi/impl/neomedia/quicktime/NSErrorException.java b/src/org/jitsi/impl/neomedia/quicktime/NSErrorException.java index 74f30f86ed30425a9a103eb1abc1ecf014b323a7..f7bf5cc401244ff235bfa66efcf2272eee25e888 100644 --- a/src/org/jitsi/impl/neomedia/quicktime/NSErrorException.java +++ b/src/org/jitsi/impl/neomedia/quicktime/NSErrorException.java @@ -9,7 +9,7 @@ /** * Defines an <tt>Exception</tt> which reports an <tt>NSError</tt>. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class NSErrorException extends Exception diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/NSMutableDictionary.java b/src/org/jitsi/impl/neomedia/quicktime/NSMutableDictionary.java similarity index 92% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/NSMutableDictionary.java rename to src/org/jitsi/impl/neomedia/quicktime/NSMutableDictionary.java index 73f9bbfe0931b64e57e6b1db926bd3f4c81d1695..361661d6e8607c1aaba0161330c8c8c72a81be6e 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/NSMutableDictionary.java +++ b/src/org/jitsi/impl/neomedia/quicktime/NSMutableDictionary.java @@ -4,12 +4,12 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; /** * Represents an Objective-C <tt>NSMutableDictionary</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class NSMutableDictionary extends NSDictionary diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/NSObject.java b/src/org/jitsi/impl/neomedia/quicktime/NSObject.java similarity index 97% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/NSObject.java rename to src/org/jitsi/impl/neomedia/quicktime/NSObject.java index bcb8513ed44c1bdbc2f78a7f3f786cc883417fc1..0dfac8b5a895609ab5f35045d4f2d2ca1cb590b2 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/NSObject.java +++ b/src/org/jitsi/impl/neomedia/quicktime/NSObject.java @@ -4,7 +4,7 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; /** * Represents the root of most Objective-C class hierarchies which which objects diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput.java b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput.java similarity index 98% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput.java rename to src/org/jitsi/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput.java index 8ee392f0c4fe216d61ad1c33b70e734d342352a1..ec812f4cb088c2e0a40619e80bfff68009c2f2d1 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureDecompressedVideoOutput.java @@ -4,9 +4,7 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; - -import org.jitsi.impl.neomedia.quicktime.*; +package org.jitsi.impl.neomedia.quicktime; /** * Represents a QTKit <tt>QTCaptureDecompressedVideoOutput</tt> object. diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDevice.java b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureDevice.java similarity index 98% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDevice.java rename to src/org/jitsi/impl/neomedia/quicktime/QTCaptureDevice.java index 7abae1bacefe512f560eed66df3e878d04169705..3a526ba882c597353d6873de4b6c41672315d278 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDevice.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureDevice.java @@ -4,17 +4,15 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; import java.util.*; -import org.jitsi.impl.neomedia.quicktime.*; - /** * Represents a QTKit capture device which is connected or has been previously * connected to the user's computer during the lifetime of the application. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class QTCaptureDevice extends NSObject diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDeviceInput.java b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureDeviceInput.java similarity index 90% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDeviceInput.java rename to src/org/jitsi/impl/neomedia/quicktime/QTCaptureDeviceInput.java index 4b683e8d13f15e6fba4272e910aab712e4b14837..42d7c9ddc058e140a518ea9bda5a703c7f2f6f98 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureDeviceInput.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureDeviceInput.java @@ -4,14 +4,12 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; - -import org.jitsi.impl.neomedia.quicktime.*; +package org.jitsi.impl.neomedia.quicktime; /** * Represents a QTKit <tt>QTCaptureDeviceInput</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class QTCaptureDeviceInput extends QTCaptureInput diff --git a/src/org/jitsi/impl/neomedia/quicktime/QTCaptureInput.java b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureInput.java index 20a75fb0de4e7cb0a4fc28f4b211b3d159e92c32..37e05356d228570912511052ed72e228a3832dda 100644 --- a/src/org/jitsi/impl/neomedia/quicktime/QTCaptureInput.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureInput.java @@ -6,12 +6,10 @@ */ package org.jitsi.impl.neomedia.quicktime; -import net.java.sip.communicator.impl.neomedia.quicktime.*; - /** * Represents a QTKit <tt>QTCaptureInput</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class QTCaptureInput extends NSObject diff --git a/src/org/jitsi/impl/neomedia/quicktime/QTCaptureOutput.java b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureOutput.java index b737d4fb9068095ed589ea4f3ee779a292957f54..3a6ff656c5b2bba23d08759d710e255ea7a0559e 100644 --- a/src/org/jitsi/impl/neomedia/quicktime/QTCaptureOutput.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureOutput.java @@ -6,12 +6,10 @@ */ package org.jitsi.impl.neomedia.quicktime; -import net.java.sip.communicator.impl.neomedia.quicktime.*; - /** * Represents a QTKit <tt>QTCaptureOutput</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class QTCaptureOutput extends NSObject diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureSession.java b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureSession.java similarity index 94% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureSession.java rename to src/org/jitsi/impl/neomedia/quicktime/QTCaptureSession.java index 1eac56ee3b4a6b91a00e885ae1fa0fdfb773cd8b..2d61345f9ba2995cfa157fdfcb5c15eddaa3db33 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTCaptureSession.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTCaptureSession.java @@ -4,14 +4,12 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; - -import org.jitsi.impl.neomedia.quicktime.*; +package org.jitsi.impl.neomedia.quicktime; /** * Represents a QTKit <tt>QTCaptureSession</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class QTCaptureSession extends NSObject diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTFormatDescription.java b/src/org/jitsi/impl/neomedia/quicktime/QTFormatDescription.java similarity index 94% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/QTFormatDescription.java rename to src/org/jitsi/impl/neomedia/quicktime/QTFormatDescription.java index 006d0dfc35f16d2d8b98754b2a2a31abf29e5ee5..056bd41b4324f872cc090a145bba3c1842e253f7 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTFormatDescription.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTFormatDescription.java @@ -4,7 +4,7 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; import java.awt.*; @@ -14,7 +14,7 @@ * such as media type and format type (or codec type), as well as extended * information specific to each media type. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class QTFormatDescription extends NSObject diff --git a/src/org/jitsi/impl/neomedia/quicktime/QTMediaType.java b/src/org/jitsi/impl/neomedia/quicktime/QTMediaType.java index 3f0d0af3ec39575b7db1a052e792fb65501ea3a2..917ae0f5f228f6464e60ab7cef70dce49dc63ac3 100644 --- a/src/org/jitsi/impl/neomedia/quicktime/QTMediaType.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTMediaType.java @@ -9,7 +9,7 @@ /** * Enumerates the QTKit media types. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public enum QTMediaType { diff --git a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTSampleBuffer.java b/src/org/jitsi/impl/neomedia/quicktime/QTSampleBuffer.java similarity index 92% rename from src/net/java/sip/communicator/impl/neomedia/quicktime/QTSampleBuffer.java rename to src/org/jitsi/impl/neomedia/quicktime/QTSampleBuffer.java index 8c7425ac693392ff9b2554eb1d8e20112c4d73ac..425d6fe60e2bb02b56fc90933e1d1d56305c6bc7 100644 --- a/src/net/java/sip/communicator/impl/neomedia/quicktime/QTSampleBuffer.java +++ b/src/org/jitsi/impl/neomedia/quicktime/QTSampleBuffer.java @@ -4,12 +4,12 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ -package net.java.sip.communicator.impl.neomedia.quicktime; +package org.jitsi.impl.neomedia.quicktime; /** * Represents a QuickTime/QTKit <tt>QTSampleBuffer</tt> object. * - * @author Lubomir Marinov + * @author Lyubomir Marinov */ public class QTSampleBuffer extends NSObject diff --git a/src/org/jitsi/util/swing/VideoLayout.java b/src/org/jitsi/util/swing/VideoLayout.java index 5ee6724ce5bf62614986dd6276fb98b16a9b87dc..3ff9c2b7be7ba1d71008f913eb10d7d40a5c9370 100644 --- a/src/org/jitsi/util/swing/VideoLayout.java +++ b/src/org/jitsi/util/swing/VideoLayout.java @@ -19,7 +19,8 @@ * @author Lyubomir Marinov * @author Yana Stamcheva */ -public class VideoLayout extends FitLayout +public class VideoLayout + extends FitLayout { /** * The video canvas constraint. @@ -97,8 +98,6 @@ public class VideoLayout extends FitLayout */ public VideoLayout(boolean isConference) { - super(); - this.isConference = isConference; } @@ -149,11 +148,11 @@ else if (name.equals(CANVAS)) */ private int calculateColumnCount(List<Component> remotes) { - int remotesCount = remotes.size(); + int remoteCount = remotes.size(); - if (remotesCount == 1) + if (remoteCount == 1) return 1; - else if (remotesCount == 2 || remotesCount == 4) + else if ((remoteCount == 2) || (remoteCount == 4)) return 2; else return 3; @@ -295,6 +294,7 @@ else if (remoteCount > 0) = Math.round(parentSize.height * LOCAL_TO_REMOTE_RATIO); int width = Math.round(parentSize.width * LOCAL_TO_REMOTE_RATIO); + float alignmentX; /* * XXX The remote Component being a JLabel is meant to signal @@ -303,25 +303,21 @@ else if (remoteCount > 0) */ if ((remotes.size() == 1) && (remote0 instanceof JLabel)) { - localX = parentSize.width/2 - width/2; + localX = (parentSize.width - width) / 2; localY = parentSize.height - height; - super.layoutComponent( - local, - new Rectangle(localX, localY, width, height), - Component.CENTER_ALIGNMENT, - Component.BOTTOM_ALIGNMENT); + alignmentX = Component.CENTER_ALIGNMENT; } else { localX = ((remote0 == null) ? 0 : remote0.getX()) + 5; localY = parentSize.height - height - 5; - - super.layoutComponent( - local, - new Rectangle(localX, localY, width, height), - Component.LEFT_ALIGNMENT, - Component.BOTTOM_ALIGNMENT); + alignmentX = Component.LEFT_ALIGNMENT; } + super.layoutComponent( + local, + new Rectangle(localX, localY, width, height), + alignmentX, + Component.BOTTOM_ALIGNMENT); } if (closeButton != null)