On Fri, 21 Sep 2012 11:23:38 -0400, Justin Ruggles <[email protected]> wrote: > --- > libavcodec/mace.c | 32 +++++++++++++++----------------- > 1 files changed, 15 insertions(+), 17 deletions(-) > > diff --git a/libavcodec/mace.c b/libavcodec/mace.c > index 9d07180..8fef839 100644 > --- a/libavcodec/mace.c > +++ b/libavcodec/mace.c > @@ -187,9 +187,7 @@ static int16_t read_table(ChannelData *chd, uint8_t val, > int tab_idx) > return current; > } > > -static void chomp3(ChannelData *chd, int16_t *output, uint8_t val, > - int tab_idx, > - uint32_t numChannels) > +static void chomp3(ChannelData *chd, int16_t *output, uint8_t val, int > tab_idx) > { > > int16_t current = read_table(chd, val, tab_idx); > @@ -200,9 +198,7 @@ static void chomp3(ChannelData *chd, int16_t *output, > uint8_t val, > *output = QT_8S_2_16S(current); > } > > -static void chomp6(ChannelData *chd, int16_t *output, uint8_t val, > - int tab_idx, > - uint32_t numChannels) > +static void chomp6(ChannelData *chd, int16_t *output, uint8_t val, int > tab_idx) > { > int16_t current = read_table(chd, val, tab_idx); > > @@ -222,8 +218,8 @@ static void chomp6(ChannelData *chd, int16_t *output, > uint8_t val, > > output[0] = QT_8S_2_16S(chd->previous + chd->prev2 - > ((chd->prev2-current) >> 2)); > - output[numChannels] = QT_8S_2_16S(chd->previous + current + > - ((chd->prev2-current) >> 2)); > + output[1] = QT_8S_2_16S(chd->previous + current + > + ((chd->prev2-current) >> 2)); > chd->prev2 = chd->previous; > chd->previous = current; > } > @@ -234,7 +230,7 @@ static av_cold int mace_decode_init(AVCodecContext * > avctx) > > if (avctx->channels > 2) > return -1; > - avctx->sample_fmt = AV_SAMPLE_FMT_S16; > + avctx->sample_fmt = AV_SAMPLE_FMT_S16P; > > avcodec_get_frame_defaults(&ctx->frame); > avctx->coded_frame = &ctx->frame; > @@ -247,7 +243,7 @@ static int mace_decode_frame(AVCodecContext *avctx, void > *data, > { > const uint8_t *buf = avpkt->data; > int buf_size = avpkt->size; > - int16_t *samples; > + int16_t **samples; > MACEContext *ctx = avctx->priv_data; > int i, j, k, l, ret; > int is_mace3 = (avctx->codec_id == AV_CODEC_ID_MACE3); > @@ -258,10 +254,10 @@ static int mace_decode_frame(AVCodecContext *avctx, > void *data, > av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); > return ret; > } > - samples = (int16_t *)ctx->frame.data[0]; > + samples = (int16_t **)ctx->frame.extended_data; > > for(i = 0; i < avctx->channels; i++) { > - int16_t *output = samples + i; > + int16_t *output = samples[i]; > > for (j=0; j < buf_size / (avctx->channels << is_mace3); j++) > for (k=0; k < (1 << is_mace3); k++) { > @@ -273,13 +269,11 @@ static int mace_decode_frame(AVCodecContext *avctx, > void *data, > > for (l=0; l < 3; l++) { > if (is_mace3) > - chomp3(&ctx->chd[i], output, val[1][l], l, > - avctx->channels); > + chomp3(&ctx->chd[i], output, val[1][l], l); > else > - chomp6(&ctx->chd[i], output, val[0][l], l, > - avctx->channels); > + chomp6(&ctx->chd[i], output, val[0][l], l); > > - output += avctx->channels << (1-is_mace3); > + output += 1 << (1-is_mace3); > } > } > } > @@ -299,6 +293,8 @@ AVCodec ff_mace3_decoder = { > .decode = mace_decode_frame, > .capabilities = CODEC_CAP_DR1, > .long_name = NULL_IF_CONFIG_SMALL("MACE (Macintosh Audio > Compression/Expansion) 3:1"), > + .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, > + AV_SAMPLE_FMT_NONE }, > }; > > AVCodec ff_mace6_decoder = { > @@ -310,4 +306,6 @@ AVCodec ff_mace6_decoder = { > .decode = mace_decode_frame, > .capabilities = CODEC_CAP_DR1, > .long_name = NULL_IF_CONFIG_SMALL("MACE (Macintosh Audio > Compression/Expansion) 6:1"), > + .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, > + AV_SAMPLE_FMT_NONE }, > }; > -- > 1.7.1 >
Looks ok. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
