added: htsp support to the xbox branch (now enabled)
[xbmc:xbmc-antiquated.git] / xbmc / cores / dvdplayer / DVDDemuxers / DVDFactoryDemuxer.cpp
1 /*
2  *      Copyright (C) 2005-2008 Team XBMC
3  *      http://www.xbmc.org
4  *
5  *  This Program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2, or (at your option)
8  *  any later version.
9  *
10  *  This Program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with XBMC; see the file COPYING.  If not, write to
17  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18  *  http://www.gnu.org/copyleft/gpl.html
19  *
20  */
21  
22 #include "stdafx.h"
23 #include "DVDFactoryDemuxer.h"
24
25 #include "DVDInputStreams/DVDInputStream.h"
26 #include "DVDInputStreams/DVDInputStreamHttp.h"
27
28 #include "DVDDemuxFFmpeg.h"
29 #include "DVDDemuxShoutcast.h"
30 #include "DVDDemuxHTSP.h"
31
32 using namespace std;
33
34 CDVDDemux* CDVDFactoryDemuxer::CreateDemuxer(CDVDInputStream* pInputStream)
35 {
36   if (pInputStream->IsStreamType(DVDSTREAM_TYPE_HTTP))
37   {
38     CDVDInputStreamHttp* pHttpStream = (CDVDInputStreamHttp*)pInputStream;
39     CHttpHeader *header = pHttpStream->GetHttpHeader();
40
41     /* check so we got the meta information as requested in our http header */
42     if( header->GetValue("icy-metaint").length() > 0 )
43     {
44       auto_ptr<CDVDDemuxShoutcast> demuxer(new CDVDDemuxShoutcast());
45       if(demuxer->Open(pInputStream))
46         return demuxer.release();
47       else
48         return NULL;
49     }
50   }
51
52   if (pInputStream->IsStreamType(DVDSTREAM_TYPE_HTSP))
53   {
54     auto_ptr<CDVDDemuxHTSP> demuxer(new CDVDDemuxHTSP());
55     if(demuxer->Open(pInputStream))
56       return demuxer.release();
57     else
58       return NULL;
59   }
60
61   auto_ptr<CDVDDemuxFFmpeg> demuxer(new CDVDDemuxFFmpeg());
62   if(demuxer->Open(pInputStream))
63     return demuxer.release();
64   else
65     return NULL;
66 }
67