[Ffmpeg-devel] [PATCH] build with '--enable-gprof'

Dmitry Antipov dmantipov
Wed Dec 6 14:42:32 CET 2006


Hello,

this patch is a simplest attempt to build with '--enable-gprof', which
looks broken in the current SVN trunk. Since '-pg' and '-fomit-frame-pointer'
are mutually exclusive, a few x86 inline assembly code cannot be used within
this configuration. So, this code is placed under additional !defined(HAVE_GPROF).

Dmitry

Index: configure
===================================================================
--- configure	(revision 7231)
+++ configure	(working copy)
@@ -1187,7 +1187,7 @@
      fi
  fi

-if test $optimize != "no"; then
+if test $optimize != "no" && test $gprof != "yes"; then
      add_cflags "-fomit-frame-pointer"
  fi

@@ -1678,8 +1678,8 @@
  fi

  if test "$gprof" = "yes" ; then
-    add_cflags  "-p"
-    add_ldflags "-p"
+    add_cflags  "-pg"
+    add_ldflags "-pg"
  fi

  VHOOKCFLAGS="-fPIC $CFLAGS"
Index: libavcodec/cabac.h
===================================================================
--- libavcodec/cabac.h	(revision 7231)
+++ libavcodec/cabac.h	(working copy)
@@ -376,7 +376,7 @@
  #define BYTE        "16"
  #define BYTEEND     "20"
  #endif
-#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
+#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) && !defined(HAVE_GPROF)
      int bit;

  #ifndef BRANCHLESS_CABAC_DECODER
@@ -532,7 +532,7 @@
      );
      bit&=1;
  #endif /* BRANCHLESS_CABAC_DECODER */
-#else /* defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) */
+#else /* defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) && !defined(HAVE_GPROF) */
      int s = *state;
      int RangeLPS= ff_h264_lps_range[2*(c->range&0xC0) + s];
      int bit, lps_mask attribute_unused;
@@ -571,7 +571,7 @@
      if(!(c->low & CABAC_MASK))
          refill2(c);
  #endif /* BRANCHLESS_CABAC_DECODER */
-#endif /* defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) */
+#endif /* defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) && !defined(HAVE_GPROF) */
      return bit;
  }

@@ -632,7 +632,7 @@


  static always_inline int get_cabac_bypass_sign(CABACContext *c, int val){
-#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
+#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) && !defined(HAVE_GPROF)
      asm volatile(
          "movl "RANGE    "(%1), %%ebx            \n\t"
          "movl "LOW      "(%1), %%eax            \n\t"
@@ -680,7 +680,7 @@

  //FIXME the x86 code from this file should be moved into i386/h264 or cabac something.c/h (note ill kill you if you move my code away from under my fingers before iam finished with it!)
  //FIXME use some macros to avoid duplicatin get_cabac (cant be done yet as that would make optimization work hard)
-#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
+#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) && !defined(HAVE_GPROF)
  static int decode_significance_x86(CABACContext *c, int max_coeff, uint8_t *significant_coeff_ctx_base, int *index){
      void *end= significant_coeff_ctx_base + max_coeff - 1;
      int minusstart= -(int)significant_coeff_ctx_base;
@@ -786,7 +786,7 @@
      );
      return coeff_count;
  }
-#endif /* defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) */
+#endif /* defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) !defined(HAVE_GPROF) */

  /**
   *
Index: libavcodec/h264.c
===================================================================
--- libavcodec/h264.c	(revision 7231)
+++ libavcodec/h264.c	(working copy)
@@ -6054,7 +6054,7 @@
              index[coeff_count++] = last;\
          }
          const uint8_t *sig_off = significant_coeff_flag_offset_8x8[MB_FIELD];
-#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
+#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__)) && !defined(HAVE_GPROF)
          coeff_count= decode_significance_8x8_x86(CC, significant_coeff_ctx_base, index, sig_off);
      } else {
          coeff_count= decode_significance_x86(CC, max_coeff, significant_coeff_ctx_base, index);




More information about the ffmpeg-devel mailing list