Browse Source

lavf: move nb_decoded_frames out of info.

This way the variable is available outside find_stream_info

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.0
Michael Niedermayer 13 years ago
parent
commit
2107009e7d
2 changed files with 10 additions and 5 deletions
  1. +6
    -1
      libavformat/avformat.h
  2. +4
    -4
      libavformat/utils.c

+ 6
- 1
libavformat/avformat.h View File

@@ -741,7 +741,6 @@ typedef struct AVStream {
int duration_count;
double duration_error[2][2][MAX_STD_TIMEBASES];
int64_t codec_info_duration;
int nb_decoded_frames;
int found_decoder;

/**
@@ -823,6 +822,12 @@ typedef struct AVStream {
* Number of samples to skip at the start of the frame decoded from the next packet.
*/
int skip_samples;

/**
* Number of internally decoded frames, used internally in libavformat, do not access
* its lifetime differs from info which is why its not in that structure.
*/
int nb_decoded_frames;
} AVStream;

#define AV_PROGRAM_RUNNING 1


+ 4
- 4
libavformat/utils.c View File

@@ -910,11 +910,11 @@ static int has_decode_delay_been_guessed(AVStream *st)
return 1;
#endif
if(st->codec->has_b_frames<3)
return st->info->nb_decoded_frames >= 7;
return st->nb_decoded_frames >= 7;
else if(st->codec->has_b_frames<4)
return st->info->nb_decoded_frames >= 18;
return st->nb_decoded_frames >= 18;
else
return st->info->nb_decoded_frames >= 20;
return st->nb_decoded_frames >= 20;
}

static AVPacketList *get_next_pkt(AVFormatContext *s, AVStream *st, AVPacketList *pktl)
@@ -2385,7 +2385,7 @@ static int try_decode_frame(AVStream *st, AVPacket *avpkt, AVDictionary **option
}
if (ret >= 0) {
if (got_picture)
st->info->nb_decoded_frames++;
st->nb_decoded_frames++;
pkt.data += ret;
pkt.size -= ret;
ret = got_picture;


Loading…
Cancel
Save