mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
xbmc: add PR2586
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
567bde0a13
commit
57d07f9c77
555
packages/mediacenter/xbmc/patches/12.2.0/xbmc-990.12-PR2586.patch
vendored
Normal file
555
packages/mediacenter/xbmc/patches/12.2.0/xbmc-990.12-PR2586.patch
vendored
Normal file
@ -0,0 +1,555 @@
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.cpp xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.cpp
|
||||
--- xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.cpp 2013-05-10 07:16:56.061904946 +0200
|
||||
@@ -0,0 +1,180 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2013 Team XBMC
|
||||
+ * http://www.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
|
||||
+ * <http://www.gnu.org/licenses/>.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include "DVDInputStreams/DVDInputStream.h"
|
||||
+#include "DVDDemuxCDDA.h"
|
||||
+#include "DVDDemuxUtils.h"
|
||||
+#include "utils/log.h"
|
||||
+#include "../DVDClock.h"
|
||||
+
|
||||
+// CDDA audio demuxer based on AirTunes audio Demuxer.
|
||||
+
|
||||
+using namespace std;
|
||||
+
|
||||
+class CDemuxStreamAudioCDDA
|
||||
+ : public CDemuxStreamAudio
|
||||
+{
|
||||
+public:
|
||||
+ void GetStreamInfo(string& strInfo)
|
||||
+ {
|
||||
+ strInfo = "pcm";
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+CDVDDemuxCDDA::CDVDDemuxCDDA() : CDVDDemux()
|
||||
+{
|
||||
+ m_pInput = NULL;
|
||||
+ m_stream = NULL;
|
||||
+ m_bytes = 0;
|
||||
+}
|
||||
+
|
||||
+CDVDDemuxCDDA::~CDVDDemuxCDDA()
|
||||
+{
|
||||
+ Dispose();
|
||||
+}
|
||||
+
|
||||
+bool CDVDDemuxCDDA::Open(CDVDInputStream* pInput)
|
||||
+{
|
||||
+ Abort();
|
||||
+
|
||||
+ Dispose();
|
||||
+
|
||||
+ if(!pInput || !pInput->IsStreamType(DVDSTREAM_TYPE_FILE))
|
||||
+ return false;
|
||||
+
|
||||
+ m_pInput = pInput;
|
||||
+
|
||||
+ m_stream = new CDemuxStreamAudioCDDA();
|
||||
+
|
||||
+ if(!m_stream)
|
||||
+ return false;
|
||||
+
|
||||
+ m_stream->iSampleRate = 44100;
|
||||
+ m_stream->iBitsPerSample = 16;
|
||||
+ m_stream->iBitRate = 44100 * 2 * 16;
|
||||
+ m_stream->iChannels = 2;
|
||||
+ m_stream->type = STREAM_AUDIO;
|
||||
+ m_stream->codec = CODEC_ID_PCM_S16LE;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+void CDVDDemuxCDDA::Dispose()
|
||||
+{
|
||||
+ delete m_stream;
|
||||
+ m_stream = NULL;
|
||||
+
|
||||
+ m_pInput = NULL;
|
||||
+ m_bytes = 0;
|
||||
+}
|
||||
+
|
||||
+void CDVDDemuxCDDA::Reset()
|
||||
+{
|
||||
+ CDVDInputStream* pInputStream = m_pInput;
|
||||
+ Dispose();
|
||||
+ Open(pInputStream);
|
||||
+}
|
||||
+
|
||||
+void CDVDDemuxCDDA::Abort()
|
||||
+{
|
||||
+ if(m_pInput)
|
||||
+ return m_pInput->Abort();
|
||||
+}
|
||||
+
|
||||
+void CDVDDemuxCDDA::Flush()
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+#define CDDA_READ_SIZE 4096
|
||||
+DemuxPacket* CDVDDemuxCDDA::Read()
|
||||
+{
|
||||
+ if(!m_pInput)
|
||||
+ return NULL;
|
||||
+
|
||||
+ DemuxPacket* pPacket = CDVDDemuxUtils::AllocateDemuxPacket(CDDA_READ_SIZE);
|
||||
+
|
||||
+ if (!pPacket)
|
||||
+ {
|
||||
+ if (m_pInput)
|
||||
+ m_pInput->Close();
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ pPacket->iSize = m_pInput->Read(pPacket->pData, CDDA_READ_SIZE);
|
||||
+ pPacket->iStreamId = 0;
|
||||
+
|
||||
+ if(pPacket->iSize < 1)
|
||||
+ {
|
||||
+ delete pPacket;
|
||||
+ pPacket = NULL;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ int n = m_stream->iBitRate>>3;
|
||||
+ if (n > 0)
|
||||
+ {
|
||||
+ m_bytes += pPacket->iSize;
|
||||
+ pPacket->dts = (double)m_bytes * DVD_TIME_BASE / n;
|
||||
+ pPacket->pts = pPacket->dts;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ pPacket->dts = DVD_NOPTS_VALUE;
|
||||
+ pPacket->pts = DVD_NOPTS_VALUE;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return pPacket;
|
||||
+}
|
||||
+
|
||||
+int CDVDDemuxCDDA::GetStreamLength()
|
||||
+{
|
||||
+ int64_t num_track_bytes = m_pInput->GetLength();
|
||||
+ int bytes_per_second = (m_stream->iBitRate>>3);
|
||||
+ int64_t track_mseconds = num_track_bytes*1000 / bytes_per_second;
|
||||
+ return (int)track_mseconds;
|
||||
+}
|
||||
+
|
||||
+CDemuxStream* CDVDDemuxCDDA::GetStream(int iStreamId)
|
||||
+{
|
||||
+ if(iStreamId != 0)
|
||||
+ return NULL;
|
||||
+
|
||||
+ return m_stream;
|
||||
+}
|
||||
+
|
||||
+int CDVDDemuxCDDA::GetNrOfStreams()
|
||||
+{
|
||||
+ return (m_stream == NULL ? 0 : 1);
|
||||
+}
|
||||
+
|
||||
+std::string CDVDDemuxCDDA::GetFileName()
|
||||
+{
|
||||
+ if(m_pInput)
|
||||
+ return m_pInput->GetFileName();
|
||||
+ else
|
||||
+ return "";
|
||||
+}
|
||||
+
|
||||
+void CDVDDemuxCDDA::GetStreamCodecName(int iStreamId, CStdString &strName)
|
||||
+{
|
||||
+ if (m_stream && iStreamId == 0)
|
||||
+ strName = "pcm";
|
||||
+}
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.h xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.h
|
||||
--- xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxCDDA.h 2013-05-10 07:16:56.061904946 +0200
|
||||
@@ -0,0 +1,59 @@
|
||||
+#pragma once
|
||||
+/*
|
||||
+ * Copyright (C) 2013 Team XBMC
|
||||
+ * http://www.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
|
||||
+ * <http://www.gnu.org/licenses/>.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include "DVDDemux.h"
|
||||
+
|
||||
+#ifdef _WIN32
|
||||
+#define __attribute__(dummy_val)
|
||||
+#else
|
||||
+#include <config.h>
|
||||
+#endif
|
||||
+
|
||||
+class CDemuxStreamAudioCDDA;
|
||||
+
|
||||
+class CDVDDemuxCDDA : public CDVDDemux
|
||||
+{
|
||||
+public:
|
||||
+
|
||||
+ CDVDDemuxCDDA();
|
||||
+ ~CDVDDemuxCDDA();
|
||||
+
|
||||
+ bool Open(CDVDInputStream* pInput);
|
||||
+ void Dispose();
|
||||
+ void Reset();
|
||||
+ void Abort();
|
||||
+ void Flush();
|
||||
+ DemuxPacket* Read();
|
||||
+ bool SeekTime(int time, bool backwords = false, double* startpts = NULL) { return false; };
|
||||
+ void SetSpeed(int iSpeed) {};
|
||||
+ int GetStreamLength() ;
|
||||
+ CDemuxStream* GetStream(int iStreamId);
|
||||
+ int GetNrOfStreams();
|
||||
+ std::string GetFileName();
|
||||
+ virtual void GetStreamCodecName(int iStreamId, CStdString &strName);
|
||||
+
|
||||
+protected:
|
||||
+ friend class CDemuxStreamAudioCDDA;
|
||||
+ CDVDInputStream* m_pInput;
|
||||
+ int64_t m_bytes;
|
||||
+
|
||||
+ CDemuxStreamAudioCDDA *m_stream;
|
||||
+};
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDFactoryDemuxer.cpp xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDFactoryDemuxer.cpp
|
||||
--- xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDFactoryDemuxer.cpp 2013-05-02 17:00:07.000000000 +0200
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDFactoryDemuxer.cpp 2013-05-10 07:16:56.061904946 +0200
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "DVDDemuxHTSP.h"
|
||||
#endif
|
||||
#include "DVDDemuxBXA.h"
|
||||
+#include "DVDDemuxCDDA.h"
|
||||
#include "DVDDemuxPVRClient.h"
|
||||
#include "pvr/PVRManager.h"
|
||||
#include "pvr/addons/PVRClients.h"
|
||||
@@ -51,6 +52,22 @@
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
+
|
||||
+ // Try to open CDDA demuxer
|
||||
+ if (pInputStream->IsStreamType(DVDSTREAM_TYPE_FILE) && pInputStream->GetContent().compare("application/octet-stream") == 0)
|
||||
+ {
|
||||
+ std::string filename = pInputStream->GetFileName();
|
||||
+ if (filename.substr(0, 7) == "cdda://")
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, "DVDFactoryDemuxer: Stream is probably CD audio. Creating CDDA demuxer.");
|
||||
+
|
||||
+ auto_ptr<CDVDDemuxCDDA> demuxer(new CDVDDemuxCDDA());
|
||||
+ if (demuxer->Open(pInputStream))
|
||||
+ {
|
||||
+ return demuxer.release();
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if (pInputStream->IsStreamType(DVDSTREAM_TYPE_HTTP))
|
||||
{
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDFactoryDemuxer.cpp.orig xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDFactoryDemuxer.cpp.orig
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/Makefile.in xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/Makefile.in
|
||||
--- xbmc-12.2.0/xbmc/cores/dvdplayer/DVDDemuxers/Makefile.in 2013-05-02 17:00:07.000000000 +0200
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/dvdplayer/DVDDemuxers/Makefile.in 2013-05-10 07:16:56.061904946 +0200
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
SRCS = DVDDemux.cpp
|
||||
SRCS += DVDDemuxBXA.cpp
|
||||
+SRCS += DVDDemuxCDDA.cpp
|
||||
SRCS += DVDDemuxFFmpeg.cpp
|
||||
SRCS += DVDDemuxHTSP.cpp
|
||||
SRCS += DVDDemuxPVRClient.cpp
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/paplayer/CDDAcodec.cpp xbmc-12.2.0.patch/xbmc/cores/paplayer/CDDAcodec.cpp
|
||||
--- xbmc-12.2.0/xbmc/cores/paplayer/CDDAcodec.cpp 2013-05-02 17:00:08.000000000 +0200
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/paplayer/CDDAcodec.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
@@ -1,159 +0,0 @@
|
||||
-/*
|
||||
- * Copyright (C) 2005-2012 Team XBMC
|
||||
- * http://www.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
|
||||
- * <http://www.gnu.org/licenses/>.
|
||||
- *
|
||||
- */
|
||||
-
|
||||
-#include "CDDAcodec.h"
|
||||
-#if !defined(TARGET_DARWIN_IOS)
|
||||
-#include <cdio/sector.h>
|
||||
-#else
|
||||
-typedef int32_t lsn_t;
|
||||
-#define CDIO_CD_FRAMESIZE_RAW 2352
|
||||
-#define CDIO_CD_FRAMES_PER_SEC 75
|
||||
-#endif
|
||||
-#include "cores/AudioEngine/Utils/AEUtil.h"
|
||||
-
|
||||
-#define SECTOR_COUNT 55 // max. sectors that can be read at once
|
||||
-#define MAX_BUFFER_SIZE 2*SECTOR_COUNT*CDIO_CD_FRAMESIZE_RAW
|
||||
-
|
||||
-CDDACodec::CDDACodec()
|
||||
-{
|
||||
- m_SampleRate = 44100;
|
||||
- m_Channels = 2;
|
||||
- m_BitsPerSample = 16;
|
||||
- m_DataFormat = AE_FMT_S16NE;
|
||||
- m_TotalTime = 0;
|
||||
- m_Bitrate = 0;
|
||||
- m_CodecName = "cdda";
|
||||
-
|
||||
- m_BufferSize=0;
|
||||
- m_Buffer = new BYTE[MAX_BUFFER_SIZE];
|
||||
- m_BufferPos = 0;
|
||||
-}
|
||||
-
|
||||
-CDDACodec::~CDDACodec()
|
||||
-{
|
||||
- DeInit();
|
||||
-
|
||||
- if (m_Buffer)
|
||||
- {
|
||||
- delete[] m_Buffer;
|
||||
- m_Buffer = NULL;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-bool CDDACodec::Init(const CStdString &strFile, unsigned int filecache)
|
||||
-{
|
||||
- if (!m_file.Open(strFile, READ_CACHED))
|
||||
- return false;
|
||||
-
|
||||
- // Calculate total time of the track
|
||||
- m_TotalTime=(m_file.GetLength()/CDIO_CD_FRAMESIZE_RAW)/CDIO_CD_FRAMES_PER_SEC;
|
||||
- if (m_TotalTime > 0)
|
||||
- m_Bitrate = (int)((m_file.GetLength() * 8) / m_TotalTime);
|
||||
- else
|
||||
- m_Bitrate = 0;
|
||||
- m_TotalTime*=1000; // ms
|
||||
- return true;
|
||||
-}
|
||||
-
|
||||
-void CDDACodec::DeInit()
|
||||
-{
|
||||
- m_file.Close();
|
||||
-}
|
||||
-
|
||||
-int64_t CDDACodec::Seek(int64_t iSeekTime)
|
||||
-{
|
||||
- // Calculate the next full second...
|
||||
- int iSeekTimeFullSec=(int)(iSeekTime+(1000-(iSeekTime%1000)))/1000;
|
||||
-
|
||||
- // ...and the logical sector on the cd...
|
||||
- lsn_t lsnSeek=iSeekTimeFullSec*CDIO_CD_FRAMES_PER_SEC;
|
||||
-
|
||||
- // ... then seek to its position...
|
||||
- int iNewOffset=(int)m_file.Seek(lsnSeek*CDIO_CD_FRAMESIZE_RAW, SEEK_SET);
|
||||
- m_BufferSize=m_BufferPos=0;
|
||||
-
|
||||
- // ... and look if we really got there.
|
||||
- int iNewSeekTime=(iNewOffset/CDIO_CD_FRAMESIZE_RAW)/CDIO_CD_FRAMES_PER_SEC;
|
||||
- return iNewSeekTime*(int64_t)1000; // ms
|
||||
-}
|
||||
-
|
||||
-int CDDACodec::ReadPCM(BYTE *pBuffer, int size, int *actualsize)
|
||||
-{
|
||||
- *actualsize=0;
|
||||
-
|
||||
- bool bEof=false;
|
||||
- // Reached end of track?
|
||||
- if (m_file.GetLength()==m_file.GetPosition())
|
||||
- bEof=true;
|
||||
-
|
||||
- // Do we have to refill our audio buffer?
|
||||
- if (m_BufferSize-m_BufferPos<MAX_BUFFER_SIZE/2 && !bEof)
|
||||
- {
|
||||
- // Move the remaining audio data to the beginning of the buffer
|
||||
- memmove(m_Buffer, m_Buffer + m_BufferPos, m_BufferSize-m_BufferPos);
|
||||
- m_BufferSize=m_BufferSize-m_BufferPos;
|
||||
- m_BufferPos = 0;
|
||||
-
|
||||
- // Fill our buffer with a chunk of audio data
|
||||
- int iAmountRead=m_file.Read(m_Buffer+m_BufferSize, MAX_BUFFER_SIZE/2);
|
||||
- if (iAmountRead<=0)
|
||||
- return READ_ERROR;
|
||||
-
|
||||
- m_BufferSize+=iAmountRead;
|
||||
- }
|
||||
-
|
||||
- // Our buffer is empty and no data left to read from the cd
|
||||
- if (m_BufferSize-m_BufferPos==0 && bEof)
|
||||
- return READ_EOF;
|
||||
-
|
||||
- // Try to give the player the amount of audio data he wants
|
||||
- if (m_BufferSize-m_BufferPos>=size)
|
||||
- { // we have enough data in our buffer
|
||||
- memcpy(pBuffer, m_Buffer + m_BufferPos, size);
|
||||
- m_BufferPos+=size;
|
||||
- *actualsize=size;
|
||||
- }
|
||||
- else
|
||||
- { // Only a smaller amount of data left as the player wants
|
||||
- memcpy(pBuffer, m_Buffer + m_BufferPos, m_BufferSize-m_BufferPos);
|
||||
- *actualsize=m_BufferSize-m_BufferPos;
|
||||
- m_BufferPos+=m_BufferSize-m_BufferPos;
|
||||
- }
|
||||
-
|
||||
- return READ_SUCCESS;
|
||||
-}
|
||||
-
|
||||
-bool CDDACodec::CanInit()
|
||||
-{
|
||||
- return true;
|
||||
-}
|
||||
-
|
||||
-CAEChannelInfo CDDACodec::GetChannelInfo()
|
||||
-{
|
||||
- static enum AEChannel map[2][3] = {
|
||||
- {AE_CH_FC, AE_CH_NULL},
|
||||
- {AE_CH_FL, AE_CH_FR , AE_CH_NULL}
|
||||
- };
|
||||
-
|
||||
- if (m_Channels > 2)
|
||||
- return CAEUtil::GuessChLayout(m_Channels);
|
||||
-
|
||||
- return CAEChannelInfo(map[m_Channels - 1]);
|
||||
-}
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/paplayer/CDDAcodec.h xbmc-12.2.0.patch/xbmc/cores/paplayer/CDDAcodec.h
|
||||
--- xbmc-12.2.0/xbmc/cores/paplayer/CDDAcodec.h 2013-05-02 17:00:08.000000000 +0200
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/paplayer/CDDAcodec.h 1970-01-01 01:00:00.000000000 +0100
|
||||
@@ -1,43 +0,0 @@
|
||||
-#pragma once
|
||||
-
|
||||
-/*
|
||||
- * Copyright (C) 2005-2012 Team XBMC
|
||||
- * http://www.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
|
||||
- * <http://www.gnu.org/licenses/>.
|
||||
- *
|
||||
- */
|
||||
-
|
||||
-#include "CachingCodec.h"
|
||||
-
|
||||
-class CDDACodec : public CachingCodec
|
||||
-{
|
||||
-public:
|
||||
- CDDACodec();
|
||||
- virtual ~CDDACodec();
|
||||
-
|
||||
- virtual bool Init(const CStdString &strFile, unsigned int filecache);
|
||||
- virtual void DeInit();
|
||||
- virtual int64_t Seek(int64_t iSeekTime);
|
||||
- virtual int ReadPCM(BYTE *pBuffer, int size, int *actualsize);
|
||||
- virtual bool CanInit();
|
||||
- virtual CAEChannelInfo GetChannelInfo();
|
||||
-
|
||||
-private:
|
||||
- // Input buffer to read our cdda data into
|
||||
- BYTE* m_Buffer;
|
||||
- int m_BufferSize;
|
||||
- int m_BufferPos;
|
||||
-};
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/paplayer/CodecFactory.cpp xbmc-12.2.0.patch/xbmc/cores/paplayer/CodecFactory.cpp
|
||||
--- xbmc-12.2.0/xbmc/cores/paplayer/CodecFactory.cpp 2013-05-02 17:00:08.000000000 +0200
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/paplayer/CodecFactory.cpp 2013-05-10 07:16:56.061904946 +0200
|
||||
@@ -21,7 +21,6 @@
|
||||
#include "system.h"
|
||||
#include "CodecFactory.h"
|
||||
#include "MP3codec.h"
|
||||
-#include "CDDAcodec.h"
|
||||
#include "OGGcodec.h"
|
||||
#include "FLACcodec.h"
|
||||
#include "WAVcodec.h"
|
||||
@@ -51,7 +50,7 @@
|
||||
else if (strFileType.Equals("ape") || strFileType.Equals("mac"))
|
||||
return new DVDPlayerCodec();
|
||||
else if (strFileType.Equals("cdda"))
|
||||
- return new CDDACodec();
|
||||
+ return new DVDPlayerCodec();
|
||||
else if (strFileType.Equals("mpc") || strFileType.Equals("mp+") || strFileType.Equals("mpp"))
|
||||
return new DVDPlayerCodec();
|
||||
else if (strFileType.Equals("shn"))
|
||||
@@ -183,20 +182,6 @@
|
||||
}
|
||||
delete codec;
|
||||
}
|
||||
- if (urlFile.GetFileType().Equals("cdda"))
|
||||
- {
|
||||
- //lets see what it contains...
|
||||
- //this kinda sucks 'cause if it's plain cdda the file
|
||||
- //will be opened, sniffed and closed before it is opened *again* for cdda
|
||||
- //would be better if the papcodecs could work with bitstreams instead of filenames.
|
||||
- DVDPlayerCodec *dvdcodec = new DVDPlayerCodec();
|
||||
- dvdcodec->SetContentType("audio/x-spdif-compressed");
|
||||
- if (dvdcodec->Init(strFile, filecache))
|
||||
- {
|
||||
- return dvdcodec;
|
||||
- }
|
||||
- delete dvdcodec;
|
||||
- }
|
||||
else if (urlFile.GetFileType().Equals("ogg") || urlFile.GetFileType().Equals("oggstream") || urlFile.GetFileType().Equals("oga"))
|
||||
return CreateOGGCodec(strFile,filecache);
|
||||
|
||||
diff -Naur xbmc-12.2.0/xbmc/cores/paplayer/Makefile.in xbmc-12.2.0.patch/xbmc/cores/paplayer/Makefile.in
|
||||
--- xbmc-12.2.0/xbmc/cores/paplayer/Makefile.in 2013-05-02 17:00:08.000000000 +0200
|
||||
+++ xbmc-12.2.0.patch/xbmc/cores/paplayer/Makefile.in 2013-05-10 07:16:56.062904942 +0200
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
SRCS = ADPCMCodec.cpp
|
||||
SRCS += AudioDecoder.cpp
|
||||
-SRCS += CDDAcodec.cpp
|
||||
SRCS += CodecFactory.cpp
|
||||
SRCS += DVDPlayerCodec.cpp
|
||||
SRCS += FLACcodec.cpp
|
Loading…
x
Reference in New Issue
Block a user