Commit f6a767b9 authored by michael's avatar michael

Add avg_frame_rate.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@20826 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent e3b82c87
...@@ -466,6 +466,11 @@ typedef struct AVStream { ...@@ -466,6 +466,11 @@ typedef struct AVStream {
* used internally, NOT PART OF PUBLIC API, dont read or write from outside of libav* * used internally, NOT PART OF PUBLIC API, dont read or write from outside of libav*
*/ */
struct AVPacketList *last_in_packet_buffer; struct AVPacketList *last_in_packet_buffer;
/**
* Average framerate
*/
AVRational avg_frame_rate;
} AVStream; } AVStream;
#define AV_PROGRAM_RUNNING 1 #define AV_PROGRAM_RUNNING 1
......
...@@ -2223,6 +2223,10 @@ int av_find_stream_info(AVFormatContext *ic) ...@@ -2223,6 +2223,10 @@ int av_find_stream_info(AVFormatContext *ic)
} }
for(i=0;i<ic->nb_streams;i++) { for(i=0;i<ic->nb_streams;i++) {
st = ic->streams[i]; st = ic->streams[i];
if(codec_info_nb_frames[i]>2)
av_reduce(&st->avg_frame_rate.num, &st->avg_frame_rate.den,
(codec_info_nb_frames[i]-2)*(int64_t)st->time_base.den,
codec_info_duration[i] *(int64_t)st->time_base.num, 60000);
if (st->codec->codec_type == CODEC_TYPE_VIDEO) { if (st->codec->codec_type == CODEC_TYPE_VIDEO) {
if(st->codec->codec_id == CODEC_ID_RAWVIDEO && !st->codec->codec_tag && !st->codec->bits_per_coded_sample) if(st->codec->codec_id == CODEC_ID_RAWVIDEO && !st->codec->codec_tag && !st->codec->bits_per_coded_sample)
st->codec->codec_tag= avcodec_pix_fmt_to_codec_tag(st->codec->pix_fmt); st->codec->codec_tag= avcodec_pix_fmt_to_codec_tag(st->codec->pix_fmt);
...@@ -2900,6 +2904,8 @@ static void dump_stream_format(AVFormatContext *ic, int i, int index, int is_out ...@@ -2900,6 +2904,8 @@ static void dump_stream_format(AVFormatContext *ic, int i, int index, int is_out
display_aspect_ratio.num, display_aspect_ratio.den); display_aspect_ratio.num, display_aspect_ratio.den);
} }
if(st->codec->codec_type == CODEC_TYPE_VIDEO){ if(st->codec->codec_type == CODEC_TYPE_VIDEO){
if(st->avg_frame_rate.den && st->avg_frame_rate.num)
print_fps(av_q2d(st->avg_frame_rate), "fps");
if(st->r_frame_rate.den && st->r_frame_rate.num) if(st->r_frame_rate.den && st->r_frame_rate.num)
print_fps(av_q2d(st->r_frame_rate), "tbr"); print_fps(av_q2d(st->r_frame_rate), "tbr");
if(st->time_base.den && st->time_base.num) if(st->time_base.den && st->time_base.num)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment