X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fpcm.c;h=959c50b27925604b16bb32c208bc69fd93a28610;hb=549d0bdca53af7a6e0c612ab4b03baecf3a5878f;hp=26801fd561845a77442d0cc8c3b95f6b0f64707f;hpb=7e52080cb18332cb1da9fe133498750b6b4b0fb3;p=ffmpeg diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c index 26801fd5618..959c50b2792 100644 --- a/libavcodec/pcm.c +++ b/libavcodec/pcm.c @@ -48,16 +48,6 @@ static av_cold int pcm_encode_init(AVCodecContext *avctx) avctx->bits_per_coded_sample = av_get_bits_per_sample(avctx->codec->id); avctx->block_align = avctx->channels * avctx->bits_per_coded_sample / 8; avctx->bit_rate = avctx->block_align * avctx->sample_rate * 8; - avctx->coded_frame = avcodec_alloc_frame(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); - - return 0; -} - -static av_cold int pcm_encode_close(AVCodecContext *avctx) -{ - av_freep(&avctx->coded_frame); return 0; } @@ -253,7 +243,7 @@ static av_cold int pcm_decode_init(AVCodecContext *avctx) #if HAVE_BIGENDIAN #define DECODE_PLANAR(size, endian, src, dst, n, shift, offset) \ { \ - int av_unused n2; \ + int n2; \ n /= avctx->channels; \ for (c = 0; c < avctx->channels; c++) { \ samples = frame->extended_data[c]; \ @@ -264,7 +254,6 @@ static av_cold int pcm_decode_init(AVCodecContext *avctx) #else #define DECODE_PLANAR(size, endian, src, dst, n, shift, offset) \ { \ - int av_unused n2; \ n /= avctx->channels; \ for (c = 0; c < avctx->channels; c++) { \ samples = frame->extended_data[c]; \ @@ -348,6 +337,9 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data, samples += 2; } break; + case AV_CODEC_ID_PCM_S16BE_PLANAR: + DECODE_PLANAR(16, be16, src, samples, n, 0, 0); + break; case AV_CODEC_ID_PCM_S16LE_PLANAR: DECODE_PLANAR(16, le16, src, samples, n, 0, 0); break; @@ -453,15 +445,14 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data, #define PCM_ENCODER_1(id_, sample_fmt_, name_, long_name_) \ AVCodec ff_ ## name_ ## _encoder = { \ .name = #name_, \ + .long_name = NULL_IF_CONFIG_SMALL(long_name_), \ .type = AVMEDIA_TYPE_AUDIO, \ .id = AV_CODEC_ID_ ## id_, \ .init = pcm_encode_init, \ .encode2 = pcm_encode_frame, \ - .close = pcm_encode_close, \ - .capabilities = CODEC_CAP_VARIABLE_FRAME_SIZE, \ + .capabilities = AV_CODEC_CAP_VARIABLE_FRAME_SIZE, \ .sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \ AV_SAMPLE_FMT_NONE }, \ - .long_name = NULL_IF_CONFIG_SMALL(long_name_), \ } #define PCM_ENCODER_2(cf, id, sample_fmt, name, long_name) \ @@ -475,15 +466,15 @@ AVCodec ff_ ## name_ ## _encoder = { \ #define PCM_DECODER_1(id_, sample_fmt_, name_, long_name_) \ AVCodec ff_ ## name_ ## _decoder = { \ .name = #name_, \ + .long_name = NULL_IF_CONFIG_SMALL(long_name_), \ .type = AVMEDIA_TYPE_AUDIO, \ .id = AV_CODEC_ID_ ## id_, \ .priv_data_size = sizeof(PCMDecode), \ .init = pcm_decode_init, \ .decode = pcm_decode_frame, \ - .capabilities = CODEC_CAP_DR1, \ + .capabilities = AV_CODEC_CAP_DR1, \ .sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \ AV_SAMPLE_FMT_NONE }, \ - .long_name = NULL_IF_CONFIG_SMALL(long_name_), \ } #define PCM_DECODER_2(cf, id, sample_fmt, name, long_name) \ @@ -507,6 +498,7 @@ PCM_DECODER(PCM_LXF, AV_SAMPLE_FMT_S32P, pcm_lxf, "PCM signed PCM_CODEC (PCM_MULAW, AV_SAMPLE_FMT_S16, pcm_mulaw, "PCM mu-law"); PCM_CODEC (PCM_S8, AV_SAMPLE_FMT_U8, pcm_s8, "PCM signed 8-bit"); PCM_CODEC (PCM_S16BE, AV_SAMPLE_FMT_S16, pcm_s16be, "PCM signed 16-bit big-endian"); +PCM_DECODER(PCM_S16BE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16be_planar, "PCM signed 16-bit big-endian planar"); PCM_CODEC (PCM_S16LE, AV_SAMPLE_FMT_S16, pcm_s16le, "PCM signed 16-bit little-endian"); PCM_DECODER(PCM_S16LE_PLANAR, AV_SAMPLE_FMT_S16P, pcm_s16le_planar, "PCM 16-bit little-endian planar"); PCM_CODEC (PCM_S24BE, AV_SAMPLE_FMT_S32, pcm_s24be, "PCM signed 24-bit big-endian");