changeset 2405:c4d286e4bb80

Log for MemoryStream
author Ritor1
date Fri, 04 Jul 2014 23:17:24 +0600
parents 5f395dd759fb
children 33659ef7fbac
files MapsLongTimer.h MediaPlayer.cpp MediaPlayer.h
diffstat 3 files changed, 32 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/MapsLongTimer.h	Mon Jun 23 23:45:57 2014 +0600
+++ b/MapsLongTimer.h	Fri Jul 04 23:17:24 2014 +0600
@@ -20,5 +20,5 @@
   __int16 field_1E;
 };
 #pragma pack(pop)
-extern MapsLongTimer MapsLongTimersList[100];
+extern MapsLongTimer MapsLongTimersList[100]; //array_5B5928
 
--- a/MediaPlayer.cpp	Mon Jun 23 23:45:57 2014 +0600
+++ b/MediaPlayer.cpp	Fri Jul 04 23:17:24 2014 +0600
@@ -21,6 +21,7 @@
 #include "OpenALSoundProvider.h"
 
 #include "MediaPlayer.h"
+#include "Log.h"
 using namespace Media;
 
 Media::MPlayer *pMediaPlayer;
@@ -34,44 +35,48 @@
 void PlayAudio(const wchar_t * pFilename);
 void LoadMovie(const char *);
  
-class MemoryStream
+class MemoryStream //класс для работы с памятью
 {
   public:
-    inline MemoryStream(void *data, size_t data_size)
+    inline MemoryStream(void *data, size_t data_size)//inline - вставка прямо в код, MemoryStream - явный конструктор
     {
       this->data_size = data_size;
       this->data = data;
       this->current_pos = 0;
     }
-    inline MemoryStream()
+    inline MemoryStream() //конструктор по умолчанию
     {
       this->data_size = 0;
       this->data = nullptr;
       this->current_pos = 0;
     }
 
-    inline ~MemoryStream()
+    inline ~MemoryStream()//деструктор по умолчанию
     {
+      //Log::Warning(L"Destructor: data delete %u", data);
       if (data)
         delete [] data;
     }
 
-    inline size_t Write(void *buffer, size_t num_bytes)
+    inline size_t Write(void *buffer, size_t num_bytes)//запись в поток
     {
       if (!data)
       {
         data_size = 32 + num_bytes;
-        data = new char[data_size];
+        data = new char[data_size];//выделение памяти для data
+        //Log::Warning(L"new data %u", data);
         current_pos = 0;
       }
-      else if (current_pos + num_bytes >= data_size)
+      else if (current_pos + num_bytes >= data_size) //если выделенного буфера недостаточно
       {
         int  new_data_size = data_size + num_bytes + data_size / 8 + 4;
-        auto new_data = new char[new_data_size];
+        auto new_data = new char[new_data_size];//выделение памяти
+        //Log::Warning(L"new new_data %u", new_data);
 
         memcpy(new_data, data, data_size);
-        delete [] data;
-        
+        //Log::Warning(L"data delete %u", data);
+        delete [] data;//удаление памяти под data
+
         data_size = new_data_size;
         data = new_data;
       }
@@ -80,7 +85,7 @@
       return num_bytes;
     }
 
-    inline size_t Read(void *buffer, size_t num_bytes)
+    inline size_t Read(void *buffer, size_t num_bytes) //чтение из потока
     {
       size_t read_size = min(num_bytes, data_size - current_pos);
       if (read_size)
@@ -91,11 +96,11 @@
       return read_size;
     }
 
-    inline void Reset()
+    inline void Reset()//сброс
     {
       current_pos = 0;
     }
-    inline void SeekToEnd()
+    inline void SeekToEnd()//прыжок в конец
     {
       current_pos = data_size;
     }
@@ -929,6 +934,7 @@
           if (video.dec_ctx->frame_number >= video.stream->duration - 1 )
             end_current_file = true;
         }
+        //чтение пакетов
         if (av_read_frame(format_ctx, avpacket) < 0) //воспроизведение завершено
         {
           // probably movie is finished
@@ -945,7 +951,7 @@
           if (DecodeAudioFrame(audio.dec_ctx, avpacket, avframe, &audio_data, &num_audio_samples))
             provider->Stream16(audio_data_in_device, num_audio_samples, audio_data.Ptr());
           //continue;
-        }
+        } //неявно вызывается деструктор для audio_data
 
 		// Decode video frame
         //пакет к видеопотоку
--- a/MediaPlayer.h	Mon Jun 23 23:45:57 2014 +0600
+++ b/MediaPlayer.h	Fri Jul 04 23:17:24 2014 +0600
@@ -1,23 +1,25 @@
 #pragma once
 
-namespace Media
+namespace Media	//пространство имён Media
 {
-  class ITrack
+  class ITrack //класс для аудио
   {
-    public: virtual void Play(bool loop = false) = 0;
+    public:
+      virtual void Play(bool loop = false) = 0;
   };
 
-  class IMovie
+  class IMovie //класс для видео
   {
-    public: virtual void Play() = 0;
-            virtual void GetNextFrame(double dt, void *target_surface) = 0;
+    public:
+      virtual void Play() = 0;
+      virtual void GetNextFrame(double dt, void *target_surface) = 0;
   };
 
-  class MPlayer
+  class MPlayer //класс для мультимедиа плеера
   {
     public:
-               MPlayer();
-      virtual ~MPlayer();
+               MPlayer();//конструктор по умолчанию
+      virtual ~MPlayer();//деструктор
 
       ITrack *LoadTrack(const wchar_t *name);
       IMovie *LoadMovie(const wchar_t *name, int width, int height, int cache_ms);