Oooops,

Here is the patch.

Cheers,
Pedro Alves



Pedro Alves escreveu:
Danny Backx escreveu:
On Mon, 2007-01-22 at 21:13 +0000, Cool_Zer0 wrote:
I just want to be able to decompress H.263 :(
Now that I've compiled FFMpeg it seems that isn't working correctly...
Is this something we can help you with ?


Another user (Daniel, CCed) has reported me privately that he built FFMpeg with cegcc, and that loading it from an MSVC app wasn't working. My guess is that the cegcc.dll isn't being correctly initialized. There was a thread about that a few months ago, about someone loading a cegcc based dll into a MSVC app, and that resolved into a patch being integrated into cegcc. I can't find that thread in my archives, but the symptoms were very close. Anyway, with current mingw32ce from trunk and with the attached
patch I could build ffmpeg with the following options.

../ffmpeg-checkout-2007-01-21/configure \
    --enable-mingwce \
    --cross-compile \
    --cross-prefix=arm-wince-mingw32ce- \
    --arch=arm \
    --target-os=WinCE \
    --disable-static \
    --enable-shared

The new math stuff is needed because ffmpeg is calling llrint.

I didn't try building with any plugins enabled. Nuno, Daniel, could you try this? I have no idea if it runs or if it runs correctly. I never used FFMpeg before. Any hints on how to test it? I think I may take a stab at building VLC with this. Should be a smooth re-port, since it used to build with the VLC mingwce toolchain (Looks like the nightly builds for WinCE stopped a year ago).

Anyway, if this is reported to work, I will clean a bit the errno stuff (perhaps introduce AV_ENOMEM, etc.) and
post a patch upstream.

Cheers,
Pedro Alves



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Cegcc-devel mailing list
Cegcc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cegcc-devel


Index: configure
===================================================================
--- configure   (revision 7594)
+++ configure   (working copy)
@@ -103,6 +103,7 @@ show_help(){
   echo "  --source-path=PATH       path to source code [$source_path]"
   echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools 
[$cross_prefix]"
   echo "  --cross-compile          assume a cross-compiler is used"
+  echo "  --target-os              Set the target OS. Only valid when cross 
compiling."
   echo "  --cc=CC                  use C compiler CC [$cc]"
   echo "  --make=MAKE              use specified make [$make]"
   echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
@@ -661,8 +662,24 @@ memalign_hack="no"
 asmalign_pot="unknown"
 LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
 
+# Handle these earlier, the rest will be handled after setting
+# the target OS defaults.
+for opt do
+  optval="${opt#*=}"
+  case "$opt" in
+  --cross-compile) cross_compile=yes
+  ;;
+  --target-os=*) targetos="$optval"
+  ;;
+  esac
+done
+
 # OS specific
+
+if [ "$cross_compile" != "yes" ]; then
 targetos=`uname -s`
+fi
+
 case $targetos in
 BeOS)
 PREFIX="/boot/home/config"
@@ -777,6 +794,11 @@ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME
 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
 FFSERVERLDFLAGS=-Wl,-bind_at_load
 ;;
+WinCE* | MINGW32CE*)
+mingw32="yes"
+wince="yes"
+add_extralibs "-lmmtimer"
+;;
 MINGW32*)
 # Note: the rest of the mingw32 config is done afterwards as mingw32
 # can be forced on the command line for Linux cross compilation.
@@ -891,6 +913,8 @@ for opt do
   ;;
   --cross-compile) cross_compile=yes
   ;;
+  --target-os=*) targetos="$optval"
+  ;;
   --cc=*) cc="$optval"
   ;;
   --make=*) make="$optval"
@@ -1105,7 +1129,14 @@ EOF
     EXESUF=".exe"
     SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
     SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
-    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
+
+    case "$arch" in
+      x86_32) machine="i386" ;;
+      arm*) machine="arm" ;;
+      mips) machine="mips" ;;
+      sh4) machine="sh4" ;; 
+    esac
+    SLIB_EXTRA_CMD="-lib /machine:$machine /def:\$(@:${SLIBSUF}=.def)"
     SLIB_INSTALL_EXTRA_CMD="-install -m 644 
\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) 
\"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
     SHFLAGS="-shared 
-Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)
 -Wl,--enable-runtime-pseudo-reloc"
 fi
@@ -1832,6 +1863,7 @@ if test "$gpl" = "no" ; then
 else
     echo "License: GPL"
 fi
+echo "Target OS                 $targetos"
 
 echo "Creating config.mak and config.h..."
 
Index: ffmpeg.c
===================================================================
--- ffmpeg.c    (revision 7594)
+++ ffmpeg.c    (working copy)
@@ -19,7 +19,9 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 #define HAVE_AV_CONFIG_H
+#ifndef __MINGW32CE__
 #include <signal.h>
+#endif
 #include <limits.h>
 #include "avformat.h"
 #include "swscale.h"
@@ -303,6 +305,7 @@ static void term_exit(void)
 #endif
 }
 
+#if defined (SIGINT) || defined (SIGTERM)
 static volatile sig_atomic_t received_sigterm = 0;
 
 static void
@@ -311,6 +314,7 @@ sigterm_handler(int sig)
     received_sigterm = sig;
     term_exit();
 }
