Use size of the video stream in VideoEffect's native code rather than hardcoded 640x480.

cusax-fix
Sebastien Vincent 16 years ago
parent ab452bbcee
commit 074b09ebe3

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -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));

@ -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 */

@ -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;

@ -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

@ -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 <tt>picture</tt> to the <tt>inputstream</tt> to be filtered.

@ -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())
{

Loading…
Cancel
Save