Add ODDecodeFFmpegTask to Unix makefile, fix some errors and warnings
This commit is contained in:
parent
ece5a9e51e
commit
4cdbbce01f
|
@ -158,7 +158,7 @@ void av_log_wx_callback(void* ptr, int level, const char* fmt, va_list vl)
|
|||
//will crash.
|
||||
//TODO:find some workaround for the log. perhaps use ODManager as a bridge. for now just print
|
||||
if(!wxThread::IsMain())
|
||||
printf("%s: %s\n",cpt.c_str(),printstring.c_str());
|
||||
printf("%s: %s\n",cpt.char_str(),printstring.char_str());
|
||||
else
|
||||
#endif
|
||||
wxLogMessage(wxT("%s: %s"),cpt.c_str(),printstring.c_str());
|
||||
|
|
|
@ -198,6 +198,7 @@ OBJS = \
|
|||
import/RawAudioGuess.o \
|
||||
ondemand/ODComputeSummaryTask.o \
|
||||
ondemand/ODDecodeTask.o \
|
||||
ondemand/ODDecodeFFmpegTask.o \
|
||||
ondemand/ODManager.o \
|
||||
ondemand/ODTask.o \
|
||||
ondemand/ODTaskThread.o \
|
||||
|
|
|
@ -156,7 +156,7 @@ static const wxChar *exts[] =
|
|||
|
||||
|
||||
#ifdef EXPERIMENTAL_OD_FFMPEG
|
||||
#include "ODDecodeFFMpegTask.h"
|
||||
#include "../ondemand/ODDecodeFFmpegTask.h"
|
||||
#endif
|
||||
|
||||
extern FFmpegLibs *FFmpegLibsInst;
|
||||
|
@ -545,7 +545,6 @@ int FFmpegImportFileHandle::Import(TrackFactory *trackFactory,
|
|||
}
|
||||
}
|
||||
// This is the heart of the importing process
|
||||
streamContext *sc = NULL;
|
||||
// The result of Import() to be returend. It will be something other than zero if user canceled or some error appears.
|
||||
int res = eProgressSuccess;
|
||||
|
||||
|
@ -596,7 +595,7 @@ int FFmpegImportFileHandle::Import(TrackFactory *trackFactory,
|
|||
tasks.push_back(odTask);
|
||||
}
|
||||
//Now we add the tasks and let them run, or delete them if the user cancelled
|
||||
for(int i=0;i<tasks.size();i++)
|
||||
for(int i=0; i < (int)tasks.size(); i++)
|
||||
{
|
||||
if(res==eProgressSuccess)
|
||||
ODManager::Instance()->AddNewTask(tasks[i]);
|
||||
|
@ -606,6 +605,9 @@ int FFmpegImportFileHandle::Import(TrackFactory *trackFactory,
|
|||
}
|
||||
}
|
||||
#else //ifndef EXPERIMENTAL_OD_FFMPEG
|
||||
|
||||
streamContext *sc = NULL;
|
||||
|
||||
// Read next frame.
|
||||
while ((sc = ReadNextFrame()) != NULL && (res == eProgressSuccess))
|
||||
{
|
||||
|
|
|
@ -58,7 +58,7 @@ public:
|
|||
|
||||
///This is a must implement abstract virtual in the superclass.
|
||||
///However it doesn't do anything because ImportFFMpeg does all that for us.
|
||||
virtual bool ReadHeader(){}
|
||||
virtual bool ReadHeader() {return true;}
|
||||
|
||||
private:
|
||||
int FillDataFromCache(samplePtr & data, sampleCount start, sampleCount& len, unsigned int channel);
|
||||
|
@ -145,8 +145,8 @@ ODFFmpegDecoder::ODFFmpegDecoder(const wxString & fileName, streamContext** scs,
|
|||
mNumStreams(numStreams),
|
||||
mScs(scs),
|
||||
mFormatContext(formatContext),
|
||||
mCurrentPos(0),
|
||||
mNumSamplesInCache(0)
|
||||
mNumSamplesInCache(0),
|
||||
mCurrentPos(0)
|
||||
{
|
||||
PickFFmpegLibs();
|
||||
|
||||
|
@ -212,8 +212,6 @@ void ODFFmpegDecoder::Decode(samplePtr & data, sampleFormat & format, sampleCoun
|
|||
samplePtr bufStart = data;
|
||||
streamContext* sc = NULL;
|
||||
|
||||
sampleCount origLen=len;
|
||||
|
||||
int nChannels;
|
||||
|
||||
//TODO update this to work with seek - this only works linearly now.
|
||||
|
@ -304,7 +302,6 @@ int ODFFmpegDecoder::FillDataFromCache(samplePtr & data, sampleCount start, samp
|
|||
//that has a start time of less than our start sample, but try to get closer with binary search
|
||||
int searchStart = 0;
|
||||
int searchEnd = mDecodeCache.size()-1;
|
||||
int mid;
|
||||
int guess;
|
||||
if(searchEnd>kODFFmpegSearchThreshold)
|
||||
{
|
||||
|
@ -326,7 +323,7 @@ int ODFFmpegDecoder::FillDataFromCache(samplePtr & data, sampleCount start, samp
|
|||
}
|
||||
|
||||
//most recent caches are at the end of the vector, so start there.
|
||||
for(int i=searchStart;i<mDecodeCache.size();i++)
|
||||
for(int i=searchStart; i < (int)mDecodeCache.size(); i++)
|
||||
{
|
||||
//check for a cache hit - be careful to include the first/last sample an nothing more.
|
||||
//we only accept cache hits that touch either end - no piecing out of the middle.
|
||||
|
@ -338,7 +335,6 @@ int ODFFmpegDecoder::FillDataFromCache(samplePtr & data, sampleCount start, samp
|
|||
int16_t* outBuf;
|
||||
outBuf = (int16_t*)data;
|
||||
//for debug
|
||||
FFMpegDecodeCache* cache = mDecodeCache[i];
|
||||
//reject buffers that would split us into two pieces because we don't have
|
||||
//a method of dealing with this yet, and it won't happen very often.
|
||||
if(start<mDecodeCache[i]->start && start+len > mDecodeCache[i]->start+mDecodeCache[i]->len)
|
||||
|
|
Loading…
Reference in New Issue
Block a user