[vlc-devel] [PATCH 2/5] demux: adaptive: clear eof flag of CommandsQueue after seek
Zhao Zhili
quinkblack at foxmail.com
Mon Oct 23 18:14:03 CEST 2017
---
modules/demux/adaptive/Streams.cpp | 6 ++++--
modules/demux/adaptive/plumbing/CommandsQueue.cpp | 9 ++++++---
modules/demux/adaptive/plumbing/CommandsQueue.hpp | 2 +-
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/modules/demux/adaptive/Streams.cpp b/modules/demux/adaptive/Streams.cpp
index 96543d3187..c5141dca44 100644
--- a/modules/demux/adaptive/Streams.cpp
+++ b/modules/demux/adaptive/Streams.cpp
@@ -338,7 +338,7 @@ AbstractStream::buffering_status AbstractStream::doBufferize(mtime_t nz_deadline
return AbstractStream::buffering_ongoing;
}
dead = true; /* Prevent further retries */
- commandsqueue->setEOF();
+ commandsqueue->setEOF(true);
vlc_mutex_unlock(&lock);
return AbstractStream::buffering_end;
}
@@ -380,7 +380,7 @@ AbstractStream::buffering_status AbstractStream::doBufferize(mtime_t nz_deadline
vlc_mutex_unlock(&lock);
return AbstractStream::buffering_ongoing;
}
- commandsqueue->setEOF();
+ commandsqueue->setEOF(true);
vlc_mutex_unlock(&lock);
return AbstractStream::buffering_end;
}
@@ -499,6 +499,8 @@ bool AbstractStream::setPosition(mtime_t time, bool tryonly)
if( !restartDemux() )
dead = true;
+ else
+ commandsqueue->setEOF(false);
}
else commandsqueue->Abort( true );
diff --git a/modules/demux/adaptive/plumbing/CommandsQueue.cpp b/modules/demux/adaptive/plumbing/CommandsQueue.cpp
index f2a48b6cec..bd4959d28c 100644
--- a/modules/demux/adaptive/plumbing/CommandsQueue.cpp
+++ b/modules/demux/adaptive/plumbing/CommandsQueue.cpp
@@ -401,11 +401,14 @@ bool CommandsQueue::isDraining() const
return b;
}
-void CommandsQueue::setEOF()
+void CommandsQueue::setEOF( bool b )
{
vlc_mutex_lock(&lock);
- b_eof = true;
- LockedSetDraining();
+ b_eof = b;
+ if( b_eof )
+ LockedSetDraining();
+ else
+ b_draining = false;
vlc_mutex_unlock(&lock);
}
diff --git a/modules/demux/adaptive/plumbing/CommandsQueue.hpp b/modules/demux/adaptive/plumbing/CommandsQueue.hpp
index 979820e66a..a81d92998d 100644
--- a/modules/demux/adaptive/plumbing/CommandsQueue.hpp
+++ b/modules/demux/adaptive/plumbing/CommandsQueue.hpp
@@ -160,7 +160,7 @@ namespace adaptive
bool isEmpty() const;
void setDrop( bool );
void setDraining();
- void setEOF();
+ void setEOF( bool );
bool isDraining() const;
bool isEOF() const;
mtime_t getDemuxedAmount() const;
--
2.14.2
More information about the vlc-devel
mailing list