Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
68
Src/nsavi/info.cpp
Normal file
68
Src/nsavi/info.cpp
Normal file
|
@ -0,0 +1,68 @@
|
|||
#include "info.h"
|
||||
#include "read.h"
|
||||
|
||||
nsavi::Info::Info()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
nsavi::Info::~Info()
|
||||
{
|
||||
for (auto itr = this->begin(); itr != this->end(); itr++)
|
||||
{
|
||||
free((void*)itr->second);
|
||||
}
|
||||
}
|
||||
|
||||
int nsavi::Info::Read(nsavi::avi_reader* reader, uint32_t data_len)
|
||||
{
|
||||
while (data_len)
|
||||
{
|
||||
riff_chunk chunk;
|
||||
uint32_t bytes_read = 0;
|
||||
nsavi::read_riff_chunk(reader, &chunk, &bytes_read);
|
||||
data_len -= bytes_read;
|
||||
size_t malloc_size = chunk.size + 1;
|
||||
if (malloc_size == 0)
|
||||
return READ_INVALID_DATA;
|
||||
|
||||
char* str = (char*)calloc(malloc_size, sizeof(char));
|
||||
if (!str)
|
||||
return READ_OUT_OF_MEMORY;
|
||||
|
||||
reader->Read(str, chunk.size, &bytes_read);
|
||||
str[chunk.size] = 0;
|
||||
data_len -= bytes_read;
|
||||
|
||||
Set(chunk.id, str);
|
||||
|
||||
if (chunk.size & 1)
|
||||
{
|
||||
reader->Skip(1);
|
||||
data_len--;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void nsavi::Info::Set(uint32_t chunk_id, const char* data)
|
||||
{
|
||||
auto it = this->find(chunk_id);
|
||||
if (this->end() == it)
|
||||
{
|
||||
this->insert({ chunk_id, data });
|
||||
}
|
||||
else
|
||||
{
|
||||
it->second = data;
|
||||
}
|
||||
}
|
||||
const char* nsavi::Info::GetMetadata(uint32_t id)
|
||||
{
|
||||
InfoMap::iterator itr = InfoMap::find(id);
|
||||
if (itr != InfoMap::end())
|
||||
{
|
||||
return itr->second;
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue