Align the input buffer in ffplay, introduce a public macro for aligned declarations
authorLuca Barbato <lu_zero@gentoo.org>
Thu, 31 Aug 2006 19:14:00 +0000 (19:14 +0000)
committerLuca Barbato <lu_zero@gentoo.org>
Thu, 31 Aug 2006 19:14:00 +0000 (19:14 +0000)
Update the avcodec_decode_audio and the float_to_int16 descriptions accordingly

Originally committed as revision 6147 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffplay.c
libavcodec/avcodec.h
libavcodec/dsputil.h
libavutil/common.h

index 46638bdc5c25f2a3aa7f9cfe69d90af328474c74..77d4aaa9834233f75cd98b82c89ac0678fa900de 100644 (file)
--- a/ffplay.c
+++ b/ffplay.c
@@ -133,7 +133,7 @@ typedef struct VideoState {
     int audio_hw_buf_size;
     /* samples output by the codec. we reserve more space for avsync
        compensation */
-    uint8_t audio_buf[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2];
+    DECLARE_ALIGNED(16,uint8_t,audio_buf[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2]);
     unsigned int audio_buf_size; /* in bytes */
     int audio_buf_index; /* in bytes */
     AVPacket audio_pkt;
index 99d34a6a28dc185b69f66b0bec775c8691f6dfbc..195c258b04673938a946faa57fd44bef4a1e26c4 100644 (file)
@@ -17,8 +17,8 @@ extern "C" {
 #define AV_STRINGIFY(s)         AV_TOSTRING(s)
 #define AV_TOSTRING(s) #s
 
-#define LIBAVCODEC_VERSION_INT  ((51<<16)+(11<<8)+0)
-#define LIBAVCODEC_VERSION      51.11.0
+#define LIBAVCODEC_VERSION_INT  ((51<<16)+(12<<8)+0)
+#define LIBAVCODEC_VERSION      51.12.0
 #define LIBAVCODEC_BUILD        LIBAVCODEC_VERSION_INT
 
 #define LIBAVCODEC_IDENT        "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
@@ -2451,6 +2451,17 @@ int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, v
  */
 int avcodec_open(AVCodecContext *avctx, AVCodec *codec);
 
+/**
+ * Decode an audio frame.
+ *
+ * @param avctx the codec context.
+ * @param samples output buffer, 16 byte aligned
+ * @param frame_size_ptr the output buffer size in bytes, zero if no frame could be compressed
+ * @param buf input buffer, 16 byte aligned
+ * @param buf_size the input buffer size
+ * @return 0 if successful, -1 if not.
+ */
+
 int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples,
                          int *frame_size_ptr,
                          uint8_t *buf, int buf_size);
index 1fc292be0f44fa8b3a6577afb8c62a37612fa0d4..3e47901dc0077db24c7c1221b5a6bb47e83790b3 100644 (file)
@@ -323,7 +323,7 @@ typedef struct DSPContext {
     void (*vector_fmul_add_add)(float *dst, const float *src0, const float *src1, const float *src2, int src3, int len, int step);
 
     /* C version: convert floats from the range [384.0,386.0] to ints in [-32768,32767]
-     * asm versions: convert floats from [-32768.0,32767.0] without rescaling */
+     * simd versions: convert floats from [-32768.0,32767.0] without rescaling and arrays are 16byte aligned */
     void (*float_to_int16)(int16_t *dst, const float *src, int len);
 
     /* (I)DCT */
index 60ea46a83d21ed11855b957173970559f23ecdfa..e47688be99c2c7d48eb8c1661682a0cbe1da89ce 100644 (file)
@@ -364,6 +364,13 @@ tend= read_time();\
 #endif
 
 /* memory */
+
+#ifdef __GNUC__
+  #define DECLARE_ALIGNED(n,t,v)       t v __attribute__ ((aligned (n)))
+#else
+  #define DECLARE_ALIGNED(n,t,v)      __declspec(align(n)) t v
+#endif
+
 void *av_malloc(unsigned int size);
 void *av_realloc(void *ptr, unsigned int size);
 void av_free(void *ptr);