Commit 98145875 authored by Luca Barbato's avatar Luca Barbato

Align the input buffer in ffplay, introduce a public macro for aligned declarations

Update the avcodec_decode_audio and the float_to_int16 descriptions accordingly

Originally committed as revision 6147 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 12ccec0f
...@@ -133,7 +133,7 @@ typedef struct VideoState { ...@@ -133,7 +133,7 @@ typedef struct VideoState {
int audio_hw_buf_size; int audio_hw_buf_size;
/* samples output by the codec. we reserve more space for avsync /* samples output by the codec. we reserve more space for avsync
compensation */ 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 */ unsigned int audio_buf_size; /* in bytes */
int audio_buf_index; /* in bytes */ int audio_buf_index; /* in bytes */
AVPacket audio_pkt; AVPacket audio_pkt;
......
...@@ -17,8 +17,8 @@ extern "C" { ...@@ -17,8 +17,8 @@ extern "C" {
#define AV_STRINGIFY(s) AV_TOSTRING(s) #define AV_STRINGIFY(s) AV_TOSTRING(s)
#define AV_TOSTRING(s) #s #define AV_TOSTRING(s) #s
#define LIBAVCODEC_VERSION_INT ((51<<16)+(11<<8)+0) #define LIBAVCODEC_VERSION_INT ((51<<16)+(12<<8)+0)
#define LIBAVCODEC_VERSION 51.11.0 #define LIBAVCODEC_VERSION 51.12.0
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT #define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) #define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
...@@ -2451,6 +2451,17 @@ int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, v ...@@ -2451,6 +2451,17 @@ int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, v
*/ */
int avcodec_open(AVCodecContext *avctx, AVCodec *codec); 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 avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples,
int *frame_size_ptr, int *frame_size_ptr,
uint8_t *buf, int buf_size); uint8_t *buf, int buf_size);
......
...@@ -323,7 +323,7 @@ typedef struct DSPContext { ...@@ -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); 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] /* 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); void (*float_to_int16)(int16_t *dst, const float *src, int len);
/* (I)DCT */ /* (I)DCT */
......
...@@ -364,6 +364,13 @@ tend= read_time();\ ...@@ -364,6 +364,13 @@ tend= read_time();\
#endif #endif
/* memory */ /* 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_malloc(unsigned int size);
void *av_realloc(void *ptr, unsigned int size); void *av_realloc(void *ptr, unsigned int size);
void av_free(void *ptr); void av_free(void *ptr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment