From ffca21f2743a7b367fa212799c6e2fea6190dd5d Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 3 Mar 2015 16:53:59 +0100 Subject: initial commit for kodi master --- xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp | 184 ++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp (limited to 'xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp') diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp new file mode 100644 index 0000000..2f833c5 --- /dev/null +++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2005-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * . + * + */ + +#include "DVDDemux.h" +#include "DVDCodecs/DVDCodecs.h" + +void CDemuxStreamTeletext::GetStreamInfo(std::string& strInfo) +{ + strInfo = "Teletext Data Stream"; +} + +void CDemuxStreamAudio::GetStreamType(std::string& strInfo) +{ + char sInfo[64]; + + if (codec == AV_CODEC_ID_AC3) strcpy(sInfo, "AC3 "); + else if (codec == AV_CODEC_ID_DTS) + { +#ifdef FF_PROFILE_DTS_HD_MA + if (profile == FF_PROFILE_DTS_HD_MA) + strcpy(sInfo, "DTS-HD MA "); + else if (profile == FF_PROFILE_DTS_HD_HRA) + strcpy(sInfo, "DTS-HD HRA "); + else +#endif + strcpy(sInfo, "DTS "); + } + else if (codec == AV_CODEC_ID_MP2) strcpy(sInfo, "MP2 "); + else if (codec == AV_CODEC_ID_TRUEHD) strcpy(sInfo, "Dolby TrueHD "); + else strcpy(sInfo, ""); + + if (iChannels == 1) strcat(sInfo, "Mono"); + else if (iChannels == 2) strcat(sInfo, "Stereo"); + else if (iChannels == 6) strcat(sInfo, "5.1"); + else if (iChannels == 8) strcat(sInfo, "7.1"); + else if (iChannels != 0) + { + char temp[32]; + sprintf(temp, " %d%s", iChannels, "-chs"); + strcat(sInfo, temp); + } + strInfo = sInfo; +} + +int CDVDDemux::GetNrOfAudioStreams() +{ + int iCounter = 0; + + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + if (pStream->type == STREAM_AUDIO) iCounter++; + } + + return iCounter; +} + +int CDVDDemux::GetNrOfVideoStreams() +{ + int iCounter = 0; + + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + if (pStream->type == STREAM_VIDEO) iCounter++; + } + + return iCounter; +} + +int CDVDDemux::GetNrOfSubtitleStreams() +{ + int iCounter = 0; + + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + if (pStream->type == STREAM_SUBTITLE) iCounter++; + } + + return iCounter; +} + +int CDVDDemux::GetNrOfTeletextStreams() +{ + int iCounter = 0; + + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + if (pStream->type == STREAM_TELETEXT) iCounter++; + } + + return iCounter; +} + +CDemuxStreamAudio* CDVDDemux::GetStreamFromAudioId(int iAudioIndex) +{ + int counter = -1; + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + + if (pStream->type == STREAM_AUDIO) counter++; + if (iAudioIndex == counter) + return (CDemuxStreamAudio*)pStream; + } + return NULL; +} + +CDemuxStreamVideo* CDVDDemux::GetStreamFromVideoId(int iVideoIndex) +{ + int counter = -1; + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + + if (pStream->type == STREAM_VIDEO) counter++; + if (iVideoIndex == counter) + return (CDemuxStreamVideo*)pStream; + } + return NULL; +} + +CDemuxStreamSubtitle* CDVDDemux::GetStreamFromSubtitleId(int iSubtitleIndex) +{ + int counter = -1; + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + + if (pStream->type == STREAM_SUBTITLE) counter++; + if (iSubtitleIndex == counter) + return (CDemuxStreamSubtitle*)pStream; + } + return NULL; +} + +CDemuxStreamTeletext* CDVDDemux::GetStreamFromTeletextId(int iTeletextIndex) +{ + int counter = -1; + for (int i = 0; i < GetNrOfStreams(); i++) + { + CDemuxStream* pStream = GetStream(i); + + if (pStream->type == STREAM_TELETEXT) counter++; + if (iTeletextIndex == counter) + return (CDemuxStreamTeletext*)pStream; + } + return NULL; +} + +void CDemuxStream::GetStreamName( std::string& strInfo ) +{ + strInfo = ""; +} + +AVDiscard CDemuxStream::GetDiscard() +{ + return AVDISCARD_NONE; +} + +void CDemuxStream::SetDiscard(AVDiscard discard) +{ + return; +} + -- cgit v1.2.3