diff --git a/lib/native/freebsd-64/libffmpeg.so b/lib/native/freebsd-64/libffmpeg.so index 7ba684b00..060127a98 100755 Binary files a/lib/native/freebsd-64/libffmpeg.so and b/lib/native/freebsd-64/libffmpeg.so differ diff --git a/lib/native/freebsd/libffmpeg.so b/lib/native/freebsd/libffmpeg.so index 1d85231b8..dda1bacca 100755 Binary files a/lib/native/freebsd/libffmpeg.so and b/lib/native/freebsd/libffmpeg.so differ diff --git a/lib/native/linux-64/libffmpeg.so b/lib/native/linux-64/libffmpeg.so index fe334791f..128947b1c 100755 Binary files a/lib/native/linux-64/libffmpeg.so and b/lib/native/linux-64/libffmpeg.so differ diff --git a/lib/native/linux/libffmpeg.so b/lib/native/linux/libffmpeg.so index cae872ddc..49a4e5b32 100755 Binary files a/lib/native/linux/libffmpeg.so and b/lib/native/linux/libffmpeg.so differ diff --git a/lib/native/mac/libffmpeg.jnilib b/lib/native/mac/libffmpeg.jnilib index d27c638ee..6707a9833 100755 Binary files a/lib/native/mac/libffmpeg.jnilib and b/lib/native/mac/libffmpeg.jnilib differ diff --git a/lib/native/windows-64/ffmpeg.dll b/lib/native/windows-64/ffmpeg.dll index 10ef8a3a9..8cc41feff 100644 Binary files a/lib/native/windows-64/ffmpeg.dll and b/lib/native/windows-64/ffmpeg.dll differ diff --git a/lib/native/windows/ffmpeg.dll b/lib/native/windows/ffmpeg.dll index 284a1cdfd..d1c578ac5 100644 Binary files a/lib/native/windows/ffmpeg.dll and b/lib/native/windows/ffmpeg.dll differ diff --git a/src/native/ffmpeg/ffmpeg_utils.c b/src/native/ffmpeg/ffmpeg_utils.c index d6f5aa03d..cb6b625e3 100644 --- a/src/native/ffmpeg/ffmpeg_utils.c +++ b/src/native/ffmpeg/ffmpeg_utils.c @@ -109,8 +109,8 @@ int get_filtered_video_frame(AVFilterContext *ctx, AVFrame *frame, return 1; } -int configure_filters(AVInputStream *ist, int pix_fmt, AVFilterGraph *graph, - const char* vfilters) +int configure_filters(AVInputStream *ist, int pix_fmt, int w, int h, + AVFilterGraph *graph, const char* vfilters) { AVFilterContext *last_filter; /** filter graph containing all filters including input & output */ @@ -119,8 +119,8 @@ int configure_filters(AVInputStream *ist, int pix_fmt, AVFilterGraph *graph, FFSinkContext ffsink_ctx = { .pix_fmt = pix_fmt }; char args[255]; int ret; - int width = 640; - int height = 480; + int width = w; + int height = h; //graph = av_mallocz(sizeof(AVFilterGraph)); diff --git a/src/native/ffmpeg/ffmpeg_utils.h b/src/native/ffmpeg/ffmpeg_utils.h index 4708dae2b..2489e4da6 100644 --- a/src/native/ffmpeg/ffmpeg_utils.h +++ b/src/native/ffmpeg/ffmpeg_utils.h @@ -107,7 +107,7 @@ typedef struct AVInputStream { int get_filtered_video_frame(AVFilterContext *sink, AVFrame *frame, AVFilterBufferRef **picref, AVRational *pts_tb); -int configure_filters(AVInputStream *ist, int pix_fmt, AVFilterGraph *graph, - const char* vfilters); +int configure_filters(AVInputStream *ist, int pix_fmt, int width, int height, + AVFilterGraph *graph, const char* vfilters); #endif /* FFMPEG_CMDUTILS_H */ diff --git a/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.c b/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.c index cb56efdfc..423a37d34 100644 --- a/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.c +++ b/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.c @@ -702,12 +702,14 @@ Java_net_java_sip_communicator_impl_neomedia_codec_FFmpeg_avfilter_1free_1output JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_codec_FFmpeg_avfilter_1configure_1filters - (JNIEnv *jniEnv, jclass clazz, jstring vfilters, jlong inputstream, jint pix_fmt, jlong graph) + (JNIEnv *jniEnv, jclass clazz, jstring vfilters, jlong inputstream, jint pix_fmt, + jint width, jint height, jlong graph) { jint ret = 0; const char* filters = (*jniEnv)->GetStringUTFChars (jniEnv, vfilters, NULL); - ret = configure_filters((AVInputStream*)inputstream, pix_fmt, (AVFilterGraph*)graph, filters); + ret = configure_filters((AVInputStream*)inputstream, pix_fmt, width, height, + (AVFilterGraph*)graph, filters); (*jniEnv)->ReleaseStringUTFChars (jniEnv, vfilters, filters); return ret; diff --git a/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.h b/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.h index 08d3cbb15..e5515dc62 100644 --- a/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.h +++ b/src/native/ffmpeg/net_java_sip_communicator_impl_neomedia_codec_FFmpeg.h @@ -641,10 +641,10 @@ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_codec_FFmpeg /* * Class: net_java_sip_communicator_impl_neomedia_codec_FFmpeg * Method: avfilter_configure_filters - * Signature: (Ljava/lang/String;JIJ)I + * Signature: (Ljava/lang/String;JIIIJ)I */ JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_codec_FFmpeg_avfilter_1configure_1filters - (JNIEnv *, jclass, jstring, jlong, jint, jlong); + (JNIEnv *, jclass, jstring, jlong, jint, jint, jint, jlong); /* * Class: net_java_sip_communicator_impl_neomedia_codec_FFmpeg diff --git a/src/net/java/sip/communicator/impl/neomedia/codec/FFmpeg.java b/src/net/java/sip/communicator/impl/neomedia/codec/FFmpeg.java index 53e7a8291..8f83f0e26 100644 --- a/src/net/java/sip/communicator/impl/neomedia/codec/FFmpeg.java +++ b/src/net/java/sip/communicator/impl/neomedia/codec/FFmpeg.java @@ -668,11 +668,13 @@ public static native int sws_scale( * @param filters filters list * @param avinputstream AVInputStream pointer * @param pix_fmt pixel format + * @param width width of the video + * @param height height of the video * @param graph AVFilterGraph pointer * @return 0 if success, -1 otherwise */ public static native int avfilter_configure_filters(String filters, - long avinputstream, int pix_fmt, long graph); + long avinputstream, int pix_fmt, int width, int height, long graph); /** * Add the picture to the inputstream to be filtered. diff --git a/src/net/java/sip/communicator/impl/neomedia/videoflip/VideoFlipEffect.java b/src/net/java/sip/communicator/impl/neomedia/videoflip/VideoFlipEffect.java index 623875acc..5142ec143 100644 --- a/src/net/java/sip/communicator/impl/neomedia/videoflip/VideoFlipEffect.java +++ b/src/net/java/sip/communicator/impl/neomedia/videoflip/VideoFlipEffect.java @@ -212,7 +212,8 @@ public int process(Buffer inputBuffer, Buffer outputBuffer) { AVFrameFormat format = (AVFrameFormat)inputBuffer.getFormat(); if(FFmpeg.avfilter_configure_filters("hflip", inputstream, - format.getPixFmt(), graph) != 0) + format.getPixFmt(), format.getSize().width, + format.getSize().height, graph) != 0) { if(logger.isDebugEnabled()) {