Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Mueller <nexyon@gmail.com>2019-11-22 12:34:01 +0300
committerJoerg Mueller <nexyon@gmail.com>2019-11-22 12:34:01 +0300
commite93aa9c0fc669d0b09a1159e8ef1e2b9dfcc7320 (patch)
treebeb88f8c9c43120ad3a98586f636a3d23dc1765b /extern/audaspace
parent3d015c71ccbc7501a56e05727f744a60c13bde12 (diff)
Fix T71621: VSE crashes when playing last frame of audio
Porting bug fix from audaspace upstream.
Diffstat (limited to 'extern/audaspace')
-rw-r--r--extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp13
-rw-r--r--extern/audaspace/plugins/ffmpeg/FFMPEGReader.h2
2 files changed, 11 insertions, 4 deletions
diff --git a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
index 2f5b5bdd199..b46f65eddbf 100644
--- a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
+++ b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
@@ -292,8 +292,8 @@ int FFMPEGReader::read_packet(void* opaque, uint8_t* buf, int buf_size)
{
FFMPEGReader* reader = reinterpret_cast<FFMPEGReader*>(opaque);
- int64_t remaining_buffer_size = reader->m_membuffer->getSize() - reader->m_membufferpos;
- int64_t size = std::min(static_cast<int64_t>(buf_size), remaining_buffer_size);
+ int size = std::min(buf_size, reader->m_membuffer->getSize() - reader->m_membufferpos);
+
if(size < 0)
return -1;
@@ -319,7 +319,14 @@ int64_t FFMPEGReader::seek_packet(void* opaque, int64_t offset, int whence)
return reader->m_membuffer->getSize();
}
- return (reader->m_membufferpos += offset);
+ int64_t position = reader->m_membufferpos + offset;
+
+ if(position > reader->m_membuffer->getSize())
+ position = reader->m_membuffer->getSize();
+
+ reader->m_membufferpos = int(position);
+
+ return position;
}
bool FFMPEGReader::isSeekable() const
diff --git a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.h b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.h
index a69ac7709c8..f62436ac83b 100644
--- a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.h
+++ b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.h
@@ -112,7 +112,7 @@ private:
/**
* Reading position of the buffer.
*/
- int64_t m_membufferpos;
+ int m_membufferpos;
/**
* Whether the audio data has to be interleaved after reading.