Browse Source

adxdec: get rid of an avpriv function

The only thing the demuxer needs is the sample rate to set the timebase,
which can be simply read with AV_RB32.
tags/n2.3
Anton Khirnov 11 years ago
parent
commit
d5cf5afabb
5 changed files with 25 additions and 15 deletions
  1. +0
    -1
      libavcodec/Makefile
  2. +10
    -2
      libavcodec/adx.c
  3. +5
    -0
      libavcodec/adx.h
  4. +5
    -5
      libavcodec/adxdec.c
  5. +5
    -7
      libavformat/adxdec.c

+ 0
- 1
libavcodec/Makefile View File

@@ -556,7 +556,6 @@ OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.o

# libavformat dependencies
OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o
OBJS-$(CONFIG_ADX_DEMUXER) += adx.o
OBJS-$(CONFIG_CAF_DEMUXER) += mpeg4audio.o mpegaudiodata.o \
ac3tab.o
OBJS-$(CONFIG_FLAC_DEMUXER) += flac.o flacdata.o \


+ 10
- 2
libavcodec/adx.c View File

@@ -35,8 +35,8 @@ void ff_adx_calculate_coeffs(int cutoff, int sample_rate, int bits, int *coeff)
coeff[1] = lrintf(-(c * c) * (1 << bits));
}

int avpriv_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
int bufsize, int *header_size, int *coeff)
int ff_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
int bufsize, int *header_size, int *coeff)
{
int offset, cutoff;

@@ -80,3 +80,11 @@ int avpriv_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
*header_size = offset;
return 0;
}

#if LIBAVCODEC_VERSION_MAJOR < 56
int avpriv_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
int bufsize, int *header_size, int *coeff)
{
return ff_adx_decode_header(avctx, buf, bufsize, header_size, coeff);
}
#endif

+ 5
- 0
libavcodec/adx.h View File

@@ -74,7 +74,12 @@ void ff_adx_calculate_coeffs(int cutoff, int sample_rate, int bits, int *coeff);
* @param[out] coeff 2 LPC coefficients, can be NULL
* @return data offset or negative error code if header is invalid
*/
int ff_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
int bufsize, int *header_size, int *coeff);

#if LIBAVCODEC_VERSION_MAJOR < 56
int avpriv_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
int bufsize, int *header_size, int *coeff);
#endif

#endif /* AVCODEC_ADX_H */

+ 5
- 5
libavcodec/adxdec.c View File

@@ -40,9 +40,9 @@ static av_cold int adx_decode_init(AVCodecContext *avctx)
int ret, header_size;

if (avctx->extradata_size >= 24) {
if ((ret = avpriv_adx_decode_header(avctx, avctx->extradata,
avctx->extradata_size, &header_size,
c->coeff)) < 0) {
if ((ret = ff_adx_decode_header(avctx, avctx->extradata,
avctx->extradata_size, &header_size,
c->coeff)) < 0) {
av_log(avctx, AV_LOG_ERROR, "error parsing ADX header\n");
return AVERROR_INVALIDDATA;
}
@@ -110,8 +110,8 @@ static int adx_decode_frame(AVCodecContext *avctx, void *data,

if (!c->header_parsed && buf_size >= 2 && AV_RB16(buf) == 0x8000) {
int header_size;
if ((ret = avpriv_adx_decode_header(avctx, buf, buf_size, &header_size,
c->coeff)) < 0) {
if ((ret = ff_adx_decode_header(avctx, buf, buf_size, &header_size,
c->coeff)) < 0) {
av_log(avctx, AV_LOG_ERROR, "error parsing ADX header\n");
return AVERROR_INVALIDDATA;
}


+ 5
- 7
libavformat/adxdec.c View File

@@ -24,7 +24,6 @@
*/

#include "libavutil/intreadwrite.h"
#include "libavcodec/adx.h"
#include "avformat.h"
#include "internal.h"

@@ -66,7 +65,6 @@ static int adx_read_header(AVFormatContext *s)
{
ADXDemuxerContext *c = s->priv_data;
AVCodecContext *avctx;
int ret;

AVStream *st = avformat_new_stream(s, NULL);
if (!st)
@@ -87,11 +85,11 @@ static int adx_read_header(AVFormatContext *s)
}
avctx->extradata_size = c->header_size;

ret = avpriv_adx_decode_header(avctx, avctx->extradata,
avctx->extradata_size, &c->header_size,
NULL);
if (ret)
return ret;
if (avctx->extradata_size < 12) {
av_log(s, AV_LOG_ERROR, "Invalid extradata size.\n");
return AVERROR_INVALIDDATA;
}
avctx->sample_rate = AV_RB32(avctx->extradata + 8);

st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
st->codec->codec_id = s->iformat->raw_codec_id;


Loading…
Cancel
Save