Recherche avancée

Médias (91)

Autres articles (13)

  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

Sur d’autres sites (2846)

  • Revision 35042 : Un truc qui trainait

    9 février 2010, par kent1@… — Log

    Un truc qui trainait

  • Issue #1 when compiling Xuggler for Raspberry pi with libspeex

    23 juillet 2014, par Ashish Sharma

    I am trying to compile Xuggler for Raspberry Pi(Running on Debian OS aka Raspbian),

    I followed the ’Basic Build Instructions’ available here for compiling Xuggler.

    After I successfully installed all the prerequisites and set the correct paths, I ran the following command :

    ant run-tests

    After sometime I am facing the following error and the ant build fails :

    scroll at the end of log to see the issue

    [exec] Making all in libspeex
    [exec] make[2]: Entering directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex'
    [exec] Incarcerated package must be reconfigured; regenerating out of date captive Makefile from: ../../../../../captive/libspeex/csrc/configure
    [exec] /bin/mkdir -p csrc
    [exec] cd csrc && sh ../incarcerate
    [exec] checking for a BSD-compatible install... /usr/bin/install -c
    [exec] checking whether build environment is sane... yes
    [exec] checking for a thread-safe mkdir -p... /bin/mkdir -p
    [exec] checking for gawk... no
    [exec] checking for mawk... mawk
    [exec] checking whether make sets $(MAKE)... yes
    [exec] checking build system type... armv6l-unknown-linux-gnu
    [exec] checking host system type... armv6l-unknown-linux-gnu
    [exec] checking how to print strings... printf
    [exec] checking for style of include used by make... GNU
    [exec] checking for gcc... gcc
    [exec] checking whether the C compiler works... yes
    [exec] checking for C compiler default output file name... a.out
    [exec] checking for suffix of executables...
    [exec] checking whether we are cross compiling... no
    [exec] checking for suffix of object files... o
    [exec] checking whether we are using the GNU C compiler... yes
    [exec] checking whether gcc accepts -g... yes
    [exec] checking for gcc option to accept ISO C89... none needed
    [exec] checking dependency style of gcc... none
    [exec] checking for a sed that does not truncate output... /bin/sed
    [exec] checking for grep that handles long lines and -e... /bin/grep
    [exec] checking for egrep... /bin/grep -E
    [exec] checking for fgrep... /bin/grep -F
    [exec] checking for ld used by gcc... /usr/bin/ld
    [exec] checking if the linker (/usr/bin/ld) is GNU ld... yes
    [exec] checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    [exec] checking the name lister (/usr/bin/nm -B) interface... BSD nm
    [exec] checking whether ln -s works... yes
    [exec] checking the maximum length of command line arguments... 805306365
    [exec] checking whether the shell understands some XSI constructs... yes
    [exec] checking whether the shell understands "+="... yes
    [exec] checking how to convert armv6l-unknown-linux-gnu file names to armv6l-unknown-linux-gnu format... func_convert_file_noop
    [exec] checking how to convert armv6l-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
    [exec] checking for /usr/bin/ld option to reload object files... -r
    [exec] checking for objdump... objdump
    [exec] checking how to recognize dependent libraries... pass_all
    [exec] checking for dlltool... false
    [exec] checking how to associate runtime and link libraries... printf %s\n
    [exec] checking for archiver @FILE support... @
    [exec] checking for strip... strip
    [exec] checking for ranlib... ranlib
    [exec] checking command to parse /usr/bin/nm -B output from gcc object... ok
    [exec] checking for sysroot... no
    [exec] checking for mt... mt
    [exec] checking if mt is a manifest tool... no
    [exec] checking how to run the C preprocessor... gcc -E
    [exec] checking for ANSI C header files... yes
    [exec] checking for sys/types.h... yes
    [exec] checking for sys/stat.h... yes
    [exec] checking for stdlib.h... yes
    [exec] checking for string.h... yes
    [exec] checking for memory.h... yes
    [exec] checking for strings.h... yes
    [exec] checking for inttypes.h... yes
    [exec] checking for stdint.h... yes
    [exec] checking for unistd.h... yes
    [exec] checking for dlfcn.h... yes
    [exec] checking for objdir... .libs
    [exec] checking if gcc supports -fno-rtti -fno-exceptions... no
    [exec] checking for gcc option to produce PIC... -fPIC -DPIC
    [exec] checking if gcc PIC flag -fPIC -DPIC works... yes
    [exec] checking if gcc static flag -static works... yes
    [exec] checking if gcc supports -c -o file.o... yes
    [exec] checking if gcc supports -c -o file.o... (cached) yes
    [exec] checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
    [exec] checking dynamic linker characteristics... GNU/Linux ld.so
    [exec] checking how to hardcode library paths into programs... immediate
    [exec] checking whether stripping libraries is possible... yes
    [exec] checking if libtool supports shared libraries... yes
    [exec] checking whether to build shared libraries... no
    [exec] checking whether to build static libraries... yes
    [exec] checking whether to enable maintainer-specific portions of Makefiles... no
    [exec] checking whether byte ordering is bigendian... no
    [exec] checking for an ANSI C-conforming const... yes
    [exec] checking for inline... inline
    [exec] checking for C/C++ restrict keyword... __restrict
    [exec] checking for C99 variable-size arrays... yes
    [exec] checking alloca.h usability... yes
    [exec] checking alloca.h presence... yes
    [exec] checking for alloca.h... yes
    [exec] checking getopt.h usability... yes
    [exec] checking getopt.h presence... yes
    [exec] checking for getopt.h... yes
    [exec] checking for alloca... yes
    [exec] checking for SSE in current arch/CFLAGS... no
    [exec] checking for ELF visibility... yes
    [exec] checking sys/soundcard.h usability... yes
    [exec] checking sys/soundcard.h presence... yes
    [exec] checking for sys/soundcard.h... yes
    [exec] checking sys/audioio.h usability... no
    [exec] checking sys/audioio.h presence... no
    [exec] checking for sys/audioio.h... no
    [exec] checking for Ogg... yes
    [exec] checking for sin in -lm... yes
    [exec] checking for getopt_long... yes
    [exec] checking for main in -lwinmm... no
    [exec] checking for pkg-config... /usr/bin/pkg-config
    [exec] checking pkg-config is at least version 0.9.0... yes
    [exec] checking size of short... 0
    [exec] checking size of int... 0
    [exec] checking size of long... 0
    [exec] configure: creating ./config.status
    [exec] config.status: creating Makefile
    [exec] config.status: creating libspeex/Makefile
    [exec] config.status: creating src/Makefile
    [exec] config.status: creating doc/Makefile
    [exec] config.status: creating Speex.spec
    [exec] config.status: creating include/Makefile
    [exec] config.status: creating include/speex/Makefile
    [exec] config.status: creating speex.pc
    [exec] config.status: creating speexdsp.pc
    [exec] config.status: creating win32/Makefile
    [exec] config.status: creating win32/libspeex/Makefile
    [exec] config.status: creating win32/speexenc/Makefile
    [exec] config.status: creating win32/speexdec/Makefile
    [exec] config.status: creating symbian/Makefile
    [exec] config.status: creating win32/VS2003/Makefile
    [exec] config.status: creating win32/VS2003/tests/Makefile
    [exec] config.status: creating win32/VS2003/libspeex/Makefile
    [exec] config.status: creating win32/VS2003/libspeexdsp/Makefile
    [exec] config.status: creating win32/VS2003/speexdec/Makefile
    [exec] config.status: creating win32/VS2003/speexenc/Makefile
    [exec] config.status: creating win32/VS2005/Makefile
    [exec] config.status: creating win32/VS2005/libspeex/Makefile
    [exec] config.status: creating win32/VS2005/speexdec/Makefile
    [exec] config.status: creating win32/VS2005/speexenc/Makefile
    [exec] config.status: creating win32/VS2005/libspeexdsp/Makefile
    [exec] config.status: creating win32/VS2005/tests/Makefile
    [exec] config.status: creating win32/VS2008/libspeexdsp/Makefile
    [exec] config.status: creating win32/VS2008/Makefile
    [exec] config.status: creating win32/VS2008/speexdec/Makefile
    [exec] config.status: creating win32/VS2008/tests/Makefile
    [exec] config.status: creating win32/VS2008/libspeex/Makefile
    [exec] config.status: creating win32/VS2008/speexenc/Makefile
    [exec] config.status: creating include/speex/speex_config_types.h
    [exec] config.status: creating ti/Makefile
    [exec] config.status: creating ti/speex_C54_test/Makefile
    [exec] config.status: creating ti/speex_C55_test/Makefile
    [exec] config.status: creating ti/speex_C64_test/Makefile
    [exec] config.status: creating config.h
    [exec] config.status: executing depfiles commands
    [exec] config.status: executing libtool commands
    [exec] Type "make; make install" to compile and install Speex
    [exec] Incarcerated package configured: ../../../../../captive/libspeex
    [exec] Incarcerating package ../../../../../captive/libspeex to fake DESTDIR=/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/stage
    [exec] make[3]: Entering directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] make  all-recursive
    [exec] make[4]: Entering directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] Making all in libspeex
    [exec] make[4]: *** [all-recursive] Error 1
    [exec] make[3]: *** [all] Error 2
    [exec] make[4]: Leaving directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] make[3]: Leaving directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] Out of date files; re-running make
    [exec] make[3]: Entering directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] make  all-recursive
    [exec] make[4]: Entering directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] Making all in libspeex
    [exec] make[5]: Entering directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc/libspeex'
    [exec] /bin/bash ../libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/../../../../captive/libspeex/csrc/libspeex -I.. -I/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/../../../../captive/libspeex/csrc/include -I../include -I.. -I/home/pi/Downloads/xuggler/include     -I/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/stage/home/pi/Downloads/xuggler/include  -fvisibility=hidden -O3 -msse -c -o cb_search.lo /home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/../../../../captive/libspeex/csrc/libspeex/cb_search.c
    [exec] libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/../../../../captive/libspeex/csrc/libspeex -I.. -I/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/../../../../captive/libspeex/csrc/include -I../include -I.. -I/home/pi/Downloads/xuggler/include -I/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/stage/home/pi/Downloads/xuggler/include -fvisibility=hidden -O3 -msse -c /home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/../../../../captive/libspeex/csrc/libspeex/cb_search.c  -fPIC -DPIC -o cb_search.o
    [exec] cc1: error: unrecognized command line option '-msse'
    [exec] make[5]: *** [cb_search.lo] Error 1
    [exec] make[4]: *** [all-recursive] Error 1
    [exec] make[3]: *** [all] Error 2
    [exec] make[2]: *** [all-local] Error 2
    [exec] make[1]: *** [all-recursive] Error 1
    [exec] make: *** [all-recursive] Error 1
    [exec] make[5]: Leaving directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc/libspeex'
    [exec] make[4]: Leaving directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] make[3]: Leaving directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex/csrc'
    [exec] make[2]: Leaving directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive/libspeex'
    [exec] make[1]: Leaving directory `/home/pi/Downloads/xuggle-xuggler/build/native/armv6l-unknown-linux-gnueabihf/captive'

    BUILD FAILED
    /home/pi/Downloads/xuggle-xuggler/mk/buildtools/buildhelper.xml:1192: exec returned: 2

    Total time: 73 minutes 17 seconds

    I am unable to understand the problem statment "unrecognized command line option ’-msse’" here, Can someone please tell me how can I resolve this or circumvent it in xuggler ?

  • android ffmpeg bad video output

    20 août 2014, par Sujith Manjavana

    I’m following this tutorial to create my first ffmpeg app. I have successfully build the shared libs and compiled the project without any errors. But when i run the app on my nexus 5 the output is this this

    Here is the native code

    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavformat></libavformat>avformat.h>
    #include <libswscale></libswscale>swscale.h>
    #include <libavutil></libavutil>pixfmt.h>

    #include
    #include

    #include
    #include <android></android>native_window.h>
    #include <android></android>native_window_jni.h>

    #define LOG_TAG "android-ffmpeg-tutorial02"
    #define LOGI(...) __android_log_print(4, LOG_TAG, __VA_ARGS__);
    #define LOGE(...) __android_log_print(6, LOG_TAG, __VA_ARGS__);

    ANativeWindow*      window;
    char                *videoFileName;
    AVFormatContext     *formatCtx = NULL;
    int                 videoStream;
    AVCodecContext      *codecCtx = NULL;
    AVFrame             *decodedFrame = NULL;
    AVFrame             *frameRGBA = NULL;
    jobject             bitmap;
    void*               buffer;
    struct SwsContext   *sws_ctx = NULL;
    int                 width;
    int                 height;
    int                 stop;

    jint naInit(JNIEnv *pEnv, jobject pObj, jstring pFileName) {
       AVCodec         *pCodec = NULL;
       int             i;
       AVDictionary    *optionsDict = NULL;

       videoFileName = (char *)(*pEnv)->GetStringUTFChars(pEnv, pFileName, NULL);
       LOGI("video file name is %s", videoFileName);
       // Register all formats and codecs
       av_register_all();
       // Open video file
       if(avformat_open_input(&amp;formatCtx, videoFileName, NULL, NULL)!=0)
           return -1; // Couldn't open file
       // Retrieve stream information
       if(avformat_find_stream_info(formatCtx, NULL)&lt;0)
           return -1; // Couldn't find stream information
       // Dump information about file onto standard error
       av_dump_format(formatCtx, 0, videoFileName, 0);
       // Find the first video stream
       videoStream=-1;
       for(i=0; inb_streams; i++) {
           if(formatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO) {
               videoStream=i;
               break;
           }
       }
       if(videoStream==-1)
           return -1; // Didn't find a video stream
       // Get a pointer to the codec context for the video stream
       codecCtx=formatCtx->streams[videoStream]->codec;
       // Find the decoder for the video stream
       pCodec=avcodec_find_decoder(codecCtx->codec_id);
       if(pCodec==NULL) {
           fprintf(stderr, "Unsupported codec!\n");
           return -1; // Codec not found
       }
       // Open codec
       if(avcodec_open2(codecCtx, pCodec, &amp;optionsDict)&lt;0)
           return -1; // Could not open codec
       // Allocate video frame
       decodedFrame=avcodec_alloc_frame();
       // Allocate an AVFrame structure
       frameRGBA=avcodec_alloc_frame();
       if(frameRGBA==NULL)
           return -1;
       return 0;
    }

    jobject createBitmap(JNIEnv *pEnv, int pWidth, int pHeight) {
       int i;
       //get Bitmap class and createBitmap method ID
       jclass javaBitmapClass = (jclass)(*pEnv)->FindClass(pEnv, "android/graphics/Bitmap");
       jmethodID mid = (*pEnv)->GetStaticMethodID(pEnv, javaBitmapClass, "createBitmap", "(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;");
       //create Bitmap.Config
       //reference: https://forums.oracle.com/thread/1548728
       const wchar_t* configName = L"ARGB_8888";
       int len = wcslen(configName);
       jstring jConfigName;
       if (sizeof(wchar_t) != sizeof(jchar)) {
           //wchar_t is defined as different length than jchar(2 bytes)
           jchar* str = (jchar*)malloc((len+1)*sizeof(jchar));
           for (i = 0; i &lt; len; ++i) {
               str[i] = (jchar)configName[i];
           }
           str[len] = 0;
           jConfigName = (*pEnv)->NewString(pEnv, (const jchar*)str, len);
       } else {
           //wchar_t is defined same length as jchar(2 bytes)
           jConfigName = (*pEnv)->NewString(pEnv, (const jchar*)configName, len);
       }
       jclass bitmapConfigClass = (*pEnv)->FindClass(pEnv, "android/graphics/Bitmap$Config");
       jobject javaBitmapConfig = (*pEnv)->CallStaticObjectMethod(pEnv, bitmapConfigClass,
               (*pEnv)->GetStaticMethodID(pEnv, bitmapConfigClass, "valueOf", "(Ljava/lang/String;)Landroid/graphics/Bitmap$Config;"), jConfigName);
       //create the bitmap
       return (*pEnv)->CallStaticObjectMethod(pEnv, javaBitmapClass, mid, pWidth, pHeight, javaBitmapConfig);
    }

    jintArray naGetVideoRes(JNIEnv *pEnv, jobject pObj) {
       jintArray lRes;
       if (NULL == codecCtx) {
           return NULL;
       }
       lRes = (*pEnv)->NewIntArray(pEnv, 2);
       if (lRes == NULL) {
           LOGI(1, "cannot allocate memory for video size");
           return NULL;
       }
       jint lVideoRes[2];
       lVideoRes[0] = codecCtx->width;
       lVideoRes[1] = codecCtx->height;
       (*pEnv)->SetIntArrayRegion(pEnv, lRes, 0, 2, lVideoRes);
       return lRes;
    }

    void naSetSurface(JNIEnv *pEnv, jobject pObj, jobject pSurface) {
       if (0 != pSurface) {
           // get the native window reference
           window = ANativeWindow_fromSurface(pEnv, pSurface);
           // set format and size of window buffer
           ANativeWindow_setBuffersGeometry(window, 0, 0, WINDOW_FORMAT_RGBA_8888);
       } else {
           // release the native window
           ANativeWindow_release(window);
       }
    }

    jint naSetup(JNIEnv *pEnv, jobject pObj, int pWidth, int pHeight) {
       width = pWidth;
       height = pHeight;
       //create a bitmap as the buffer for frameRGBA
       bitmap = createBitmap(pEnv, pWidth, pHeight);
       if (AndroidBitmap_lockPixels(pEnv, bitmap, &amp;buffer) &lt; 0)
           return -1;
       //get the scaling context
       sws_ctx = sws_getContext (
               codecCtx->width,
               codecCtx->height,
               codecCtx->pix_fmt,
               pWidth,
               pHeight,
               AV_PIX_FMT_RGBA,
               SWS_BILINEAR,
               NULL,
               NULL,
               NULL
       );
       // Assign appropriate parts of bitmap to image planes in pFrameRGBA
       // Note that pFrameRGBA is an AVFrame, but AVFrame is a superset
       // of AVPicture
       avpicture_fill((AVPicture *)frameRGBA, buffer, AV_PIX_FMT_RGBA,
               pWidth, pHeight);
       return 0;
    }

    void finish(JNIEnv *pEnv) {
       //unlock the bitmap
       AndroidBitmap_unlockPixels(pEnv, bitmap);
       av_free(buffer);
       // Free the RGB image
       av_free(frameRGBA);
       // Free the YUV frame
       av_free(decodedFrame);
       // Close the codec
       avcodec_close(codecCtx);
       // Close the video file
       avformat_close_input(&amp;formatCtx);
    }

    void decodeAndRender(JNIEnv *pEnv) {
       ANativeWindow_Buffer    windowBuffer;
       AVPacket                packet;
       int                     i=0;
       int                     frameFinished;
       int                     lineCnt;
       while(av_read_frame(formatCtx, &amp;packet)>=0 &amp;&amp; !stop) {
           // Is this a packet from the video stream?
           if(packet.stream_index==videoStream) {
               // Decode video frame
               avcodec_decode_video2(codecCtx, decodedFrame, &amp;frameFinished,
                  &amp;packet);
               // Did we get a video frame?
               if(frameFinished) {
                   // Convert the image from its native format to RGBA
                   sws_scale
                   (
                       sws_ctx,
                       (uint8_t const * const *)decodedFrame->data,
                       decodedFrame->linesize,
                       0,
                       codecCtx->height,
                       frameRGBA->data,
                       frameRGBA->linesize
                   );
                   // lock the window buffer
                   if (ANativeWindow_lock(window, &amp;windowBuffer, NULL) &lt; 0) {
                       LOGE("cannot lock window");
                   } else {
                       // draw the frame on buffer
                       LOGI("copy buffer %d:%d:%d", width, height, width*height*4);
                       LOGI("window buffer: %d:%d:%d", windowBuffer.width,
                               windowBuffer.height, windowBuffer.stride);
                       memcpy(windowBuffer.bits, buffer,  width * height * 4);
                       // unlock the window buffer and post it to display
                       ANativeWindow_unlockAndPost(window);
                       // count number of frames
                       ++i;
                   }
               }
           }
           // Free the packet that was allocated by av_read_frame
           av_free_packet(&amp;packet);
       }
       LOGI("total No. of frames decoded and rendered %d", i);
       finish(pEnv);
    }

    /**
    * start the video playback
    */
    void naPlay(JNIEnv *pEnv, jobject pObj) {
       //create a new thread for video decode and render
       pthread_t decodeThread;
       stop = 0;
       pthread_create(&amp;decodeThread, NULL, decodeAndRender, NULL);
    }

    /**
    * stop the video playback
    */
    void naStop(JNIEnv *pEnv, jobject pObj) {
       stop = 1;
    }

    jint JNI_OnLoad(JavaVM* pVm, void* reserved) {
       JNIEnv* env;
       if ((*pVm)->GetEnv(pVm, (void **)&amp;env, JNI_VERSION_1_6) != JNI_OK) {
            return -1;
       }
       JNINativeMethod nm[8];
       nm[0].name = "naInit";
       nm[0].signature = "(Ljava/lang/String;)I";
       nm[0].fnPtr = (void*)naInit;

       nm[1].name = "naSetSurface";
       nm[1].signature = "(Landroid/view/Surface;)V";
       nm[1].fnPtr = (void*)naSetSurface;

       nm[2].name = "naGetVideoRes";
       nm[2].signature = "()[I";
       nm[2].fnPtr = (void*)naGetVideoRes;

       nm[3].name = "naSetup";
       nm[3].signature = "(II)I";
       nm[3].fnPtr = (void*)naSetup;

       nm[4].name = "naPlay";
       nm[4].signature = "()V";
       nm[4].fnPtr = (void*)naPlay;

       nm[5].name = "naStop";
       nm[5].signature = "()V";
       nm[5].fnPtr = (void*)naStop;

       jclass cls = (*env)->FindClass(env, "roman10/tutorial/android_ffmpeg_tutorial02/MainActivity");
       //Register methods with env->RegisterNatives.
       (*env)->RegisterNatives(env, cls, nm, 6);
       return JNI_VERSION_1_6;
    }

    Here is the build.sh

    #!/bin/bash
    NDK=$HOME/Desktop/adt/android-ndk-r9
    SYSROOT=$NDK/platforms/android-9/arch-arm/
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
    function build_one
    {
    ./configure \
       --prefix=$PREFIX \
       --enable-shared \
       --disable-static \
       --disable-doc \
       --disable-ffmpeg \
       --disable-ffplay \
       --disable-ffprobe \
       --disable-ffserver \
       --disable-avdevice \
       --disable-doc \
       --disable-symver \
       --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
       --target-os=linux \
       --arch=arm \
       --enable-cross-compile \
       --sysroot=$SYSROOT \
       --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
       --extra-ldflags="$ADDI_LDFLAGS" \
       $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    }
    CPU=arm
    PREFIX=$(pwd)/android/$CPU
    ADDI_CFLAGS="-marm"
    build_one

    It works on the Galaxy tab2. what can i do to make it work on all devices ?? Please help me..