X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmpc8.c;h=84dbb61f7d3959f089fcb3be2e93699f614a5053;hb=5c2fb561d94fc51d76ab21d6f7cc5b6cc3aa599c;hp=0331789bbbe8b91df576e3cdeaa59973f84b9ac8;hpb=717addecad77d85d329a4b502f4098d4912679d7;p=ffmpeg diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c index 0331789bbbe..84dbb61f7d3 100644 --- a/libavcodec/mpc8.c +++ b/libavcodec/mpc8.c @@ -25,12 +25,12 @@ * divided into 32 subbands. */ +#include "libavutil/channel_layout.h" #include "libavutil/lfg.h" #include "avcodec.h" #include "get_bits.h" -#include "dsputil.h" +#include "internal.h" #include "mpegaudiodsp.h" -#include "libavutil/audioconvert.h" #include "mpc.h" #include "mpc8data.h" @@ -118,7 +118,6 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) } memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); av_lfg_init(&c->rnd, 0xDEADBEEF); - ff_dsputil_init(&c->dsp, avctx); ff_mpadsp_init(&c->mpadsp); ff_mpc_init(); @@ -129,7 +128,7 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) c->maxbands = get_bits(&gb, 5) + 1; channels = get_bits(&gb, 4) + 1; if (channels > 2) { - av_log_missing_feature(avctx, "Multichannel MPC SV8", 1); + avpriv_request_sample(avctx, "Multichannel MPC SV8"); return AVERROR_PATCHWELCOME; } c->MSS = get_bits1(&gb); @@ -229,15 +228,13 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) } vlc_initialized = 1; - avcodec_get_frame_defaults(&c->frame); - avctx->coded_frame = &c->frame; - return 0; } static int mpc8_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; MPCContext *c = avctx->priv_data; @@ -249,8 +246,8 @@ static int mpc8_decode_frame(AVCodecContext * avctx, void *data, int last[2]; /* get output buffer */ - c->frame.nb_samples = MPC_FRAME_SIZE; - if ((res = avctx->get_buffer(avctx, &c->frame)) < 0) { + frame->nb_samples = MPC_FRAME_SIZE; + if ((res = ff_get_buffer(avctx, frame, 0)) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return res; } @@ -406,7 +403,7 @@ static int mpc8_decode_frame(AVCodecContext * avctx, void *data, } ff_mpc_dequantize_and_synth(c, maxband - 1, - (int16_t **)c->frame.extended_data, + (int16_t **)frame->extended_data, avctx->channels); c->cur_frame++; @@ -417,8 +414,7 @@ static int mpc8_decode_frame(AVCodecContext * avctx, void *data, if(c->cur_frame >= c->frames) c->cur_frame = 0; - *got_frame_ptr = 1; - *(AVFrame *)data = c->frame; + *got_frame_ptr = 1; return c->cur_frame ? c->last_bits_used >> 3 : buf_size; } @@ -431,14 +427,14 @@ static av_cold void mpc8_decode_flush(AVCodecContext *avctx) AVCodec ff_mpc8_decoder = { .name = "mpc8", + .long_name = NULL_IF_CONFIG_SMALL("Musepack SV8"), .type = AVMEDIA_TYPE_AUDIO, .id = AV_CODEC_ID_MUSEPACK8, .priv_data_size = sizeof(MPCContext), .init = mpc8_decode_init, .decode = mpc8_decode_frame, .flush = mpc8_decode_flush, - .capabilities = CODEC_CAP_DR1, - .long_name = NULL_IF_CONFIG_SMALL("Musepack SV8"), + .capabilities = AV_CODEC_CAP_DR1, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_NONE }, };