mirror of https://git.ffmpeg.org/ffmpeg.git
lavf: stop using avpriv_flac_parse_streaminfo()
The only parameters needed by the demuxers are the sample rate and sample count, which can be trivially extracted manually, without resorting to an avpriv function.
This commit is contained in:
parent
56dc46a189
commit
7784f47762
|
@ -567,8 +567,6 @@ OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.o
|
||||||
OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o
|
OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o
|
||||||
OBJS-$(CONFIG_CAF_DEMUXER) += mpeg4audio.o mpegaudiodata.o \
|
OBJS-$(CONFIG_CAF_DEMUXER) += mpeg4audio.o mpegaudiodata.o \
|
||||||
ac3tab.o
|
ac3tab.o
|
||||||
OBJS-$(CONFIG_FLAC_DEMUXER) += flac.o flacdata.o \
|
|
||||||
xiph.o
|
|
||||||
OBJS-$(CONFIG_FLAC_MUXER) += flac.o flacdata.o
|
OBJS-$(CONFIG_FLAC_MUXER) += flac.o flacdata.o
|
||||||
OBJS-$(CONFIG_FLV_DEMUXER) += mpeg4audio.o
|
OBJS-$(CONFIG_FLV_DEMUXER) += mpeg4audio.o
|
||||||
OBJS-$(CONFIG_GXF_DEMUXER) += mpeg12data.o
|
OBJS-$(CONFIG_GXF_DEMUXER) += mpeg12data.o
|
||||||
|
@ -588,7 +586,7 @@ OBJS-$(CONFIG_MOV_MUXER) += mpeg4audio.o mpegaudiodata.o
|
||||||
OBJS-$(CONFIG_MPEGTS_MUXER) += mpeg4audio.o
|
OBJS-$(CONFIG_MPEGTS_MUXER) += mpeg4audio.o
|
||||||
OBJS-$(CONFIG_MPEGTS_DEMUXER) += mpeg4audio.o mpegaudiodata.o
|
OBJS-$(CONFIG_MPEGTS_DEMUXER) += mpeg4audio.o mpegaudiodata.o
|
||||||
OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o
|
OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o
|
||||||
OBJS-$(CONFIG_OGG_DEMUXER) += xiph.o flac.o flacdata.o \
|
OBJS-$(CONFIG_OGG_DEMUXER) += xiph.o \
|
||||||
mpeg12data.o \
|
mpeg12data.o \
|
||||||
dirac.o
|
dirac.o
|
||||||
OBJS-$(CONFIG_OGG_MUXER) += xiph.o flac.o flacdata.o
|
OBJS-$(CONFIG_OGG_MUXER) += xiph.o flac.o flacdata.o
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
#include "oggdec.h"
|
#include "oggdec.h"
|
||||||
#include "vorbiscomment.h"
|
#include "vorbiscomment.h"
|
||||||
#include "replaygain.h"
|
#include "replaygain.h"
|
||||||
#include "libavcodec/bytestream.h"
|
|
||||||
|
|
||||||
static int flac_read_header(AVFormatContext *s)
|
static int flac_read_header(AVFormatContext *s)
|
||||||
{
|
{
|
||||||
|
@ -76,7 +75,9 @@ static int flac_read_header(AVFormatContext *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (metadata_type == FLAC_METADATA_TYPE_STREAMINFO) {
|
if (metadata_type == FLAC_METADATA_TYPE_STREAMINFO) {
|
||||||
FLACStreaminfo si;
|
uint32_t samplerate;
|
||||||
|
uint64_t samples;
|
||||||
|
|
||||||
/* STREAMINFO can only occur once */
|
/* STREAMINFO can only occur once */
|
||||||
if (found_streaminfo) {
|
if (found_streaminfo) {
|
||||||
av_freep(&buffer);
|
av_freep(&buffer);
|
||||||
|
@ -91,14 +92,16 @@ static int flac_read_header(AVFormatContext *s)
|
||||||
st->codec->extradata_size = metadata_size;
|
st->codec->extradata_size = metadata_size;
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
|
|
||||||
/* get codec params from STREAMINFO header */
|
/* get sample rate and sample count from STREAMINFO header;
|
||||||
avpriv_flac_parse_streaminfo(st->codec, &si, st->codec->extradata);
|
* other parameters will be extracted by the parser */
|
||||||
|
samplerate = AV_RB24(st->codec->extradata + 10) >> 4;
|
||||||
|
samples = (AV_RB64(st->codec->extradata + 13) >> 24) & ((1ULL << 36) - 1);
|
||||||
|
|
||||||
/* set time base and duration */
|
/* set time base and duration */
|
||||||
if (si.samplerate > 0) {
|
if (samplerate > 0) {
|
||||||
avpriv_set_pts_info(st, 64, 1, si.samplerate);
|
avpriv_set_pts_info(st, 64, 1, samplerate);
|
||||||
if (si.samples > 0)
|
if (samples > 0)
|
||||||
st->duration = si.samples;
|
st->duration = samples;
|
||||||
}
|
}
|
||||||
} else if (metadata_type == FLAC_METADATA_TYPE_CUESHEET) {
|
} else if (metadata_type == FLAC_METADATA_TYPE_CUESHEET) {
|
||||||
uint8_t isrc[13];
|
uint8_t isrc[13];
|
||||||
|
|
|
@ -34,7 +34,6 @@ flac_header (AVFormatContext * s, int idx)
|
||||||
struct ogg_stream *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
AVStream *st = s->streams[idx];
|
AVStream *st = s->streams[idx];
|
||||||
GetBitContext gb;
|
GetBitContext gb;
|
||||||
FLACStreaminfo si;
|
|
||||||
int mdt;
|
int mdt;
|
||||||
|
|
||||||
if (os->buf[os->pstart] == 0xff)
|
if (os->buf[os->pstart] == 0xff)
|
||||||
|
@ -46,6 +45,8 @@ flac_header (AVFormatContext * s, int idx)
|
||||||
|
|
||||||
if (mdt == OGG_FLAC_METADATA_TYPE_STREAMINFO) {
|
if (mdt == OGG_FLAC_METADATA_TYPE_STREAMINFO) {
|
||||||
uint8_t *streaminfo_start = os->buf + os->pstart + 5 + 4 + 4 + 4;
|
uint8_t *streaminfo_start = os->buf + os->pstart + 5 + 4 + 4 + 4;
|
||||||
|
uint32_t samplerate;
|
||||||
|
|
||||||
skip_bits_long(&gb, 4*8); /* "FLAC" */
|
skip_bits_long(&gb, 4*8); /* "FLAC" */
|
||||||
if(get_bits(&gb, 8) != 1) /* unsupported major version */
|
if(get_bits(&gb, 8) != 1) /* unsupported major version */
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -56,8 +57,6 @@ flac_header (AVFormatContext * s, int idx)
|
||||||
if (get_bits_long(&gb, 32) != FLAC_STREAMINFO_SIZE)
|
if (get_bits_long(&gb, 32) != FLAC_STREAMINFO_SIZE)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
avpriv_flac_parse_streaminfo(st->codec, &si, streaminfo_start);
|
|
||||||
|
|
||||||
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
|
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||||
st->codec->codec_id = AV_CODEC_ID_FLAC;
|
st->codec->codec_id = AV_CODEC_ID_FLAC;
|
||||||
st->need_parsing = AVSTREAM_PARSE_HEADERS;
|
st->need_parsing = AVSTREAM_PARSE_HEADERS;
|
||||||
|
@ -67,7 +66,11 @@ flac_header (AVFormatContext * s, int idx)
|
||||||
memcpy(st->codec->extradata, streaminfo_start, FLAC_STREAMINFO_SIZE);
|
memcpy(st->codec->extradata, streaminfo_start, FLAC_STREAMINFO_SIZE);
|
||||||
st->codec->extradata_size = FLAC_STREAMINFO_SIZE;
|
st->codec->extradata_size = FLAC_STREAMINFO_SIZE;
|
||||||
|
|
||||||
avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate);
|
samplerate = AV_RB24(st->codec->extradata + 10) >> 4;
|
||||||
|
if (!samplerate)
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
|
||||||
|
avpriv_set_pts_info(st, 64, 1, samplerate);
|
||||||
} else if (mdt == FLAC_METADATA_TYPE_VORBIS_COMMENT) {
|
} else if (mdt == FLAC_METADATA_TYPE_VORBIS_COMMENT) {
|
||||||
ff_vorbis_stream_comment(s, st, os->buf + os->pstart + 4, os->psize - 4);
|
ff_vorbis_stream_comment(s, st, os->buf + os->pstart + 4, os->psize - 4);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue