mirror of https://git.ffmpeg.org/ffmpeg.git
Redesign packet queue full check to be more robust.
Originally committed as revision 21555 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
ce2421a5c3
commit
79ee468365
13
ffplay.c
13
ffplay.c
|
@ -49,9 +49,9 @@ const int program_birth_year = 2003;
|
|||
|
||||
//#define DEBUG_SYNC
|
||||
|
||||
#define MAX_VIDEOQ_SIZE (30 * 256 * 1024)
|
||||
#define MAX_AUDIOQ_SIZE (20 * 16 * 1024)
|
||||
#define MAX_SUBTITLEQ_SIZE (5 * 16 * 1024)
|
||||
#define MAX_QUEUE_SIZE (15 * 1024 * 1024)
|
||||
#define MIN_AUDIOQ_SIZE (20 * 16 * 1024)
|
||||
#define MIN_FRAMES 5
|
||||
|
||||
/* SDL audio buffer size, in samples. Should be small to have precise
|
||||
A/V sync as SDL does not have hardware buffer fullness info. */
|
||||
|
@ -2026,9 +2026,10 @@ static int decode_thread(void *arg)
|
|||
}
|
||||
|
||||
/* if the queue are full, no need to read more */
|
||||
if (is->audioq.size > MAX_AUDIOQ_SIZE ||
|
||||
is->videoq.size > MAX_VIDEOQ_SIZE ||
|
||||
is->subtitleq.size > MAX_SUBTITLEQ_SIZE) {
|
||||
if ( is->audioq.size + is->videoq.size + is->subtitleq.size > MAX_QUEUE_SIZE
|
||||
|| ( (is->audioq .size > MIN_AUDIOQ_SIZE || is->audio_stream<0)
|
||||
&& (is->videoq .nb_packets > MIN_FRAMES || is->video_stream<0)
|
||||
&& (is->subtitleq.nb_packets > MIN_FRAMES || is->subtitle_stream<0))) {
|
||||
/* wait 10 ms */
|
||||
SDL_Delay(10);
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue