[Avidemux-svn-commit] r5160 - in branches/avidemux_2.6_branch_mean: avidemux_core/ADM_coreMuxer/include avidemux_core/ADM_coreMuxer/src avidemux_plugins/ADM_muxers/muxerAvi avidemux_plugins/ADM_muxers/muxerFlv avidemux_plugins/ADM_muxers/muxerRaw
mean at BerliOS
mean at mail.berlios.de
Sun Jul 26 20:38:46 CEST 2009
Author: mean
Date: 2009-07-26 20:38:44 +0200 (Sun, 26 Jul 2009)
New Revision: 5160
Modified:
branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/include/ADM_muxer.h
branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/src/ADM_muxerUtils.cpp
branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerAvi/muxerAvi.cpp
branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/CMakeLists.txt
branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/muxerFlv.cpp
branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerRaw/muxerRaw.cpp
Log:
[muxers] Add progress bar to base class, refs #4
Modified: branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/include/ADM_muxer.h
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/include/ADM_muxer.h 2009-07-26 17:14:16 UTC (rev 5159)
+++ branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/include/ADM_muxer.h 2009-07-26 18:38:44 UTC (rev 5160)
@@ -9,6 +9,9 @@
#include "ADM_default.h"
#include "ADM_audioStream.h"
#include "DIA_working.h"
+#include "DIA_coreToolkit.h"
+#include "DIA_encoding.h"
+
/**
\class ADM_videoStream
@@ -19,6 +22,8 @@
uint32_t width,height,averageFps1000;
uint32_t fourCC;
bool isCFR;
+
+
DIA_workingBase *encoding;
public:
ADM_videoStream() {};
@@ -45,19 +50,25 @@
ADM_videoStream *vStream; // Internal copy of the parameters
ADM_audioStream **aStreams;
uint32_t nbAStreams;
+
+
+ uint64_t videoIncrement; // Used/set by initUI
+ uint64_t videoDuration;
DIA_workingBase *encoding;
public:
ADM_muxer() {vStream=NULL;aStreams=NULL;nbAStreams=0;encoding=NULL;};
- virtual ~ADM_muxer() {if(encoding) delete encoding;encoding=NULL;};
+ virtual ~ADM_muxer() {closeUI();};
virtual bool open(const char *filename, ADM_videoStream *videoStream,
uint32_t nbAudioTrack, ADM_audioStream **audioStreams)=0;
virtual bool save(void)=0;
virtual bool close(void)=0;
+ virtual bool initUI(const char *title);
+ virtual bool updateUI(uint64_t time);
+ virtual bool closeUI(void);
-
};
#endif
Modified: branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/src/ADM_muxerUtils.cpp
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/src/ADM_muxerUtils.cpp 2009-07-26 17:14:16 UTC (rev 5159)
+++ branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreMuxer/src/ADM_muxerUtils.cpp 2009-07-26 18:38:44 UTC (rev 5160)
@@ -61,3 +61,47 @@
i*=scale->num;
return i;
}
+/**
+ \fn initUI
+ \brief initialize the progress bar
+*/
+bool ADM_muxer::initUI(const char *title)
+{
+ float f=(float)vStream->getAvgFps1000();
+ f=1000./f;
+ f*=1000000;
+ videoIncrement=(uint64_t)f; // Video increment in AVI-Tick
+ videoDuration=vStream->getVideoDuration();
+
+ encoding=createWorking(title);
+ return true;
+}
+/**
+ \fn updateUI
+ \brief Update the progress bar
+ @return false if abort request, true if keep going
+*/
+
+bool ADM_muxer::updateUI(uint64_t time)
+{
+ ADM_assert(encoding);
+ uint32_t percent=(100*time)/videoDuration;
+ if(percent>100) percent=100;
+ encoding->update(percent);
+ if(!encoding->isAlive())
+ {
+ return false;
+ }
+ return true;
+}
+/**
+ \fn closeUI
+*/
+
+bool ADM_muxer::closeUI(void)
+{
+ if(encoding) delete encoding;
+ encoding=NULL;
+ return true;
+}
+// EOF
Modified: branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerAvi/muxerAvi.cpp
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerAvi/muxerAvi.cpp 2009-07-26 17:14:16 UTC (rev 5159)
+++ branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerAvi/muxerAvi.cpp 2009-07-26 18:38:44 UTC (rev 5160)
@@ -20,10 +20,8 @@
#include "ADM_default.h"
#include "fourcc.h"
#include "muxerAvi.h"
-#include "DIA_coreToolkit.h"
-#include "DIA_encoding.h"
-//#include "DIA_encoding.h"
+
#define ADM_NO_PTS 0xFFFFFFFFFFFFFFFFLL // FIXME
#define AUDIO_BUFFER_SIZE 48000*6*sizeof(float)
// Fwd ref
@@ -146,14 +144,9 @@
uint32_t len,flags;
uint64_t pts,dts,rawDts;
uint64_t lastVideoDts=0;
- uint64_t videoIncrement;
- uint64_t videoDuration=vStream->getVideoDuration();
int ret;
int written=0;
- float f=(float)vStream->getAvgFps1000();
- f=1000./f;
- f*=1000000;
- videoIncrement=(uint64_t)f; // Video increment in AVI-Tick
+
audioBuffer=new uint8_t[AUDIO_BUFFER_SIZE];
videoBuffer=new uint8_t[bufSize];
@@ -165,7 +158,8 @@
if(dts==ADM_NO_PTS) dts=0;
lastVideoDts=dts;
- encoding=createWorking("Saving avi");
+ initUI("Saving Avi");
+
while(1)
{
@@ -190,28 +184,23 @@
fillAudio(aviTime+videoIncrement); // and matching audio
-
- uint32_t percent=(100*aviTime)/videoDuration;
- if(percent>100) percent=100;
-
- encoding->update(percent);
- if(!encoding->isAlive())
- {
+ if(updateUI(aviTime)==false)
+ {
result=false;
goto abt;
}
-
+
written++;
aviTime+=videoIncrement;
}
abt:
+ closeUI();
writter.setEnd();
delete [] videoBuffer;
videoBuffer=NULL;
delete [] audioBuffer;
audioBuffer=NULL;
printf("[AviMuxer] Wrote %d frames, nb audio streams %d\n",written,nbAStreams);
-
return result;
}
/**
Modified: branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/CMakeLists.txt
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/CMakeLists.txt 2009-07-26 17:14:16 UTC (rev 5159)
+++ branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/CMakeLists.txt 2009-07-26 18:38:44 UTC (rev 5160)
@@ -6,7 +6,7 @@
)
ADD_LIBRARY(ADM_mx_flv SHARED ${ADM_flv_SRCS})
-TARGET_LINK_LIBRARIES(ADM_mx_flv ADM_libavutil6 ADM_libavformat6)
+TARGET_LINK_LIBRARIES(ADM_mx_flv ADM_libavutil6 ADM_libavformat6 ADM_libavcodec6)
INCLUDE_DIRECTORIES("${AVIDEMUX_SOURCE_DIR}/avidemux/ADM_libraries/ADM_ffmpeg")
INIT_MUXER(ADM_mx_flv)
Modified: branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/muxerFlv.cpp
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/muxerFlv.cpp 2009-07-26 17:14:16 UTC (rev 5159)
+++ branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerFlv/muxerFlv.cpp 2009-07-26 18:38:44 UTC (rev 5160)
@@ -302,19 +302,16 @@
uint32_t len,flags;
uint64_t pts,dts,rawDts;
uint64_t lastVideoDts=0;
- uint64_t videoIncrement;
int ret;
+ bool result=true;
int written=0;
- float f=(float)vStream->getAvgFps1000();
- f=1000./f;
- f*=1000000;
- videoIncrement=(uint64_t)f;
#define AUDIO_BUFFER_SIZE 48000*6*sizeof(float)
uint8_t *audioBuffer=new uint8_t[AUDIO_BUFFER_SIZE];
printf("[FLV]avg fps=%u\n",vStream->getAvgFps1000());
AVRational *scale=&(video_st->codec->time_base);
+ initUI("Saving Flv file..");
while(true==vStream->getPacket(&len, buffer, bufSize,&pts,&dts,&flags))
{
AVPacket pkt;
@@ -327,6 +324,11 @@
{
lastVideoDts=dts;
}
+ if(false==updateUI(lastVideoDts))
+ {
+ result=false;
+ goto abt;
+ }
#define RESCALE(x) x=rescaleLavPts(x,scale);
dts=lastVideoDts/1000;
@@ -394,10 +396,12 @@
}
}
+abt:
+ closeUI();
delete [] buffer;
delete [] audioBuffer;
printf("[FLV] Wrote %d frames, nb audio streams %d\n",written,nbAStreams);
- return true;
+ return result;
}
/**
\fn close
Modified: branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerRaw/muxerRaw.cpp
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerRaw/muxerRaw.cpp 2009-07-26 17:14:16 UTC (rev 5159)
+++ branches/avidemux_2.6_branch_mean/avidemux_plugins/ADM_muxers/muxerRaw/muxerRaw.cpp 2009-07-26 18:38:44 UTC (rev 5160)
@@ -78,29 +78,29 @@
uint64_t pts,dts,rawDts;
uint64_t lastVideoDts=0;
int written=0;
- uint64_t videoDuration=vStream->getVideoDuration();
+ bool result=true;
- encoding=createWorking("Saving raw video");
+ initUI("Saving raw video");
while(true==vStream->getPacket(&len, buffer, bufSize,&pts,&dts,&flags))
{
- float p=0.5;
- if(videoDuration && dts!=ADM_NO_PTS)
- p=dts/videoDuration;
- p=p*100;
- encoding->update((uint32_t)p);
- if(!encoding->isAlive())
- {
- break;
- }
+ if(dts==ADM_NO_PTS)
+ dts=lastVideoDts+videoIncrement;
+ if(updateUI(dts)==false)
+ {
+ result=false;
+ goto abt;
+ }
fwrite(buffer,len,1,file);
written++;
}
+abt:
+ closeUI();
delete [] buffer;
fclose(file);
file=NULL;
printf("[RAW] Wrote %d frames \n",written);
- return true;
+ return result;
}
/**
\fn close
More information about the Avidemux-svn-commit
mailing list