amr: remove shift out of the AMR_BIT() macro.
authorRonald S. Bultje <rsbultje@gmail.com>
Wed, 4 Jul 2012 03:36:44 +0000 (20:36 -0700)
committerRonald S. Bultje <rsbultje@gmail.com>
Wed, 4 Jul 2012 14:46:53 +0000 (07:46 -0700)
MSVC doesn't like the offsetof(..) >> 1 construct, it interprets it as
a non-literal, thus causing use of this in static tables to fail
compilation.

libavcodec/amr.h
libavcodec/amrnbdata.h
libavcodec/amrwbdata.h

index ae6e4d1..9498d57 100644 (file)
@@ -61,7 +61,7 @@ static inline void ff_amr_bit_reorder(uint16_t *out, int size,
            field <<= 1;
            field |= data[bit >> 3] >> (bit & 7) & 1;
         }
-        out[field_offset] = field;
+        out[field_offset >> 1] = field;
     }
 }
 
index 26ff7fb..c2e2f8a 100644 (file)
@@ -71,7 +71,7 @@ typedef struct {
 } AMRNBFrame;
 
 /** The index of a frame parameter */
-#define AMR_BIT(field)                  (offsetof(AMRNBFrame, field) >> 1)
+#define AMR_BIT(field)                  (offsetof(AMRNBFrame, field))
 /** The index of a subframe-specific parameter */
 #define AMR_OF(frame_num, variable)     AMR_BIT(subframe[frame_num].variable)
 
index 5421c23..83a93e9 100644 (file)
@@ -82,7 +82,7 @@ typedef struct {
 } AMRWBFrame;
 
 /** The index of a frame parameter */
-#define AMR_BIT(field)                  (offsetof(AMRWBFrame, field) >> 1)
+#define AMR_BIT(field)                  (offsetof(AMRWBFrame, field))
 /** The index of a subframe-specific parameter */
 #define AMR_OF(frame_num, variable)     AMR_BIT(subframe[frame_num].variable)