+#endif
 
 static void term_init(void)
 {
@@ -333,8 +337,13 @@ static void term_init(void)
     signal(SIGQUIT, sigterm_handler); /* Quit (POSIX).  */
 #endif
 
+#ifdef SIGINT
     signal(SIGINT , sigterm_handler); /* Interrupt (ANSI).  */
+#endif
+#ifdef SIGTERM
     signal(SIGTERM, sigterm_handler); /* Termination (ANSI).  */
+#endif
+
     /*
     register a function to be called at normal program termination
     */
@@ -347,7 +356,9 @@ static void term_init(void)
 /* read a key without blocking */
 static int read_key(void)
 {
-#ifdef __MINGW32__
+#ifdef __MINGW32CE__
+    return getchar();
+#elif defined __MINGW32__
     if(kbhit())
         return(getch());
 #else
@@ -1833,7 +1844,11 @@ static int av_encode(AVFormatContext **o
     stream_no_data = 0;
     key = -1;
 
+#ifndef __MINGW32CE__
     for(; received_sigterm == 0;) {
+#else
+    for(;;) {
+#endif
         int file_index, ist_index;
         AVPacket pkt;
         double ipts_min;
@@ -3967,12 +3982,14 @@ int main(int argc, char **argv)
     powerpc_display_perf_report();
 #endif /* POWERPC_PERFORMANCE_REPORT */
 
+#ifndef __MINGW32CE__
     if (received_sigterm) {
         fprintf(stderr,
             "Received signal %d: terminating.\n",
             (int) received_sigterm);
         exit (255);
     }
+#endif
 
     exit(0); /* not all OS-es handle main() return value */
     return 0;
Index: libavutil/bswap.h
===================================================================
--- libavutil/bswap.h   (revision 7594)
+++ libavutil/bswap.h   (working copy)
@@ -116,7 +116,7 @@ static av_always_inline uint16_t bswap_1
 
 #ifdef ARCH_ARM
 static av_always_inline uint32_t bswap_32(uint32_t x){
-    uint32_t t;
+    uint32_t t = 0;
     __asm__ (
       "eor %1, %0, %0, ror #16 \n\t"
       "bic %1, %1, #0xFF0000   \n\t"
Index: libavutil/common.h
===================================================================
--- libavutil/common.h  (revision 7594)
+++ libavutil/common.h  (working copy)
@@ -37,11 +37,12 @@
 #    include <string.h>
 #    include <ctype.h>
 #    include <limits.h>
-#    ifndef __BEOS__
-#        include <errno.h>
-#    else
+#    ifdef __BEOS__
 #        include "berrno.h"
+#      elif !defined __MINGW32CE__
+#        include <errno.h>
 #    endif
+
 #    include <math.h>
 #endif /* HAVE_AV_CONFIG_H */
 
Index: libavcodec/dv.c
===================================================================
--- libavcodec/dv.c     (revision 7594)
+++ libavcodec/dv.c     (working copy)
@@ -39,6 +39,7 @@
 #include "mpegvideo.h"
 #include "simple_idct.h"
 #include "dvdata.h"
+#include "libavformat/avio.h"
 
 //#undef NDEBUG
 //#include <assert.h>
Index: libavcodec/sonic.c
===================================================================
--- libavcodec/sonic.c  (revision 7594)
+++ libavcodec/sonic.c  (working copy)
@@ -21,6 +21,7 @@
 #include "avcodec.h"
 #include "bitstream.h"
 #include "golomb.h"
+#include "libavformat/avio.h"
 
 /**
  * @file sonic.c
Index: libavcodec/g726.c
===================================================================
--- libavcodec/g726.c   (revision 7594)
+++ libavcodec/g726.c   (working copy)
@@ -25,6 +25,7 @@
 #include "avcodec.h"
 #include "common.h"
 #include "bitstream.h"
+#include "libavformat/avio.h"
 
 /**
  * G.726 11bit float.
Index: libavcodec/gifdec.c
===================================================================
--- libavcodec/gifdec.c (revision 7594)
+++ libavcodec/gifdec.c (working copy)
@@ -25,6 +25,7 @@
 #include "avcodec.h"
 #include "bytestream.h"
 #include "lzw.h"
+#include "libavformat/avio.h"
 
 #define GCE_DISPOSAL_NONE       0
 #define GCE_DISPOSAL_INPLACE    1
Index: libavformat/utils.c
===================================================================
--- libavformat/utils.c (revision 7594)
+++ libavformat/utils.c (working copy)
@@ -2685,7 +2685,6 @@ int parse_frame_rate(int *frame_rate, in
  *  S+[.m...]
  * @endcode
  */
-#ifndef CONFIG_WINCE
 int64_t parse_date(const char *datestr, int duration)
 {
     const char *p;
@@ -2793,7 +2792,6 @@ int64_t parse_date(const char *datestr, 
     }
     return negative ? -t : t;
 }
-#endif /* CONFIG_WINCE */
 
 /**
  * Attempts to find a specific tag in a URL.
Index: libavformat/avio.h
===================================================================
--- libavformat/avio.h  (revision 7594)
+++ libavformat/avio.h  (working copy)
@@ -202,6 +202,15 @@ int udp_set_remote_url(URLContext *h, co
 int udp_get_local_port(URLContext *h);
 int udp_get_file_handle(URLContext *h);
 
+#ifdef __MINGW32CE__
+# define EPIPE 2
+# define EAGAIN 3
+# define ENOENT 4
+# define ENOMEM 5
+# define EINVAL 6
+# define EIO 7
+#endif
+
 /* tcp.c  */
 extern URLProtocol tcp_protocol;
 
Index: libavformat/framehook.c
===================================================================
--- libavformat/framehook.c     (revision 7594)
+++ libavformat/framehook.c     (working copy)
@@ -18,7 +18,9 @@
  * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
+#ifndef __MINGW32CE__
 #include <errno.h>
+#endif
 #include "config.h"
 #include "avformat.h"
 #include "framehook.h"
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Cegcc-devel mailing list
Cegcc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cegcc-devel

Reply via email to