Merge commit '7784f47762d59e859b4d0f74b3e021ad9368ee2c'
* commit '7784f47762d59e859b4d0f74b3e021ad9368ee2c': lavf: stop using avpriv_flac_parse_streaminfo() Conflicts: libavcodec/Makefile Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
b6a9956396
@ -678,8 +678,7 @@ OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.o
|
||||
OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o
|
||||
OBJS-$(CONFIG_CAF_DEMUXER) += mpeg4audio.o mpegaudiodata.o \
|
||||
ac3tab.o
|
||||
OBJS-$(CONFIG_FLAC_DEMUXER) += flac.o flacdata.o vorbis_data.o \
|
||||
xiph.o
|
||||
OBJS-$(CONFIG_FLAC_DEMUXER) += flac.o flacdata.o vorbis_data.o
|
||||
OBJS-$(CONFIG_FLAC_MUXER) += flac.o flacdata.o vorbis_data.o
|
||||
OBJS-$(CONFIG_FLV_DEMUXER) += mpeg4audio.o
|
||||
OBJS-$(CONFIG_GXF_DEMUXER) += mpeg12data.o
|
||||
@ -701,7 +700,7 @@ OBJS-$(CONFIG_MPEGTS_DEMUXER) += mpeg4audio.o mpegaudiodata.o
|
||||
OBJS-$(CONFIG_MXF_MUXER) += dnxhddata.o
|
||||
OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o
|
||||
OBJS-$(CONFIG_OGA_MUXER) += xiph.o flac.o flacdata.o
|
||||
OBJS-$(CONFIG_OGG_DEMUXER) += xiph.o flac.o flacdata.o \
|
||||
OBJS-$(CONFIG_OGG_DEMUXER) += xiph.o \
|
||||
mpeg12data.o \
|
||||
dirac.o vorbis_data.o
|
||||
OBJS-$(CONFIG_OGG_MUXER) += xiph.o flac.o flacdata.o \
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "oggdec.h"
|
||||
#include "vorbiscomment.h"
|
||||
#include "replaygain.h"
|
||||
#include "libavcodec/bytestream.h"
|
||||
|
||||
static int flac_read_header(AVFormatContext *s)
|
||||
{
|
||||
@ -75,7 +74,9 @@ static int flac_read_header(AVFormatContext *s)
|
||||
}
|
||||
|
||||
if (metadata_type == FLAC_METADATA_TYPE_STREAMINFO) {
|
||||
FLACStreaminfo si;
|
||||
uint32_t samplerate;
|
||||
uint64_t samples;
|
||||
|
||||
/* STREAMINFO can only occur once */
|
||||
if (found_streaminfo) {
|
||||
RETURN_ERROR(AVERROR_INVALIDDATA);
|
||||
@ -88,14 +89,16 @@ static int flac_read_header(AVFormatContext *s)
|
||||
st->codec->extradata_size = metadata_size;
|
||||
buffer = NULL;
|
||||
|
||||
/* get codec params from STREAMINFO header */
|
||||
avpriv_flac_parse_streaminfo(st->codec, &si, st->codec->extradata);
|
||||
/* get sample rate and sample count from STREAMINFO header;
|
||||
* 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 */
|
||||
if (si.samplerate > 0) {
|
||||
avpriv_set_pts_info(st, 64, 1, si.samplerate);
|
||||
if (si.samples > 0)
|
||||
st->duration = si.samples;
|
||||
if (samplerate > 0) {
|
||||
avpriv_set_pts_info(st, 64, 1, samplerate);
|
||||
if (samples > 0)
|
||||
st->duration = samples;
|
||||
}
|
||||
} else if (metadata_type == FLAC_METADATA_TYPE_CUESHEET) {
|
||||
uint8_t isrc[13];
|
||||
|
@ -34,7 +34,6 @@ flac_header (AVFormatContext * s, int idx)
|
||||
struct ogg_stream *os = ogg->streams + idx;
|
||||
AVStream *st = s->streams[idx];
|
||||
GetBitContext gb;
|
||||
FLACStreaminfo si;
|
||||
int mdt;
|
||||
|
||||
if (os->buf[os->pstart] == 0xff)
|
||||
@ -46,6 +45,8 @@ flac_header (AVFormatContext * s, int idx)
|
||||
|
||||
if (mdt == OGG_FLAC_METADATA_TYPE_STREAMINFO) {
|
||||
uint8_t *streaminfo_start = os->buf + os->pstart + 5 + 4 + 4 + 4;
|
||||
uint32_t samplerate;
|
||||
|
||||
skip_bits_long(&gb, 4*8); /* "FLAC" */
|
||||
if(get_bits(&gb, 8) != 1) /* unsupported major version */
|
||||
return -1;
|
||||
@ -56,8 +57,6 @@ flac_header (AVFormatContext * s, int idx)
|
||||
if (get_bits_long(&gb, 32) != FLAC_STREAMINFO_SIZE)
|
||||
return -1;
|
||||
|
||||
avpriv_flac_parse_streaminfo(st->codec, &si, streaminfo_start);
|
||||
|
||||
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||
st->codec->codec_id = AV_CODEC_ID_FLAC;
|
||||
st->need_parsing = AVSTREAM_PARSE_HEADERS;
|
||||
@ -66,7 +65,11 @@ flac_header (AVFormatContext * s, int idx)
|
||||
return AVERROR(ENOMEM);
|
||||
memcpy(st->codec->extradata, streaminfo_start, st->codec->extradata_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) {
|
||||
ff_vorbis_stream_comment(s, st, os->buf + os->pstart + 4, os->psize - 4);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user