X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fra288.c;h=a306231129ea418a23028024f1eb1b72e74d6006;hb=380146924ecad2e05e9dcc5c3c2e1b5ba47c51e8;hp=deaafd2d579e4132f8948eb628ead4d05b113369;hpb=a903f8f087b0bdcc5643054147f3a5f278e7eb99;p=ffmpeg diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c index deaafd2d579..a306231129e 100644 --- a/libavcodec/ra288.c +++ b/libavcodec/ra288.c @@ -21,7 +21,9 @@ #include "libavutil/channel_layout.h" #include "libavutil/float_dsp.h" +#include "libavutil/internal.h" #include "avcodec.h" +#include "internal.h" #define BITSTREAM_READER_LE #include "get_bits.h" #include "ra288.h" @@ -35,9 +37,7 @@ #define RA288_BLOCK_SIZE 5 #define RA288_BLOCKS_PER_FRAME 32 -typedef struct { - AVFrame frame; - DSPContext dsp; +typedef struct RA288Context { AVFloatDSPContext fdsp; DECLARE_ALIGNED(32, float, sp_lpc)[FFALIGN(36, 16)]; ///< LPC coefficients for speech data (spec: A) DECLARE_ALIGNED(32, float, gain_lpc)[FFALIGN(10, 16)]; ///< LPC coefficients for gain (spec: GB) @@ -67,10 +67,7 @@ static av_cold int ra288_decode_init(AVCodecContext *avctx) avctx->channel_layout = AV_CH_LAYOUT_MONO; avctx->sample_fmt = AV_SAMPLE_FMT_FLT; - avpriv_float_dsp_init(&ractx->fdsp, avctx->flags & CODEC_FLAG_BITEXACT); - - avcodec_get_frame_defaults(&ractx->frame); - avctx->coded_frame = &ractx->frame; + avpriv_float_dsp_init(&ractx->fdsp, avctx->flags & AV_CODEC_FLAG_BITEXACT); return 0; } @@ -78,7 +75,7 @@ static av_cold int ra288_decode_init(AVCodecContext *avctx) static void convolve(float *tgt, const float *src, int len, int n) { for (; n >= 0; n--) - tgt[n] = ff_scalarproduct_float_c(src, src - n, len); + tgt[n] = avpriv_scalarproduct_float_c(src, src - n, len); } @@ -93,7 +90,7 @@ static void decode(RA288Context *ractx, float gain, int cb_coef) memmove(ractx->sp_hist + 70, ractx->sp_hist + 75, 36*sizeof(*block)); /* block 46 of G.728 spec */ - sum = 32.; + sum = 32.0; for (i=0; i < 10; i++) sum -= gain_block[9-i] * ractx->gain_lpc[i]; @@ -107,7 +104,7 @@ static void decode(RA288Context *ractx, float gain, int cb_coef) for (i=0; i < 5; i++) buffer[i] = codetable[cb_coef][i] * sumsum; - sum = ff_scalarproduct_float_c(buffer, buffer, 5) * ((1 << 24) / 5.); + sum = avpriv_scalarproduct_float_c(buffer, buffer, 5) * ((1 << 24) / 5.0); sum = FFMAX(sum, 1); @@ -153,7 +150,7 @@ static void do_hybrid_window(RA288Context *ractx, } /* Multiply by the white noise correcting factor (WNCF). */ - *out *= 257./256.; + *out *= 257.0 / 256.0; } /** @@ -177,6 +174,7 @@ static void backward_filter(RA288Context *ractx, static int ra288_decode_frame(AVCodecContext * avctx, void *data, int *got_frame_ptr, AVPacket *avpkt) { + AVFrame *frame = data; const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; float *out; @@ -192,12 +190,12 @@ static int ra288_decode_frame(AVCodecContext * avctx, void *data, } /* get output buffer */ - ractx->frame.nb_samples = RA288_BLOCK_SIZE * RA288_BLOCKS_PER_FRAME; - if ((ret = avctx->get_buffer(avctx, &ractx->frame)) < 0) { + frame->nb_samples = RA288_BLOCK_SIZE * RA288_BLOCKS_PER_FRAME; + if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return ret; } - out = (float *)ractx->frame.data[0]; + out = (float *)frame->data[0]; init_get_bits(&gb, buf, avctx->block_align * 8); @@ -219,19 +217,18 @@ static int ra288_decode_frame(AVCodecContext * avctx, void *data, } } - *got_frame_ptr = 1; - *(AVFrame *)data = ractx->frame; + *got_frame_ptr = 1; return avctx->block_align; } AVCodec ff_ra_288_decoder = { .name = "real_288", + .long_name = NULL_IF_CONFIG_SMALL("RealAudio 2.0 (28.8K)"), .type = AVMEDIA_TYPE_AUDIO, .id = AV_CODEC_ID_RA_288, .priv_data_size = sizeof(RA288Context), .init = ra288_decode_init, .decode = ra288_decode_frame, - .capabilities = CODEC_CAP_DR1, - .long_name = NULL_IF_CONFIG_SMALL("RealAudio 2.0 (28.8K)"), + .capabilities = AV_CODEC_CAP_DR1, };