Mercurial > libavformat.hg
changeset 4270:96a3395e803b libavformat
Handle av_read_frame() EAGAIN return.
author | michael |
---|---|
date | Thu, 22 Jan 2009 12:06:02 +0000 |
parents | bbb6561a3974 |
children | f9ec55b30dfa |
files | utils.c |
diffstat | 1 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/utils.c Wed Jan 21 22:32:17 2009 +0000 +++ b/utils.c Thu Jan 22 12:06:02 2009 +0000 @@ -1493,7 +1493,10 @@ return ret; } for(i=0;; i++) { - int ret = av_read_frame(s, &pkt); + int ret; + do{ + ret = av_read_frame(s, &pkt); + }while(ret == AVERROR(EAGAIN)); if(ret<0) break; av_free_packet(&pkt); @@ -1718,7 +1721,9 @@ if (i == ic->nb_streams) break; - ret = av_read_packet(ic, pkt); + do{ + ret = av_read_packet(ic, pkt); + }while(ret == AVERROR(EAGAIN)); if (ret != 0) break; read_size += pkt->size; @@ -1743,7 +1748,9 @@ if (read_size >= DURATION_MAX_READ_SIZE) break; - ret = av_read_packet(ic, pkt); + do{ + ret = av_read_packet(ic, pkt); + }while(ret == AVERROR(EAGAIN)); if (ret != 0) break; read_size += pkt->size; @@ -2044,6 +2051,8 @@ /* NOTE: a new stream can be added there if no header in file (AVFMTCTX_NOHEADER) */ ret = av_read_frame_internal(ic, &pkt1); + if(ret == AVERROR(EAGAIN)) + continue; if (ret < 0) { /* EOF or error */ ret = -1; /* we could not have all the codec parameters before EOF */