Jump to content


Photo

serviceapp - gstplayer and exteplayer3

gstreamer ffmpeg

  • Please log in to reply
985 replies to this topic

Re: serviceapp - gstplayer and exteplayer3 #161 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 23 September 2016 - 17:48

Builds fine in pli4 here as well

Re: serviceapp - gstplayer and exteplayer3 #162 fairbird

  • Senior Member
  • 413 posts

+20
Neutral

Posted 23 September 2016 - 19:01

I'm with openpli4 and on ubuntu 12.04 

before I have build serviceapp_0.3 without any error ..

Then I have tried ubuntu 16.04 but I got too much error and after that return back you ubuntu 12.04..

I've build complete image without any error just now i have this error with serviceapp_0.3 and serviceapp_0.5..


DM500s
DM800

DM800se

DM920UHD


Re: serviceapp - gstplayer and exteplayer3 #163 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 23 September 2016 - 19:04

@fairbird

Did you try what @athoik suggested? (pkgconfig to DEPENDS)



Re: serviceapp - gstplayer and exteplayer3 #164 fairbird

  • Senior Member
  • 413 posts

+20
Neutral

Posted 23 September 2016 - 19:31

No my friend ...

Not yet i'm going to try later...

 

Thank you


DM500s
DM800

DM800se

DM920UHD


Re: serviceapp - gstplayer and exteplayer3 #165 fairbird

  • Senior Member
  • 413 posts

+20
Neutral

Posted 24 September 2016 - 02:56

Yes, It is ok now ..

after add (pkgconfig to DEPENDS) I've just got small error 

