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_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 vorbis_data.o \
|
OBJS-$(CONFIG_FLAC_DEMUXER) += flac.o flacdata.o vorbis_data.o
|
||||||
xiph.o
|
|
||||||
OBJS-$(CONFIG_FLAC_MUXER) += 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_FLV_DEMUXER) += mpeg4audio.o
|
||||||
OBJS-$(CONFIG_GXF_DEMUXER) += mpeg12data.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_MXF_MUXER) += dnxhddata.o
|
||||||
OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o
|
OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o
|
||||||
OBJS-$(CONFIG_OGA_MUXER) += xiph.o flac.o flacdata.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 \
|
mpeg12data.o \
|
||||||
dirac.o vorbis_data.o
|
dirac.o vorbis_data.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)
|
||||||
{
|
{
|
||||||
@ -75,7 +74,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) {
|
||||||
RETURN_ERROR(AVERROR_INVALIDDATA);
|
RETURN_ERROR(AVERROR_INVALIDDATA);
|
||||||
@ -88,14 +89,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;
|
||||||
@ -66,7 +65,11 @@ flac_header (AVFormatContext * s, int idx)
|
|||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
memcpy(st->codec->extradata, streaminfo_start, st->codec->extradata_size);
|
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) {
|
} 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
Block a user