Migrate AirplayServer and dnssd to Windows Platform.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

92 lines
2.0 KiB

#include "CAirServerCallback.h"
#include <stdio.h>
#include "FgUtf8Utils.h"
#include <locale.h>
#define min(a,b) (((a) < (b)) ? (a) : (b))
CAirServerCallback::CAirServerCallback()
: m_pPlayer(NULL)
{
memset(m_chRemoteDeviceId, 0, 128);
}
CAirServerCallback::~CAirServerCallback()
{
}
void CAirServerCallback::setPlayer(CSDLPlayer* pPlayer)
{
m_pPlayer = pPlayer;
}
void CAirServerCallback::connected(const char* remoteName, const char* remoteDeviceId) {
if (remoteDeviceId != NULL) {
strncpy(m_chRemoteDeviceId, remoteDeviceId, 128);
}
setlocale(LC_CTYPE, "");
std::wstring name = CFgUtf8Utils::UTF8_To_UTF16(remoteName);
wprintf(L"Client Name: %s\n", name.c_str());
}
void CAirServerCallback::disconnected(const char* remoteName, const char* remoteDeviceId) {
memset(m_chRemoteDeviceId, 0, 128);
}
void CAirServerCallback::outputAudio(SFgAudioFrame* data, const char* remoteName, const char* remoteDeviceId)
{
if (m_pPlayer)
{
if (m_chRemoteDeviceId[0] == '\0' && remoteDeviceId != NULL)
{
strncpy(m_chRemoteDeviceId, remoteDeviceId, 128);
}
if (0 != strcmp(m_chRemoteDeviceId, remoteDeviceId))
{
return;
}
m_pPlayer->outputAudio(data);
}
}
void CAirServerCallback::outputVideo(SFgVideoFrame* data, const char* remoteName, const char* remoteDeviceId)
{
if (m_pPlayer)
{
if (m_chRemoteDeviceId[0] == '\0' && remoteDeviceId != NULL)
{
strncpy(m_chRemoteDeviceId, remoteDeviceId, 128);
}
if (0 != strcmp(m_chRemoteDeviceId, remoteDeviceId))
{
return;
}
m_pPlayer->outputVideo(data);
}
}
void CAirServerCallback::videoPlay(char* url, double volume, double startPos)
{
printf("Play: %s", url);
}
double dbDuration = 10000;
double dbPosition = 0;
void CAirServerCallback::videoGetPlayInfo(double* duration, double* position, double* rate)
{
*duration = 1000;
*position = dbPosition;
*rate = 1.0;
dbPosition += 1;
}
void CAirServerCallback::log(int level, const char* msg)
{
#ifdef _DEBUG
OutputDebugStringA(msg);
OutputDebugStringA("\n");
#else
printf("%s\n", msg);
#endif
}