@ -526,16 +526,11 @@ static int x11grab_read_packet(AVFormatContext *s1, AVPacket *pkt)
int64_t curtime , delay ;
int64_t curtime , delay ;
struct timespec ts ;
struct timespec ts ;
/* Calculate the time of the next frame */
s - > time_frame + = INT64_C ( 1000000 ) ;
/* wait based on the frame rate */
/* wait based on the frame rate */
for ( ; ; ) {
for ( ; ; ) {
curtime = av_gettime ( ) ;
curtime = av_gettime ( ) ;
delay = s - > time_frame * av_q2d ( s - > time_base ) - curtime ;
delay = s - > time_frame * av_q2d ( s - > time_base ) - curtime ;
if ( delay < = 0 ) {
if ( delay < = 0 ) {
if ( delay < INT64_C ( - 1000000 ) * av_q2d ( s - > time_base ) )
s - > time_frame + = INT64_C ( 1000000 ) ;
break ;
break ;
}
}
ts . tv_sec = delay / 1000000 ;
ts . tv_sec = delay / 1000000 ;
@ -543,6 +538,11 @@ static int x11grab_read_packet(AVFormatContext *s1, AVPacket *pkt)
nanosleep ( & ts , NULL ) ;
nanosleep ( & ts , NULL ) ;
}
}
/* Calculate the time of the next frame */
do {
s - > time_frame + = INT64_C ( 1000000 ) ;
} while ( ( s - > time_frame * av_q2d ( s - > time_base ) - curtime ) < = 0 ) ;
av_init_packet ( pkt ) ;
av_init_packet ( pkt ) ;
pkt - > data = image - > data ;
pkt - > data = image - > data ;
pkt - > size = s - > frame_size ;
pkt - > size = s - > frame_size ;