FFmpegExtractor::~FFmpegExtractor() {
ALOGV("FFmpegExtractor::~FFmpegExtractor");
- Mutex::Autolock autoLock(mLock);
// stop reader here if no track!
stopReaderThread();
+ Mutex::Autolock autoLock(mLock);
deInitStreams();
}
void FFmpegExtractor::stopReaderThread() {
ALOGV("Stopping reader thread");
+ mLock.lock();
+
if (!mReaderThreadStarted) {
ALOGD("Reader thread have been stopped");
+ mLock.unlock();
return;
}
if (mVideoStreamIdx >= 0)
stream_component_close(mVideoStreamIdx);
+ mLock.unlock();
pthread_join(mReaderThread, NULL);
+ mLock.lock();
if (mFormatCtx) {
avformat_close_input(&mFormatCtx);
mReaderThreadStarted = false;
ALOGD("Reader thread stopped");
+
+ mLock.unlock();
}
// static