Mercurial > mm7
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);