SageTV Community  

Go Back   SageTV Community > SageTV Development and Customizations > SageTV Customizations

Notices

SageTV Customizations This forums is for discussing and sharing user-created modifications for the SageTV application created by using the SageTV Studio or through the use of external plugins. Use this forum to discuss customizations for SageTV version 6 and earlier, or for the SageTV3 UI.

Reply
 
Thread Tools Search this Thread Display Modes
  #41  
Old 03-28-2010, 01:44 PM
jreichen's Avatar
jreichen jreichen is offline
Sage Icon
 
Join Date: Jul 2004
Posts: 1,192
What does the URL look like when you click Generate Playlist under Custom Transcode Mode?
__________________
Server: Intel Core i5 760 Quad, Gigabyte GA-H57M-USB3, 4GB RAM, Gigabyte GeForce 210, 120GB SSD (OS), 1TB SATA, HD HomeRun.
Extender: STP-HD300, Harmony 550 Remote,
Netgear MCA1001 Ethernet over Coax.
SageTV: SageTV Server 7.1.8 on Ubuntu Linux 11.04, SageTV Placeshifter for Mac 6.6.2, SageTV Client 7.0.15 for Windows, Linux Placeshifter 7.1.8 on Server and Client
, Java 1.6.
Plugins: Jetty, Nielm's Web Server, Mobile Web Interface.

Reply With Quote
  #42  
Old 03-28-2010, 05:16 PM
weedydeed weedydeed is offline
Sage User
 
Join Date: Apr 2008
Location: Milwaukee, WI
Posts: 7
Just wanted to chime in that I've been watching this thread with great interest. I'm pretty much in the same boat as jrjbertram right now, where I'd loved to get some sort of streaming solution working for my android phone.

I've been using both versions of the webserver for the longest time. Works great on my android phone (Nexus One). VLC streaming also works great to laptop. I have the basic configuration setup and working pretty stable.

@jrjbertram, @jreichen, what log's or files might be useful to help toubleshoot?

@Fonceur, nice work on the TASageTV android app. Just installed 0.47! I will contact you separately for registration details.
Reply With Quote
  #43  
Old 03-28-2010, 05:29 PM
jreichen's Avatar
jreichen jreichen is offline
Sage Icon
 
Join Date: Jul 2004
Posts: 1,192
I uploaded snapshot 50 with fixes for the issue. Let me know how it works for you. Could you also try the custom transcoding link and let me know if it works?
__________________
Server: Intel Core i5 760 Quad, Gigabyte GA-H57M-USB3, 4GB RAM, Gigabyte GeForce 210, 120GB SSD (OS), 1TB SATA, HD HomeRun.
Extender: STP-HD300, Harmony 550 Remote,
Netgear MCA1001 Ethernet over Coax.
SageTV: SageTV Server 7.1.8 on Ubuntu Linux 11.04, SageTV Placeshifter for Mac 6.6.2, SageTV Client 7.0.15 for Windows, Linux Placeshifter 7.1.8 on Server and Client
, Java 1.6.
Plugins: Jetty, Nielm's Web Server, Mobile Web Interface.

Reply With Quote
  #44  
Old 03-28-2010, 05:41 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
Quote:
Originally Posted by jreichen View Post
What does the URL look like when you click Generate Playlist under Custom Transcode Mode?
Sorry, just saw this. Will try snapshot 50 now.
Reply With Quote
  #45  
Old 03-28-2010, 06:15 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
strange

With snapshot 50 installed (stopped sage, installed war file over my existing war, restarted sage), I get the following when I click on the link on the phone:

Code:
GET /sage/public/PlaylistGenerator?Command=generate&pltype=wvx&fntype=url&MediaFileId=300316&TranscodeOpts=mode_eq_vlc_amp_vc_eq_h264_amp_vb_eq_96_amp_ac_eq_mp3_amp_ab_eq_32_amp_scale_eq_0.25_amp_mux_eq_ts_amp_deint_eq_1 HTTP/1.1
Cookie: grid_num_hours=6; grid_num_chans=999
Host: sageserver:8888
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17

HTTP/1.1 200 OK
Date: Sun, 28 Mar 2010 23:56:11 GMT
Content-Type: video/x-ms-wvx
Content-Disposition: attachment; filename=playlist.wvx
Content-Length: 321
Server: Jetty(6.1.x)

<asx Version = "3.0">
<title>Downloaded Playlist</title>
<entry>
<title>"Make" at Mon, Mar 8 10:00 AM on 32-2 KRINDT2</Title>
<ref href="http://sageserver:8888/sage/public/MediaFileTranscode?MediaFileId=300316&Segment=0&mode=vlc&vc=h264&vb=96&ac=mp3&ab=32&scale=0.25&mux=ts&deint=1"/>
</entry>
</Asx>
I get this when I [edit] play the downloaded playlist in the phone. Phone has the usual non-helpful messages about media player driver failure.
Code:

Yeah.. that's right, nothing. I should be getting anything on port 8888, so don't know what to make of that. Phone won't play the playlist. Doesn't seem to be making any requests back to the server. I'll have to look at that later.

Here's what I see when I click on the custom link:
Code:
GET /sage/public/PlaylistGenerator?Command=generate&fntype=url&MediaFileId=300316&TranscodeOpts=mode%3Dvlc%26vc%3Dmp4v%26vb%3D512%26ac%3Dmp3%26ab%3D96%26scale%3D0.5%26mux%3Dts%26deint%3D1&pltype=wvx HTTP/1.1
Host: sageserver:8888
Accept-Encoding: gzip
Referer: http://sageserver:8888/sage/DetailedInfo?MediaFileId=300316
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
Cookie: grid_num_hours=6; grid_num_chans=999
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7

HTTP/1.1 200 OK
Date: Mon, 29 Mar 2010 00:11:46 GMT
Content-Type: video/x-ms-wvx
Content-Disposition: attachment; filename=playlist.wvx
Content-Length: 321
Server: Jetty(6.1.x)

<asx Version = "3.0">
<title>Downloaded Playlist</title>
<entry>
<title>"Make" at Mon, Mar 8 10:00 AM on 32-2 KRINDT2</Title>
<ref href="http://sageserver:8888/sage/public/MediaFileTranscode?MediaFileId=300316&Segment=0&mode=vlc&vc=mp4v&vb=512&ac=mp3&ab=96&scale=0.5&mux=ts&deint=1"/>
</entry>
</Asx>
I probably won't be able to run any more tests tonight. Will definitely be poking at it this week, though.

-Josh.
Reply With Quote
  #46  
Old 03-28-2010, 06:25 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
Here are some representative server logs.

Code:
(phone ip addr) -  -  [29/Mar/2010:00:21:59 +0000] "GET /sage/public/PlaylistGenerator?Command=generate&pltype=wvx&fntype=url&MediaFileId=300316&TranscodeOpts=mode_eq_vlc_amp_vc_eq_mp4v_amp_vb_eq_256_amp_ac_eq_mp3_amp_ab_eq_96_amp_scale_eq_0.3_amp_mux_eq_ts_amp_deint_eq_1 HTTP/1.1" 200 321 "http://sageserver:8888/sage/DetailedInfo?MediaFileId=300316" "Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"
(phone ip addr) -  -  [29/Mar/2010:00:22:02 +0000] "GET /sage/public/PlaylistGenerator?Command=generate&pltype=wvx&fntype=url&MediaFileId=300316&TranscodeOpts=mode_eq_vlc_amp_vc_eq_mp4v_amp_vb_eq_256_amp_ac_eq_mp3_amp_ab_eq_96_amp_scale_eq_0.3_amp_mux_eq_ts_amp_deint_eq_1 HTTP/1.1" 200 321 "-" "Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"
Reply With Quote
  #47  
Old 03-29-2010, 07:46 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
Trying to verify that I'm using the correct encodings on the VLC command line. My handbrake command line is:

Code:
"C:\Program Files (x86)\Handbrake\HandBrakeCLI.exe"   -i "%INFILE%" -t 1 -c 1 -o "%OUTFILE%" -f mp4 -I  -O  -X 150 -l 80 -e x264 -b 100 -r 23.976 -a 1 -E faac -6 mono -R Auto -B 32 -D 0.0 -x level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subq=6:8x8dct=0:trellis=0:weightb=0:mixed-refs=1 -v 1
Going to attempt to convert that to an equivalent VLC command line.
Reply With Quote
  #48  
Old 03-29-2010, 08:53 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
I think I'm fighting a basic problem on the android in that it doesn't seem to be handling the playlist correctly. It's nearly impossible to tell from the logs, but I'm wondering at this point if android is trying to play the wvx file as a media file itself, rather than as a playlist which contains links to media files.

At this point, I'm hand coding wvx files on the phone itself to try to make it do anything useful, and I'm stumped.

Me: 2.. maybe 3.
Phone: 6.

Sigh..
- J.
Reply With Quote
  #49  
Old 03-29-2010, 09:19 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
other random notes

Good list of android supported video/audio formats:

http://developer.android.com/guide/a...a-formats.html

No info on playlist / metadata file formats, though. Probably specific to each player...

