Skip to content

Commit

Permalink
[IPlayer] Add struct SPlayerAudioStreamInfo and GetAudioStreamInfo(in…
Browse files Browse the repository at this point in the history
…t iStream, SPlayerAudioStreamInfo &info).

[Players/GUI/LegacyPlayer/JSON] Remove
    GetAudioStreamLanguage(int iStream, CStdString &strLanguage)
    GetChannels()
    GetAudioCodecName()
    GetAudioStreamName(int iStream, CStdString &strStreamName)
from all players and replace them with GetAudioStreamInfo(int iStream, SPlayerAudioStreamInfo &info).
  • Loading branch information
ace20022 committed Feb 23, 2013
1 parent 2afa9c4 commit 1c57fc9
Show file tree
Hide file tree
Showing 14 changed files with 156 additions and 194 deletions.
24 changes: 18 additions & 6 deletions xbmc/GUIInfoManager.cpp
Expand Up @@ -1460,7 +1460,11 @@ CStdString CGUIInfoManager::GetLabel(int info, int contextWindow, CStdString *fa
break;
case VIDEOPLAYER_AUDIO_CODEC:
if(g_application.IsPlaying() && g_application.m_pPlayer)
strLabel = g_application.m_pPlayer->GetAudioCodecName();
{
SPlayerAudioStreamInfo info;
g_application.m_pPlayer->GetAudioStreamInfo(g_application.m_pPlayer->GetAudioStream(), info);
strLabel = info.audioCodecName;
}
break;
case VIDEOPLAYER_VIDEO_ASPECT:
if (g_application.IsPlaying() && g_application.m_pPlayer)
Expand All @@ -1472,7 +1476,11 @@ CStdString CGUIInfoManager::GetLabel(int info, int contextWindow, CStdString *fa
break;
case VIDEOPLAYER_AUDIO_CHANNELS:
if(g_application.IsPlaying() && g_application.m_pPlayer)
strLabel.Format("%i", g_application.m_pPlayer->GetChannels());
{
SPlayerAudioStreamInfo info;
g_application.m_pPlayer->GetAudioStreamInfo(g_application.m_pPlayer->GetAudioStream(), info);
strLabel.Format("%i", info.channels);
}
break;
case PLAYLIST_LENGTH:
case PLAYLIST_POSITION:
Expand Down Expand Up @@ -3343,6 +3351,10 @@ CStdString CGUIInfoManager::GetPlaylistLabel(int item) const
CStdString CGUIInfoManager::GetMusicLabel(int item)
{
if (!g_application.IsPlaying() || !m_currentFile->HasMusicInfoTag()) return "";

SPlayerAudioStreamInfo info;
g_application.m_pPlayer->GetAudioStreamInfo(g_application.m_pPlayer->GetAudioStream(), info);

switch (item)
{
case MUSICPLAYER_PLAYLISTLEN:
Expand All @@ -3362,7 +3374,7 @@ CStdString CGUIInfoManager::GetMusicLabel(int item)
float fTimeSpan = (float)(CTimeUtils::GetFrameTime() - m_lastMusicBitrateTime);
if (fTimeSpan >= 500.0f)
{
m_MusicBitrate = g_application.m_pPlayer->GetAudioBitrate();
m_MusicBitrate = info.bitrate;
m_lastMusicBitrateTime = CTimeUtils::GetFrameTime();
}
CStdString strBitrate = "";
Expand All @@ -3374,9 +3386,9 @@ CStdString CGUIInfoManager::GetMusicLabel(int item)
case MUSICPLAYER_CHANNELS:
{
CStdString strChannels = "";
if (g_application.m_pPlayer->GetChannels() > 0)
if (info.channels > 0)
{
strChannels.Format("%i", g_application.m_pPlayer->GetChannels());
strChannels.Format("%i", info.channels);
}
return strChannels;
}
Expand Down Expand Up @@ -3404,7 +3416,7 @@ CStdString CGUIInfoManager::GetMusicLabel(int item)
case MUSICPLAYER_CODEC:
{
CStdString strCodec;
strCodec.Format("%s", g_application.m_pPlayer->GetAudioCodecName().c_str());
strCodec.Format("%s", info.audioCodecName);
return strCodec;
}
break;
Expand Down
21 changes: 16 additions & 5 deletions xbmc/cores/IPlayer.h
Expand Up @@ -89,6 +89,21 @@ enum IPlayerSubtitleCapabilities
IPC_SUBS_OFFSET
};

struct SPlayerAudioStreamInfo
{
int bitrate;
int channels;
std::string language;
std::string name;
std::string audioCodecName;

SPlayerAudioStreamInfo()
{
bitrate = 0;
channels = 0;
}
};

class IPlayer
{
public:
Expand Down Expand Up @@ -145,9 +160,8 @@ class IPlayer

virtual int GetAudioStreamCount() { return 0; }
virtual int GetAudioStream() { return -1; }
virtual void GetAudioStreamName(int iStream, CStdString &strStreamName){};
virtual void SetAudioStream(int iStream){};
virtual void GetAudioStreamLanguage(int iStream, CStdString &strLanguage){};
virtual void GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info){};

virtual TextCacheStruct_t* GetTeletextCache() { return NULL; };
virtual void LoadPage(int p, int sp, unsigned char* buffer) {};
Expand All @@ -168,13 +182,10 @@ class IPlayer
\brief total time in milliseconds
*/
virtual int64_t GetTotalTime() { return 0; }
virtual int GetAudioBitrate(){ return 0;}
virtual int GetVideoBitrate(){ return 0;}
virtual int GetSourceBitrate(){ return 0;}
virtual int GetChannels(){ return 0;};
virtual int GetBitsPerSample(){ return 0;};
virtual int GetSampleRate(){ return 0;};
virtual CStdString GetAudioCodecName(){ return "";}
virtual CStdString GetVideoCodecName(){ return "";}
virtual int GetPictureWidth(){ return 0;}
virtual int GetPictureHeight(){ return 0;}
Expand Down
63 changes: 20 additions & 43 deletions xbmc/cores/amlplayer/AMLPlayer.cpp
Expand Up @@ -846,25 +846,6 @@ int CAMLPlayer::GetAudioStream()
return m_audio_index;
}

void CAMLPlayer::GetAudioStreamName(int iStream, CStdString &strStreamName)
{
//CLog::Log(LOGDEBUG, "CAMLPlayer::GetAudioStreamName");
CSingleLock lock(m_aml_csection);

strStreamName.Format("Undefined");

if (iStream > (int)m_audio_streams.size() || iStream < 0)
return;

if ( m_audio_streams[iStream]->language.size())
{
CStdString name;
g_LangCodeExpander.Lookup( name, m_audio_streams[iStream]->language);
strStreamName = name;
}

}

void CAMLPlayer::SetAudioStream(int SetAudioStream)
{
//CLog::Log(LOGDEBUG, "CAMLPlayer::SetAudioStream");
Expand Down Expand Up @@ -1128,13 +1109,29 @@ __int64 CAMLPlayer::GetTotalTime()
return m_duration_ms;
}

int CAMLPlayer::GetAudioBitrate()
void CAMLPlayer::GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info)
{
CSingleLock lock(m_aml_csection);
if (m_audio_streams.size() == 0 || m_audio_index > (int)(m_audio_streams.size() - 1))
return 0;
if (index < 0 || m_audio_streams.size() == 0 || index > (int)(m_audio_streams.size() - 1))
return;

info.bitrate = m_audio_streams[index]->bit_rate;

if ( m_audio_streams[index]->language.size())
info.language = m_audio_streams[index]->language;

info.channels = m_audio_streams[index]->channel;

return m_audio_streams[m_audio_index]->bit_rate;
info.audioCodecName = AudioCodecName(m_audio_streams[index]->format);

info.name.Format("Undefined");

if ( m_audio_streams[index]->language.size())
{
CStdString name;
g_LangCodeExpander.Lookup( name, m_audio_streams[index]->language);
info.name = name;
}
}

int CAMLPlayer::GetVideoBitrate()
Expand All @@ -1152,15 +1149,6 @@ int CAMLPlayer::GetSourceBitrate()
return 0;
}

int CAMLPlayer::GetChannels()
{
CSingleLock lock(m_aml_csection);
if (m_audio_streams.size() == 0 || m_audio_index > (int)(m_audio_streams.size() - 1))
return 0;

return m_audio_streams[m_audio_index]->channel;
}

int CAMLPlayer::GetBitsPerSample()
{
CLog::Log(LOGDEBUG, "CAMLPlayer::GetBitsPerSample");
Expand All @@ -1176,17 +1164,6 @@ int CAMLPlayer::GetSampleRate()
return m_audio_streams[m_audio_index]->sample_rate;
}

CStdString CAMLPlayer::GetAudioCodecName()
{
CStdString strAudioCodec = "";
if (m_audio_streams.size() == 0 || m_audio_index > (int)(m_audio_streams.size() - 1))
return strAudioCodec;

strAudioCodec = AudioCodecName(m_audio_streams[m_audio_index]->format);

return strAudioCodec;
}

CStdString CAMLPlayer::GetVideoCodecName()
{
CStdString strVideoCodec = "";
Expand Down
6 changes: 1 addition & 5 deletions xbmc/cores/amlplayer/AMLPlayer.h
Expand Up @@ -110,9 +110,7 @@ class CAMLPlayer : public IPlayer, public CThread

virtual int GetAudioStreamCount();
virtual int GetAudioStream();
virtual void GetAudioStreamName(int iStream, CStdString &strStreamName);
virtual void SetAudioStream(int iStream);
virtual void GetAudioStreamLanguage(int iStream, CStdString &strLanguage) {};

virtual TextCacheStruct_t* GetTeletextCache() {return NULL;};
virtual void LoadPage(int p, int sp, unsigned char* buffer) {};
Expand All @@ -126,13 +124,11 @@ class CAMLPlayer : public IPlayer, public CThread
virtual void SeekTime(__int64 iTime = 0);
virtual __int64 GetTime();
virtual __int64 GetTotalTime();
virtual int GetAudioBitrate();
virtual void GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info);
virtual int GetVideoBitrate();
virtual int GetSourceBitrate();
virtual int GetChannels();
virtual int GetBitsPerSample();
virtual int GetSampleRate();
virtual CStdString GetAudioCodecName();
virtual CStdString GetVideoCodecName();
virtual int GetPictureWidth();
virtual int GetPictureHeight();
Expand Down
79 changes: 34 additions & 45 deletions xbmc/cores/dvdplayer/DVDPlayer.cpp
Expand Up @@ -103,14 +103,6 @@ void CSelectionStreams::Clear(StreamType type, StreamSource source)
}
}

void CDVDPlayer::GetAudioStreamLanguage(int iStream, CStdString &strLanguage)
{
strLanguage = "";
SelectionStream& s = m_SelectionStreams.Get(STREAM_AUDIO, iStream);
if(s.language.length() > 0)
strLanguage = s.language;
}

SelectionStream& CSelectionStreams::Get(StreamType type, int index)
{
CSingleLock lock(m_section);
Expand Down Expand Up @@ -2734,19 +2726,6 @@ int CDVDPlayer::GetAudioStream()
return m_SelectionStreams.IndexOf(STREAM_AUDIO, *this);
}

void CDVDPlayer::GetAudioStreamName(int iStream, CStdString& strStreamName)
{
strStreamName = "";
SelectionStream& s = m_SelectionStreams.Get(STREAM_AUDIO, iStream);
if(s.name.length() > 0)
strStreamName += s.name;
else
strStreamName += "Unknown";

if(s.type == STREAM_NONE)
strStreamName += " (Invalid)";
}

void CDVDPlayer::SetAudioStream(int iStream)
{
m_messenger.Put(new CDVDMsgPlayerSetAudioStream(iStream));
Expand Down Expand Up @@ -3803,11 +3782,6 @@ double CDVDPlayer::GetQueueTime()
return max(a, v) * 8000.0 / 100;
}

int CDVDPlayer::GetAudioBitrate()
{
return m_dvdPlayerAudio.GetAudioBitrate();
}

int CDVDPlayer::GetVideoBitrate()
{
return m_dvdPlayerVideo.GetVideoBitrate();
Expand All @@ -3821,6 +3795,40 @@ int CDVDPlayer::GetSourceBitrate()
return 0;
}

void CDVDPlayer::GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info)
{
if (index < 0 || index > GetAudioStreamCount() - 1 )
return;

if (index == GetAudioStream())
info.bitrate = m_dvdPlayerAudio.GetAudioBitrate();
else
info.bitrate = m_pDemuxer->GetStreamFromAudioId(index)->iBitRate;

SelectionStream& s = m_SelectionStreams.Get(STREAM_AUDIO, index);
if(s.language.length() > 0)
info.language = s.language;

if(s.name.length() > 0)
info.name = s.name;
else
info.name += "Unknown";

if(s.type == STREAM_NONE)
info.name += " (Invalid)";

if (m_pDemuxer)
{
CDemuxStreamAudio* stream = static_cast<CDemuxStreamAudio*>(m_pDemuxer->GetStreamFromAudioId(index));
if (stream)
{
info.channels = stream->iChannels;
CStdString codecName;
m_pDemuxer->GetStreamCodecName(stream->iId, codecName);
info.audioCodecName = codecName;
}
}
}

int CDVDPlayer::AddSubtitleFile(const std::string& filename, const std::string& subfilename, CDemuxStream::EFlags flags)
{
Expand Down Expand Up @@ -4036,25 +4044,6 @@ bool CDVDPlayer::Record(bool bOnOff)
return false;
}

int CDVDPlayer::GetChannels()
{
if (m_pDemuxer && (m_CurrentAudio.id != -1))
{
CDemuxStreamAudio* stream = static_cast<CDemuxStreamAudio*>(m_pDemuxer->GetStream(m_CurrentAudio.id));
if (stream)
return stream->iChannels;
}
return -1;
}

CStdString CDVDPlayer::GetAudioCodecName()
{
CStdString retVal;
if (m_pDemuxer && (m_CurrentAudio.id != -1))
m_pDemuxer->GetStreamCodecName(m_CurrentAudio.id, retVal);
return retVal;
}

CStdString CDVDPlayer::GetVideoCodecName()
{
CStdString retVal;
Expand Down
7 changes: 2 additions & 5 deletions xbmc/cores/dvdplayer/DVDPlayer.h
Expand Up @@ -216,9 +216,7 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer

virtual int GetAudioStreamCount();
virtual int GetAudioStream();
virtual void GetAudioStreamName(int iStream, CStdString &strStreamName);
virtual void SetAudioStream(int iStream);
virtual void GetAudioStreamLanguage(int iStream, CStdString &strLanguage);

virtual TextCacheStruct_t* GetTeletextCache();
virtual void LoadPage(int p, int sp, unsigned char* buffer);
Expand All @@ -234,15 +232,14 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer
virtual void ToFFRW(int iSpeed);
virtual bool OnAction(const CAction &action);
virtual bool HasMenu();
virtual int GetAudioBitrate();

virtual int GetVideoBitrate();
virtual int GetSourceBitrate();
virtual int GetChannels();
virtual CStdString GetAudioCodecName();
virtual CStdString GetVideoCodecName();
virtual int GetPictureWidth();
virtual int GetPictureHeight();
virtual bool GetStreamDetails(CStreamDetails &details);
virtual void GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info);

virtual bool GetCurrentSubtitle(CStdString& strSubtitle);

Expand Down

0 comments on commit 1c57fc9

Please sign in to comment.