diff options
author | jmarshallnz <jcmarsha@gmail.com> | 2014-03-12 09:42:34 +1300 |
---|---|---|
committer | Jonathan Marshall <jmarshall@xbmc.org> | 2014-03-15 10:46:48 +1300 |
commit | 9c9e9b14bbe8788b4247ff8af6c8e05e5953463e (patch) | |
tree | 6082bf45ad2fb757208c4d71f12b314476005cf0 | |
parent | 08b45c8ad6d635649f797dba506ad3cc05f74004 (diff) |
Merge pull request #4386 from FernetMenta/flac
paplayer: drop flac/wav decoder, use ffmpeg instead
26 files changed, 20 insertions, 1782 deletions
diff --git a/Makefile.in b/Makefile.in index 8eda3c4a70..6f689cfbd1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -192,7 +192,6 @@ DIRECTORY_ARCHIVES += lib/xbmc-libav-hacks/dll-libavhacks.a endif PAPCODECS_DIRS= \ - lib/xbadpcm \ lib/nosefart \ lib/timidity \ lib/libsidplay2 \ @@ -420,7 +419,6 @@ libhdhomerun: dllloader $(MAKE) -C lib/libhdhomerun papcodecs: dllloader dvdpcodecs test -d system/players/paplayer || mkdir system/players/paplayer - $(MAKE) -C lib/xbadpcm $(MAKE) -C lib/vgmstream $(MAKE) -C lib/timidity $(MAKE) -C lib/nosefart diff --git a/XBMC.xcodeproj/project.pbxproj b/XBMC.xcodeproj/project.pbxproj index 8e5fe7eced..b5b96f9b7c 100644 --- a/XBMC.xcodeproj/project.pbxproj +++ b/XBMC.xcodeproj/project.pbxproj @@ -893,12 +893,10 @@ DFF0F19D17528350002DA3A4 /* DVDTSCorrection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CDAE9030FFCA3520040B25F /* DVDTSCorrection.cpp */; }; DFF0F19E17528350002DA3A4 /* Edl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43348AA1107747CD00F859CF /* Edl.cpp */; }; DFF0F19F17528350002DA3A4 /* ExternalPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C5608C40F1754930056433A /* ExternalPlayer.cpp */; }; - DFF0F1A017528350002DA3A4 /* ADPCMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15DB0D25F9FA00618676 /* ADPCMCodec.cpp */; }; DFF0F1A117528350002DA3A4 /* ASAPCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88ACB01C0DCF409E0083CFDF /* ASAPCodec.cpp */; }; DFF0F1A217528350002DA3A4 /* AudioDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15E30D25F9FA00618676 /* AudioDecoder.cpp */; }; DFF0F1A317528350002DA3A4 /* CodecFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15E80D25F9FA00618676 /* CodecFactory.cpp */; }; DFF0F1A417528350002DA3A4 /* DVDPlayerCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E36578860D3AA7B40033CC1C /* DVDPlayerCodec.cpp */; }; - DFF0F1A517528350002DA3A4 /* FLACcodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E160A0D25F9FA00618676 /* FLACcodec.cpp */; }; DFF0F1A617528350002DA3A4 /* ModplugCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC8800110A46C700EE1B15 /* ModplugCodec.cpp */; }; DFF0F1A717528350002DA3A4 /* MP3codec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16130D25F9FA00618676 /* MP3codec.cpp */; }; DFF0F1A817528350002DA3A4 /* NSFCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E161B0D25F9FA00618676 /* NSFCodec.cpp */; }; @@ -910,7 +908,6 @@ DFF0F1AE17528350002DA3A4 /* SPCCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16350D25F9FA00618676 /* SPCCodec.cpp */; }; DFF0F1AF17528350002DA3A4 /* TimidityCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16370D25F9FA00618676 /* TimidityCodec.cpp */; }; DFF0F1B017528350002DA3A4 /* VGMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5F8E1D90E427E8000A8E96F /* VGMCodec.cpp */; }; - DFF0F1B117528350002DA3A4 /* WAVcodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16390D25F9FA00618676 /* WAVcodec.cpp */; }; DFF0F1B217528350002DA3A4 /* YMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16410D25F9FA00618676 /* YMCodec.cpp */; }; DFF0F1B317528350002DA3A4 /* PlayerCoreFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43348AA81077486D00F859CF /* PlayerCoreFactory.cpp */; }; DFF0F1B417528350002DA3A4 /* PlayerSelectionRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43348AAA1077486D00F859CF /* PlayerSelectionRule.cpp */; }; @@ -1712,17 +1709,14 @@ E38E1FAD0D25F9FD00618676 /* DVDSubtitleLineCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15910D25F9FA00618676 /* DVDSubtitleLineCollection.cpp */; }; E38E1FAE0D25F9FD00618676 /* DVDSubtitleParserSubrip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15940D25F9FA00618676 /* DVDSubtitleParserSubrip.cpp */; }; E38E1FAF0D25F9FD00618676 /* DVDSubtitleStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15960D25F9FA00618676 /* DVDSubtitleStream.cpp */; }; - E38E1FC10D25F9FD00618676 /* ADPCMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15DB0D25F9FA00618676 /* ADPCMCodec.cpp */; }; E38E1FC50D25F9FD00618676 /* AudioDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15E30D25F9FA00618676 /* AudioDecoder.cpp */; }; E38E1FC70D25F9FD00618676 /* CodecFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15E80D25F9FA00618676 /* CodecFactory.cpp */; }; - E38E1FCB0D25F9FD00618676 /* FLACcodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E160A0D25F9FA00618676 /* FLACcodec.cpp */; }; E38E1FCF0D25F9FD00618676 /* MP3codec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16130D25F9FA00618676 /* MP3codec.cpp */; }; E38E1FD10D25F9FD00618676 /* NSFCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E161B0D25F9FA00618676 /* NSFCodec.cpp */; }; E38E1FD20D25F9FD00618676 /* OGGcodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16230D25F9FA00618676 /* OGGcodec.cpp */; }; E38E1FD90D25F9FD00618676 /* SIDCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16310D25F9FA00618676 /* SIDCodec.cpp */; }; E38E1FDA0D25F9FD00618676 /* SPCCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16350D25F9FA00618676 /* SPCCodec.cpp */; }; E38E1FDB0D25F9FD00618676 /* TimidityCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16370D25F9FA00618676 /* TimidityCodec.cpp */; }; - E38E1FDC0D25F9FD00618676 /* WAVcodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16390D25F9FA00618676 /* WAVcodec.cpp */; }; E38E1FDF0D25F9FD00618676 /* YMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16410D25F9FA00618676 /* YMCodec.cpp */; }; E38E1FE90D25F9FD00618676 /* LinuxRendererGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E165F0D25F9FA00618676 /* LinuxRendererGL.cpp */; }; E38E1FEC0D25F9FD00618676 /* RenderManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16650D25F9FA00618676 /* RenderManager.cpp */; }; @@ -2301,12 +2295,10 @@ E4991205174E5D4500741B6D /* DVDTSCorrection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CDAE9030FFCA3520040B25F /* DVDTSCorrection.cpp */; }; E4991206174E5D4500741B6D /* Edl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43348AA1107747CD00F859CF /* Edl.cpp */; }; E4991207174E5D4A00741B6D /* ExternalPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C5608C40F1754930056433A /* ExternalPlayer.cpp */; }; - E4991208174E5D5A00741B6D /* ADPCMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15DB0D25F9FA00618676 /* ADPCMCodec.cpp */; }; E4991209174E5D5A00741B6D /* ASAPCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88ACB01C0DCF409E0083CFDF /* ASAPCodec.cpp */; }; E499120A174E5D5A00741B6D /* AudioDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15E30D25F9FA00618676 /* AudioDecoder.cpp */; }; E499120B174E5D5A00741B6D /* CodecFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15E80D25F9FA00618676 /* CodecFactory.cpp */; }; E499120C174E5D5A00741B6D /* DVDPlayerCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E36578860D3AA7B40033CC1C /* DVDPlayerCodec.cpp */; }; - E499120D174E5D5A00741B6D /* FLACcodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E160A0D25F9FA00618676 /* FLACcodec.cpp */; }; E499120E174E5D5A00741B6D /* ModplugCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC8800110A46C700EE1B15 /* ModplugCodec.cpp */; }; E499120F174E5D5A00741B6D /* MP3codec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16130D25F9FA00618676 /* MP3codec.cpp */; }; E4991210174E5D5A00741B6D /* NSFCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E161B0D25F9FA00618676 /* NSFCodec.cpp */; }; @@ -2318,7 +2310,6 @@ E4991216174E5D5A00741B6D /* SPCCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16350D25F9FA00618676 /* SPCCodec.cpp */; }; E4991217174E5D5A00741B6D /* TimidityCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16370D25F9FA00618676 /* TimidityCodec.cpp */; }; E4991218174E5D5A00741B6D /* VGMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5F8E1D90E427E8000A8E96F /* VGMCodec.cpp */; }; - E4991219174E5D5A00741B6D /* WAVcodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16390D25F9FA00618676 /* WAVcodec.cpp */; }; E499121A174E5D5A00741B6D /* YMCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E16410D25F9FA00618676 /* YMCodec.cpp */; }; E499121B174E5D5A00741B6D /* PlayerCoreFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43348AA81077486D00F859CF /* PlayerCoreFactory.cpp */; }; E499121C174E5D5A00741B6D /* PlayerSelectionRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43348AAA1077486D00F859CF /* PlayerSelectionRule.cpp */; }; @@ -4577,22 +4568,16 @@ E38E159A0D25F9FA00618676 /* IDVDPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDVDPlayer.h; sourceTree = "<group>"; }; E38E15B50D25F9FA00618676 /* IAudioCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IAudioCallback.h; sourceTree = "<group>"; }; E38E15B60D25F9FA00618676 /* IPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IPlayer.h; sourceTree = "<group>"; }; - E38E15DB0D25F9FA00618676 /* ADPCMCodec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ADPCMCodec.cpp; sourceTree = "<group>"; }; - E38E15DC0D25F9FA00618676 /* ADPCMCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADPCMCodec.h; sourceTree = "<group>"; }; E38E15E30D25F9FA00618676 /* AudioDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioDecoder.cpp; sourceTree = "<group>"; }; E38E15E40D25F9FA00618676 /* AudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDecoder.h; sourceTree = "<group>"; }; E38E15E50D25F9FA00618676 /* CachingCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachingCodec.h; sourceTree = "<group>"; }; E38E15E80D25F9FA00618676 /* CodecFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodecFactory.cpp; sourceTree = "<group>"; }; E38E15E90D25F9FA00618676 /* CodecFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodecFactory.h; sourceTree = "<group>"; }; - E38E15EF0D25F9FA00618676 /* DllAdpcm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllAdpcm.h; sourceTree = "<group>"; }; - E38E15F50D25F9FA00618676 /* DllLibFlac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllLibFlac.h; sourceTree = "<group>"; }; E38E15FA0D25F9FA00618676 /* DllNosefart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllNosefart.h; sourceTree = "<group>"; }; E38E15FB0D25F9FA00618676 /* DllSidplay2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllSidplay2.h; sourceTree = "<group>"; }; E38E15FC0D25F9FA00618676 /* DllStSound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllStSound.h; sourceTree = "<group>"; }; E38E15FD0D25F9FA00618676 /* DllTimidity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllTimidity.h; sourceTree = "<group>"; }; E38E15FE0D25F9FA00618676 /* DllVorbisfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllVorbisfile.h; sourceTree = "<group>"; }; - E38E160A0D25F9FA00618676 /* FLACcodec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FLACcodec.cpp; sourceTree = "<group>"; }; - E38E160B0D25F9FA00618676 /* FLACcodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLACcodec.h; sourceTree = "<group>"; }; E38E160E0D25F9FA00618676 /* ICodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ICodec.h; sourceTree = "<group>"; }; E38E16130D25F9FA00618676 /* MP3codec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MP3codec.cpp; sourceTree = "<group>"; }; E38E16140D25F9FA00618676 /* MP3codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MP3codec.h; sourceTree = "<group>"; }; @@ -4606,8 +4591,6 @@ E38E16360D25F9FA00618676 /* SPCCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPCCodec.h; sourceTree = "<group>"; }; E38E16370D25F9FA00618676 /* TimidityCodec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimidityCodec.cpp; sourceTree = "<group>"; }; E38E16380D25F9FA00618676 /* TimidityCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimidityCodec.h; sourceTree = "<group>"; }; - E38E16390D25F9FA00618676 /* WAVcodec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WAVcodec.cpp; sourceTree = "<group>"; }; - E38E163A0D25F9FA00618676 /* WAVcodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WAVcodec.h; sourceTree = "<group>"; }; E38E16410D25F9FA00618676 /* YMCodec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = YMCodec.cpp; sourceTree = "<group>"; }; E38E16420D25F9FA00618676 /* YMCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YMCodec.h; sourceTree = "<group>"; }; E38E165F0D25F9FA00618676 /* LinuxRendererGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LinuxRendererGL.cpp; sourceTree = "<group>"; }; @@ -7817,8 +7800,6 @@ E38E15D20D25F9FA00618676 /* paplayer */ = { isa = PBXGroup; children = ( - E38E15DB0D25F9FA00618676 /* ADPCMCodec.cpp */, - E38E15DC0D25F9FA00618676 /* ADPCMCodec.h */, 88ACB01C0DCF409E0083CFDF /* ASAPCodec.cpp */, 88ACB01D0DCF409E0083CFDF /* ASAPCodec.h */, E38E15E30D25F9FA00618676 /* AudioDecoder.cpp */, @@ -7828,8 +7809,6 @@ E38E15E90D25F9FA00618676 /* CodecFactory.h */, E36578860D3AA7B40033CC1C /* DVDPlayerCodec.cpp */, E36578870D3AA7B40033CC1C /* DVDPlayerCodec.h */, - E38E160A0D25F9FA00618676 /* FLACcodec.cpp */, - E38E160B0D25F9FA00618676 /* FLACcodec.h */, E38E160E0D25F9FA00618676 /* ICodec.h */, F5DC8800110A46C700EE1B15 /* ModplugCodec.cpp */, F5DC87FF110A46C700EE1B15 /* ModplugCodec.h */, @@ -7853,8 +7832,6 @@ E38E16380D25F9FA00618676 /* TimidityCodec.h */, F5F8E1D90E427E8000A8E96F /* VGMCodec.cpp */, F5F8E1D80E427E8000A8E96F /* VGMCodec.h */, - E38E16390D25F9FA00618676 /* WAVcodec.cpp */, - E38E163A0D25F9FA00618676 /* WAVcodec.h */, E38E16410D25F9FA00618676 /* YMCodec.cpp */, E38E16420D25F9FA00618676 /* YMCodec.h */, ); @@ -8218,9 +8195,7 @@ E38E1A550D25F9FB00618676 /* libUPnP */, E38E1C840D25F9FC00618676 /* libXDAAP */, E38E1CE40D25F9FC00618676 /* UnrarXLib */, - E38E15EF0D25F9FA00618676 /* DllAdpcm.h */, 88ACB01E0DCF409E0083CFDF /* DllASAP.h */, - E38E15F50D25F9FA00618676 /* DllLibFlac.h */, E38E15FA0D25F9FA00618676 /* DllNosefart.h */, E38E15FB0D25F9FA00618676 /* DllSidplay2.h */, E38E15FC0D25F9FA00618676 /* DllStSound.h */, @@ -9824,17 +9799,14 @@ E38E1FAD0D25F9FD00618676 /* DVDSubtitleLineCollection.cpp in Sources */, E38E1FAE0D25F9FD00618676 /* DVDSubtitleParserSubrip.cpp in Sources */, E38E1FAF0D25F9FD00618676 /* DVDSubtitleStream.cpp in Sources */, - E38E1FC10D25F9FD00618676 /* ADPCMCodec.cpp in Sources */, E38E1FC50D25F9FD00618676 /* AudioDecoder.cpp in Sources */, E38E1FC70D25F9FD00618676 /* CodecFactory.cpp in Sources */, - E38E1FCB0D25F9FD00618676 /* FLACcodec.cpp in Sources */, E38E1FCF0D25F9FD00618676 /* MP3codec.cpp in Sources */, E38E1FD10D25F9FD00618676 /* NSFCodec.cpp in Sources */, E38E1FD20D25F9FD00618676 /* OGGcodec.cpp in Sources */, E38E1FD90D25F9FD00618676 /* SIDCodec.cpp in Sources */, E38E1FDA0D25F9FD00618676 /* SPCCodec.cpp in Sources */, E38E1FDB0D25F9FD00618676 /* TimidityCodec.cpp in Sources */, - E38E1FDC0D25F9FD00618676 /* WAVcodec.cpp in Sources */, E38E1FDF0D25F9FD00618676 /* YMCodec.cpp in Sources */, E38E1FE90D25F9FD00618676 /* LinuxRendererGL.cpp in Sources */, E38E1FEC0D25F9FD00618676 /* RenderManager.cpp in Sources */, @@ -11063,12 +11035,10 @@ DFF0F19D17528350002DA3A4 /* DVDTSCorrection.cpp in Sources */, DFF0F19E17528350002DA3A4 /* Edl.cpp in Sources */, DFF0F19F17528350002DA3A4 /* ExternalPlayer.cpp in Sources */, - DFF0F1A017528350002DA3A4 /* ADPCMCodec.cpp in Sources */, DFF0F1A117528350002DA3A4 /* ASAPCodec.cpp in Sources */, DFF0F1A217528350002DA3A4 /* AudioDecoder.cpp in Sources */, DFF0F1A317528350002DA3A4 /* CodecFactory.cpp in Sources */, DFF0F1A417528350002DA3A4 /* DVDPlayerCodec.cpp in Sources */, - DFF0F1A517528350002DA3A4 /* FLACcodec.cpp in Sources */, DFF0F1A617528350002DA3A4 /* ModplugCodec.cpp in Sources */, DFF0F1A717528350002DA3A4 /* MP3codec.cpp in Sources */, DFF0F1A817528350002DA3A4 /* NSFCodec.cpp in Sources */, @@ -11080,7 +11050,6 @@ DFF0F1AE17528350002DA3A4 /* SPCCodec.cpp in Sources */, DFF0F1AF17528350002DA3A4 /* TimidityCodec.cpp in Sources */, DFF0F1B017528350002DA3A4 /* VGMCodec.cpp in Sources */, - DFF0F1B117528350002DA3A4 /* WAVcodec.cpp in Sources */, DFF0F1B217528350002DA3A4 /* YMCodec.cpp in Sources */, DFF0F1B317528350002DA3A4 /* PlayerCoreFactory.cpp in Sources */, DFF0F1B417528350002DA3A4 /* PlayerSelectionRule.cpp in Sources */, @@ -12122,12 +12091,10 @@ E4991205174E5D4500741B6D /* DVDTSCorrection.cpp in Sources */, E4991206174E5D4500741B6D /* Edl.cpp in Sources */, E4991207174E5D4A00741B6D /* ExternalPlayer.cpp in Sources */, - E4991208174E5D5A00741B6D /* ADPCMCodec.cpp in Sources */, E4991209174E5D5A00741B6D /* ASAPCodec.cpp in Sources */, E499120A174E5D5A00741B6D /* AudioDecoder.cpp in Sources */, E499120B174E5D5A00741B6D /* CodecFactory.cpp in Sources */, E499120C174E5D5A00741B6D /* DVDPlayerCodec.cpp in Sources */, - E499120D174E5D5A00741B6D /* FLACcodec.cpp in Sources */, E499120E174E5D5A00741B6D /* ModplugCodec.cpp in Sources */, E499120F174E5D5A00741B6D /* MP3codec.cpp in Sources */, E4991210174E5D5A00741B6D /* NSFCodec.cpp in Sources */, @@ -12139,7 +12106,6 @@ E4991216174E5D5A00741B6D /* SPCCodec.cpp in Sources */, E4991217174E5D5A00741B6D /* TimidityCodec.cpp in Sources */, E4991218174E5D5A00741B6D /* VGMCodec.cpp in Sources */, - E4991219174E5D5A00741B6D /* WAVcodec.cpp in Sources */, E499121A174E5D5A00741B6D /* YMCodec.cpp in Sources */, E499121B174E5D5A00741B6D /* PlayerCoreFactory.cpp in Sources */, E499121C174E5D5A00741B6D /* PlayerSelectionRule.cpp in Sources */, diff --git a/configure.in b/configure.in index 815e2db3dc..115102b504 100644 --- a/configure.in +++ b/configure.in @@ -2525,7 +2525,6 @@ OUTPUT_FILES="Makefile \ xbmc/cores/paplayer/Makefile \ xbmc/cores/omxplayer/Makefile \ lib/timidity/Makefile \ - lib/xbadpcm/Makefile \ lib/asap/Makefile \ lib/nosefart/Makefile \ lib/libsidplay2/Makefile \ diff --git a/lib/DllAdpcm.h b/lib/DllAdpcm.h deleted file mode 100644 index 8988bdb122..0000000000 --- a/lib/DllAdpcm.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once -/* - * 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 - * <http://www.gnu.org/licenses/>. - * - */ - -#include "DynamicDll.h" - -class DllADPCMInterface -{ -public: - virtual ~DllADPCMInterface() {} - virtual void* LoadXWAV(const char* szFileName)=0; - virtual void FreeXWAV(void*)=0; - virtual long FillBuffer(void* nsf, char* buffer, int size)=0; - virtual int GetPlaybackRate(void* nsf)=0; - virtual int GetNumberOfChannels(void* info)=0; - virtual int GetSampleSize(void* info)=0; - virtual int GetLength(void* info)=0; - virtual int Seek(void* info, int pos)=0; -}; - -class DllADPCM : public DllDynamic, DllADPCMInterface -{ - DECLARE_DLL_WRAPPER(DllADPCM, DLL_PATH_ADPCM_CODEC) - DEFINE_METHOD1(void*, LoadXWAV, (const char* p1)) - DEFINE_METHOD1(void, FreeXWAV, (void* p1)) - DEFINE_METHOD3(long, FillBuffer, (void* p1, char* p2, int p3)) - DEFINE_METHOD1(int, GetPlaybackRate, (void* p1)) - DEFINE_METHOD1(int, GetNumberOfChannels, (void* p1)) - DEFINE_METHOD1(int, GetSampleSize, (void* p1)) - DEFINE_METHOD1(int, GetLength, (void* p1)) - DEFINE_METHOD2(int, Seek, (void* p1, int p2)) - - BEGIN_METHOD_RESOLVE() - RESOLVE_METHOD_RENAME(DLL_LoadXWAV, LoadXWAV) - RESOLVE_METHOD_RENAME(DLL_FreeXWAV, FreeXWAV) - RESOLVE_METHOD_RENAME(DLL_FillBuffer, FillBuffer) - RESOLVE_METHOD_RENAME(DLL_GetPlaybackRate, GetPlaybackRate) - RESOLVE_METHOD_RENAME(DLL_Seek, Seek) - RESOLVE_METHOD_RENAME(DLL_GetNumberOfChannels, GetNumberOfChannels) - RESOLVE_METHOD_RENAME(DLL_GetSampleSize, GetSampleSize) - RESOLVE_METHOD_RENAME(DLL_GetLength, GetLength) - END_METHOD_RESOLVE() -}; diff --git a/lib/DllLibFlac.h b/lib/DllLibFlac.h deleted file mode 100644 index 4c271a8655..0000000000 --- a/lib/DllLibFlac.h +++ /dev/null @@ -1,147 +0,0 @@ -#pragma once -/* - * 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 - * <http://www.gnu.org/licenses/>. - * - */ - -#if (defined HAVE_CONFIG_H) && (!defined WIN32) - #include "config.h" -#endif -#include <FLAC/stream_decoder.h> -#include "DynamicDll.h" -#include "utils/log.h" - -class DllLibFlacInterface -{ -public: - virtual ~DllLibFlacInterface() {} - virtual FLAC__StreamDecoder *FLAC__stream_decoder_new()=0; - virtual void FLAC__stream_decoder_delete(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream( - FLAC__StreamDecoder *decoder, - FLAC__StreamDecoderReadCallback read_callback, - FLAC__StreamDecoderSeekCallback seek_callback, - FLAC__StreamDecoderTellCallback tell_callback, - FLAC__StreamDecoderLengthCallback length_callback, - FLAC__StreamDecoderEofCallback eof_callback, - FLAC__StreamDecoderWriteCallback write_callback, - FLAC__StreamDecoderMetadataCallback metadata_callback, - FLAC__StreamDecoderErrorCallback error_callback, - void *client_data - )=0; - virtual FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *decoder, FLAC__bool value)=0; - virtual FLAC__bool FLAC__stream_decoder_set_metadata_respond(FLAC__StreamDecoder *decoder, FLAC__MetadataType type)=0; - virtual FLAC__bool FLAC__stream_decoder_set_metadata_respond_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4])=0; - virtual FLAC__bool FLAC__stream_decoder_set_metadata_respond_all(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_set_metadata_ignore(FLAC__StreamDecoder *decoder, FLAC__MetadataType type)=0; - virtual FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4])=0; - virtual FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__StreamDecoderState FLAC__stream_decoder_get_state(const FLAC__StreamDecoder *decoder)=0; - virtual const char *FLAC__stream_decoder_get_resolved_state_string(const FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_get_md5_checking(const FLAC__StreamDecoder *decoder)=0; - virtual FLAC__uint64 FLAC__stream_decoder_get_total_samples(const FLAC__StreamDecoder *decoder)=0; - virtual unsigned FLAC__stream_decoder_get_channels(const FLAC__StreamDecoder *decoder)=0; - virtual FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment(const FLAC__StreamDecoder *decoder)=0; - virtual unsigned FLAC__stream_decoder_get_bits_per_sample(const FLAC__StreamDecoder *decoder)=0; - virtual unsigned FLAC__stream_decoder_get_sample_rate(const FLAC__StreamDecoder *decoder)=0; - virtual unsigned FLAC__stream_decoder_get_blocksize(const FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_get_decode_position(const FLAC__StreamDecoder *decoder, FLAC__uint64 *position)=0; - virtual FLAC__bool FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_flush(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder)=0; - virtual FLAC_API FLAC__bool FLAC__stream_decoder_process_single(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_process_until_end_of_stream(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_skip_single_frame(FLAC__StreamDecoder *decoder)=0; - virtual FLAC__bool FLAC__stream_decoder_seek_absolute(FLAC__StreamDecoder *decoder, FLAC__uint64 sample)=0; -}; - -class DllLibFlac : public DllDynamic, DllLibFlacInterface -{ - DECLARE_DLL_WRAPPER(DllLibFlac, DLL_PATH_FLAC_CODEC) - DEFINE_METHOD0(FLAC__StreamDecoder*, FLAC__stream_decoder_new) - DEFINE_METHOD1(void, FLAC__stream_decoder_delete, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD10(FLAC__StreamDecoderInitStatus, FLAC__stream_decoder_init_stream, - (FLAC__StreamDecoder *p1, - FLAC__StreamDecoderReadCallback p2, - FLAC__StreamDecoderSeekCallback p3, - FLAC__StreamDecoderTellCallback p4, - FLAC__StreamDecoderLengthCallback p5, - FLAC__StreamDecoderEofCallback p6, - FLAC__StreamDecoderWriteCallback p7, - FLAC__StreamDecoderMetadataCallback p8, - FLAC__StreamDecoderErrorCallback p9, - void *p10)) - DEFINE_METHOD2(FLAC__bool, FLAC__stream_decoder_set_md5_checking, (FLAC__StreamDecoder *p1, FLAC__bool p2)) - DEFINE_METHOD2(FLAC__bool, FLAC__stream_decoder_set_metadata_respond, (FLAC__StreamDecoder *p1, FLAC__MetadataType p2)) - DEFINE_METHOD2(FLAC__bool, FLAC__stream_decoder_set_metadata_respond_application, (FLAC__StreamDecoder *p1, const FLAC__byte p2[4])) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_set_metadata_respond_all, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD2(FLAC__bool, FLAC__stream_decoder_set_metadata_ignore, (FLAC__StreamDecoder *p1, FLAC__MetadataType p2)) - DEFINE_METHOD2(FLAC__bool, FLAC__stream_decoder_set_metadata_ignore_application, (FLAC__StreamDecoder *p1, const FLAC__byte p2[4])) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_set_metadata_ignore_all, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__StreamDecoderState, FLAC__stream_decoder_get_state, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(const char *, FLAC__stream_decoder_get_resolved_state_string, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_get_md5_checking, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__uint64, FLAC__stream_decoder_get_total_samples, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(unsigned, FLAC__stream_decoder_get_channels, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__ChannelAssignment, FLAC__stream_decoder_get_channel_assignment, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(unsigned, FLAC__stream_decoder_get_bits_per_sample, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(unsigned, FLAC__stream_decoder_get_sample_rate, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(unsigned, FLAC__stream_decoder_get_blocksize, (const FLAC__StreamDecoder *p1)) - DEFINE_METHOD2(FLAC__bool, FLAC__stream_decoder_get_decode_position, (const FLAC__StreamDecoder *p1, FLAC__uint64 *p2)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_finish, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_flush, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_reset, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_process_single, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_process_until_end_of_metadata, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_process_until_end_of_stream, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD1(FLAC__bool, FLAC__stream_decoder_skip_single_frame, (FLAC__StreamDecoder *p1)) - DEFINE_METHOD2(FLAC__bool, FLAC__stream_decoder_seek_absolute, (FLAC__StreamDecoder *p1, FLAC__uint64 p2)) - - BEGIN_METHOD_RESOLVE() - RESOLVE_METHOD(FLAC__stream_decoder_new) - RESOLVE_METHOD(FLAC__stream_decoder_delete) - RESOLVE_METHOD(FLAC__stream_decoder_init_stream) - RESOLVE_METHOD(FLAC__stream_decoder_set_md5_checking) - RESOLVE_METHOD(FLAC__stream_decoder_set_metadata_respond) - RESOLVE_METHOD(FLAC__stream_decoder_set_metadata_respond_application) - RESOLVE_METHOD(FLAC__stream_decoder_set_metadata_respond_all) - RESOLVE_METHOD(FLAC__stream_decoder_set_metadata_ignore) - RESOLVE_METHOD(FLAC__stream_decoder_set_metadata_ignore_application) - RESOLVE_METHOD(FLAC__stream_decoder_set_metadata_ignore_all) - RESOLVE_METHOD(FLAC__stream_decoder_get_state) - RESOLVE_METHOD(FLAC__stream_decoder_get_resolved_state_string) - RESOLVE_METHOD(FLAC__stream_decoder_get_md5_checking) - RESOLVE_METHOD(FLAC__stream_decoder_get_total_samples) - RESOLVE_METHOD(FLAC__stream_decoder_get_channels) - RESOLVE_METHOD(FLAC__stream_decoder_get_channel_assignment) - RESOLVE_METHOD(FLAC__stream_decoder_get_bits_per_sample) - RESOLVE_METHOD(FLAC__stream_decoder_get_sample_rate) - RESOLVE_METHOD(FLAC__stream_decoder_get_blocksize) - RESOLVE_METHOD(FLAC__stream_decoder_get_decode_position) - RESOLVE_METHOD(FLAC__stream_decoder_finish) - RESOLVE_METHOD(FLAC__stream_decoder_flush) - RESOLVE_METHOD(FLAC__stream_decoder_reset) - RESOLVE_METHOD(FLAC__stream_decoder_process_single) - RESOLVE_METHOD(FLAC__stream_decoder_process_until_end_of_metadata) - RESOLVE_METHOD(FLAC__stream_decoder_process_until_end_of_stream) - RESOLVE_METHOD(FLAC__stream_decoder_skip_single_frame) - RESOLVE_METHOD(FLAC__stream_decoder_seek_absolute) - END_METHOD_RESOLVE() -}; - diff --git a/lib/xbadpcm/ADPCMDll.cpp b/lib/xbadpcm/ADPCMDll.cpp deleted file mode 100644 index b0dab8987c..0000000000 --- a/lib/xbadpcm/ADPCMDll.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2008-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 - * <http://www.gnu.org/licenses/>. - * - */ - -#ifdef _LINUX -#define __declspec(x) -#define __cdecl -#endif - -extern "C" -{ -#include "mywav.h" -#include "uXboxAdpcmDecoder.h" -#include <stdlib.h> - -#define GETLENGTH(x,SAMPLERATE,NCH) (((x * 10) / ((SAMPLERATE / 100) * NCH * (16 >> 3)) / XBOX_ADPCM_SRCSIZE) * XBOX_ADPCM_DSTSIZE) - - struct ADPCMInfo - { - FILE* f; - mywav_fmtchunk fmt; - unsigned int length; - int data_offset; - char* szInputBuffer; - char* szBuf; - char* szStartOfBuf; - int bufLen; - }; - - int getwavinfo(ADPCMInfo* info) { - int wavsize; - - wavsize = mywav_data(info->f, &info->fmt); - - if (info->fmt.dwSamplesPerSec == 0 || info->fmt.wChannels == 0) - return -1; - - if(wavsize >= 0) { - if(info->fmt.wFormatTag != 0x0069) { - fseek(info->f,0,SEEK_SET); - return(-1); - } - info->data_offset = ftell(info->f); - } else { - fseek(info->f,0,SEEK_END); - wavsize = ftell(info->f); - fseek(info->f,0,SEEK_SET); - } - - info->length = GETLENGTH(wavsize,info->fmt.dwSamplesPerSec,info->fmt.wChannels); - return(wavsize); -} - - - __declspec(dllexport) void* __cdecl DLL_LoadXWAV(const char* szFileName) - { - ADPCMInfo* info = (ADPCMInfo*)malloc(sizeof(ADPCMInfo)); - info->f = fopen(szFileName,"rb"); - if (!info->f) - { - free(info); - return NULL; - } - - int iResult = getwavinfo(info); - if (iResult == -1) - { - fclose(info->f); - free(info); - return NULL; - } - - info->szBuf = (char*)malloc(XBOX_ADPCM_DSTSIZE*info->fmt.wChannels*4); - info->szInputBuffer = (char*)malloc(XBOX_ADPCM_SRCSIZE*info->fmt.wChannels*4); - info->szStartOfBuf = info->szBuf+XBOX_ADPCM_DSTSIZE*info->fmt.wChannels*4; - info->bufLen = XBOX_ADPCM_DSTSIZE*info->fmt.wChannels*4; - return (void*)info; - } - - void __declspec(dllexport) DLL_FreeXWAV(void* info) - { - ADPCMInfo* pInfo = (ADPCMInfo*)info; - fclose(pInfo->f); - free(pInfo); - } - - int __declspec(dllexport) DLL_Seek(void* info, int pos) - { - ADPCMInfo* pInfo = (ADPCMInfo*)info; - int offs = pInfo->data_offset + ((((pos/ 1000) * pInfo->fmt.dwSamplesPerSec) / XBOX_ADPCM_DSTSIZE) * XBOX_ADPCM_SRCSIZE * pInfo->fmt.wChannels * (16 >> 3)); - - fseek(pInfo->f,offs,SEEK_SET); - // invalidate buffer - pInfo->szStartOfBuf = pInfo->szBuf+XBOX_ADPCM_DSTSIZE*pInfo->fmt.wChannels*4; - return pos; - } - - long __declspec(dllexport) DLL_FillBuffer(void* info, char* buffer, int size) - { - ADPCMInfo* pInfo = (ADPCMInfo*)info; - int iCurrSize = size; - while (iCurrSize > 0) - { - if (pInfo->szStartOfBuf >= pInfo->szBuf+pInfo->bufLen) - { - // Read data into input buffer - int read = fread(pInfo->szInputBuffer,XBOX_ADPCM_SRCSIZE*pInfo->fmt.wChannels,4,pInfo->f); - if (!read) - break; - - TXboxAdpcmDecoder_Decode_Memory((uint8_t*)pInfo->szInputBuffer, read*XBOX_ADPCM_SRCSIZE*pInfo->fmt.wChannels, (uint8_t*)pInfo->szBuf, pInfo->fmt.wChannels); - pInfo->szStartOfBuf = pInfo->szBuf; - } - int iCopy=0; - if (iCurrSize > pInfo->szBuf+pInfo->bufLen-pInfo->szStartOfBuf) - iCopy = pInfo->szBuf+pInfo->bufLen-pInfo->szStartOfBuf; - else - iCopy = iCurrSize; - - memcpy(buffer,pInfo->szStartOfBuf,iCopy); - buffer += iCopy; - iCurrSize -= iCopy; - pInfo->szStartOfBuf += iCopy; - } - - return size-iCurrSize; - } - - int __declspec(dllexport) DLL_GetPlaybackRate(void* info) - { - ADPCMInfo* pInfo = (ADPCMInfo*)info; - return pInfo->fmt.dwSamplesPerSec; - } - - int __declspec(dllexport) DLL_GetNumberOfChannels(void* info) - { - ADPCMInfo* pInfo = (ADPCMInfo*)info; - return pInfo->fmt.wChannels; - } - - int __declspec(dllexport) DLL_GetSampleSize(void* info) - { - ADPCMInfo* pInfo = (ADPCMInfo*)info; - return pInfo->fmt.wBitsPerSample; - } - - int __declspec(dllexport) DLL_GetLength(void* info) - { - ADPCMInfo* pInfo = (ADPCMInfo*)info; - return pInfo->length; - } -} - diff --git a/lib/xbadpcm/Makefile.in b/lib/xbadpcm/Makefile.in deleted file mode 100644 index 0a2bc43e44..0000000000 --- a/lib/xbadpcm/Makefile.in +++ /dev/null @@ -1,20 +0,0 @@ -ARCH=@ARCH@ -OBJS=uXboxAdpcmDecoder.o ADPCMDll.o -CFLAGS +=-D_LINUX -fPIC -CXXFLAGS += -D_LINUX -fPIC - -SLIB=@abs_top_srcdir@/system/players/paplayer/adpcm-@ARCH@.so - -$(SLIB): $(OBJS) -ifeq ($(findstring osx,$(ARCH)), osx) - $(CC) $(LDFLAGS) -Wl,-alias_list,@abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper_mach_alias \ - -bundle -undefined dynamic_lookup -read_only_relocs suppress -o $@ \ - @abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper.o *.o $(BUNDLE1_O) - chmod +x $@ -else - $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ *.o -Wl,--unresolved-symbols=ignore-all -lm \ - `cat @abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper.def` @abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper.o -endif - -include @abs_top_srcdir@/Makefile.include - diff --git a/lib/xbadpcm/adpcm.sln b/lib/xbadpcm/adpcm.sln deleted file mode 100644 index 448fcad143..0000000000 --- a/lib/xbadpcm/adpcm.sln +++ /dev/null @@ -1,21 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adpcm", "adpcm.vcproj", "{2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug.ActiveCfg = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug.Build.0 = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Release.ActiveCfg = Release|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/lib/xbadpcm/adpcm.vcxproj b/lib/xbadpcm/adpcm.vcxproj deleted file mode 100644 index 2ebf6f5ca7..0000000000 --- a/lib/xbadpcm/adpcm.vcxproj +++ /dev/null @@ -1,149 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectName>libadpcm_dll</ProjectName> - <ProjectGuid>{2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}</ProjectGuid> - <RootNamespace>libadpcm_dll</RootNamespace> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(SolutionDir)\XBMC.core-defaults.props" /> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$(SolutionDir)\XBMC.defaults.props" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$(SolutionDir)\XBMC.defaults.props" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">adpcm</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">adpcm</TargetName> - <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Build</CustomBuildAfterTargets> - <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Build</CustomBuildAfterTargets> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <PrecompiledHeader> - </PrecompiledHeader> - <DisableSpecificWarnings>4244;4267;4311;4312;%(DisableSpecificWarnings)</DisableSpecificWarnings> - </ClCompile> - <ResourceCompile> - <ResourceOutputFileName> - </ResourceOutputFileName> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> - <ProgramDatabaseFile>adpcm.pdb</ProgramDatabaseFile> - <ProfileGuidedDatabase> - </ProfileGuidedDatabase> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(TargetName).lib</ImportLibrary> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - </Link> - <PostBuildEvent> - <Command> - </Command> - </PostBuildEvent> - <CustomBuildStep> - <Command>copy /B /Y "$(TargetPath)" "$(SolutionDir)..\..\system\players\paplayer\$(TargetFileName)"</Command> - </CustomBuildStep> - <CustomBuildStep> - <Message>Copy output</Message> - </CustomBuildStep> - <CustomBuildStep> - <Outputs>$(SolutionDir)..\..\system\players\paplayer\$(TargetFileName)</Outputs> - <Inputs>$(TargetPath)</Inputs> - </CustomBuildStep> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <PrecompiledHeader> - </PrecompiledHeader> - <DisableSpecificWarnings>4244;4267;4311;4312;%(DisableSpecificWarnings)</DisableSpecificWarnings> - <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> - <IntrinsicFunctions>true</IntrinsicFunctions> - <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> - <WholeProgramOptimization>true</WholeProgramOptimization> - </ClCompile> - <ResourceCompile> - <ResourceOutputFileName> - </ResourceOutputFileName> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> - <ProgramDatabaseFile>$(TargetName).pdb</ProgramDatabaseFile> - <ProfileGuidedDatabase> - </ProfileGuidedDatabase> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(TargetName).lib</ImportLibrary> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - </Link> - <PostBuildEvent> - <Command> - </Command> - </PostBuildEvent> - <CustomBuildStep> - <Command>copy /B /Y "$(TargetPath)" "$(SolutionDir)..\..\system\players\paplayer\$(TargetFileName)"</Command> - </CustomBuildStep> - <CustomBuildStep> - <Message>Copy output</Message> - </CustomBuildStep> - <CustomBuildStep> - <Outputs>$(SolutionDir)..\..\system\players\paplayer\$(TargetFileName)</Outputs> - <Inputs>$(TargetPath)</Inputs> - </CustomBuildStep> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="ADPCMDll.cpp" /> - <ClCompile Include="uXboxAdpcmDecoder.c" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="uXboxAdpcmDecoder.h" /> - <ClInclude Include="mywav.h" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/lib/xbadpcm/adpcm.vcxproj.filters b/lib/xbadpcm/adpcm.vcxproj.filters deleted file mode 100644 index ac523b1030..0000000000 --- a/lib/xbadpcm/adpcm.vcxproj.filters +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> - <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="ADPCMDll.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="uXboxAdpcmDecoder.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> - <ItemGroup> - <ClInclude Include="uXboxAdpcmDecoder.h"> - <Filter>Source Files</Filter> - </ClInclude> - <ClInclude Include="mywav.h"> - <Filter>Header Files</Filter> - </ClInclude> - </ItemGroup> -</Project>
\ No newline at end of file diff --git a/lib/xbadpcm/in_xbadpcm.txt b/lib/xbadpcm/in_xbadpcm.txt deleted file mode 100644 index 05903cd25a..0000000000 --- a/lib/xbadpcm/in_xbadpcm.txt +++ /dev/null @@ -1,47 +0,0 @@ -###################################################################### - -Xbox ADPCM plugin for Winamp -by Luigi Auriemma -e-mail: aluigi@autistici.org -web: aluigi.org -plugin: http://aluigi.org/papers.htm#xbox - -###################################################################### - - -This is a plugin for Winamp which allows to play the audio compressed -with the Xbox ADPCM codec. - -For using it simply move in_xbadpcm.dll into your Plugin folder or in -the folder where is located your preferred player (Winamp, Xmplay and -many others), - -Supports wave file (tag 0x0069), raw files (like those extracted with -the old versions of my Unxwb tool), XWB/ZWB/WBA archives (the plugin -will skip the WMA and PCM audio files and the XWB file will be read as -an unique audio file, in future I hope to add subsongs handling) and -XSD/XSH archives. - -It's open source and released under the GPL license. - -More info and tools are available here: - - http://aluigi.org/papers.htm#xbox - -Note that raw audio files have no info in them (XWB archives store -these info) so the sample rate is automatically set to 44100 and the -channels to 2. -I highly suggest you to use my xbadpdec tool for adding the wave -header to your files: - - xbadpdec -a 00000000.dat 00000000.wav - -or if your game uses the 32000 or 33000 sample rate (like Unreal -Championship) use: - - xbadpdec -f 32000 -a 00000000.dat 00000000.wav - -channels number can be set with the -c option. - - -###################################################################### diff --git a/lib/xbadpcm/mywav.h b/lib/xbadpcm/mywav.h deleted file mode 100644 index f29498dba4..0000000000 --- a/lib/xbadpcm/mywav.h +++ /dev/null @@ -1,249 +0,0 @@ -/* - MyWAV 0.1.1 - by Luigi Auriemma - e-mail: aluigi@autistici.org - web: aluigi.org - - Copyright 2005,2006 Luigi Auriemma - - 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 of the License, 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 this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - http://www.gnu.org/licenses/gpl.txt -*/ - -#include <string.h> - -//#include <stdint.h> -typedef unsigned char uint8_t; -typedef unsigned int uint32_t; -typedef signed short int16_t; -typedef unsigned short uint16_t; - -#include <stdio.h> - -/* -the functions return ever 0 if success, other values (-1) if error -note that these functions have been written with compatibility in mind -so don't worry if you see useless instructions -*/ - - - -typedef struct { - uint8_t id[4]; - uint32_t size; -} mywav_chunk; - -typedef struct { - int16_t wFormatTag; - uint16_t wChannels; - uint32_t dwSamplesPerSec; - uint32_t dwAvgBytesPerSec; - uint16_t wBlockAlign; - uint16_t wBitsPerSample; -} mywav_fmtchunk; - - - - /* FILE WRITING */ - - // 8 bit -int mywav_fwi08(FILE *fd, int num) { - if(fputc((num ) & 0xff, fd) < 0) return(-1); - return(0); -} - - - - // 16 bit -int mywav_fwi16(FILE *fd, int num) { - if(fputc((num ) & 0xff, fd) < 0) return(-1); - if(fputc((num >> 8) & 0xff, fd) < 0) return(-1); - return(0); -} - - - - // 32 bit -int mywav_fwi32(FILE *fd, int num) { - if(fputc((num ) & 0xff, fd) < 0) return(-1); - if(fputc((num >> 8) & 0xff, fd) < 0) return(-1); - if(fputc((num >> 16) & 0xff, fd) < 0) return(-1); - if(fputc((num >> 24) & 0xff, fd) < 0) return(-1); - return(0); -} - - - - // data -int mywav_fwmem(FILE *fd, uint8_t *mem, int size) { - if(size) { - if(fwrite(mem, size, 1, fd) != 1) return(-1); - } - return(0); -} - - - - // chunk -int mywav_fwchunk(FILE *fd, mywav_chunk *chunk) { - if(mywav_fwmem(fd, chunk->id, 4)) return(-1); - if(mywav_fwi32(fd, chunk->size)) return(-1); - return(0); -} - - - - // fmtchunk -int mywav_fwfmtchunk(FILE *fd, mywav_fmtchunk *fmtchunk) { - if(mywav_fwi16(fd, fmtchunk->wFormatTag)) return(-1); - if(mywav_fwi16(fd, fmtchunk->wChannels)) return(-1); - if(mywav_fwi32(fd, fmtchunk->dwSamplesPerSec)) return(-1); - if(mywav_fwi32(fd, fmtchunk->dwAvgBytesPerSec)) return(-1); - if(mywav_fwi16(fd, fmtchunk->wBlockAlign)) return(-1); - if(mywav_fwi16(fd, fmtchunk->wBitsPerSample)) return(-1); - return(0); -} - - - - /* FILE READING */ - - // 8 bit -int mywav_fri08(FILE *fd, uint8_t *num) { - if(fread(num, 1, 1, fd) != 1) return(-1); - return(0); -} - - - - // 16 bit -int mywav_fri16(FILE *fd, uint16_t *num) { - uint16_t ret; - uint8_t tmp; - - if(fread(&tmp, 1, 1, fd) != 1) return(-1); ret = tmp; - if(fread(&tmp, 1, 1, fd) != 1) return(-1); ret |= (tmp << 8); - *num = ret; - return(0); -} - - - - // 32 bit -int mywav_fri32(FILE *fd, uint32_t *num) { - uint32_t ret; - uint8_t tmp; - - if(fread(&tmp, 1, 1, fd) != 1) return(-1); ret = tmp; - if(fread(&tmp, 1, 1, fd) != 1) return(-1); ret |= (tmp << 8); - if(fread(&tmp, 1, 1, fd) != 1) return(-1); ret |= (tmp << 16); - if(fread(&tmp, 1, 1, fd) != 1) return(-1); ret |= (tmp << 24); - *num = ret; - return(0); -} - - - - // data -int mywav_frmem(FILE *fd, uint8_t *mem, int size) { - if(size) { - if(fread(mem, size, 1, fd) != 1) return(-1); - } - return(0); -} - - - - // chunk -int mywav_frchunk(FILE *fd, mywav_chunk *chunk) { - if(mywav_frmem(fd, (uint8_t *)&chunk->id, 4)) return(-1); - if(mywav_fri32(fd, (uint32_t *)&chunk->size)) return(-1); - return(0); -} - - - - // fmtchunk -int mywav_frfmtchunk(FILE *fd, mywav_fmtchunk *fmtchunk) { - if(mywav_fri16(fd, (uint16_t *)&fmtchunk->wFormatTag)) return(-1); - if(mywav_fri16(fd, (uint16_t *)&fmtchunk->wChannels)) return(-1); - if(mywav_fri32(fd, (uint32_t *)&fmtchunk->dwSamplesPerSec)) return(-1); - if(mywav_fri32(fd, (uint32_t *)&fmtchunk->dwAvgBytesPerSec)) return(-1); - if(mywav_fri16(fd, (uint16_t *)&fmtchunk->wBlockAlign)) return(-1); - if(mywav_fri16(fd, (uint16_t *)&fmtchunk->wBitsPerSample)) return(-1); - return(0); -} - - - /* MYWAV MAIN FUNCTIONS */ - -int mywav_seekchunk(FILE *fd, uint8_t *find) { - mywav_chunk chunk; - - if(fseek(fd, sizeof(mywav_chunk) + 4, SEEK_SET) < 0) return(-1); - - while(!mywav_frchunk(fd, &chunk)) { - if(!memcmp(chunk.id, find, 4)) return(chunk.size); - if(fseek(fd, chunk.size, SEEK_CUR) < 0) break; - } - return(-1); -} - - - -int mywav_data(FILE *fd, mywav_fmtchunk *fmt) { - mywav_chunk chunk; - uint8_t type[4]; - - if(mywav_frchunk(fd, &chunk) < 0) return(-1); - if(mywav_frmem(fd, type, 4) < 0) return(-1); - if(memcmp(type, "WAVE", 4)) return(-1); - - if(mywav_seekchunk(fd, (uint8_t*)"fmt ") < 0) return(-1); - if(mywav_frfmtchunk(fd, fmt) < 0) return(-1); - - return(mywav_seekchunk(fd, (uint8_t*)"data")); -} - - - -int mywav_writehead(FILE *fd, mywav_fmtchunk *fmt, uint32_t data_size, uint8_t *more, int morelen) { - mywav_chunk chunk; - - memcpy(chunk.id, "RIFF", 4); - chunk.size = - 4 + - sizeof(mywav_chunk) + - sizeof(mywav_fmtchunk) + - morelen + - sizeof(mywav_chunk) + - data_size; - - if(mywav_fwchunk(fd, &chunk) < 0) return(-1); - if(mywav_fwmem(fd, (uint8_t*)"WAVE", 4) < 0) return(-1); - - memcpy(chunk.id, "fmt ", 4); - chunk.size = sizeof(mywav_fmtchunk) + morelen; - if(mywav_fwchunk(fd, &chunk) < 0) return(-1); - if(mywav_fwfmtchunk(fd, fmt) < 0) return(-1); - if(mywav_fwmem(fd, more, morelen) < 0) return(-1); - - memcpy(chunk.id, "data", 4); - chunk.size = data_size; - if(mywav_fwchunk(fd, &chunk) < 0) return(-1); - return(0); -} - diff --git a/lib/xbadpcm/uXboxAdpcmDecoder.c b/lib/xbadpcm/uXboxAdpcmDecoder.c deleted file mode 100644 index f405c42212..0000000000 --- a/lib/xbadpcm/uXboxAdpcmDecoder.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - TXboxAdpcmDecoder class - (c) 2005 Benjamin Haisch - - Revision 2 with stereo support - -### - C conversion 0.1.3 - by Luigi Auriemma - e-mail: aluigi@autistici.org - web: aluigi.org - - Copyright 2005,2006 Luigi Auriemma - - 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 of the License, 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 this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - http://www.gnu.org/licenses/gpl.txt -*/ - -#include "uXboxAdpcmDecoder.h" - -#define TXboxAdpcmDecoder_delimit(x,h,l) \ - if(x > h) { \ - x = h; \ - } else if(x < l) { \ - x = l; \ - } - - - -typedef struct { - int8_t Index; - int16_t StepSize; - int16_t Predictor; -} TAdpcmState; - - - -const static int16_t StepTable[89] = { - 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, - 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, - 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, - 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, - 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, - 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, - 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, - 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, - 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 -}; - - - -const static int8_t IndexTable[16] = { - -1, -1, -1, -1, 2, 4, 6, 8, - -1, -1, -1, -1, 2, 4, 6, 8 -}; - - - -int TXboxAdpcmDecoder_DecodeSample(int Code, TAdpcmState *State) { - int Delta, - Result; - - Delta = State->StepSize >> 3; - if(Code & 4) Delta += State->StepSize; - if(Code & 2) Delta += State->StepSize >> 1; - if(Code & 1) Delta += State->StepSize >> 2; - if(Code & 8) Delta = -Delta; - Result = State->Predictor + Delta; - TXboxAdpcmDecoder_delimit(Result, 32767, -32768); - State->Index += IndexTable[Code]; - TXboxAdpcmDecoder_delimit(State->Index, 88, 0); - State->StepSize = StepTable[State->Index]; - State->Predictor = Result; - return(Result); -} - - - -int TXboxAdpcmDecoder_Decode_Memory(uint8_t *in, int inlen, uint8_t *out, int FChannels) { - TAdpcmState FAdpcmState[6]; - int16_t Buffers[6][8]; - uint32_t CodeBuf; - int i, - j, - c, - outlen; - - inlen = (inlen / XBOX_ADPCM_SRCSIZE) / FChannels; - - for(outlen = 0; inlen--; outlen++) { - for(c = 0; c < FChannels; c++) { - *out++ = in[0]; - *out++ = in[1]; - FAdpcmState[c].Predictor = in[0] | (in[1] << 8); in += 2; - FAdpcmState[c].Index = in[0] | (in[1] << 8); in += 2; - TXboxAdpcmDecoder_delimit(FAdpcmState[c].Index, 88, 0); - FAdpcmState[c].StepSize = StepTable[FAdpcmState[c].Index]; - } - for(i = 0; i < 8; i++) { - for(c = 0; c < FChannels; c++) { - CodeBuf = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); - in += 4; - for(j = 0; j < 8; j++) { - Buffers[c][j] = TXboxAdpcmDecoder_DecodeSample(CodeBuf & 15, &FAdpcmState[c]); - CodeBuf >>= 4; - } - } - for(j = 0; j < 8; j++) { - for(c = 0; c < FChannels; c++) { - *out++ = (Buffers[c][j] ) & 0xff; - *out++ = (Buffers[c][j] >> 8) & 0xff; - } - } - } - } - - return(outlen * XBOX_ADPCM_DSTSIZE * FChannels); -} - - - -int TXboxAdpcmDecoder_Decode(FILE *ASource, FILE *ADest, int SourcePos, int SourceSize, int FChannels) { - int DestSize; - uint8_t in[XBOX_ADPCM_SRCSIZE * 6], - out[XBOX_ADPCM_DSTSIZE * 6]; - - if(FChannels <= 0) return(0); - - if(SourcePos >= 0) { - if(fseek(ASource, SourcePos, SEEK_SET) < 0) return(0); - } - if(SourceSize > 0) { - SourceSize -= (SourceSize % XBOX_ADPCM_SRCSIZE); - SourceSize = (SourceSize / XBOX_ADPCM_SRCSIZE) / FChannels; - } - - for(DestSize = 0; SourceSize; SourceSize--) { - if(!fread(in, sizeof(in), 1, ASource)) break; - DestSize += TXboxAdpcmDecoder_Decode_Memory(in, sizeof(in), out, FChannels); - if(!fwrite(out, sizeof(out), 1, ADest)) break; - } - - return(DestSize); -} - - - -int TXboxAdpcmDecoder_guess_output_size(int SourceSize) { - return((SourceSize / XBOX_ADPCM_SRCSIZE) * XBOX_ADPCM_DSTSIZE); -} - diff --git a/lib/xbadpcm/uXboxAdpcmDecoder.h b/lib/xbadpcm/uXboxAdpcmDecoder.h deleted file mode 100644 index 69356d4e76..0000000000 --- a/lib/xbadpcm/uXboxAdpcmDecoder.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - TXboxAdpcmDecoder class - (c) 2005 Benjamin Haisch - - Revision 2 with stereo support - -### - C conversion 0.1.3 - by Luigi Auriemma - e-mail: aluigi@autistici.org - web: aluigi.org - - Copyright 2005,2006 Luigi Auriemma - - 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 of the License, 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 this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - http://www.gnu.org/licenses/gpl.txt -*/ - -#include <stdio.h> - -typedef unsigned char uint8_t; -typedef unsigned int uint32_t; -typedef signed short int16_t; -typedef unsigned short uint16_t; -typedef signed char int8_t; - -#define XBOX_ADPCM_SRCSIZE 36 -#define XBOX_ADPCM_DSTSIZE 130 - -int TXboxAdpcmDecoder_Decode_Memory( - uint8_t *in, // input buffer - int inlen, // input size MUST BE a multiplier of XBOX_ADPCM_SRCSIZE - uint8_t *out, // output buffer - int FChannels // channels -); - -int TXboxAdpcmDecoder_Decode( - FILE *ASource, // input file - FILE *ADest, // output file - int SourcePos, // fseek offset, use -1 for none - int SourceSize, // size of the input audio block, use -1 for all - int AChannels // number of channels, usually 2 -); - - -int TXboxAdpcmDecoder_guess_output_size( - int SourceSize // size of the input audio block -); - - diff --git a/project/VS2010Express/XBMC for Windows.sln b/project/VS2010Express/XBMC for Windows.sln index 798e0b7bf4..b2d060849b 100644 --- a/project/VS2010Express/XBMC for Windows.sln +++ b/project/VS2010Express/XBMC for Windows.sln @@ -55,8 +55,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmad_dll", "..\..\lib\lib EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvgmstream_dll", "..\..\lib\vgmstream\win32\win32.vcxproj", "{3600E1C5-FECA-468C-83F3-FE467DBE2A66}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libadpcm_dll", "..\..\lib\xbadpcm\adpcm.vcxproj", "{2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libNoseFartXBMC_dll", "..\..\lib\nosefart\NoseFartXBMC.vcxproj", "{17238C64-04D6-4B51-B205-4A5A84ADB9FA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsidplay_dll", "..\..\lib\libsidplay2\libsidplay\win\VC\libsidplay.vcxproj", "{FB3AB83A-C37A-4636-87FD-827F8506A8FC}" @@ -352,16 +350,6 @@ Global {3600E1C5-FECA-468C-83F3-FE467DBE2A66}.Release (DirectX)|Win32.Build.0 = Release|Win32 {3600E1C5-FECA-468C-83F3-FE467DBE2A66}.Release (OpenGL)|Win32.ActiveCfg = Release|Win32 {3600E1C5-FECA-468C-83F3-FE467DBE2A66}.Release (OpenGL)|Win32.Build.0 = Release|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug (DirectX)|Win32.ActiveCfg = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug (DirectX)|Win32.Build.0 = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug (OpenGL)|Win32.ActiveCfg = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug (OpenGL)|Win32.Build.0 = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug Testsuite|Win32.ActiveCfg = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Debug Testsuite|Win32.Build.0 = Debug|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Release (DirectX)|Win32.ActiveCfg = Release|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Release (DirectX)|Win32.Build.0 = Release|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Release (OpenGL)|Win32.ActiveCfg = Release|Win32 - {2A8CBFB5-C226-4BB3-8C03-7C75D511A4A2}.Release (OpenGL)|Win32.Build.0 = Release|Win32 {17238C64-04D6-4B51-B205-4A5A84ADB9FA}.Debug (DirectX)|Win32.ActiveCfg = Debug|Win32 {17238C64-04D6-4B51-B205-4A5A84ADB9FA}.Debug (DirectX)|Win32.Build.0 = Debug|Win32 {17238C64-04D6-4B51-B205-4A5A84ADB9FA}.Debug (OpenGL)|Win32.ActiveCfg = Debug|Win32 diff --git a/project/VS2010Express/XBMC.vcxproj b/project/VS2010Express/XBMC.vcxproj index 0b1c0c62ad..c640130b51 100644 --- a/project/VS2010Express/XBMC.vcxproj +++ b/project/VS2010Express/XBMC.vcxproj @@ -1785,12 +1785,10 @@ <ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleStream.cpp" /> <ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleTagMicroDVD.cpp" /> <ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleTagSami.cpp" /> - <ClCompile Include="..\..\xbmc\cores\paplayer\ADPCMCodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\ASAPCodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\AudioDecoder.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\CodecFactory.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\DVDPlayerCodec.cpp" /> - <ClCompile Include="..\..\xbmc\cores\paplayer\FLACcodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\ModplugCodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\MP3codec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\NSFCodec.cpp" /> @@ -1801,7 +1799,6 @@ <ClCompile Include="..\..\xbmc\cores\paplayer\SPCCodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\TimidityCodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\VGMCodec.cpp" /> - <ClCompile Include="..\..\xbmc\cores\paplayer\WAVcodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\paplayer\YMCodec.cpp" /> <ClCompile Include="..\..\xbmc\cores\DllLoader\coff.cpp" /> <ClCompile Include="..\..\xbmc\cores\DllLoader\dll.cpp" /> @@ -2596,20 +2593,17 @@ <ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleStream.h" /> <ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleTagMicroDVD.h" /> <ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleTagSami.h" /> - <ClInclude Include="..\..\xbmc\cores\paplayer\ADPCMCodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\ASAPCodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\AudioDecoder.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\CodecFactory.h" /> <ClInclude Include="..\..\lib\DllAdpcm.h" /> <ClInclude Include="..\..\lib\DllASAP.h" /> - <ClInclude Include="..\..\lib\DllLibFlac.h" /> <ClInclude Include="..\..\lib\DllNosefart.h" /> <ClInclude Include="..\..\lib\DllSidplay2.h" /> <ClInclude Include="..\..\lib\DllStSound.h" /> <ClInclude Include="..\..\lib\DllTimidity.h" /> <ClInclude Include="..\..\lib\DllVorbisfile.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\DVDPlayerCodec.h" /> - <ClInclude Include="..\..\xbmc\cores\paplayer\FLACcodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\ICodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\ModplugCodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\MP3codec.h" /> @@ -2621,7 +2615,6 @@ <ClInclude Include="..\..\xbmc\cores\paplayer\SPCCodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\TimidityCodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\VGMCodec.h" /> - <ClInclude Include="..\..\xbmc\cores\paplayer\WAVcodec.h" /> <ClInclude Include="..\..\xbmc\cores\paplayer\YMCodec.h" /> <ClInclude Include="..\..\xbmc\cores\DllLoader\coff.h" /> <ClInclude Include="..\..\xbmc\cores\DllLoader\coffldr.h" /> diff --git a/project/VS2010Express/XBMC.vcxproj.filters b/project/VS2010Express/XBMC.vcxproj.filters index 829f0531d7..b536eb3bb1 100644 --- a/project/VS2010Express/XBMC.vcxproj.filters +++ b/project/VS2010Express/XBMC.vcxproj.filters @@ -525,9 +525,6 @@ <ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleStream.cpp"> <Filter>cores\dvdplayer\DVDSubtitles</Filter> </ClCompile> - <ClCompile Include="..\..\xbmc\cores\paplayer\ADPCMCodec.cpp"> - <Filter>cores\paplayer</Filter> - </ClCompile> <ClCompile Include="..\..\xbmc\cores\paplayer\ASAPCodec.cpp"> <Filter>cores\paplayer</Filter> </ClCompile> @@ -540,9 +537,6 @@ <ClCompile Include="..\..\xbmc\cores\paplayer\DVDPlayerCodec.cpp"> <Filter>cores\paplayer</Filter> </ClCompile> - <ClCompile Include="..\..\xbmc\cores\paplayer\FLACcodec.cpp"> - <Filter>cores\paplayer</Filter> - </ClCompile> <ClCompile Include="..\..\xbmc\cores\paplayer\ModplugCodec.cpp"> <Filter>cores\paplayer</Filter> </ClCompile> @@ -573,9 +567,6 @@ <ClCompile Include="..\..\xbmc\cores\paplayer\VGMCodec.cpp"> <Filter>cores\paplayer</Filter> </ClCompile> - <ClCompile Include="..\..\xbmc\cores\paplayer\WAVcodec.cpp"> - <Filter>cores\paplayer</Filter> - </ClCompile> <ClCompile Include="..\..\xbmc\cores\paplayer\YMCodec.cpp"> <Filter>cores\paplayer</Filter> </ClCompile> @@ -3418,9 +3409,6 @@ <ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDSubtitles\DVDSubtitleStream.h"> <Filter>cores\dvdplayer\DVDSubtitles</Filter> </ClInclude> - <ClInclude Include="..\..\xbmc\cores\paplayer\ADPCMCodec.h"> - <Filter>cores\paplayer</Filter> - </ClInclude> <ClInclude Include="..\..\xbmc\cores\paplayer\ASAPCodec.h"> <Filter>cores\paplayer</Filter> </ClInclude> @@ -3436,9 +3424,6 @@ <ClInclude Include="..\..\lib\DllASAP.h"> <Filter>cores\paplayer</Filter> </ClInclude> - <ClInclude Include="..\..\lib\DllLibFlac.h"> - <Filter>cores\paplayer</Filter> - </ClInclude> <ClInclude Include="..\..\lib\DllNosefart.h"> <Filter>cores\paplayer</Filter> </ClInclude> @@ -3457,9 +3442,6 @@ <ClInclude Include="..\..\xbmc\cores\paplayer\DVDPlayerCodec.h"> <Filter>cores\paplayer</Filter> </ClInclude> - <ClInclude Include="..\..\xbmc\cores\paplayer\FLACcodec.h"> - <Filter>cores\paplayer</Filter> - </ClInclude> <ClInclude Include="..\..\xbmc\cores\paplayer\ICodec.h"> <Filter>cores\paplayer</Filter> </ClInclude> @@ -3493,9 +3475,6 @@ <ClInclude Include="..\..\xbmc\cores\paplayer\VGMCodec.h"> <Filter>cores\paplayer</Filter> </ClInclude> - <ClInclude Include="..\..\xbmc\cores\paplayer\WAVcodec.h"> - <Filter>cores\paplayer</Filter> - </ClInclude> <ClInclude Include="..\..\xbmc\cores\paplayer\YMCodec.h"> <Filter>cores\paplayer</Filter> </ClInclude> diff --git a/xbmc/DllPaths_generated.h.in b/xbmc/DllPaths_generated.h.in index d35ea97d68..4953236c31 100644 --- a/xbmc/DllPaths_generated.h.in +++ b/xbmc/DllPaths_generated.h.in @@ -46,7 +46,6 @@ /* paplayer */ #define DLL_PATH_AAC_CODEC "special://xbmcbin/system/players/paplayer/AACCodec-@ARCH@.so" -#define DLL_PATH_ADPCM_CODEC "special://xbmcbin/system/players/paplayer/adpcm-@ARCH@.so" #define DLL_PATH_ADPLUG_CODEC "special://xbmcbin/system/players/paplayer/adplug-@ARCH@.so" #define DLL_PATH_APE_CODEC "special://xbmcbin/system/players/paplayer/MACDll-@ARCH@.so" #define DLL_PATH_ASAP_CODEC "special://xbmcbin/system/players/paplayer/xbmc_asap-@ARCH@.so" diff --git a/xbmc/cores/paplayer/ADPCMCodec.cpp b/xbmc/cores/paplayer/ADPCMCodec.cpp deleted file mode 100644 index 9b0a25e7e6..0000000000 --- a/xbmc/cores/paplayer/ADPCMCodec.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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 - * <http://www.gnu.org/licenses/>. - * - */ - -#include "ADPCMCodec.h" -#include "utils/log.h" -#include "cores/AudioEngine/Utils/AEUtil.h" - -ADPCMCodec::ADPCMCodec() -{ - m_CodecName = "adpcm"; - m_adpcm = NULL; - m_bIsPlaying = false; -} - -ADPCMCodec::~ADPCMCodec() -{ - DeInit(); -} - -bool ADPCMCodec::Init(const CStdString &strFile, unsigned int filecache) -{ - DeInit(); - - if (!m_dll.Load()) - return false; // error logged previously - - m_adpcm = m_dll.LoadXWAV(strFile.c_str()); - if (!m_adpcm) - { - CLog::Log(LOGERROR,"ADPCMCodec: error opening file %s!",strFile.c_str()); - return false; - } - - m_Channels = m_dll.GetNumberOfChannels(m_adpcm); - m_SampleRate = m_dll.GetPlaybackRate(m_adpcm); - m_BitsPerSample = 16;//m_dll.GetSampleSize(m_adpcm); - m_DataFormat = AE_FMT_S16NE; - m_TotalTime = m_dll.GetLength(m_adpcm); // fixme? - - return true; -} - -void ADPCMCodec::DeInit() -{ - if (m_adpcm) - m_dll.FreeXWAV(m_adpcm); - - m_adpcm = NULL; - m_bIsPlaying = false; -} - -int64_t ADPCMCodec::Seek(int64_t iSeekTime) -{ - m_dll.Seek(m_adpcm,(int)iSeekTime); - return iSeekTime; -} - -int ADPCMCodec::ReadPCM(BYTE *pBuffer, int size, int *actualsize) -{ - if (!m_adpcm) - return READ_ERROR; - - *actualsize = m_dll.FillBuffer(m_adpcm,(char*)pBuffer,size); - - if (*actualsize == 0) - return READ_ERROR; - - return READ_SUCCESS; -} - -bool ADPCMCodec::CanInit() -{ - return m_dll.CanLoad(); -} - -CAEChannelInfo ADPCMCodec::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 --git a/xbmc/cores/paplayer/ADPCMCodec.h b/xbmc/cores/paplayer/ADPCMCodec.h deleted file mode 100644 index aa09376a68..0000000000 --- a/xbmc/cores/paplayer/ADPCMCodec.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef ADPCM_CODEC_H_ -#define ADPCM_CODEC_H_ -/* - * 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 - * <http://www.gnu.org/licenses/>. - * - */ - -#include "ICodec.h" -#include "DllAdpcm.h" - -class ADPCMCodec : public ICodec -{ -public: - ADPCMCodec(); - virtual ~ADPCMCodec(); - - 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: - void* m_adpcm; - bool m_bIsPlaying; - - DllADPCM m_dll; -}; - -#endif - diff --git a/xbmc/cores/paplayer/CodecFactory.cpp b/xbmc/cores/paplayer/CodecFactory.cpp index 995c4be257..e60644c105 100644 --- a/xbmc/cores/paplayer/CodecFactory.cpp +++ b/xbmc/cores/paplayer/CodecFactory.cpp @@ -22,8 +22,6 @@ #include "CodecFactory.h" #include "MP3codec.h" #include "OGGcodec.h" -#include "FLACcodec.h" -#include "WAVcodec.h" #include "ModplugCodec.h" #include "NSFCodec.h" #ifdef HAS_SPC_CODEC @@ -32,7 +30,6 @@ #include "SIDCodec.h" #include "VGMCodec.h" #include "YMCodec.h" -#include "ADPCMCodec.h" #include "TimidityCodec.h" #ifdef HAS_ASAP_CODEC #include "ASAPCodec.h" @@ -59,7 +56,7 @@ ICodec* CodecFactory::CreateCodec(const CStdString& strFileType) else if (strFileType.Equals("mka")) return new DVDPlayerCodec(); else if (strFileType.Equals("flac")) - return new FLACCodec(); + return new DVDPlayerCodec(); else if (strFileType.Equals("wav")) return new DVDPlayerCodec(); else if (strFileType.Equals("dts") || strFileType.Equals("ac3") || @@ -100,7 +97,7 @@ ICodec* CodecFactory::CreateCodec(const CStdString& strFileType) else if (strFileType.Equals("aiff") || strFileType.Equals("aif")) return new DVDPlayerCodec(); else if (strFileType.Equals("xwav")) - return new ADPCMCodec(); + return new DVDPlayerCodec(); else if (TimidityCodec::IsSupportedFormat(strFileType)) return new TimidityCodec(); #ifdef HAS_ASAP_CODEC @@ -147,7 +144,11 @@ ICodec* CodecFactory::CreateCodecDemux(const CStdString& strFile, const CStdStri return dvdcodec; } else if (strContent.Equals("audio/flac") || strContent.Equals("audio/x-flac") || strContent.Equals("application/x-flac")) - return new FLACCodec(); + { + DVDPlayerCodec *dvdcodec = new DVDPlayerCodec(); + dvdcodec->SetContentType(strContent); + return dvdcodec; + } if (urlFile.GetProtocol() == "shout") { @@ -156,7 +157,6 @@ ICodec* CodecFactory::CreateCodecDemux(const CStdString& strFile, const CStdStri if (urlFile.GetFileType().Equals("wav") || strContent.Equals("audio/wav") || strContent.Equals("audio/x-wav")) { - ICodec* codec; //lets see what it contains... //this kinda sucks 'cause if it's a plain wav file the file //will be opened, sniffed and closed 2 times before it is opened *again* for wav @@ -167,20 +167,11 @@ ICodec* CodecFactory::CreateCodecDemux(const CStdString& strFile, const CStdStri { return dvdcodec; } - delete dvdcodec; - codec = new ADPCMCodec(); - if (codec->Init(strFile, filecache)) - { - return codec; - } - delete codec; - codec = new WAVCodec(); - if (codec->Init(strFile, filecache)) - { - return codec; - } - delete codec; + dvdcodec = new DVDPlayerCodec(); + dvdcodec->SetContentType(strContent); + return dvdcodec; + } else if (urlFile.GetFileType().Equals("ogg") || urlFile.GetFileType().Equals("oggstream") || urlFile.GetFileType().Equals("oga")) return CreateOGGCodec(strFile,filecache); diff --git a/xbmc/cores/paplayer/DVDPlayerCodec.cpp b/xbmc/cores/paplayer/DVDPlayerCodec.cpp index 4fa3bc0db6..a1f76c34cd 100644 --- a/xbmc/cores/paplayer/DVDPlayerCodec.cpp +++ b/xbmc/cores/paplayer/DVDPlayerCodec.cpp @@ -203,6 +203,10 @@ bool DVDPlayerCodec::Init(const CStdString &strFile, unsigned int filecache) m_TotalTime = m_pDemuxer->GetStreamLength(); m_Bitrate = m_pAudioCodec->GetBitRate(); + if (!m_Bitrate && m_TotalTime) + { + m_Bitrate = ((m_pInputStream->GetLength()*1000) / m_TotalTime) * 8; + } m_pDemuxer->GetStreamCodecName(m_nAudioStream,m_CodecName); m_strFileName = strFile; diff --git a/xbmc/cores/paplayer/FLACcodec.cpp b/xbmc/cores/paplayer/FLACcodec.cpp deleted file mode 100644 index 2c4d93f103..0000000000 --- a/xbmc/cores/paplayer/FLACcodec.cpp +++ /dev/null @@ -1,352 +0,0 @@ -/* - * 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 - * <http://www.gnu.org/licenses/>. - * - */ - -#include "FLACcodec.h" -#include "utils/log.h" -#include "cores/AudioEngine/Utils/AEUtil.h" -#include "music/tags/TagLoaderTagLib.h" - -FLACCodec::FLACCodec() -{ - m_SampleRate = 0; - m_Channels = 0; - m_BitsPerSample = 0; - m_DataFormat = AE_FMT_INVALID; - m_TotalTime=0; - m_Bitrate = 0; - m_CodecName = "flac"; - - m_pFlacDecoder=NULL; - - m_pBuffer=NULL; - m_BufferSize=0; - m_MaxFrameSize=0; - -} - -FLACCodec::~FLACCodec() -{ - DeInit(); -} - -bool FLACCodec::Init(const CStdString &strFile, unsigned int filecache) -{ - if (!m_dll.Load()) - return false; - - if (!m_file.Open(strFile, READ_CACHED)) - return false; - - // Extract ReplayGain info - CTagLoaderTagLib tagLoaderTagLib; - tagLoaderTagLib.Load(strFile, m_tag, "flac"); - - m_pFlacDecoder=m_dll.FLAC__stream_decoder_new(); - - if (!m_pFlacDecoder) - { - CLog::Log(LOGERROR, "FLACCodec: Error creating decoder"); - return false; - } - - if (m_dll.FLAC__stream_decoder_init_stream(m_pFlacDecoder, DecoderReadCallback, - DecoderSeekCallback, - DecoderTellCallback, - DecoderLengthCallback, - DecoderEofCallback, - DecoderWriteCallback, - DecoderMetadataCallback, - DecoderErrorCallback, - this) != FLAC__STREAM_DECODER_INIT_STATUS_OK) - { - CLog::Log(LOGERROR, "FLACCodec: Error initializing decoder"); - FreeDecoder(); - return false; - } - - // Process metadata like number of channels... - if (!m_dll.FLAC__stream_decoder_process_until_end_of_metadata(m_pFlacDecoder)) - { - CLog::Log(LOGERROR, "FLACCodec: Error while processing metadata"); - FreeDecoder(); - return false; - } - - // These are filled by the metadata callback - if (m_SampleRate==0 || m_Channels==0 || m_BitsPerSample==0 || m_TotalTime==0 || m_MaxFrameSize==0 || m_DataFormat == AE_FMT_INVALID) - { - CLog::Log(LOGERROR, "FLACCodec: Can't get stream info, SampleRate=%i, Channels=%i, BitsPerSample=%i, TotalTime=%"PRIu64", MaxFrameSize=%i", m_SampleRate, m_Channels, m_BitsPerSample, m_TotalTime, m_MaxFrameSize); - FreeDecoder(); - return false; - } - - m_Bitrate = (int)(((float)m_file.GetLength() * 8) / ((float)m_TotalTime / 1000)); - - if (m_pBuffer) - { - delete[] m_pBuffer; - m_pBuffer=NULL; - } - // allocate the buffer to hold the audio data, - // it is 5 times bigger then a single decoded frame - m_pBuffer=new BYTE[m_MaxFrameSize*5]; - - return true; -} - -void FLACCodec::DeInit() -{ - FreeDecoder(); - m_file.Close(); - - if (m_pBuffer) - { - delete[] m_pBuffer; - m_pBuffer=NULL; - } -} - -int64_t FLACCodec::Seek(int64_t iSeekTime) -{ - // Seek to the nearest sample - // set the buffer size to 0 first, as this invokes a WriteCallback which - // may be called when the buffer is almost full (resulting in a buffer - // overrun unless we reset m_BufferSize first). - m_BufferSize=0; - if(!m_dll.FLAC__stream_decoder_seek_absolute(m_pFlacDecoder, (int64_t)(iSeekTime*m_SampleRate)/1000)) - CLog::Log(LOGERROR, "FLACCodec::Seek - failed to seek"); - - if(m_dll.FLAC__stream_decoder_get_state(m_pFlacDecoder)==FLAC__STREAM_DECODER_SEEK_ERROR) - { - CLog::Log(LOGINFO, "FLACCodec::Seek - must reset decoder after seek"); - if(!m_dll.FLAC__stream_decoder_flush(m_pFlacDecoder)) - CLog::Log(LOGERROR, "FLACCodec::Seek - flush failed"); - } - - return iSeekTime; -} - -int FLACCodec::ReadPCM(BYTE *pBuffer, int size, int *actualsize) -{ - *actualsize=0; - - bool eof=false; - if (m_dll.FLAC__stream_decoder_get_state(m_pFlacDecoder)==FLAC__STREAM_DECODER_END_OF_STREAM) - eof=true; - - if (!eof) - { - // fill our buffer 4 decoded frame (the buffer could hold 5) - while(m_BufferSize < m_MaxFrameSize*4 && - m_dll.FLAC__stream_decoder_get_state(m_pFlacDecoder)!=FLAC__STREAM_DECODER_END_OF_STREAM) - { - if (!m_dll.FLAC__stream_decoder_process_single(m_pFlacDecoder)) - { - CLog::Log(LOGERROR, "FLACCodec: Error decoding single block"); - return READ_ERROR; - } - } - } - - if (size<m_BufferSize) - { // do we need less audio data then in our buffer - memcpy(pBuffer, m_pBuffer, size); - memmove(m_pBuffer, m_pBuffer+size, m_BufferSize-size); - m_BufferSize-=size; - *actualsize=size; - } - else - { - memcpy(pBuffer, m_pBuffer, m_BufferSize); - *actualsize=m_BufferSize; - m_BufferSize=0; - } - - if (eof && m_BufferSize==0) - return READ_EOF; - - return READ_SUCCESS; -} - -bool FLACCodec::CanInit() -{ - return m_dll.CanLoad(); -} - -void FLACCodec::FreeDecoder() -{ - if (m_pFlacDecoder) - { - m_dll.FLAC__stream_decoder_finish(m_pFlacDecoder); - m_dll.FLAC__stream_decoder_delete(m_pFlacDecoder); - m_pFlacDecoder=NULL; - } -} - -FLAC__StreamDecoderReadStatus FLACCodec::DecoderReadCallback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) -{ - FLACCodec* pThis=(FLACCodec*)client_data; - if (!pThis) - return FLAC__STREAM_DECODER_READ_STATUS_ABORT; - - *bytes=pThis->m_file.Read(buffer, *bytes); - - if (*bytes==0) - return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; - else - return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; -} - -FLAC__StreamDecoderSeekStatus FLACCodec::DecoderSeekCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) -{ - FLACCodec* pThis=(FLACCodec*)client_data; - if (!pThis) - return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; - - if (pThis->m_file.Seek(absolute_byte_offset, SEEK_SET)<0) - return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; - - - return FLAC__STREAM_DECODER_SEEK_STATUS_OK; -} - -FLAC__StreamDecoderTellStatus FLACCodec::DecoderTellCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) -{ - FLACCodec* pThis=(FLACCodec*)client_data; - if (!pThis) - return FLAC__STREAM_DECODER_TELL_STATUS_ERROR; - - *absolute_byte_offset=pThis->m_file.GetPosition(); - - return FLAC__STREAM_DECODER_TELL_STATUS_OK; -} - -FLAC__StreamDecoderLengthStatus FLACCodec::DecoderLengthCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) -{ - FLACCodec* pThis=(FLACCodec*)client_data; - if (!pThis) - return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR; - - *stream_length=pThis->m_file.GetLength(); - - return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; -} - -FLAC__bool FLACCodec::DecoderEofCallback(const FLAC__StreamDecoder *decoder, void *client_data) -{ - FLACCodec* pThis=(FLACCodec*)client_data; - if (!pThis) - return true; - - return (pThis->m_file.GetLength()==pThis->m_file.GetPosition()); -} - -FLAC__StreamDecoderWriteStatus FLACCodec::DecoderWriteCallback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) -{ - FLACCodec* pThis=(FLACCodec*)client_data; - if (!pThis) - return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; - - const int bytes_per_sample = frame->header.bits_per_sample/8; - BYTE* outptr = pThis->m_pBuffer+pThis->m_BufferSize; - FLAC__int16* outptr16 = (FLAC__int16 *) outptr; - FLAC__int32* outptr32 = (FLAC__int32 *) outptr; - - unsigned int current_sample = 0; - for(current_sample = 0; current_sample < frame->header.blocksize; current_sample++) - { - for(unsigned int channel = 0; channel < frame->header.channels; channel++) - { - switch(bytes_per_sample) - { - case 2: - outptr16[current_sample*frame->header.channels + channel] = (FLAC__int16) buffer[channel][current_sample]; - break; - case 3: - outptr[2] = (buffer[channel][current_sample] >> 16) & 0xff; - outptr[1] = (buffer[channel][current_sample] >> 8 ) & 0xff; - outptr[0] = (buffer[channel][current_sample] >> 0 ) & 0xff; - outptr += bytes_per_sample; - break; - default: - outptr32[current_sample*frame->header.channels + channel] = buffer[channel][current_sample]; - break; - } - } - } - - if (bytes_per_sample == 1) - { - for(unsigned int i=0;i<current_sample;i++) - { - BYTE* outptr=pThis->m_pBuffer+pThis->m_BufferSize; - outptr[i]^=0x80; - } - } - - pThis->m_BufferSize += current_sample*bytes_per_sample*frame->header.channels; - - return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; -} - -void FLACCodec::DecoderMetadataCallback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) -{ - FLACCodec* pThis=(FLACCodec*)client_data; - if (!pThis) - return; - - if (metadata->type==FLAC__METADATA_TYPE_STREAMINFO) - { - static enum AEChannel map[8][9] = { - {AE_CH_FC, AE_CH_NULL}, - {AE_CH_FL, AE_CH_FR, AE_CH_NULL}, - {AE_CH_FL, AE_CH_FR, AE_CH_FC, AE_CH_NULL}, - {AE_CH_FL, AE_CH_FR, AE_CH_BL, AE_CH_BR, AE_CH_NULL}, - {AE_CH_FL, AE_CH_FR, AE_CH_FC, AE_CH_BL, AE_CH_BR, AE_CH_NULL}, - {AE_CH_FL, AE_CH_FR, AE_CH_FC, AE_CH_LFE, AE_CH_BL, AE_CH_BR, AE_CH_NULL}, // 6 channels - {AE_CH_FL, AE_CH_FR, AE_CH_FC, AE_CH_LFE, AE_CH_BC, AE_CH_BL, AE_CH_BR, AE_CH_NULL}, // 7 channels - {AE_CH_FL, AE_CH_FR, AE_CH_FC, AE_CH_LFE, AE_CH_BL, AE_CH_BR, AE_CH_SL, AE_CH_SR, AE_CH_NULL} // 8 channels - }; - - /* channel counts greater then 6 are undefined */ - if (metadata->data.stream_info.channels > 8) - pThis->m_ChannelInfo = CAEUtil::GuessChLayout(metadata->data.stream_info.channels); - else - pThis->m_ChannelInfo = CAEChannelInfo(map[metadata->data.stream_info.channels - 1]); - - pThis->m_SampleRate = metadata->data.stream_info.sample_rate; - pThis->m_Channels = metadata->data.stream_info.channels; - pThis->m_BitsPerSample = metadata->data.stream_info.bits_per_sample; - switch(pThis->m_BitsPerSample) - { - case 8: pThis->m_DataFormat = AE_FMT_U8; break; - case 16: pThis->m_DataFormat = AE_FMT_S16NE; break; - case 24: pThis->m_DataFormat = AE_FMT_S24NE3; break; - case 32: pThis->m_DataFormat = AE_FMT_FLOAT; break; - } - pThis->m_TotalTime = (int64_t)metadata->data.stream_info.total_samples * 1000 / metadata->data.stream_info.sample_rate; - pThis->m_MaxFrameSize = metadata->data.stream_info.max_blocksize*(pThis->m_BitsPerSample/8)*pThis->m_Channels; - } -} - -void FLACCodec::DecoderErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) -{ - CLog::Log(LOGERROR, "FLACCodec: Read error %i", status); -} diff --git a/xbmc/cores/paplayer/FLACcodec.h b/xbmc/cores/paplayer/FLACcodec.h deleted file mode 100644 index a89ca27606..0000000000 --- a/xbmc/cores/paplayer/FLACcodec.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - -/* - * 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 - * <http://www.gnu.org/licenses/>. - * - */ - -#include "CachingCodec.h" -#include "DllLibFlac.h" - -class FLACCodec : public CachingCodec -{ -public: - FLACCodec(); - virtual ~FLACCodec(); - - 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() {return m_ChannelInfo;} - -private: - // I/O callbacks for the flac decoder - static FLAC__StreamDecoderReadStatus DecoderReadCallback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data); - static FLAC__StreamDecoderSeekStatus DecoderSeekCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data); - static FLAC__StreamDecoderTellStatus DecoderTellCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data); - static FLAC__StreamDecoderLengthStatus DecoderLengthCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data); - static FLAC__bool DecoderEofCallback(const FLAC__StreamDecoder *decoder, void *client_data); - static FLAC__StreamDecoderWriteStatus DecoderWriteCallback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); - static void DecoderMetadataCallback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); - static void DecoderErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); - - void FreeDecoder(); - - DllLibFlac m_dll; - BYTE* m_pBuffer; // buffer to hold the decoded audio data - int m_BufferSize; // size of buffer is filled with decoded audio data - int m_MaxFrameSize; // size of a single decoded frame - FLAC__StreamDecoder* m_pFlacDecoder; - CAEChannelInfo m_ChannelInfo; -}; diff --git a/xbmc/cores/paplayer/Makefile.in b/xbmc/cores/paplayer/Makefile.in index fa40ee844d..2bd5868bb6 100644 --- a/xbmc/cores/paplayer/Makefile.in +++ b/xbmc/cores/paplayer/Makefile.in @@ -7,11 +7,9 @@ CFLAGS += -DHAS_ALSA CXXFLAGS += -DHAS_ALSA endif -SRCS = ADPCMCodec.cpp -SRCS += AudioDecoder.cpp +SRCS = AudioDecoder.cpp SRCS += CodecFactory.cpp SRCS += DVDPlayerCodec.cpp -SRCS += FLACcodec.cpp SRCS += ModplugCodec.cpp SRCS += MP3codec.cpp SRCS += NSFCodec.cpp @@ -22,7 +20,6 @@ SRCS += PCMCodec.cpp SRCS += SIDCodec.cpp SRCS += TimidityCodec.cpp SRCS += VGMCodec.cpp -SRCS += WAVcodec.cpp SRCS += YMCodec.cpp ifeq (@USE_ASAP_CODEC@,1) diff --git a/xbmc/cores/paplayer/PAPlayer.cpp b/xbmc/cores/paplayer/PAPlayer.cpp index 1c3388041f..591582d790 100644 --- a/xbmc/cores/paplayer/PAPlayer.cpp +++ b/xbmc/cores/paplayer/PAPlayer.cpp @@ -160,13 +160,16 @@ void PAPlayer::SoftStop(bool wait/* = false */, bool close/* = true */) /* if we are going to wait for them to finish fading */ if(wait) { + // fail safe timer, do not wait longer than 1000ms + XbmcThreads::EndTime timer(1000); + /* wait for them to fade out */ lock.Leave(); Sleep(FAST_XFADE_TIME); lock.Enter(); /* be sure they have faded out */ - while(wait && !CAEFactory::IsSuspended()) + while(wait && !CAEFactory::IsSuspended() && !timer.IsTimePast()) { wait = false; for(StreamList::iterator itt = m_streams.begin(); itt != m_streams.end(); ++itt) |