int sample = (int)((frame - (int)(frame)) * 20); // AUDIO_FRAME_SIZE
if (frame < 0 || sample < 0 || sample > 19)
continue;
- QMap<int, QByteArray> frame_channel_data = baseClip()->m_audioFrameCache[(int)frame];
+ QMap<int, QByteArray> frame_channel_data = baseClip()->audioFrameCache[(int)frame];
for (int channel = 0; channel < channels && frame_channel_data[channel].size() > 0; channel++) {
DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QString &id) :
QObject(),
- m_audioFrameCache(),
+ lastSeekPosition(0),
+ audioFrameCache(),
m_refcount(0),
m_baseTrackProducers(),
m_videoTrackProducers(),
void DocClipBase::slotClearAudioCache()
{
- m_audioFrameCache.clear();
+ audioFrameCache.clear();
m_audioThumbCreated = false;
}
void DocClipBase::updateAudioThumbnail(const audioByteArray& data)
{
//kDebug() << "CLIPBASE RECIEDVED AUDIO DATA*********************************************";
- m_audioFrameCache = data;
+ audioFrameCache = data;
m_audioThumbCreated = true;
emit gotAudioData();
}
/** Returns the thumbnail producer used by this clip */
KThumb *thumbProducer();
- /** Cache for every audio Frame with 10 Bytes */
- /** format is frame -> channel ->bytes */
- QMap<int, QMap<int, QByteArray> > m_audioFrameCache;
-
/** Free cache data */
void slotClearAudioCache();
QString getClipHash() const;
bool getAudioThumbs();
void setAnalysisData(const QString &name, const QString &data);
QMap <QString, QString> analysisData() const;
+ int lastSeekPosition;
+ /** Cache for every audio Frame with 10 Bytes */
+ /** format is frame -> channel ->bytes */
+ QMap<int, QMap<int, QByteArray> > audioFrameCache;
private: // Private attributes
-
/** The number of times this clip is used in the project - the number of references to this clip
* that exist. */
uint m_refcount;
{
if (render == NULL) return;
if (clip == NULL && m_currentClip != NULL) {
+ m_currentClip->lastSeekPosition = render->seekFramePosition();
kDebug()<<"// SETTING NULL CLIP MONITOR";
m_currentClip = NULL;
m_length = -1;
}
if (clip != m_currentClip || forceUpdate) {
+ if (m_currentClip) m_currentClip->lastSeekPosition = render->seekFramePosition();
m_currentClip = clip;
+ if (position == -1) position = clip->lastSeekPosition;
if (m_currentClip) slotActivateMonitor();
updateMarkers(clip);
Mlt::Producer *prod = NULL;