Been seeing things one some of the forums that are suggesting that maybe android can only stream video from RTSP..? Doesn't support streaming over HTTP. Not sure I believe that.. and may be old SDK/out of date info.

Maybe streaming through DSS is good enough.

- J.
Reply With Quote
  #50  
Old 03-29-2010, 09:31 PM
Fonceur's Avatar
Fonceur Fonceur is offline
Sage Icon
 
Join Date: Jan 2008
Location: DDO, QC
Posts: 1,915
Quote:
Originally Posted by jrjbertram View Post
Been seeing things one some of the forums that are suggesting that maybe android can only stream video from RTSP..? Doesn't support streaming over HTTP.
Try something like (putting your IP and port):

Code:
"C:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy --no-sub-autodetect-file "Troisfugitifs-512272-0.mpg" --sout "#transcode{vcodec=h264,venc=x264{no-cabac,level=12,vbv-maxrate=384,vbv-bufsize=1000,keyint=75,ref=3,bframes=0},width=320,height=180,acodec=mp4a,ab=64,vb=384}:rtp{dst=192.168.0.102,port=8000,sdp=rtsp://192.168.0.102:8000/stream.sdp,mp4a-latm}"
__________________
SageTCPServer (2.3.5): Open source TCP interface to the SageTV API
MLSageTV (3.1.8)/Sage Media Server (1.13): SageTV plugin for MainLobby/CQC
TaSageTV (2.58)/TaSTVRemote (1.14): Monitor/control SageTV with an Android device
TbSageTV (1.02)/STVRemote (1.11): Monitor/control SageTV with a PlayBook 2
TiSageTV (1.64)/TiSTVRemote (1.09): Monitor/control SageTV with an iPhone/iPod/iPad
Reply With Quote
  #51  
Old 03-29-2010, 09:51 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
Quote:
Originally Posted by Fonceur View Post
Try something like (putting your IP and port):

Code:
"C:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy --no-sub-autodetect-file "Troisfugitifs-512272-0.mpg" --sout "#transcode{vcodec=h264,venc=x264{no-cabac,level=12,vbv-maxrate=384,vbv-bufsize=1000,keyint=75,ref=3,bframes=0},width=320,height=180,acodec=mp4a,ab=64,vb=384}:rtp{dst=192.168.0.102,port=8000,sdp=rtsp://192.168.0.102:8000/stream.sdp,mp4a-latm}"
That's kind of like cheating though, because its rtsp not http. Since the webserver currently spawns vlc and serves as the intermediary between vlc and the client, no direct connection to vlc currently happens.

Maybe if the webserver could spawn off vlc in this way it might work...? Your firewall would have to let the ports through, though.

I guess it'd be nice to get some positive confirmation that android doesn't suppport http downloads, though.

The other thing I was reading is that (I think) wvx files arwe only supposed to support wmv files.. maybe that's a piece of the puzzle but seems sort of unlikely.

Another option might be to stream a video metadata format that android does support, if that's the issue. Have found doughnut on that so far though.

In any case, I think my issues at this point are confined to the phone. If I can ever get the media player to go to an http url, might be able to get farther.

In other news, this thread is starting to be at the top of many of my google searches related to android streaming. So we are apparently doing well...

-J
Reply With Quote
  #52  
Old 03-29-2010, 11:53 PM
Fonceur's Avatar
Fonceur Fonceur is offline
Sage Icon
 
Join Date: Jan 2008
Location: DDO, QC
Posts: 1,915
Quote:
Originally Posted by jrjbertram View Post
That's kind of like cheating though, because its rtsp not http.
That was the whole point, to see if rtsp worked better... You can always get to change the parameters to launch vlc from the webserver after, it seems the important thing for now is to find a method that will show a video on the Android...

Quote:
Since the webserver currently spawns vlc and serves as the intermediary between vlc and the client, no direct connection to vlc currently happens.
Not following, where do you think that stream is originating from, if not vlc?
__________________
SageTCPServer (2.3.5): Open source TCP interface to the SageTV API
MLSageTV (3.1.8)/Sage Media Server (1.13): SageTV plugin for MainLobby/CQC
TaSageTV (2.58)/TaSTVRemote (1.14): Monitor/control SageTV with an Android device
TbSageTV (1.02)/STVRemote (1.11): Monitor/control SageTV with a PlayBook 2
TiSageTV (1.64)/TiSTVRemote (1.09): Monitor/control SageTV with an iPhone/iPod/iPad
Reply With Quote
  #53  
