diff --git a/lib/native/windows-64/jdirectshow.dll b/lib/native/windows-64/jdirectshow.dll index 2a29a11a2..82e5bfea1 100644 Binary files a/lib/native/windows-64/jdirectshow.dll and b/lib/native/windows-64/jdirectshow.dll differ diff --git a/lib/native/windows/jdirectshow.dll b/lib/native/windows/jdirectshow.dll index d21c6b2f4..159eb5fd5 100644 Binary files a/lib/native/windows/jdirectshow.dll and b/lib/native/windows/jdirectshow.dll differ diff --git a/src/native/windows/directshow/ds_capture_device.cpp b/src/native/windows/directshow/ds_capture_device.cpp index 9546c3586..4a27ad453 100644 --- a/src/native/windows/directshow/ds_capture_device.cpp +++ b/src/native/windows/directshow/ds_capture_device.cpp @@ -394,10 +394,7 @@ void DSCaptureDevice::initSupportedFormats() format.pixelFormat = mediaType->subtype.Data1; format.mediaType = mediaType->subtype; - if(format.pixelFormat != 0x30323449) - { - m_formats.push_back(format); - } + m_formats.push_back(format); } } } diff --git a/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSCaptureDevice.cpp b/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSCaptureDevice.cpp index b86e6e732..dfa2ae871 100644 --- a/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSCaptureDevice.cpp +++ b/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSCaptureDevice.cpp @@ -238,6 +238,7 @@ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_D fmt.pixelFormat = (unsigned long)f; dev->setFormat(fmt); + dev->start(); } } diff --git a/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.cpp b/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.cpp index 989256d80..44a1f5358 100644 --- a/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.cpp +++ b/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.cpp @@ -3,7 +3,7 @@ #include #include -#include +#include JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_DSFormat_getRGB24PixelFormat (JNIEnv *, jclass) @@ -119,3 +119,9 @@ JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_ return MEDIASUBTYPE_YVYU.Data1; } +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_DSFormat_getI420PixelFormat + (JNIEnv *, jclass) +{ + return 0x30323449; //MEDIASUBTYPE_I420.Data1; +} + diff --git a/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.h b/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.h index 1e23fa1ef..b5aa8d2f1 100644 --- a/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.h +++ b/src/native/windows/directshow/net_java_sip_communicator_impl_neomedia_directshow_DSFormat.h @@ -159,6 +159,14 @@ JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_ JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_DSFormat_getYVYUPixelFormat (JNIEnv *, jclass); +/* + * Class: net_java_sip_communicator_impl_neomedia_directshow_DSFormat + * Method: getI420PixelFormat + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_DSFormat_getI420PixelFormat + (JNIEnv *, jclass); + #ifdef __cplusplus } #endif diff --git a/src/net/java/sip/communicator/impl/neomedia/directshow/DSFormat.java b/src/net/java/sip/communicator/impl/neomedia/directshow/DSFormat.java index 285a6bae4..05c1c7184 100644 --- a/src/net/java/sip/communicator/impl/neomedia/directshow/DSFormat.java +++ b/src/net/java/sip/communicator/impl/neomedia/directshow/DSFormat.java @@ -26,6 +26,7 @@ public class DSFormat NV12 = getNV12PixelFormat(); Y411 = getY411PixelFormat(); Y41P = getY41PPixelFormat(); + I420 = getI420PixelFormat(); } /* supported formats */ @@ -37,6 +38,7 @@ public class DSFormat public static final long Y411; public static final long Y41P; public static final long NV12; + public static final long I420; /** * Video width. @@ -119,5 +121,6 @@ public long getPixelFormat() public static native long getY41PPixelFormat(); public static native long getYVU9PixelFormat(); public static native long getYVYUPixelFormat(); + public static native long getI420PixelFormat(); } diff --git a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/directshow/DataSource.java b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/directshow/DataSource.java index f323a1afc..53c927a30 100644 --- a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/directshow/DataSource.java +++ b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/directshow/DataSource.java @@ -67,6 +67,8 @@ public class DataSource extends AbstractPushBufferCaptureDevice FFmpeg.PIX_FMT_UYYVYY411, DSFormat.NV12, FFmpeg.PIX_FMT_NV12, + DSFormat.I420, + FFmpeg.PIX_FMT_YUV420P, }; /** * The default width of DataSource. @@ -180,7 +182,7 @@ protected AbstractPushBufferStream createStream( for(int i = 0 ; i < fmts.length ; i++) { System.out.println(fmts[i].getWidth() + " " + fmts[i].getHeight() - + fmts[i].getColorSpace()); + + " " + fmts[i].getPixelFormat()); } */