summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/flac.h1
-rw-r--r--libavcodec/flacdec.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/flac.h b/libavcodec/flac.h
index 246ec44fd2..02b41e1f99 100644
--- a/libavcodec/flac.h
+++ b/libavcodec/flac.h
@@ -53,6 +53,7 @@ enum {
int samplerate; /**< sample rate */\
int channels; /**< number of channels */\
int bps; /**< bits-per-sample */\
+ int64_t samples; /**< total number of samples */\
typedef struct FLACStreaminfo {
FLACSTREAMINFO
diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c
index 7ebf01595b..ee3a3f2ca5 100644
--- a/libavcodec/flacdec.c
+++ b/libavcodec/flacdec.c
@@ -169,7 +169,8 @@ void ff_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo *s,
avctx->channels = s->channels;
avctx->sample_rate = s->samplerate;
- skip_bits(&gb, 36); /* total num of samples */
+ s->samples = get_bits_long(&gb, 32) << 4;
+ s->samples |= get_bits_long(&gb, 4);
skip_bits(&gb, 64); /* md5 sum */
skip_bits(&gb, 64); /* md5 sum */