#include "MediaHelper.h"
|
//#include <libbase64.h>
|
#include <liveMedia/liveMedia.hh>
|
#include <liveMedia/Base64.hh>
|
|
// the caller is responsible for delete[]ing.
|
uint8_t* base64_decode(char const* in, size_t inSize, size_t& resultSize, bool trimTrailingZeros)
|
{
|
unsigned _resultSize = resultSize;
|
Boolean _trimTrailingZeros = trimTrailingZeros;
|
unsigned char* ret = base64Decode(in, inSize, _resultSize, _trimTrailingZeros);
|
resultSize = _resultSize;
|
return ret;
|
}
|
|
// the caller is responsible for delete[]ing.
|
char* base64_encode(char const* orig, size_t origLength)
|
{
|
unsigned _origLength = origLength;
|
return base64Encode(orig, _origLength);
|
}
|
|
SPropRecord* parseSPropParameterSets(char const* sPropParameterSetsStr, int& numSPropRecords)
|
{
|
// Make a copy of the input string, so we can replace the commas with '\0's:
|
char* inStr = strDup(sPropParameterSetsStr);
|
if (inStr == NULL)
|
{
|
numSPropRecords = 0;
|
return NULL;
|
}
|
|
// Count the number of commas (and thus the number of parameter sets):
|
numSPropRecords = 1;
|
char* s;
|
for (s = inStr; *s != '\0'; ++s)
|
{
|
if (*s == ',')
|
{
|
++numSPropRecords;
|
*s = '\0';
|
}
|
}
|
|
// Allocate and fill in the result array:
|
SPropRecord* resultArray = new SPropRecord[numSPropRecords];
|
s = inStr;
|
for (unsigned i = 0; i < numSPropRecords; ++i)
|
{
|
resultArray[i].sPropBytes = nullptr;
|
resultArray[i].sPropLength = 0;
|
|
unsigned sPropLength = 0;
|
|
uint8_t* tmp = base64Decode(s, sPropLength, True);
|
if (tmp != nullptr && sPropLength > 0)
|
{
|
resultArray[i].sPropBytes = new uint8_t[256];
|
memcpy(resultArray[i].sPropBytes, tmp, sPropLength);
|
}
|
delete[] tmp;
|
|
//base64_decode(s, strlen(s), (char*)resultArray[i].sPropBytes, &sPropLength, 0);
|
resultArray[i].sPropLength = sPropLength;
|
|
s += strlen(s) + 1;
|
}
|
|
delete[] inStr;
|
return resultArray;
|
}
|