OSDN Git Service

RIO-8453: Changed logfile appenders to take boolean flag indicating whether or not...
authorPacketVideo CM <engbuild@pv.com>
Sat, 20 Mar 2010 00:52:52 +0000 (17:52 -0700)
committerPacketVideo CM <engbuild@pv.com>
Sat, 20 Mar 2010 00:52:52 +0000 (17:52 -0700)
Change-Id: I4db1af9a2ff1124c5715d59e46c40a40c4b40c52

engines/2way/src/pv_2way_sdkinfo.h
engines/author/src/pv_author_sdkinfo.h
engines/player/src/pv_player_engine.cpp
engines/player/src/pv_player_sdkinfo.h
oscl/oscl/osclio/src/oscl_file_native.cpp
oscl/pvlogger/src/pvlogger_cfg_file_parser.cpp
oscl/pvlogger/src/pvlogger_cfg_file_parser.h
oscl/pvlogger/src/pvlogger_file_appender.h
pvmi/media_io/pvmiofileoutput/src/pvmi_media_io_fileoutput.cpp

index a794f18..389cfb4 100644 (file)
@@ -21,7 +21,7 @@
 // This header file is automatically generated at build-time
 // *** OFFICIAL RELEASE INFO -- Will not auto update
 
-#define PV2WAY_ENGINE_SDKINFO_LABEL "1306259"
+#define PV2WAY_ENGINE_SDKINFO_LABEL "1306300"
 #define PV2WAY_ENGINE_SDKINFO_DATE 0x20100308
 
 #endif //PV_2WAY_SDKINFO_H_INCLUDED
index 6db9998..1d55b85 100644 (file)
@@ -21,7 +21,7 @@
 // This header file is automatically generated at build-time
 // *** OFFICIAL RELEASE INFO -- Will not auto update
 
-#define PVAUTHOR_ENGINE_SDKINFO_LABEL "1306259"
+#define PVAUTHOR_ENGINE_SDKINFO_LABEL "1306300"
 #define PVAUTHOR_ENGINE_SDKINFO_DATE 0x20100308
 
 #endif //PV_AUTHOR_SDKINFO_H_INCLUDED
index b752a44..da0b764 100644 (file)
@@ -1380,7 +1380,9 @@ void PVPlayerEngine::Run()
                 EngineCommandCompleted(iCurrentCmd[0].GetCmdId(), iCurrentCmd[0].GetContext(), cmdstatus);
             }
         }
-        else if (iCurrentCmd[0].GetCmdType() == PVP_ENGINE_COMMAND_PAUSE)
+        else if ((iCurrentCmd[0].GetCmdType() == PVP_ENGINE_COMMAND_PAUSE) ||
+                 (iCurrentCmd[0].GetCmdType() == PVP_ENGINE_COMMAND_PAUSE_DUE_TO_ENDOFCLIP) ||
+                 (iCurrentCmd[0].GetCmdType() == PVP_ENGINE_COMMAND_PAUSE_DUE_TO_ENDTIME_REACHED))
         {
             PVMFStatus cmdstatus = DoPause(iCurrentCmd[0]);
 
index e2ceb42..7d06662 100644 (file)
@@ -21,7 +21,7 @@
 // This header file is automatically generated at build-time
 // *** OFFICIAL RELEASE INFO -- Will not auto update
 
-#define PVPLAYER_ENGINE_SDKINFO_LABEL "1306259"
+#define PVPLAYER_ENGINE_SDKINFO_LABEL "1306300"
 #define PVPLAYER_ENGINE_SDKINFO_DATE 0x20100308
 
 #endif //PV_PLAYER_SDKINFO_H_INCLUDED
index 7ad53d2..700f412 100644 (file)
@@ -538,9 +538,12 @@ TOsclFileOffset OsclNativeFile::Tell()
 int32 OsclNativeFile::Flush()
 {
 
-    if (iFile)
-        return fflush(iFile);
-    return EOF;
+
+    if (!iFile || fflush(iFile) == EOF)
+        return EOF;
+    // flush OS buffers to disk
+    return fsync(fileno(iFile));
+
 }
 
 
index 8299d9f..7861e3e 100644 (file)
@@ -159,6 +159,8 @@ PVLoggerCfgFileParser::Parse
                     eAppenderType_t at;
                     if (oscl_strstr(pszLine, _CSTR("LOGTOFILE")))
                         at = ePVLOG_APPENDER_FILE;
+                    else if (oscl_strstr(pszLine, _CSTR("LOGTOFILE_FLUSH")))
+                        at = ePVLOG_APPENDER_FILE_FLUSH;
                     else if (oscl_strstr(pszLine, _CSTR("LOGTOMEM")))
                         at = ePVLOG_APPENDER_MEMORY;
                     else
@@ -304,6 +306,18 @@ PVLoggerCfgFileParser::CreateLogAppender
             );
             break;
         }
+        case ePVLOG_APPENDER_FILE_FLUSH:
+        {
+            OSCL_ASSERT(pszLogFileName);
+            typedef TextFileAppender<TimeAndIdLayout, 1024> typeAppender;
+            OSCL_TRY(
+                err,
+                pAppender = (PVLoggerAppender*)typeAppender::CreateAppender(pszLogFileName, 0, true); // enable flushing
+                pRC = new OsclRefCounterSA<LogAppenderDestructDealloc<typeAppender> >(pAppender);
+                appenderPtr.Bind(pAppender, pRC);
+            );
+            break;
+        }
         case ePVLOG_APPENDER_MEMORY:
         {
             OSCL_ASSERT(pszLogFileName);
index 99d0cfb..6e3a318 100644 (file)
@@ -1,5 +1,5 @@
 /* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
+ * Copyright (C) 1998-2010 PacketVideo
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -122,7 +122,8 @@ class PVLoggerCfgFileParser
         {
             ePVLOG_APPENDER_FILE,
             ePVLOG_APPENDER_MEMORY,
-            ePVLOG_APPENDER_STDERR
+            ePVLOG_APPENDER_STDERR,
+            ePVLOG_APPENDER_FILE_FLUSH,
         } eAppenderType_t;
 
         //======================================================================
index 4629b52..b293d24 100644 (file)
@@ -1,5 +1,5 @@
 /* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
+ * Copyright (C) 1998-2010 PacketVideo
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -34,10 +34,9 @@ class SharableTextFileAppender : public PVLoggerAppender
     public:
         typedef PVLoggerAppender::message_id_type message_id_type;
 
-        static SharableTextFileAppender<Layout, LayoutBufferSize, Lock>* CreateAppender(OSCL_TCHAR * filename, uint32 cacheSize = 0)
+        static SharableTextFileAppender<Layout, LayoutBufferSize, Lock>* CreateAppender(OSCL_TCHAR * filename, uint32 cacheSize = 0, bool flush = false)
         {
-
-            SharableTextFileAppender<Layout, LayoutBufferSize, Lock> * appender = new SharableTextFileAppender<Layout, LayoutBufferSize, Lock>();
+            SharableTextFileAppender<Layout, LayoutBufferSize, Lock> * appender = new SharableTextFileAppender<Layout, LayoutBufferSize, Lock>(flush);
             if (NULL == appender) return NULL;
 
 #ifdef T_ARM
@@ -118,7 +117,10 @@ class SharableTextFileAppender : public PVLoggerAppender
                     _logFile.Write(_cache.ptr, sizeof(char), _cache.len);
                     _logFile.Write(stringbuf, sizeof(char), size);
                     _logFile.Write(newline, sizeof(char), 2);
-                    _logFile.Flush();
+                    if (_flush)
+                    {
+                        _logFile.Flush();
+                    }
                     _cache.len = 0;
                 }
             }
@@ -126,7 +128,10 @@ class SharableTextFileAppender : public PVLoggerAppender
             {
                 _logFile.Write(stringbuf, sizeof(char), size);
                 _logFile.Write(newline, sizeof(char), 2);
-                _logFile.Flush();
+                if (_flush)
+                {
+                    _logFile.Flush();
+                }
             }
 
             _lock.Unlock();
@@ -161,7 +166,8 @@ class SharableTextFileAppender : public PVLoggerAppender
             va_end(va);
         }
 
-        SharableTextFileAppender()
+        SharableTextFileAppender(bool flush = false) :
+                _flush(flush)
         {
             _cache.len = 0;
             _cache.ptr = 0;
@@ -193,7 +199,7 @@ class SharableTextFileAppender : public PVLoggerAppender
     private:
         Lock _lock;
         char* stringbuf;
-
+        bool _flush;
 
 };
 
@@ -204,10 +210,10 @@ class TextFileAppender : public PVLoggerAppender
         typedef PVLoggerAppender::message_id_type message_id_type;
 
         template<class T>
-        static TextFileAppender<Layout, LayoutBufferSize, Lock>* CreateAppender(const T* filename, uint32 cacheSize = 0)
+        static TextFileAppender<Layout, LayoutBufferSize, Lock>* CreateAppender(const T* filename, uint32 cacheSize = 0, bool flush = false)
         {
 
-            TextFileAppender<Layout, LayoutBufferSize, Lock> * appender = new TextFileAppender<Layout, LayoutBufferSize, Lock>();
+            TextFileAppender<Layout, LayoutBufferSize, Lock> * appender = new TextFileAppender<Layout, LayoutBufferSize, Lock>(flush);
             if (NULL == appender) return NULL;
 
 #ifdef T_ARM
@@ -286,7 +292,10 @@ class TextFileAppender : public PVLoggerAppender
                     _logFile.Write(_cache.ptr, sizeof(char), _cache.len);
                     _logFile.Write(stringbuf, sizeof(char), size);
                     _logFile.Write(newline, sizeof(char), 2);
-                    _logFile.Flush();
+                    if (_flush)
+                    {
+                        _logFile.Flush();
+                    }
                     _cache.len = 0;
                 }
             }
@@ -294,7 +303,10 @@ class TextFileAppender : public PVLoggerAppender
             {
                 _logFile.Write(stringbuf, sizeof(char), size);
                 _logFile.Write(newline, sizeof(char), 2);
-                _logFile.Flush();
+                if (_flush)
+                {
+                    _logFile.Flush();
+                }
             }
 
             _lock.Unlock();
@@ -329,7 +341,8 @@ class TextFileAppender : public PVLoggerAppender
             va_end(va);
         }
 
-        TextFileAppender()
+        TextFileAppender(bool flush = false) :
+                _flush(flush)
         {
             _cache.len = 0;
             _cache.ptr = 0;
@@ -361,7 +374,7 @@ class TextFileAppender : public PVLoggerAppender
     private:
         Lock _lock;
         char* stringbuf;
-
+        bool _flush;
 
 };
 
@@ -371,10 +384,10 @@ class BinaryFileAppender : public PVLoggerAppender
         typedef PVLoggerAppender::message_id_type message_id_type;
 
         template<class T>
-        static BinaryFileAppender* CreateAppender(const T* filename, uint32 cacheSize = 0)
+        static BinaryFileAppender* CreateAppender(const T* filename, uint32 cacheSize = 0, bool flush = false)
         {
 
-            BinaryFileAppender * appender = OSCL_NEW(BinaryFileAppender, ());
+            BinaryFileAppender * appender = new BinaryFileAppender(flush);
             if (NULL == appender) return NULL;
 
 #ifdef T_ARM
@@ -452,14 +465,20 @@ class BinaryFileAppender : public PVLoggerAppender
                     {
                         _logFile.Write(_cache.ptr, sizeof(uint8), _cache.len);
                         _logFile.Write(buffer, sizeof(uint8), length);
-                        _logFile.Flush();
+                        if (_flush)
+                        {
+                            _logFile.Flush();
+                        }
                         _cache.len = 0;
                     }
                 }
                 else
                 {
                     _logFile.Write(buffer, sizeof(uint8), length);
-                    _logFile.Flush();
+                    if (_flush)
+                    {
+                        _logFile.Flush();
+                    }
                 }
             }
             va_end(va);
@@ -473,7 +492,8 @@ class BinaryFileAppender : public PVLoggerAppender
         }
 
     private:
-        BinaryFileAppender()
+        BinaryFileAppender(bool flush = false) :
+                _flush(flush)
         {
             _cache.len = 0;
             _cache.ptr = 0;
@@ -483,6 +503,7 @@ class BinaryFileAppender : public PVLoggerAppender
         Oscl_File _logFile;
         OsclMemoryFragment _cache;
         uint32 _cacheSize;
+        bool _flush;
 };
 
 
index 7d142ac..a0ead1c 100644 (file)
@@ -29,6 +29,7 @@
 
 
 #define LOG_OUTPUT_TO_FILE  1
+#define FLUSH_ENABLED 0  // enabling this flushes data to disk immediately and degrades performance
 
 // Define entry point for this DLL.
 OSCL_DLL_ENTRY_POINT_DEFAULT()
@@ -270,7 +271,6 @@ void PVRefFileOutput::Cleanup()
 {
     if (iFileOpened && iLogOutputToFile)
     {
-        iOutputFile.Flush();
         iOutputFile.Close();
     }
     iFileOpened = false;
@@ -557,7 +557,9 @@ PVMFCommandId PVRefFileOutput::Flush(const OsclAny* aContext)
         case STATE_STARTED:
             if (iFileOpened && iLogOutputToFile)
             {
+#if (FLUSH_ENABLED)
                 iOutputFile.Flush();
+#endif
             }
             iState = STATE_INITIALIZED;
             status = PVMFSuccess;
@@ -714,7 +716,6 @@ void PVRefFileOutput::ThreadLogoff()
     {
         if (iFileOpened && iLogOutputToFile)
         {
-            iOutputFile.Flush();
             iOutputFile.Close();
         }
         iFileOpened = false;
@@ -2139,6 +2140,11 @@ OSCL_EXPORT_REF bool PVRefFileOutputActiveTimingSupport::queryInterface(const PV
     return false;
 }
 
+void PVRefFileOutputActiveTimingSupport::queryUuid(PVUuid& uuid)
+{
+    uuid = PvmiClockExtensionInterfaceUuid;
+}
+
 bool PVRefFileOutputActiveTimingSupport::FrameStepMode()
 {
     if (iClock && iClock->GetCountTimebase())
@@ -2524,7 +2530,9 @@ void PVRefFileOutput::UpdateWaveChunkSize()
         iOutputFile.Write(&iRIFFChunk.chunkSize, sizeof(uint8), 4);
         iOutputFile.Seek(40, Oscl_File::SEEKSET);
         iOutputFile.Write(&iDataSubchunk.subchunk2Size, sizeof(uint8), 4);
+#if (FLUSH_ENABLED)
         iOutputFile.Flush();
+#endif
     }
 }