37 #endif // MO_QUICKTIME 38 #endif // MO_DIRECTSHOW 47 #include "FreeImage.h" 59 fif = (int)FIF_UNKNOWN;
76 FIBITMAP* _pImageResult = (FIBITMAP*)pImageResult;
79 hmem = FreeImage_OpenMemory();
83 if ( bufferformat ==
moText(
"JPG")) {
86 }
else if ( bufferformat ==
moText(
"JPGSUPERB") ) {
89 }
else if ( bufferformat ==
moText(
"JPGBAD") ) {
92 }
else if ( bufferformat ==
moText(
"JPGAVERAGE") ) {
95 }
else if ( bufferformat ==
moText(
"JPGGOOD") ) {
98 }
else if ( bufferformat ==
moText(
"TGA") ) {
101 }
else if ( bufferformat ==
moText(
"PNG") ) {
106 +
moText(
" bufferformat unsupported!!") );
109 FreeImage_SaveToMemory( (FREE_IMAGE_FORMAT)
fif, _pImageResult, (FIMEMORY*)
hmem,
options );
110 m_FrameSize = FreeImage_TellMemory((FIMEMORY*)hmem);
113 +
moText(
" Couldn't save image to memory, format may be unsupported or image is empty!") );
128 FreeImage_CloseMemory( (FIMEMORY*)
hmem );
134 fif = (int)FIF_UNKNOWN;
169 moVideoBuffer::Init(
moText bufferpath,
moText bufferformat,
moResourceManager* p_pResourceManager,
MOuint width,
MOuint height,
MOuint xsource,
MOuint ysource,
MOuint sourcewidth,
MOuint sourceheight,
MOint interpolation,
MOint interpolationjump,
MOint interpolationtime ) {
210 FIBITMAP* _pImage = (FIBITMAP*)pImage;
211 FIBITMAP* pImageResult = NULL;
212 FIBITMAP* pImageCropped = NULL;
213 FIBITMAP* pImageScaled = NULL;
215 if (
m_width!=FreeImage_GetWidth(_pImage) ||
m_height!=FreeImage_GetHeight(_pImage) ) {
218 pImageResult = pImageCropped;
220 }
else pImageResult = _pImage;
232 pImageScaled = FreeImage_Rescale( pImageResult,
m_width,
m_height, FILTER_BICUBIC );
234 FreeImage_Unload(pImageResult);
235 pImageResult = pImageScaled;
241 if (indeximage==-1 || indeximage == (
int)
m_Frames.Count() ) {
247 }
else if ( indeximage < (
int)
m_Frames.Count() ) {
248 pVideoFrame =
m_Frames.Get(indeximage);
255 if (pImageResult!=_pImage)
256 FreeImage_Unload(pImageResult);
261 return (pVideoFrame!=NULL);
285 FreeImage_TellMemory((FIMEMORY*)pVideoFrame->
hmem);
286 FreeImage_SeekMemory( (FIMEMORY*)pVideoFrame->
hmem, 0L, SEEK_SET);
291 pImage = FreeImage_LoadFromMemory( (FREE_IMAGE_FORMAT)pVideoFrame->
fif, (FIMEMORY*)pVideoFrame->
hmem, 0);
294 switch (FreeImage_GetBPP(pImage))
298 p_format = GL_LUMINANCE;
305 if (FreeImage_GetBlueMask(pImage) == 0x000000FF) p_format = GL_BGR;
313 if (FreeImage_GetBlueMask(pImage) == 0x000000FF) p_format = GL_BGRA_EXT;
322 FreeImage_Unload( pImage );
327 moText(
"Couldn't load image from memory, texture name: ") +
369 m_VideoInput = videoinput;
382 pBlack = FreeImage_Allocate( width, height, 24 );
384 for(
MOint i=0; i<frames; i++) {
387 pVideoFrame->
Init( bufferformat, pBlack );
414 FIBITMAP* pImage = NULL;
417 if (!pvideosample)
return false;
422 if (!pBucket)
return false;
423 pImage = FreeImage_ConvertFromRawBits( pBucket->
GetBuffer(),
432 if (pImage==NULL)
return false;
434 FIBITMAP* pImageResult = NULL;
435 FIBITMAP* pImageCropped = NULL;
436 FIBITMAP* pImageScaled = NULL;
449 int w = FreeImage_GetWidth(pImage);
450 int h = FreeImage_GetHeight(pImage);
452 pImageResult = pImage;
453 bool validcrop =
false;
454 bool validscale =
false;
456 validcrop = validcrop && (m_XSource<w) && (m_XSource>=0) && (
m_YSource<h) && (
m_YSource>=0);
465 pImageResult = pImageCropped;
467 validscale = ((
m_width!=FreeImage_GetWidth(pImageCropped)) || (
m_height!=FreeImage_GetHeight(pImageCropped)));
480 pImageScaled = FreeImage_Rescale( pImageResult,
m_width,
m_height, FILTER_BICUBIC );
482 FreeImage_Unload(pImageResult);
483 pImageResult = pImageScaled;
496 m_ReadIndex = m_WriteIndex;
504 if (pImageResult!=pImage)
505 FreeImage_Unload(pImageResult);
507 FreeImage_Unload(pImage);
511 return (pVideoFrame!=NULL);
525 MOint ddd = ( m_ReadIndex - (int)p_i);
526 if (ddd<0) ddd =
m_Frames.Count() + ddd;
540 FreeImage_TellMemory((FIMEMORY*)pVideoFrame->
hmem);
541 FreeImage_SeekMemory( (FIMEMORY*)pVideoFrame->
hmem, 0L, SEEK_SET);
546 pImage = FreeImage_LoadFromMemory( (FREE_IMAGE_FORMAT)pVideoFrame->
fif, (FIMEMORY*)pVideoFrame->
hmem, 0);
548 switch (FreeImage_GetBPP(pImage))
552 p_format = GL_LUMINANCE;
567 if (FreeImage_GetBlueMask(pImage) == 0x000000FF) p_format = GL_BGRA_EXT;
576 FreeImage_Unload( pImage );
584 if (at_position!=-1 && at_position>=0 && at_position<(
long)
m_Frames.Count()) {
585 m_WriteIndex = at_position;
587 if (!m_RecTimer.Started()) {
590 m_RecTimer.Continue();
599 m_RecTimer.Continue();
605 if ( at_position>=0 && at_position<(
long)
m_Frames.Count()) {
606 m_WriteIndex = at_position;
615 return m_RecTimer.Started();
630 m_ImagesProcessed = 0;
634 m_bLoadCompleted =
false;
658 m_VideoBufferPath = videobufferpath;
664 if (m_pDirectory) this->m_TotalFiles = (
MOint)m_pDirectory->
GetFiles().Count();
671 m_VideoBuffers.Empty();
678 return m_bLoadCompleted;
682 return this->m_VideoBufferPath;
686 return this->m_CompletePath;
691 return this->m_TotalFiles;
695 return this->m_ImagesProcessed;
699 return this->m_ActualImage;
709 if (!m_pDirectory)
return false;
711 this->m_TotalFiles = (
MOint)m_pDirectory->GetFiles().Count();
713 if (m_ActualImage>=(
MOint)m_pDirectory->GetFiles().Count()) {
714 m_bLoadCompleted =
true;
718 if (m_ActualImage==0)
719 pFile = m_pDirectory->FindFirst();
721 pFile = m_pDirectory->Find(m_ActualImage);
728 FREE_IMAGE_FORMAT fif;
731 if( fif == FIF_UNKNOWN ) {
736 if( (fif != FIF_UNKNOWN) && FreeImage_FIFSupportsReading(fif) ) {
744 for(
MOuint b = 0; b<m_VideoBuffers.Count(); b++) {
749 pVideoBuffer->
LoadImage( pImage, m_ActualImage );
751 FreeImage_Unload(pImage);
761 if (counter==maxfiles && maxfiles!=(-1))
764 }
while ( (pFile = m_pDirectory->FindNext()) );
782 SetLabelName(
"videomanager");
784 m_pLiveSystems = NULL;
794 moCaptureDevices* pPreferredDevices;
798 moText confignamecompleto;
800 m_bAutoReconnect =
false;
808 m_pLiveSystems->Init(0, NULL);
812 if (m_Config.IsConfigLoaded()) {
814 moText msg =
"In moVideoManager::Init from config file ***********************\n";
815 msg+=
moText(
"Initializing Live...\n");
818 preferreddevices = m_Config.GetParamIndex(
"preferreddevices");
819 autoreconnect = m_Config.GetParamIndex(
"autoreconnect");
836 m_bAutoReconnect = (bool) m_Config.GetParam((
MOint)autoreconnect).GetValue().GetSubValue().Int();
839 pPreferredDevices =
new moCaptureDevices();
841 nvalues = m_Config.GetValuesCount( preferreddevices );
842 m_Config.SetCurrentParamIndex(preferreddevices);
856 for(
MOuint i = 0; i < nvalues; i++) {
858 m_Config.SetCurrentValueIndex(preferreddevices, i);
860 MOint srcw(0),srch(0),srcbpp(0),flH(0),flV(0);
861 MOint ncount = m_Config.GetParam().GetValue().GetSubValueCount();
881 CD.SetVideoFormat( VF );
882 CD.SetPreffered(
true );
884 pPreferredDevices->Add( CD );
899 if (!m_pLiveSystems)
return false;
901 m_pLiveSystems->GetVideoFramework()->SetPreferredDevices( pPreferredDevices );
905 for(
int c=0; c<(int)m_CaptureDevices.Count(); c++) {
908 moCamera* Cam = CreateCamera( CapDev );
982 MOuint circularbuffer = m_Config.GetParamIndex(
"circularbuffer");
987 MOint xsource, ysource, width, height, sourcewidth, sourceheight, frames;
988 MOint interpolation, interpolation_jump, interpolation_time;
990 if (circularbuffer>0)
991 for(
MOuint i=0; i<m_Config.GetValuesCount(circularbuffer); i++ ) {
1006 MODebug2->
Message(
"moVideoManager::Init > videobufferinput:" + videobufferinput);
1007 MODebug2->
Message(
"moVideoManager::Init > videobuffername:" + videobuffername);
1008 MODebug2->
Message(
"moVideoManager::Init > videobufferformat:" + videobufferformat);
1017 if(videobufferinput!=
moText(
"")) {
1023 if (pCircularBuffer) {
1024 pCircularBuffer->
Init( videobufferinput, videobufferformat, GetResourceManager(), frames, width, height, xsource, ysource, sourcewidth, sourceheight);
1025 m_CircularVideoBuffers.Add(pCircularBuffer);
1032 MOuint videobuffer = m_Config.GetParamIndex(
"videobuffer");
1039 for(
MOuint i=0; i<m_Config.GetValuesCount(videobuffer); i++ ) {
1041 videobufferpath = m_Config.GetParam(videobuffer).GetValue(i).GetSubValue(0).Text();
1045 if (pVideoBufferPath) {
1047 pVideoBufferPath->
Init( GetResourceManager(), videobufferpath );
1048 m_VideoBufferPaths.Add(pVideoBufferPath);
1050 for(
MOuint j=0; j < ( m_Config.GetParam(videobuffer).GetValue(i).GetSubValueCount() - 1 ) / 11; j++) {
1052 videobuffername = m_Config.GetParam(videobuffer).GetValue(i).GetSubValue(j*11+
MO_VIDEO_BUFFERNAME).Text();
1053 videobufferformat = m_Config.GetParam(videobuffer).GetValue(i).GetSubValue(j*11+
MO_VIDEO_BUFFERFORMAT).Text();
1055 width = m_Config.GetParam(videobuffer).GetValue(i).GetSubValue(j*11+
MO_VIDEO_WIDTH).Int();
1056 height = m_Config.GetParam(videobuffer).GetValue(i).GetSubValue(j*11+
MO_VIDEO_HEIGHT).Int();
1059 sourcewidth = m_Config.GetParam(videobuffer).GetValue(i).GetSubValue(j*11+
MO_VIDEO_SOURCEWIDTH).Int();
1060 sourceheight = m_Config.GetParam(videobuffer).GetValue(i).GetSubValue(j*11+
MO_VIDEO_SOURCEHEIGHT).Int();
1066 if(videobufferpath!=
moText(
"")) {
1073 pVideoBuffer->
Init( videobufferpath, videobufferformat, GetResourceManager(), width, height, xsource, ysource, sourcewidth, sourceheight, interpolation, interpolation_jump, interpolation_time);
1081 delete pPreferredDevices;
1101 if (devcode == 0 ) {
1103 GetCaptureDevices(
true);
1117 if (m_pLiveSystems) {
1119 return m_pLiveSystems->GetStatus( devcode );
1130 if( m_pLiveSystems) {
1153 if (m_pLiveSystems) {
1155 for(
MOuint i =0; i< m_pLiveSystems->Count(); i++) {
1169 if (m_pLiveSystems) {
1170 return m_pLiveSystems->Get(cam_idx);
1190 if (!pLS)
return NULL;
1192 if (!pLS->
Init())
return NULL;
1259 m_pLiveSystems->Add( pLS );
1275 MODebug2->
Message(
"moVideoManager::GetCameraByName > Check if we have the camera loaded");
1276 if (m_pLiveSystems) {
1277 for(
int c=0; c<(int)m_pLiveSystems->Count(); c++ ) {
1278 Cam = m_pLiveSystems->Get(c);
1288 MODebug2->
Message(
"moVideoManager::GetCameraByName > camera already loaded, returning: "+camera);
1296 std::string rtsp = (
char*)camera;
1301 MODebug2->
Message(
"moVideoManager::GetCameraByName > founded: camera: " + camera );
1303 for(
int d=0;d<(int)m_CaptureDevices.Count();d++) {
1307 if (m_CapDev.
GetName()==camera
1313 ( camera==
"default" && d>=0 && m_CapDev.
IsPresent() )
1316 MODebug2->
Message(
"moVideoManager::GetCameraByName > founded: camera: " + camera );
1354 if ( newCD.
GetName()==
"default" && camera!=
"default") {
1357 Cam = CreateCamera( newCD );
1363 if ( rtsp.find(
"rtsp")==0 || rtsp.find(
"RTSP")==0
1364 || rtsp.find(
"http")==0 || rtsp.find(
"HTTP")==0
1365 || rtsp.find(
"https")==0 || rtsp.find(
"HTTPS")==0 ) {
1372 m_StreamDev.
m_Path = camera;
1381 m_CaptureDevices.Add(m_StreamDev);
1382 Cam = CreateCamera( m_StreamDev );
1391 return m_pLiveSystems->Count();
1399 return m_CameraDevices;
1405 const moCaptureDevices&
1407 if (m_pLiveSystems && m_pLiveSystems->GetVideoFramework()) {
1409 m_CaptureDevices = (*m_pLiveSystems->GetVideoFramework()->LoadCaptureDevices());
1412 return m_CaptureDevices;
1416 return m_CircularVideoBuffers.GetRef(cb_idx);
1420 return m_CircularVideoBuffers.Count();
1424 return m_VideoBufferPaths.GetRef(vb_idx);
1428 return m_VideoBufferPaths.Count();
1437 if (pVideoBufferPath) {
1442 return pVideoBuffer;
1446 return m_VideoBufferPaths.Count();
1449 #include <gst/gst.h> 1463 onemilisecond = GST_MSECOND;
1464 onesecond = GST_SECOND;
1465 oneminute = 60 * onesecond;
1466 onehour = 60 * oneminute;
1467 oneday = 24 * onehour;
1468 oneyear = 365 * oneday;
1470 years = duration / oneyear; duration = duration - years * oneyear;
1471 days = duration / oneday; duration = duration - days * oneday;
1472 hours = duration / onehour; duration = duration - hours * onehour;
1473 minutes = duration / oneminute; duration = duration - minutes * oneminute;
1474 seconds = duration / onesecond; duration = duration - seconds * onesecond;
1475 miliseconds = duration / onemilisecond; duration = duration - miliseconds * onemilisecond;
1478 if (years>0) timecodestr =
IntToStr(years) +
" years ";
1479 if (days>0) timecodestr+=
IntToStr(days) +
" days ";
1480 if (hours>0) { timecodestr+=
IntToStr(hours,2) +
":"; }
1481 else { timecodestr+=
"00:"; }
1482 if (minutes>0) { timecodestr+=
IntToStr(minutes,2) +
":"; }
1483 else { timecodestr+=
"00:"; }
1484 if (seconds>0) { timecodestr+=
IntToStr(seconds,2) +
"."; }
1485 else { timecodestr+=
"00."; }
1486 if (miliseconds>0) { timecodestr+=
IntToStr(miliseconds/10,2); }
1487 else { timecodestr+=
"00"; }
1494 double years,oneyear;
1496 double hours,onehour;
1497 double minutes,oneminute;
1498 double seconds,onesecond;
1499 double miliseconds,onemilisecond;
1501 double frames,durationF;
1504 onemilisecond = framespersecond/1000.0f;
1505 onesecond = framespersecond;
1506 oneminute = 60 * onesecond;
1507 onehour = 60 * oneminute;
1508 oneday = 24 * onehour;
1509 oneyear = 365 * oneday;
1510 durationF = duration;
1512 years =
moMathd::Floor(durationF / oneyear); duration = duration - (long)(years * oneyear);durationF=duration;
1513 days =
moMathd::Floor(durationF / oneday); duration = duration - (long)(days * oneday);durationF=duration;
1514 hours =
moMathd::Floor(durationF / onehour); duration = duration - (long)(hours * onehour);durationF=duration;
1515 minutes =
moMathd::Floor(durationF / oneminute); duration = duration - (long)(minutes * oneminute);durationF=duration;
1516 seconds =
moMathd::Floor(durationF / onesecond); duration = duration - (long)(seconds * onesecond);durationF=duration;
1517 frames =
moMathd::Floor(durationF); duration = duration - (long)(frames*1.0);durationF=duration;
1518 miliseconds =
moMathd::Floor(durationF / onemilisecond); duration = duration - (long)(miliseconds * onemilisecond);durationF=duration;
1522 if (years>0) timecodestr =
IntToStr((
long)years) +
" years ";
1523 if (days>0) timecodestr+=
IntToStr((
long)days) +
" days ";
1524 if (hours>0) { timecodestr+=
IntToStr((
long)hours) +
":"; }
1525 else { timecodestr+=
"00:"; }
1526 if (minutes>0) { timecodestr+=
IntToStr((
long)minutes,2) +
":"; }
1527 else { timecodestr+=
"00:"; }
1528 if (seconds>0) {timecodestr+=
IntToStr((
long)seconds,2) +
":"; }
1529 else { timecodestr+=
"00:"; }
1530 if (frames>0) { timecodestr+=
IntToStr((
long)frames,2) +
"."; }
1531 else { timecodestr+=
"00."; }
1532 if (miliseconds>0) { timecodestr+=
IntToStr((
int)miliseconds); }
1533 else { timecodestr+=
"000"; }
1553 if(!m_pLiveSystems)
return;
1557 if (m_bAutoReconnect) {
1558 m_pLiveSystems->UpdateLiveSystems();
1561 actual = p_EventList->
First;
1564 while(actual!=NULL) {
1566 pLS = m_pLiveSystems->Get(actual->
devicecode);
1569 if ( pBucketsPool!=NULL ) {
1577 p_EventList->
Delete(actual);
1579 }
else actual = actual->
next;
1584 for(
MOuint i =0; i< m_pLiveSystems->Count(); i++) {
1586 pLS = m_pLiveSystems->Get(i);
1592 if ( pBucketsPool!=NULL ) {
1594 if ( pBucketsPool->
IsFull() ) {
1605 if( pSample!=NULL ) {
1632 BYTE* pix = &pbuffer[a];
1663 bool circularvbuf_check = (m_CircularVideoBuffers.Count()==0);
1664 for(
MOuint c=0; c<m_CircularVideoBuffers.Count(); c++) {
1667 pCircularVideoBuffer = m_CircularVideoBuffers[c];
1668 if (pCircularVideoBuffer &&
1670 circularvbuf_check =
true;
1677 if (circularvbuf_check==
false) {
1679 moText(
" texture not used in any circular video buffers."));
1706 for(
MOuint c=0; c<m_CircularVideoBuffers.Count(); c++) {
1709 pCircularVideoBuffer = m_CircularVideoBuffers[c];
1711 if (pCircularVideoBuffer) {
1723 for(
MOuint k=0; k<m_VideoBufferPaths.Count(); k++) {
1727 if (pVideoBufferPath && !pVideoBufferPath->
LoadCompleted()) {
1749 if (m_pLiveSystems) {
1759 if (pSample!=NULL) {
1775 if (m_pLiveSystems) {
1776 m_pLiveSystems->UnloadLiveSystems();
1777 delete m_pLiveSystems;
1778 m_pLiveSystems = NULL;
1780 for(
MOuint k=0;k<m_VideoBufferPaths.Count();k++) {
1782 if (pVideoBufferPath) {
1783 pVideoBufferPath->
Finish();
1784 delete pVideoBufferPath;
1787 m_VideoBufferPaths.Empty();
1800 m_pBucketsPool = NULL;
1801 m_pVideoGraph = NULL;
1802 m_pVideoSample = NULL;
1816 m_pBucketsPool = NULL;
1817 m_pVideoGraph = NULL;
1818 m_pVideoSample = NULL;
1821 m_CaptureDevice = p_capdev;
1832 if ( m_pBucketsPool!=NULL )
Finish();
1837 #ifdef MO_DIRECTSHOW 1838 moDsGraph* pDsGraph;
1839 pDsGraph =
new moDsGraph();
1853 if ( m_pVideoGraph ) {
1854 if (m_pVideoGraph->InitGraph()) {
1855 if( m_pVideoGraph->BuildLiveGraph( m_pBucketsPool , m_CaptureDevice ) ) {
1856 m_CaptureDevice.
SetVideoFormat( m_pVideoGraph->GetVideoFormat() );
1857 m_pVideoGraph->Play();
1859 m_pVideoSample =
new moVideoSample( m_pVideoGraph->GetVideoFormat(), NULL );
1866 return (m_pBucketsPool && m_pVideoGraph && m_pVideoSample);
1872 if (m_pVideoGraph!=NULL) {
1873 m_pVideoGraph->FinishGraph();
1874 delete m_pVideoGraph;
1875 m_pVideoGraph = NULL;
1878 if (m_pBucketsPool!=NULL) {
1879 delete m_pBucketsPool;
1880 m_pBucketsPool = NULL;
1883 if (m_pVideoSample) {
1884 delete m_pVideoSample;
1885 m_pVideoSample = NULL;
1891 m_pTexture = p_Texture;
1906 return m_CaptureDevice.GetLabelName();
1911 return m_CaptureDevice.GetName();
1924 return m_pVideoSample;
1936 m_CaptureDevice = p_capdev;
1941 return m_CaptureDevice;
1946 return m_pBucketsPool;
1955 m_pVideoFramework = NULL;
1957 #ifdef MO_DIRECTSHOW 1972 if (m_pVideoFramework!=NULL) {
1973 delete m_pVideoFramework;
1974 m_pVideoFramework = NULL;
1984 m_pVideoFramework->SetPreferredDevices( p_pPreferredDevices );
1986 moCaptureDevices* pCapDevs = m_pVideoFramework->LoadCaptureDevices();
2012 return ( pCapDevs->Count() > 0 );
2019 moCaptureDevices* pCapDevs = m_pVideoFramework->UpdateCaptureDevices();
2021 int oldCount = Count();
2023 for(
MOuint i = 0; i < pCapDevs->Count(); i++) {
2025 if ( pCapDevs->Get(i).IsPresent() ) {
2036 if (m_pVideoFramework->CheckCaptureDevice( i )) {
2037 m_pVideoFramework->SetPreferredFormat( pCapDevs->Get(i) );
2046 if (m_pVideoFramework->CheckCaptureDevice( i )) {
2109 return ( (
int)Count() > oldCount );
2118 m_pVideoFramework->CleanCaptureDevices();
2120 for(
MOuint i= 0; i< Count(); i++ ) {
2129 return (Count()==0);
2135 return m_pVideoFramework;
2143 pLS = Get( p_devcode );
virtual MOboolean Finish()
#define MO_VIDEO_SOURCEINTERPOLATIONJUMP
virtual void JumpRecording(long at_position)
virtual MOboolean Finish()
Finaliza el objeto, libera recursos.
MOint m_SourceWidth
PUERTO DEL DISPOSITIVO.
virtual MOboolean Finish()
virtual void SetInterpolation(MOuint p_FrameJump, MOuint p_InterpolationTime)
moVideoFormat GetVideoFormat()
Devuelve el formato de video.
moBucketsPool * GetBucketsPool()
int GetSourceHeight() const
Devuelve el alto de la imagen de origen.
const moCaptureDevices & GetCaptureDevices(bool reload=true)
void Error(moText p_text)
Anuncia y registra un error.
bool DestroyRetreivedBucket()
#define MO_VIDEO_CIRCULARSOURCEWIDTH
#define MO_VIDEO_BUFFERFORMAT
Plataforma de reproducción de video, actualmente GStreamer para todas las plataformas.
#define MO_VIDEO_CIRCULARBUFFERFORMAT
moColorMode
Formatos de codificacion de color.
moVideoSample * GetVideoSample()
#define MO_LIVE_SCALEWIDTH
MOboolean Delete(moEvent *ev)
MOswitch GetStatus(MOdevcode)
moDefineDynamicArray(moCircularVideoBuffers) moDefineDynamicArray(moVideoFrames) moDefineDynamicArray(moVideoBuffers) moDefineDynamicArray(moLiveSystemPtrs) moDefineDynamicArray(moVideoBufferPaths) moVideoFrame
moCamera * GetCameraByName(const moText &camera, bool load=false, moCaptureDevice customCD=moCaptureDevice())
virtual bool IsRunning()=0
Está corriendo.
#define MO_VIDEO_CIRCULARSOURCEHEIGHT
moRenderManager * GetRenderMan()
void SetCaptureDevice(moCaptureDevice p_capdev)
MOboolean IsTextureNonPowerOf2Disabled() const
virtual long GetRecordPosition()
virtual MOboolean Finish()
void SetType(moLiveSystemType p_Type)
virtual MOboolean Init()
Inicializa el objeto.
#define MO_VIDEO_CIRCULARWIDTH
MOfloat m_fFramesPerSecond
bool Unlock()
Libera el acceso al buffer interno.
virtual ~moCircularVideoBuffer()
MOswitch SetStatus(MOdevcode, MOswitch)
MOint AddTexture(MOuint p_type, moText p_name, moTexParam p_tex_param=MODefTex2DParams)
moCaptureDevice GetCaptureDevice()
MOboolean BuildEmpty(MOuint p_width, MOuint p_height)
virtual bool IsRecording()
#define MO_LIVE_LABELNAME
bool Lock()
Paraliza el acceso al buffer interno.
#define MO_VIDEO_SOURCEINTERPOLATIONTIME
#define MO_VIDEO_SOURCEXOFFSET
void Warning(moText p_text)
Anuncia y registra un llamado de atencion.
#define MO_VIDEO_CIRCULARBUFFERFRAMES
virtual void GetFrame(MOuint p_i)
moLiveSystemType GetType()
virtual void PauseRecording()
const moText & GetName() const
Devuelve el nombre del dispositivo.
#define MO_LIVE_SCALEHEIGHT
#define MO_LIVE_COLORMODE
static double Floor(double fValue)
virtual MOboolean Init()
Inicializa el objeto.
moVideoFormat & GetVideoFormat()
Devuelve el formato de video del dispositivo.
virtual moText GetVideoInput()
clase de para manejar textos
moTexture * GetTexture(MOuint p_moid)
moResourceManager * m_pResourceManager
virtual MOboolean ActivateInterpolation(MOboolean activate=true)
virtual MOboolean Init()
Inicializa el objeto.
Grafo de reproducción de video.
Dispositivo de entrada/salida, típicamente, interfaces humanas de IO y datos ( teclado, mouse, tableta, tcp, udp, serial )
moVideoFramework * GetVideoFramework()
Muestra de video o cuadro.
moCamera * GetCamera(int cam_idx)
MOboolean UpdateImages(MOint maxfiles=-1)
#define MO_LIVE_DEVICENAME
Buffer de imágenes para video.
virtual ~moVideoBufferPath()
Sistema de tratamiento de una señal en vivo de video.
void SetLabelName(const moText &p_labelname)
Fija el nombre de código del dispositivo.
Clase de manipulación para el cuadro de un video en memoria.
virtual moStreamState GetState()
Estado de la reproducción.
virtual MOboolean Init()
Inicializa el objeto.
void Present(bool p=true)
Fija la presencia del dispositivo.
#define MO_VIDEO_SOURCEHEIGHT
static moText FramesToTimecode(MOulonglong duration, double framespersecond)
#define MO_MOLDEOOBJECT_UNDEFINED_ID
virtual MOboolean Finish()
moFileManager * GetFileMan()
void SetName(moText p_name)
int GetSourceWidth() const
Devuelve el ancho de la imagen de origen.
#define MO_VIDEO_SOURCEINTERPOLATION
static moText NanosecondsToTimecode(MOulonglong duration)
const moText & GetLabelName() const
Devuelve el nombre de código del dispositivo.
Sistema de tratamiento de señales en vivo de video.
virtual void StartRecording(long at_position=-1)
MOboolean LoadCompleted()
static MOuint NextPowerOf2(MOuint p_seed)
#define MO_VIDEO_CIRCULARBUFFERNAME
clase base para el manejo de una textura
Administrador de moBucket 's.
moDirectory * GetDirectory(moText p_Path)
moText GetCompletePath()
Get inmediate folder name: return "PP" for "PP/myFileName.txt".
Administrador de recursos.
bool IsPresent() const
Señala y verifica si está presente el dispositivo.
virtual void StopRecording()
virtual MOboolean Finish()
Finaliza el objeto, libera recursos.
MOint GetValue(MOdevcode)
virtual MOboolean Init()
Inicializa el objeto.
virtual void GetFrame(MOuint p_i)
#define MO_VIDEO_CIRCULARSOURCEXOFFSET
void * m_pSampleBuffer
Formato de video de la muestra.
static moDebug * MODebug2
Clase de impresión de errores para depuración.
void SetVideoSample(moVideoFormat p_videoformat, MOpointer p_buffer)
Fija el formato de video y puntero al buffer de datos.
moDataManager * GetDataMan()
virtual MOboolean Init()
Inicializa el objeto.
Definición de un dispositivo de video, generalmente uno de captura de video, o camara.
moCamera * CreateCamera(const moCaptureDevice &p_CapDev)
virtual void Update(moEventList *p_EventList)
Espacio en memoria para compartir datos entre objetos.
#define MO_VIDEO_CIRCULARSOURCEYOFFSET
const moTextArray & GetCameraNames()
#define MO_VIDEO_CIRCULARBUFFERINPUT
virtual MOboolean Finish()
Finaliza el objeto, libera recursos.
MOpointer GetPointer(MOdevcode devcode)
bool IsPowerOfTwo(int iValue)
#define MO_VIDEO_SOURCEYOFFSET
void SetName(const moText &p_name)
MOdevcode GetCode(moText)
moVideoGraph * GetVideoGraph()
virtual MOboolean LoadSample(moVideoSample *pvideosample)
LIBMOLDEO_API moText0 IntToStr(int a)
virtual void ContinueRecording()
MOubyte * GetBuffer()
Devuelve el puntero al buffer de datos.
int GetCircularVideoBufferCount()
moBucket * RetreiveBucket()
moCircularVideoBuffer * GetCircularVideoBuffer(int cb_idx)
bool GetStatus(MOdevcode p_devcode)
una textura asociada a una animación de cuadros
void SetVideoFormat(moGstCaps *caps, moGstBuffer *buffer=NULL)
MOboolean m_bInitialized
Valor de inicialización.
moBucket * RetreivedBucket()
virtual ~moVideoManager()
MOboolean LoadImage(moBitmap *pImage, int indeximage=-1)
int GetVideoBufferPathCount()
virtual MOboolean Finish()
Finaliza el objeto, libera recursos.
Buffer Circular de imágenes para video.
void Message(moText p_text)
Anuncia un mensaje al usuario además de guardarlo en el log de texto.
bool LoadLiveSystems(moCaptureDevices *p_pPreferredDevices)
#define MO_VIDEO_CIRCULARHEIGHT
void SetTexture(moTexture *p_Texture)
moVideoFormat m_VideoFormat
#define MO_VIDEO_SOURCEWIDTH
moVideoBuffers m_VideoBuffers
moVideoBufferPath * GetVideoBufferPath(int vb_idx)
int GetVideoBufferCount()
moVideoBuffer * GetVideoBuffer(int vb_idx)
moTextureManager * GetTextureMan()
const moText & GetPath() const
Devuelve el camino al dispositivo.
MOboolean SetBuffer(const GLvoid *p_buffer, GLenum p_format=GL_RGBA, GLenum p_type=GL_UNSIGNED_BYTE)
moText m_Path
Descripción del dispositivo.
#define MO_VIDEO_BUFFERNAME