Old 03-30-2010, 07:56 AM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
Sorry.. yes, your RTSP VLC command is the only one I've seen on the "internets" that seems to work with Android from the random googling I've been doing.

Quote:
Not following, where do you think that stream is originating from, if not vlc?
I was just saying that the socket connections look like:
VLC -- localhost connection --> webserver -- external connection --> client

Was just saying that RTSP wouldn't probably work with the way the webserver currently launches VLC. You can ignore this, as I was misunderstanding what you were trying to do. (It was late, I was tired. )

I think sometime this week I'm going to try to hack in some RTSP links into the webserver, if I can get it to work. I'll have it create an RTSP link to my DSS links for my own use, and then if I can get your VLC command line working, I'll try to get the webserver to fork off an instance of VLC on that port, I guess..?
Reply With Quote
  #54  
Old 03-30-2010, 11:01 AM
Fonceur's Avatar
Fonceur Fonceur is offline
Sage Icon
 
Join Date: Jan 2008
Location: DDO, QC
Posts: 1,915
Quote:
Originally Posted by jrjbertram View Post
I was just saying that the socket connections look like:
VLC -- localhost connection --> webserver -- external connection --> client
Well, technically we are talking:

Client --> web server (client tells the web server what to stream)
Web server --> VLC (web server tellls VLC what to stream)
VLC <--> Client (VLC streams to the Android client)

So all that chain can be tested as individual links, and the import one is VLC <--> Android Client... Sure you can say that the web server sits in between, just as SageTCPServer or the CLI (command line interpreter, i.e. DOS prompt). But as long as you solve VLC <--> Client, you can retrofit that solution in the other links after...

Which is why I meant that recompiling the web server might not be the priority here...
__________________
SageTCPServer (2.3.5): Open source TCP interface to the SageTV API
MLSageTV (3.1.8)/Sage Media Server (1.13): SageTV plugin for MainLobby/CQC
TaSageTV (2.58)/TaSTVRemote (1.14): Monitor/control SageTV with an Android device
TbSageTV (1.02)/STVRemote (1.11): Monitor/control SageTV with a PlayBook 2
TiSageTV (1.64)/TiSTVRemote (1.09): Monitor/control SageTV with an iPhone/iPod/iPad
Reply With Quote
  #55  
Old 03-30-2010, 11:44 AM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
Quote:
Originally Posted by Fonceur View Post
Well, technically we are talking:
Which is why I meant that recompiling the web server might not be the priority here...
I see your point.
Reply With Quote
  #56  
Old 03-30-2010, 12:12 PM
weedydeed weedydeed is offline
Sage User
 
Join Date: Apr 2008
Location: Milwaukee, WI
Posts: 7
Quote:
Originally Posted by jrjbertram View Post
I think I'm fighting a basic problem on the android in that it doesn't seem to be handling the playlist correctly. It's nearly impossible to tell from the logs, but I'm wondering at this point if android is trying to play the wvx file as a media file itself, rather than as a playlist which contains links to media files.
I'm pretty sure you hit the nail on the head here. When I hit the playlist link, I'm getting a playlist file download and saved to my phone. But obsoluly it's not opening as a regular playlist would. My phone is just viewing the file in the html viewer.

Code:
#EXTM3U
#EXTINF:1920,"It's Always Sunny in Philadelphia" at Thu, Oct 15 9:00 PM on 35 FX
http://{IPADDRESS}/sage/public/MediaFileTranscode?MediaFileId=1341124&Segment=0&mode=vlc&vc=h264&vb=96&ac=mp3&ab=32&scale=0.25&mux=ts&deint=1
I haven't found any media players that can open a play list with support for web url media file. You two are way above my programming skills but I'm thinking that these links might be relevant.

http://developer.android.com/guide/t...dia/index.html

http://developer.android.com/resourc...emo_Video.html
Reply With Quote
  #57  
Old 03-30-2010, 01:56 PM
Fonceur's Avatar
Fonceur Fonceur is offline
Sage Icon
 
Join Date: Jan 2008
Location: DDO, QC
Posts: 1,915
Quote:
Originally Posted by weedydeed View Post
You two are way above my programming skills but I'm thinking that these links might be relevant.
From the first link, I am pretty much using:

Code:
MediaPlayer mp = new MediaPlayer();
    mp.setDataSource(PATH_TO_FILE);
    mp.prepare();
    mp.start();
in taSageTV...
__________________
SageTCPServer (2.3.5): Open source TCP interface to the SageTV API
MLSageTV (3.1.8)/Sage Media Server (1.13): SageTV plugin for MainLobby/CQC
TaSageTV (2.58)/TaSTVRemote (1.14): Monitor/control SageTV with an Android device
TbSageTV (1.02)/STVRemote (1.11): Monitor/control SageTV with a PlayBook 2
TiSageTV (1.64)/TiSTVRemote (1.09): Monitor/control SageTV with an iPhone/iPod/iPad
Reply With Quote
  #58  
