mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
guess framerate
Originally committed as revision 2866 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
c276af0471
commit
bb01a3f021
@ -40,12 +40,16 @@ static int flv_probe(AVProbeData *p)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define FRAME_RATE_UNKNOWN 31415 //yes i know its beatifull
|
||||||
|
|
||||||
static int flv_read_header(AVFormatContext *s,
|
static int flv_read_header(AVFormatContext *s,
|
||||||
AVFormatParameters *ap)
|
AVFormatParameters *ap)
|
||||||
{
|
{
|
||||||
int offset, flags;
|
int offset, flags;
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
|
|
||||||
|
s->ctx_flags |= AVFMTCTX_NOHEADER; //ok we have a header but theres no fps, codec type, sample_rate, ...
|
||||||
|
|
||||||
av_set_pts_info(s, 24, 1, 1000); /* 24 bit pts in ms */
|
av_set_pts_info(s, 24, 1, 1000); /* 24 bit pts in ms */
|
||||||
|
|
||||||
url_fskip(&s->pb, 4);
|
url_fskip(&s->pb, 4);
|
||||||
@ -57,8 +61,9 @@ static int flv_read_header(AVFormatContext *s,
|
|||||||
return AVERROR_NOMEM;
|
return AVERROR_NOMEM;
|
||||||
st->codec.codec_type = CODEC_TYPE_VIDEO;
|
st->codec.codec_type = CODEC_TYPE_VIDEO;
|
||||||
st->codec.codec_id = CODEC_ID_FLV1;
|
st->codec.codec_id = CODEC_ID_FLV1;
|
||||||
st->codec.frame_rate= ap->frame_rate;
|
st->codec.frame_rate= FRAME_RATE_UNKNOWN;
|
||||||
st->codec.frame_rate_base= ap->frame_rate_base;
|
// st->codec.frame_rate= ap->frame_rate;
|
||||||
|
// st->codec.frame_rate_base= ap->frame_rate_base;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((flags & 4)) {
|
if ((flags & 4)) {
|
||||||
@ -118,11 +123,17 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
}
|
}
|
||||||
goto skip;
|
goto skip;
|
||||||
found:
|
found:
|
||||||
if(type == 8){
|
if(type == 8 && st->codec.sample_rate == 0){
|
||||||
st->codec.channels = (flags&1)+1;
|
st->codec.channels = (flags&1)+1;
|
||||||
st->codec.sample_rate = (44100<<((flags>>2)&3))>>3;
|
st->codec.sample_rate = (44100<<((flags>>2)&3))>>3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//guess the frame rate
|
||||||
|
if(type==9 && st->codec.frame_rate == FRAME_RATE_UNKNOWN && pts){
|
||||||
|
st->codec.frame_rate_base=1;
|
||||||
|
st->codec.frame_rate= (1000 + pts/2)/pts;
|
||||||
|
}
|
||||||
|
|
||||||
if (av_new_packet(pkt, size) < 0)
|
if (av_new_packet(pkt, size) < 0)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user