Browse Source

sample_rate value is not always correct (is there anything in quicktime which is?) so try to guess it from time_scale

Originally committed as revision 4558 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 20 years ago
parent
commit
302c389e4f
1 changed files with 8 additions and 1 deletions
  1. +8
    -1
      libavformat/mov.c

+ 8
- 1
libavformat/mov.c View File

@@ -781,7 +781,7 @@ static int mov_read_stco(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
{ {
AVStream *st = c->fc->streams[c->fc->nb_streams-1]; AVStream *st = c->fc->streams[c->fc->nb_streams-1];
//MOVStreamContext *sc = (MOVStreamContext *)st->priv_data;
MOVStreamContext *sc = (MOVStreamContext *)st->priv_data;
int entries, frames_per_sample; int entries, frames_per_sample;
uint32_t format; uint32_t format;
uint8_t codec_name[32]; uint8_t codec_name[32];
@@ -1071,6 +1071,9 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
st->codec->bits_per_sample = get_be16(pb); /* bits per sample */ st->codec->bits_per_sample = get_be16(pb); /* bits per sample */
get_be32(pb); get_be32(pb);
st->codec->sample_rate = get_be16(pb); /* sample rate, not always correct */ st->codec->sample_rate = get_be16(pb); /* sample rate, not always correct */
if(st->codec->sample_rate == 1) //nonsese rate? -> ignore
st->codec->sample_rate= 0;

get_be16(pb); get_be16(pb);
c->mp4=1; c->mp4=1;
@@ -1196,6 +1199,10 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
} }
} }
} }
if(st->codec->codec_type==CODEC_TYPE_AUDIO && st->codec->sample_rate==0 && sc->time_scale>1) {
st->codec->sample_rate= sc->time_scale;
}


return 0; return 0;
} }


Loading…
Cancel
Save