[FFmpeg-cvslog] r20629 - trunk/libavdevice/oss_audio.c
michael
subversion
Fri Nov 27 14:37:53 CET 2009
Author: michael
Date: Fri Nov 27 14:37:53 2009
New Revision: 20629
Log:
Replace very odd and completely broken oss read_packet() by the obvious way to
read.
Fixes issue348.
Modified:
trunk/libavdevice/oss_audio.c
Modified: trunk/libavdevice/oss_audio.c
==============================================================================
--- trunk/libavdevice/oss_audio.c Fri Nov 27 14:10:56 2009 (r20628)
+++ trunk/libavdevice/oss_audio.c Fri Nov 27 14:37:53 2009 (r20629)
@@ -250,32 +250,13 @@ static int audio_read_packet(AVFormatCon
if (av_new_packet(pkt, s->frame_size) < 0)
return AVERROR(EIO);
- for(;;) {
- struct timeval tv;
- fd_set fds;
-
- tv.tv_sec = 0;
- tv.tv_usec = 30 * 1000; /* 30 msecs -- a bit shorter than 1 frame at 30fps */
-
- FD_ZERO(&fds);
- FD_SET(s->fd, &fds);
-
- /* This will block until data is available or we get a timeout */
- (void) select(s->fd + 1, &fds, 0, 0, &tv);
ret = read(s->fd, pkt->data, pkt->size);
- if (ret > 0)
- break;
- if (ret == -1 && (errno == EAGAIN || errno == EINTR)) {
- av_free_packet(pkt);
- pkt->size = 0;
- pkt->pts = av_gettime();
- return 0;
- }
- if (!(ret == 0 || (ret == -1 && (errno == EAGAIN || errno == EINTR)))) {
- av_free_packet(pkt);
- return AVERROR(EIO);
- }
+ if (ret <= 0){
+ av_free_packet(pkt);
+ pkt->size = 0;
+ if (ret<0) return AVERROR(errno);
+ else return AVERROR(EOF);
}
pkt->size = ret;
More information about the ffmpeg-cvslog
mailing list