Old 03-30-2010, 01:57 PM
jrjbertram jrjbertram is offline
Sage User
 
Join Date: Feb 2009
Posts: 39
@weedydeed,

Quote:
When I hit the playlist link, I'm getting a playlist file download and saved to my phone. But obsoluly it's not opening as a regular playlist would. My phone is just viewing the file in the html viewer.
See early in the thread about configuring mime types in jetty. Your issue there is that the file is coming down as the wrong mime-type since jetty doesn't know what to make of an m3u file, I believe..? So you're at step 1 of 3 or so.

Quote:
I haven't found any media players that can open a play list with support for web url media file. You two are way above my programming skills but I'm thinking that these links might be relevant.
Yeah.. was thinking of making one, or maybe Fonceur can add that to his app. That would apparently make his media player app better than the others on the market.

Last edited by jrjbertram; 03-30-2010 at 02:34 PM.
Reply With Quote
  #59  
Old 03-30-2010, 02:16 PM
Fonceur's Avatar
Fonceur Fonceur is offline
Sage Icon
 
Join Date: Jan 2008
Location: DDO, QC
Posts: 1,915
Quote:
Originally Posted by jrjbertram View Post
Yeah.. was thinking of making one, or maybe Fonceur can add that to his app. That would apparently make his media player app better than the others on the market.
It depends what the goal is... For a generic application able to stream anything from anywhere, sure... But if you are looking at streaming a transcoded SageTV video at a known URL (either http://YourIP:YourPort or rtsp://YourIP:YourPort/stream.sdp), I fail to see the need for a playlist in the first place... The application requesting the stream knows about the content, and where it will be delivered, it doesn't have to be told...
__________________
SageTCPServer (2.3.5): Open source TCP interface to the SageTV API
MLSageTV (3.1.8)/Sage Media Server (1.13): SageTV plugin for MainLobby/CQC
TaSageTV (2.58)/TaSTVRemote (1.14): Monitor/control SageTV with an Android device
TbSageTV (1.02)/STVRemote (1.11): Monitor/control SageTV with a PlayBook 2
TiSageTV (1.64)/TiSTVRemote (1.09): Monitor/control SageTV with an iPhone/iPod/iPad
Reply With Quote
  #60  
Old 03-30-2010, 03:53 PM
jreichen's Avatar
jreichen jreichen is offline
Sage Icon
 
Join Date: Jul 2004
Posts: 1,192
Quote:
Originally Posted by Fonceur View Post
It depends what the goal is... For a generic application able to stream anything from anywhere, sure... But if you are looking at streaming a transcoded SageTV video at a known URL (either http://YourIP:YourPort or rtsp://YourIP:YourPort/stream.sdp), I fail to see the need for a playlist in the first place... The application requesting the stream knows about the content, and where it will be delivered, it doesn't have to be told...
You may want to create a playlist for a recording that's in multiple segments. I'm not sure exactly how to handle that situation, but a playlist might be one option.
__________________
Server: Intel Core i5 760 Quad, Gigabyte GA-H57M-USB3, 4GB RAM, Gigabyte GeForce 210, 120GB SSD (OS), 1TB SATA, HD HomeRun.
Extender: STP-HD300, Harmony 550 Remote,
Netgear MCA1001 Ethernet over Coax.
SageTV: SageTV Server 7.1.8 on Ubuntu Linux 11.04, SageTV Placeshifter for Mac 6.6.2, SageTV Client 7.0.15 for Windows, Linux Placeshifter 7.1.8 on Server and Client
, Java 1.6.
Plugins: Jetty, Nielm's Web Server, Mobile Web Interface.

Reply With Quote
Reply

Tags
android, error, jetty, streaming, transcode, vlc, webserver


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Webserver Java Error bialio SageTV Customizations 5 12-07-2007 06:56 PM
Nielm Webserver streaming issue kck SageTV Customizations 1 07-09-2007 11:30 AM
VLC Player Can Play iso DVD images -- How to Make SageTV Use VLC? bbkim SageTV Customizations 3 06-07-2007 05:24 PM
No sound on DVB-T recordings using Webserver 2.6 and VLC Grunter SageTV Customizations 0 03-24-2006 11:56 PM


All times are GMT -6. The time now is 02:07 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.
Copyright 2003-2005 SageTV, LLC. All rights reserved.