| rm: cannot remove `/home/raed/openpli/openpli-oe-core/build/tmp/work/mips32el-nf-oe-linux/enigma2-plugin-extensions-serviceapp/0.5-r0/image/usr/lib/enigma2/python/Plugins/Extensions/ServiceApp/*.pyc': No such file or directory

fixed by replace 

rm ${D}/usr/lib/enigma2/python/Plugins/Extensions/ServiceApp/*.py

to

rm ${D}${libdir}/enigma2/python/Plugins/Extensions/ServiceApp/*.pyc

Thank you


Edited by fairbird, 24 September 2016 - 02:57.

DM500s
DM800

DM800se

DM920UHD


Re: serviceapp - gstplayer and exteplayer3 #166 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 25 September 2016 - 12:51

Dear mx3L,

I've tested your latest release.
External subtitles are working but not for all videos.

For example I have this movie:
The.Nice.Guys.mkv and The.Nice.Guys.srt
+ EBML kop
|+ EBML versie: 1
|+ EBML lees versie: 1
|+ EBML maximum ID lengte: 4
|+ EBML maximum lengte grootte: 8
|+ Doc type: matroska
|+ Doc type versie: 4
|+ Doc type lees versie: 2
+ Segment, grootte 3503799548
|+ Zoek kop (sub ingangen worden overgeslagen)
|+ EbmlVoid (grootte: 4027)
|+ Segment informatie
| + Tijd code schaal: 1000000
| + Applicatie samenvoegen: libebml v1.3.3 + libmatroska v1.4.4
| + Applicatie aan het schrijven: mkvmerge v8.9.0 ('Father Daughter') 64bit
| + Duur: 6957.120s (01:55:57.120)
| + Datum: Sun Aug 07 17:51:09 2016 UTC
| + Segment UID: 0xbf 0x78 0xa0 0x35 0x69 0xa1 0xce 0x5f 0xb3 0x80 0x2d 0xb0 0xd5 0x3b 0x19 0x1d
|+ Segment sporen
| + Een spoor
|  + Spoor nummer: 1 (spoor ID voor mkvmerge & mkvextract: 0)
|  + Spoor UID: 5554014348759275939
|  + Spoor type: video
|  + Aaneenkoppel markering: 0
|  + Min. tijdelijk geheugen: 1
|  + Codec ID: V_MPEG4/ISO/AVC
|  + CodecPrivé, lengte 46 (h.264 profiel: High @L4.1)
|  + Standaard duur: 41.708ms (23.976 beelden/velden per seconde voor een video spoor)
|  + Taal: und
|  + Video spoor
|   + Pixel breedte: 1280
|   + Pixel hoogte: 536
|   + Scherm breedte: 1280
|   + Toon hoogte: 536
| + Een spoor
|  + Spoor nummer: 2 (spoor ID voor mkvmerge & mkvextract: 1)
|  + Spoor UID: 13387877230498569377
|  + Spoor type: audio
|  + Codec ID: A_AC3
|  + Standaard duur: 32.000ms (31.250 beelden/velden per seconde voor een video spoor)
|  + Taal: und
|  + Audio track
|   + Voorbeeld frequentie: 48000
|   + Sporen: 6
|+ EbmlVoid (grootte: 1092)
|+ Cluster
file -ib The.Nice.Guys.srt
text/plain; charset=utf-8
It shows both an external and an embedded track (which is selected by default).
However as you can see there is no embedded subtitle track.
See attached screenshot.

I cannot enable the external srt file, when I select it and get back the X is still at the embedded track.

Attached Files


Edited by MastaG, 25 September 2016 - 12:55.


Re: serviceapp - gstplayer and exteplayer3 #167 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 26 September 2016 - 08:20

Hello @MastaG

 

Indeed it looks weird, information about embedded subtitles are directly from player which you use for playback, and still embedded subtitles should be listed first. I will look at it maybe I missed something. Can you please create enigma2 debug log level=4?



Re: serviceapp - gstplayer and exteplayer3 #168 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 26 September 2016 - 09:54

Hi mx3L,

 

Yes of course:

 

Movie: The.Nice.Guys.mkv / The.Nice.Guys.srt (UTF-8)

(mkvinfo output in english this time)

+ EBML head
|+ EBML version: 1
|+ EBML read version: 1
|+ EBML maximum ID length: 4
|+ EBML maximum size length: 8
|+ Doc type: matroska
|+ Doc type version: 4
|+ Doc type read version: 2
+ Segment, size 3503799548
|+ Seek head (subentries will be skipped)
|+ EbmlVoid (size: 4027)
|+ Segment information
| + Timecode scale: 1000000
| + Muxing application: libebml v1.3.3 + libmatroska v1.4.4
| + Writing application: mkvmerge v8.9.0 ('Father Daughter') 64bit
| + Duration: 6957.120s (01:55:57.120)
| + Date: Sun Aug 07 17:51:09 2016 UTC
| + Segment UID: 0xbf 0x78 0xa0 0x35 0x69 0xa1 0xce 0x5f 0xb3 0x80 0x2d 0xb0 0xd5 0x3b 0x19 0x1d
|+ Segment tracks
| + A track
|  + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
|  + Track UID: 5554014348759275939
|  + Track type: video
|  + Lacing flag: 0
|  + MinCache: 1
|  + Codec ID: V_MPEG4/ISO/AVC
|  + CodecPrivate, length 46 (h.264 profile: High @L4.1)
|  + Default duration: 41.708ms (23.976 frames/fields per second for a video track)
|  + Language: und
|  + Video track
|   + Pixel width: 1280
|   + Pixel height: 536
|   + Display width: 1280
|   + Display height: 536
| + A track
|  + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
|  + Track UID: 13387877230498569377
|  + Track type: audio
|  + Codec ID: A_AC3
|  + Default duration: 32.000ms (31.250 frames/fields per second for a video track)
|  + Language: und
|  + Audio track
|   + Sampling frequency: 48000
|   + Channels: 6
|+ EbmlVoid (size: 1092)
|+ Cluster

As you can see there is no embedded subtitle track in this mkv container, but it does show it in the screenshot (see my previous post).

Debug output:

action ->  MsgBoxActions ok
playing 4097:0:0:0:0:0:0:0:0:0:/run/movies/The.Nice.Guys/The.Nice.Guys.mkv:The Nice Guys
eServiceApp
PlayerApp
BasePlayer
ExtEplayer3
PlayerBackend
eServiceApp::setTarget 0
eServiceApp::fillSubservices - failed to retrieve subservices, not supported url
PlayerBackend::gotMessage - tStart
PlayerApp::processStart: exteplayer3 "/run/movies/The.Nice.Guys/The.Nice.Guys.mkv"
ExtEPlayer3::handleJsonOutput - unhandled key "EPLAYER3_EXTENDED"
[eConsoleAppContainer] Starting /usr/bin/grab
ExtEPlayer3::handleJsonOutput - unhandled key "PLAYBACK_OPEN"
ExtEPlayer3::handleJsonOutput - unhandled key "OUTPUT_OPEN"
PlayerBackend::recvStart - status = 0
PlayerBackend::gotMessage - start
eServiceApp::gotExtPlayerMessage - start
PlayerBackend::recvVideoTrackCurrent - status = 0
2
PlayerBackend::recvAudioTrackCurrent - status = 0
PlayerBackend::recvSubtitleTrackCurrent - status = 0
6
3
1
eServiceApp::getNumberOfSubservices - 0
[eDVBDB] getBouquet failed.. no path given!
[eDVBDB] getBouquet failed.. no path given!
2
6
3
1
eServiceApp::isCurrentlySeekable
resolved to PLAY
eServiceApp::unpause
PlayerBackend::gotMessage - tUnpause
PlayerBackend::recvResume - status = 1
eServiceApp::isCurrentlySeekable
RemovePopup, id = ZapError
PlayerBackend::gotMessage - videoFramerateChanged
eServiceApp::gotExtPlayerMessage - videoFramerateChanged
PlayerBackend::gotMessage - videoSizeChanged
eServiceApp::gotExtPlayerMessage - videoSizeChanged
2
6
3
1
PlayerBackend::gotMessage - tGetLength
eServiceApp::signalEventUpdatedInfo
2
6
3
1
eServiceApp::getNumberOfTracks
PlayerBackend::gotMessage - tAudioList
WaitThread - not waiting
eServiceApp::getTrackInfo = 0
PlayerBackend::gotMessage - tSubtitleList
WaitThread - not waiting
eServiceApp::getSubtitleList - found 0 of embedded tracks
eServiceApp::getSubtitleList - found external track
eServiceApp::enableSubtitles - track = 0 (external)
SubtitleManager::load(/run/movies/The.Nice.Guys/The.Nice.Guys.srt,video_fps=-1,subtitle_fps=-1)
convertToUTF8 - detected input encoding: UTF-8
SubripParser::probe, score = 0
SubtitleManager::load(/run/movies/The.Nice.Guys/The.Nice.Guys.srt,video_fps=-1,subtitle_fps=-1) - cannot parse file
eServiceApp::enableSubtitles - cannot load external subtitles
authHeaderPartOne {}

It cannot load the subtiles?

 

 

Now a working video with both an embedded and an external subtitle track.

Movie: 12.Years.a.Slave.mkv / 12.Years.a.Slave.srt (iso-8859-1)

+ EBML head
|+ EBML version: 1
|+ EBML read version: 1
|+ EBML maximum ID length: 4
|+ EBML maximum size length: 8
|+ Doc type: matroska
|+ Doc type version: 4
|+ Doc type read version: 2
+ Segment, size 2513554954
|+ Seek head (subentries will be skipped)
|+ EbmlVoid (size: 4012)
|+ Segment information
| + Timecode scale: 1000000
| + Muxing application: libebml v1.3.0 + libmatroska v1.4.1
| + Writing application: mkvmerge v7.4.0 ('Circles') 64bit built on Dec 12 2014 15:04:11
| + Duration: 8050.106s (02:14:10.106)
| + Date: Wed Jun 17 14:51:37 2015 UTC
| + Title: 12.years.a.Slave.2013.720p.BluRay.x264-x0r
| + Segment UID: 0x7c 0xdf 0x80 0xb7 0x5f 0xfe 0x39 0x39 0x91 0x16 0xfe 0xb5 0xbe 0x61 0x1c 0xbe
|+ Segment tracks
| + A track
|  + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
|  + Track UID: 1
|  + Track type: video
|  + Lacing flag: 0
|  + MinCache: 1
|  + Codec ID: V_MPEG4/ISO/AVC
|  + CodecPrivate, length 48 (h.264 profile: High @L4.0)
|  + Default duration: 41.708ms (23.976 frames/fields per second for a video track)
|  + Video track
|   + Pixel width: 1280
|   + Pixel height: 722
|   + Display width: 1280
|   + Display height: 722
| + A track
|  + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
|  + Track UID: 2
|  + Track type: audio
|  + Codec ID: A_AC3
|  + Default duration: 32.000ms (31.250 frames/fields per second for a video track)
|  + Name: Surround
|  + Audio track
|   + Sampling frequency: 48000
|   + Channels: 6
| + A track
|  + Track number: 3 (track ID for mkvmerge & mkvextract: 2)
|  + Track UID: 10735815407975435215
|  + Track type: subtitles
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Language: und
|+ EbmlVoid (size: 1140)
|+ Chapters
.....

Let's play it:

action ->  MsgBoxActions ok
playing 4097:0:0:0:0:0:0:0:0:0:/run/movies/12.Years.a.Slave/12.Years.a.Slave.mkv:12 Years a Slave
eServiceApp
PlayerApp
BasePlayer
ExtEplayer3
PlayerBackend
eServiceApp::setTarget 0
eServiceApp::fillSubservices - failed to retrieve subservices, not supported url
PlayerBackend::gotMessage - tStart
PlayerApp::processStart: exteplayer3 "/run/movies/12.Years.a.Slave/12.Years.a.Slave.mkv"
ExtEPlayer3::handleJsonOutput - unhandled key "EPLAYER3_EXTENDED"
[eConsoleAppContainer] Starting /usr/bin/grab
ExtEPlayer3::handleJsonOutput - unhandled key "PLAYBACK_OPEN"
ExtEPlayer3::handleJsonOutput - unhandled key "OUTPUT_OPEN"
PlayerBackend::recvStart - status = 0
PlayerBackend::recvVideoTrackCurrent - status = 0
PlayerBackend::gotMessage - start
eServiceApp::gotExtPlayerMessage - start
2
6
3
PlayerBackend::recvAudioTrackCurrent - status = 0
PlayerBackend::recvSubtitleTrackCurrent - status = 0
1
eServiceApp::getNumberOfSubservices - 0
2
6
3
1
[eDVBDB] getBouquet failed.. no path given!
[eDVBDB] getBouquet failed.. no path given!
eServiceApp::isCurrentlySeekable
resolved to PLAY
eServiceApp::unpause
PlayerBackend::gotMessage - tUnpause
PlayerBackend::recvResume - status = 1
eServiceApp::isCurrentlySeekable
RemovePopup, id = ZapError
PlayerBackend::gotMessage - videoFramerateChanged
eServiceApp::gotExtPlayerMessage - videoFramerateChanged
PlayerBackend::gotMessage - videoSizeChanged
eServiceApp::gotExtPlayerMessage - videoSizeChanged
2
6
3
1
PlayerBackend::gotMessage - tGetLength
eServiceApp::signalEventUpdatedInfo
2
6
3
1
eServiceApp::getNumberOfTracks
PlayerBackend::gotMessage - tAudioList
WaitThread - not waiting
eServiceApp::getTrackInfo = 0
PlayerBackend::gotMessage - tSubtitleList
WaitThread - not waiting
eServiceApp::getSubtitleList - found 1 of embedded tracks
eServiceApp::getSubtitleList - found external track
eServiceApp::getCachedSubtitle - found preferred embedded subtitle
eServiceApp::enableSubtitles - track = 0 (embedded)
PlayerBackend::gotMessage - tSubtitleSelect
ExtEPlayer3::handleJsonOutput - unhandled key "s_f"
ExtEPlayer3::handleJsonOutput - unhandled key "s_f"
PlayerBackend::recvSubtitleTrackSelected - status = 0, trackId = 2

It plays fine, and the embedded subtitle track is enabled by default (and working OK):

 

Now I switch to the external track:

action ->  AudioSelectionActions yellow
PlayerBackend::gotMessage - tSubtitleList
WaitThread - not waiting
eServiceApp::getSubtitleList - found 1 of embedded tracks
eServiceApp::getSubtitleList - found external track
2
6
3
1
[eConsoleAppContainer] Starting /usr/bin/grab
2
6
3
1
authHeaderPartOne {}
action ->  DirectionActions down
action ->  DirectionActions downUp
unknown action DirectionActions/downUp! typo in keymap?
action ->  SetupActions ok
eServiceApp::enableSubtitles - track = 1 (external)
SubtitleManager::load(/run/movies/12.Years.a.Slave/12.Years.a.Slave.srt,video_fps=-1,subtitle_fps=-1)
convertToUTF8 - detected input encoding: WINDOWS-1252
SubripParser::probe, score = 100
SubripParser::parse, success
SubtitleManager::load(/run/movies/12.Years.a.Slave/12.Years.a.Slave.srt,video_fps=-1,subtitle_fps=-1) succesfully loaded
PlayerBackend::gotMessage - tSubtitleList
WaitThread - waiting for 500ms
WaitThread - in time

eServiceApp::getSubtitleList - found 1 of embedded tracks
eServiceApp::getSubtitleList - found external track
[infobar::audioSelected] 0
[eConsoleAppContainer] Starting /usr/bin/grab
2
6
3
1
authHeaderPartOne {}
2
6
3
1
2
6
3
1
authHeaderPartOne {}
2
6
3
1
2
6
3
1
authHeaderPartOne {}
2
6
3
1
authHeaderPartOne {}
2
6
3
1
2
6
3
1
authHeaderPartOne {}
2
6
3
1
PlayerBackend::gotMessage - subtitleAvailable
eServiceApp::gotExtPlayerMessage - subtitleAvailable

Also working fine :)

 

 

So there's two small issues:

1. ServiceApp shouldn't list an embedded track when the mkv container does not have one

2. When subs are enabled by default, ServiceApp should select the external subtitle track by default (even when there is an embedded one as well), this is the default PLi behaviour as well.

 

Maybe there's a problem with UTF-8 encoded files?

I've attached The.Nice.Guys.srt

I'll see if I have more movies with external subs encoded in UTF-8 and report back.

 

Attached Files



Re: serviceapp - gstplayer and exteplayer3 #169 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 26 September 2016 - 20:06

Thanks for detailed feedback.

 

1)

It does not, if you look at the log, you can see that embedded subtitles is not in there only external one

eServiceApp::getSubtitleList - found 0 of embedded tracks
eServiceApp::getSubtitleList - found external track
eServiceApp::enableSubtitles - track = 0 (external)

I tried to reproduce it, but couldn't.

 

There is only one path of execution which I'm aware of which could lead to this, though don't know how to get to it:

In InfobarSubtitleSupport we are storing selected_subtitle for currently shown subtitle track, when we are filling subtitle list in AudioSelection, we check if there is some selected_subtitle and if there is one and it's not in currently retrieved list it's appended to the list as selected. So it looks like this is exactly what you're experiencing, you see selected subtitle from previous service.

 

Problem is that this should never happen, since when you start/stop new service, then in InfoBarSubtitleSupport we set selected_subtitle to None if there is one, so when you try to list subtitles nothing should be appended to list, since there is no selected_subtitle.

 

2) done

 

3) no problem with utf-8, just subrip parser wasn't expecting BOM bytes at the beginning, so I removed them., done

 

So you can test 2,3 just update SRCREV in bitbake recipe to latest commit


Edited by mx3L, 26 September 2016 - 20:07.


Re: serviceapp - gstplayer and exteplayer3 #170 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 26 September 2016 - 20:16

Wow thank you for you're detailed feedback, that was fast.
Will test it tonight and report back :-)

Re: serviceapp - gstplayer and exteplayer3 #171 jhonc

  • Member
  • 23 posts

0
Neutral

Posted 26 September 2016 - 21:01

Hello,

 

MastaG is there any chance to make in yours latest image build a  feed for this update version of serviceapp 0.5 or an ipk ?

many thanks !



Re: serviceapp - gstplayer and exteplayer3 #172 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 27 September 2016 - 12:41

Hi mx3L,

 

All good now!

External subs are now enabled by default.

Also the fix for skipping BOM bytes is doing fine as well.

 

Btw I couldn't reproduce the issue where there was an embedded subtitle track when the movie didn't feature one.

 

So all good now :)

 

This is really really awesome.

Taapat did the same enhancements for external subtitles in his libeplayer3 / enigma2 sources for sh4.

 

You, Taapat and samsamsam made it possible to have a full replacement player backend solution based on ffmpeg (including all bells and whistles).

You really are bosses! ;)

 

Thanks again!

 

@jhonc

I'll do a update for all supported PLi receivers as a final gift in the near future.



Re: serviceapp - gstplayer and exteplayer3 #173 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 27 September 2016 - 15:53

@MastaG

That's good to hear.

 

I'm going to do some improvements mainly in listing more external subtitles and improved pre-selection, so stay tuned :).



Re: serviceapp - gstplayer and exteplayer3 #174 ian1095

  • Senior Member
  • 462 posts

+6
Neutral

Posted 27 September 2016 - 16:49

@mx3L

 

How does one access the subservices for the HLS variant playlist when HLS explorer is set to true in your Serviceapp v5.0 ?

 

 

Ian.



Re: serviceapp - gstplayer and exteplayer3 #175 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 27 September 2016 - 17:23

If there are subservices available, you can press green button to show subservices list, where you can select which one do you want to play.



Re: serviceapp - gstplayer and exteplayer3 #176 ian1095

  • Senior Member
  • 462 posts

+6
Neutral

Posted 27 September 2016 - 18:25

Ah ok

 

I dont think the coloured buttons are available from within Kodi.

 

Ian.



Re: serviceapp - gstplayer and exteplayer3 #177 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 27 September 2016 - 18:32

I didn't know that you ment Kodi plugin, it's not supported there I've to add it.



Re: serviceapp - gstplayer and exteplayer3 #178 ian1095

  • Senior Member
  • 462 posts

+6
Neutral

Posted 27 September 2016 - 18:37

Ok thanks.

 

I was hoping the HLS Subservices might fix the Variant issue with the SyFy addon you see, whereby when using Serviceapp and Exteplayer3 it will only stream in 360p and even then with stutters.

 

But if you select either Mediaplayer or GSTPlayer from within Serviceapp it will stream in 1080p without stutters as its supposed to.

 

The stream is an HLS Variant you see and I believe Exteplayer3 doesnt like some Variant HLS types. So I figured manually selecting the Resolution from within Serviceapp would cure this with Exteplayer3

 

Ian.


Edited by ian1095, 27 September 2016 - 18:41.


Re: serviceapp - gstplayer and exteplayer3 #179 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 27 September 2016 - 18:53

If you have these settings when running Kodi:

 

Enigma2 playback system - serviceapp,

 

For Servicemp3 (4097):

 

HLS explorer - on,

Auto select stream - on,

Connection speed - 9999999

 

and if you're playing HLS variant playlist. it should select best quality, if not then find out the link to playlist(kodi.log) and post it.


Edited by mx3L, 27 September 2016 - 18:54.


Re: serviceapp - gstplayer and exteplayer3 #180 ian1095

  • Senior Member
  • 462 posts

+6
Neutral

Posted 27 September 2016 - 19:01

Yes I have those settings enabled exactly as you posted. And when using 4097 it will indeed stream in 1080p but when using 5002 Exteplayer3 it only streams in 360p

 

Heres the link,but ive also attached the log too,just in case where its insisting upon streaming in 360p

https://tvesyfy-vh.akamaihd.net/i/prod/video/607/51/160126_2975072_Critical_Mass_Leviathan_Wakes_,25,40,18,12,7,4,2,00.mp4.csmil/master.m3u8?__b__=1000&hdnea=st=1474999040~exp=1474999100

Ian.

Attached Files

  • Attached File  kodi.log   17.25KB   6 downloads

Edited by ian1095, 27 September 2016 - 19:03.




16 user(s) are reading this topic

0 members, 16 guests, 0 anonymous users