From jori.hamalainen@teliasonera.com Tue Nov 4 15:31:28 2008
From: jori.hamalainen@teliasonera.com
To: vdr@linuxtv.org
Subject: Re: [vdr] Small VDR-streamdev patch for Popcorn Hour NMT
Date: Tue, 04 Nov 2008 15:31:21 +0100
Message-ID:
<9D4CAB5E5B58B743BC96CB3705D3D8CB04D40C04@SEHAN022MB.tcad.telia.se>
In-Reply-To: <20081104120029.M11020@linogate.de>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============6388435408427037300=="
--===============6388435408427037300==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
>> - Added automated audio track selection to default URL (+1)
>Is it a problem for PCH to receive multiple audio tracks?
PCH itself supports multiple audio (and subtitle) tracks at least on other
formats - but I believe that with VDR it might not be working. I need
to test this more when I get back to my PCH.
http://www.hdd-player.de/syabas/showthread.php?tid=1777&page=1
I don't know if this URL recommendation is because of the initial tests made
by some guys where they received video but not audio. I think this +1 as a
default might become a problem with channels with multiple sound tracks.
Maybe there could be additional feature that do not automatically add +1
if count.apid > 1?
I made a new patch (attached at the end)
- if 1 audio channel - add +1 because it would not harm PC clients - but
enable
pch to work
- if more audio channels - do not add - PCH users needs to select language
for
that channel
- YLE TV1
fra dut
- YLE
TV2
- MTV3
>> - Added suffix for URL (TS w/ "C-123-123-123.ts or S-12-123-123.ts",
>> ".ps", ".vdr" for PES and ".mpeg" for ES, extern no suffix)
> I wonder why these are needed?
I think PCH uses filename based analyzing for stream type recognition.
It was at the web forum above that URL like "/PES/*.vdr" should work.
That is what I quickly implemented to see if this was required as streaming
previously did not work. And with this patch I was able to stream channels.
I don't know if this is the problem because streamdev is returning same
MIME-
type (video/mpeg) for all video streams and PCH needs to load some
parser-modules
based on actual stream.
>> These small enhancements are inside anchor tag and they do not affect
>> other browsers, just MSP-compatible browsers - so in theory this patch
>> could be built-in for streamdev. But naturally my vision is to have own
>> GUI for MSP.
> I filed a feature request in the streamdev bugtracker:
> http://www.vdr-developer.org/mantisbt/view.php?id=494
> I wouldn't want to commit it to streamdev, if it's only a temporary
solution
> (until an MSP plugin is available). Drop me a line if you think it makes
sense
> to commit it anyway.
MSP plug-in is very VERY far away. My interest on the MSP-plugin might
increase
if H.264 HD would work over streamdev to PCH. Without unable to see HD - I
can
use vanilla VDR to view TV with no additional work.. :)
But with this patch the PCH and VDR universes would come closer. But not
fully integrated.
Without this patch if you are testing PCH/streamdev - you need to do static
web pages
to form URLs and TAGs needed by PCH. This patch allows to easily test with
all channels
found on VDR channels.conf.
MSP plugin would need be like vdradmin to be fully usable. Changing vdradmin
is a big task.
XXV MSP-plugin would be other option (but I don't like it - too complicated
to setup).
Ideally MSP plugin should implement all vdradmin-am features
- epg browsing
- epg searches
- setting timers
- streaming live channels
- streaming files (currently possible only via SMB-mount)
With PCH & MSP you could have feature rich setup as a VDR front-end. Similar
to vomp
and mediamvp - but upto full HD 1080p support without any micro judder. And
simultaneously
have nice setup to view other HQ media on disk & network.
So I guess if you see it possible to add this into tree - please do it. But
if
you see adding filename suffix a bad decision then don't. For my own
experiments
I can do this patching manually. And the patch is already out there for
interested
people to find.
Now the problem is that h.264 streaming is not working. It should happen via
TS-container?
And for this probably streamdev should be modified. I cannot tell why it is
not working
as PCH does not give any clue on it. Just returns to menu.
Best regards,
Jori
New patch is here (against 0.3.4):
vdr server # diff menuHTTP.c menuHTTP.orig.c
201c201
< (std::string) "[TS] ");
---
> (std::string) "[TS]
");
203c203
< (std::string) "[PS] ");
---
> (std::string) "[PS]
");
205c205
< (std::string) "[PES] ");
---
> (std::string) "[PES] ");
207c207
< (std::string) "[ES] ");
---
> (std::string) "[ES]
");
339,341c339,341
< std::string suffix;
< std::string autoaudio = "";
< int count = 0;
---
> line += (std::string) "- Number()) + "\">";
> line += (std::string) "GetChannelID().ToString() + "\">" +
> current->Name() + "";
342a343
> int count = 0;
345,349d345
<
< if (count == 1) {
< autoaudio = "+1";
< }
<
352,369d347
<
< switch (streamType) {
< case stTS: suffix = (std::string) ".ts"; break;
< case stPS: suffix = (std::string) ".ps"; break;
< case stPES: suffix = (std::string) ".vdr"; break;
< case stES: suffix = (std::string) ".mpeg"; break;
< default:
< case stExtern: suffix = (std::string) ""; break;
< }
<
< line += (std::string) "
- Number()) + "\">";
< line += (std::string) "GetChannelID().ToString() + autoaudio + suffix + "\" vod
prebuf=5000000";
<
< if (current->Number() < 1000) {
< line += " TVID=\"" + (std::string) (const char*)
itoa(current->Number()) + "\"";
< }
< line += (std::string) ">" + current->Name() + "";
<
376c354
< "+" + (const char*)itoa(index) +
suffix + "\" class=\"apid\" vod>" + current->Alang(i) + "";
---
> "+" + (const char*)itoa(index) + "\"
class=\"apid\">" + current->Alang(i) + "";
380c358
< "+" + (const char*)itoa(index) +
suffix + "\" class=\"dpid\" vod>" + current->Dlang(i) + "";
---
> "+" + (const char*)itoa(index) + "\"
class=\"dpid\">" + current->Dlang(i) + "";
--===============6388435408427037300==
Content-Type: application/x-pkcs7-signature
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
MIME-Version: 1.0
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIUdDCCAyAw
ggIIoAMCAQICAR0wDQYJKoZIhvcNAQEFBQAwOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVy
YTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTAeFw0wMTA0MDYwNzI5NDBaFw0yMTA0MDYwNzI5
NDBaMDkxCzAJBgNVBAYTAkZJMQ8wDQYDVQQKEwZTb25lcmExGTAXBgNVBAMTEFNvbmVyYSBDbGFz
czIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCQF0o1ncrwDZbHRPoWN/xIvb1/
gC01O+FvqGepvwMcTYxvMkfVQWikEwTBNQyahEP8XB3/ibPoFxjNkV/7iePqv05dfBsm03V57eaE
41flrSnE9Doo56V7hDZps/1edr2jLZnTkE4jKH0YY/FUOyaddluXQrL/rvBO7N05lU6DBn/nSUDI
xQGyVFpmHT38+ek8Cp6BuHDwAYvkI1R8yK74kB4AlnLUVM9hI7zq+50CldG2uXE6aQg/D7ThQseI
9T+YqKe6HOBxce9YV4FQelxrdEYOgwOYw46obvJ2Mm4ng8Jz89wY6LST6nVEawRgIHFXh53zvqCQ
Iz2KJOHaIdvDAgMBAAGjMzAxMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEqgqliE0148MAsG
A1UdDwQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAWs6H+RZyFVdLHdmb56ImMOyTZ9/WLdI0r/c4
pc6rFrmrL3w1y6zQD7RMK/yA72uMkV82dvfbsxsZ6vSyEf1hcUS/KLM6Hb+zQ+ifv9wxCHGwnY3W
NEcykMZlJPegSnwEc485bxeMcrW9S8h6+HuDwyhOnAnqZz+yZwQbwxTa+OdJJJHQHWr6YTnva+ch
dQYH2BK0ISBwQnGB2jyaNr6mWw1qbJofkXv5+e9Cuk5OnswMjZTc2UWcXuxCUGOu9F3EsRLcyjuo
Lp0UWgV1t+zXY+K6NbYECJHo2p2c9ma1GKwKplQmNDPSG8HUfxo6jguqMm7b/E8ln9kyx5ZacKzf
TDCCBSswggMToAMCAQICEQCvI2UzAU9ijk6656fbytf/MA0GCSqGSIb3DQEBBQUAMDgxFDASBgNV
BAoMC1RlbGlhU29uZXJhMSAwHgYDVQQDDBdUZWxpYVNvbmVyYSBFbWFpbCBDQSB2MzAeFw0wODA4
MjkxMjE0MDhaFw0wOTA4MjkxMjE0MDdaMHYxFDASBgNVBAoMC1RlbGlhU29uZXJhMRswGQYDVQQD
DBJKb3JpIEjDpG3DpGzDpGluZW4xETAPBgNVBAUTCGhhbWFsam8zMS4wLAYJKoZIhvcNAQkBFh9q
b3JpLmhhbWFsYWluZW5AdGVsaWFzb25lcmEuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQC8XAd1C77NsvljeBlsVsnC01h7Yp70jo8aagxgueKKFdom0K5ZTxE5+7MxA8DGhxtN1bwiokXx
u+cFCaj/DUtJ1tuTUCRuDTo9mOQDMUTaGUNjoHM4ruZwDWyMie6guAn+EvojYEUlw1QXuAWi0Ipu
uW4kC/xHqXV/cb0fEjg16QIDAQABo4IBdDCCAXAwgcUGA1UdHwSBvTCBujCBt6CBtKCBsYZybGRh
cDovL2NybC0xLnRydXN0LnRlbGlhc29uZXJhLmNvbS9jbj1UZWxpYVNvbmVyYSUyMEVtYWlsJTIw
Q0ElMjB2MyxvPVRlbGlhU29uZXJhP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q7YmluYXJ5hjto
dHRwOi8vY3JsLTIudHJ1c3QudGVsaWFzb25lcmEuY29tL3RlbGlhc29uZXJhZW1haWxjYXYzLmNy
bDBUBggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS50cnVzdC50ZWxpYXNvbmVy
YS5jb20vVGVsaWFTb25lcmFFbWFpbENBdjMuY2VyMCoGA1UdEQQjMCGBH2pvcmkuaGFtYWxhaW5l
bkB0ZWxpYXNvbmVyYS5jb20wFAYDVR0gBA0wCzAJBgcqhXAjBAIKMA4GA1UdDwEB/wQEAwIFoDAN
BgkqhkiG9w0BAQUFAAOCAgEAgj42TkIcLSTkD7eMacifWTTANFqMVppFA8Dxo094pNx+2UiGf55S
izTA6WeoZ/cbrXmJUqLr+WYAIVeG0w6vPosbWrLXPa1GY7EU5UQFPNEAYomKlg+LvuMo4p82hGvU
bbUogtQeZmaknZeMF+sMyLSUaRh1QCZ6aKlRDELcxwrtcnYtrf9luacSirTKjwqdh6gdxCMwWEuz
RI0DPDjHcFNXvlJH9+8x4MeHZLWK1DfU6wcfdGBGfGfIvpGeDRydnlTz7mzGUsKzwx4fJkd7lnNk
G2ER0f2y4wk8JfVjaFXysjjdwGqvYcuLW1V07UQyWpRUjQxTfGacNckWYq7+8z3cK8D4Wh2f+i2S
5FI7JBbIW5m5m1u5kV+Z0sj5oe4EAGwtcXdqmWqgftzoZ+i93hHM9v8dd83ROiYb67xvgOPrMV78
wV3PZSlBRizF0qLRW7bqKXcm+fBChL2LBKMQIZqZkAYWYbpDCW560PlWm+ChB6zrRmkKaf886NaG
GOQS73uAGJERtgoQcxTrHvGkr6lEgTLcdcTdAl8RYxEPn/jiPOhWeU1yc6ql0DQgeTUOuKIft287
Nj26F0ibySEZN/DJbQ77Te0UPlKwMVhW1idlcqidvyfDcOxd0H2q+SBhdYpb8k+F96uaxFTWAKvK
CCCqZNJkGe3T4zO9haEkVQowggV9MIIEZaADAgECAhEA0eA+W0jtx54JP0De4WHDizANBgkqhkiG
9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEg
Q2xhc3MyIENBMB4XDTA3MTAxODEyNTIwMVoXDTE5MTAxNzA1MDQxMVowNzEUMBIGA1UECgwLVGVs
aWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQDCvusn8CGj82kmVX6dxVUWkVz97yG/U4B6LdKRjGMx8Owk8MOl0nJ8
EG30N7fl5nx56oy1gouuSLasANxldewqTV/Bh/UgZSuBqEc+iSOVMBaQf+hXB0jnGa6/RWexNxsG
Kv7e+ax9g/teuuSPl2e+S46NZAdXOFVpNDY9E0jvT+LTZh6kzxq3XjYz1LQGvRgB/XeEUABF9Yxd
6CO8fv414e1Qe6kwjRnTCY5oZ12/PJcYU7spYsXKXnLBx5bU2y2gtB9pA+zq4lDxDDzwrPNTLfAc
9e1sOTlzgBbIUrAjzeA+3N08R6C7NYrimGiLvuW/cu7S+qXtEu38mBipJnbcKEsQIBzTfxZ3Le1v
gPdJu1MFu11ox9TIdRY/iVqL9xdH1Ezx0ol5Pk09mKhh3joe0vheA+DByRyM041N05U2szdfY2Ob
MxTwLSZrU3yJjDLCbuw9IQA5yaFo4lCDLrA6K/M2oKwv5G9hwlEJOT6LU7m7Z9rcU7l2WTadQ+Ug
4D0yYIUiUbfHM7vdFS+keKYHe4FGNgSG3Xk1x5UsO7CjFzXlcx+0XFnv2uoQZXt60H+fs7QqNztw
i5tbuSu37LJREpdTKVrU8BIQ3E8CuxKSL2LUP2lDfA3W/Fh1AYidWBZL3rqQ/0cBiQZq9l+ykGqz
AqYCiL+zR34q2dX6aHg1TQIDAQABo4IBgDCCAXwwTgYIKwYBBQUHAQEEQjBAMD4GCCsGAQUFBzAC
hjJodHRwOi8vY2EudHJ1c3QudGVsaWFzb25lcmEuY29tL3NvbmVyYWNsYXNzMmNhLmNlcjAPBgNV
HRMBAf8EBTADAQH/MBkGA1UdIAQSMBAwDgYMKwYBBAGCDwIDAQECMA4GA1UdDwEB/wQEAwIBBjAd
BgNVHQ4EFgQU8I9ZOACz9Y+algzV6/p7qhfoExIwgbkGA1UdHwSBsTCBrjBvoG2ga4ZpbGRhcDov
L2NybC0xLnRydXN0LnRlbGlhc29uZXJhLmNvbS9jbj1Tb25lcmElMjBDbGFzczIlMjBDQSxvPVNv
bmVyYSxjPUZJP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q7YmluYXJ5MDugOaA3hjVodHRwOi8v
Y3JsLTIudHJ1c3QudGVsaWFzb25lcmEuY29tL3NvbmVyYWNsYXNzMmNhLmNybDATBgNVHSMEDDAK
gAhKoKpYhNNePDANBgkqhkiG9w0BAQUFAAOCAQEAey9m1RoW+KuhWVLbBlTW53h4fkOTpq13sk3w
B8VgIPdD1ZQ4AGNPnAZOKD8Ti/WVRp4XnNO9AnYhlh8K6qihEdbgwth/ewU694wcxpfZn/+NzMW2
OzSQfSxzDjXw3hflfvGzCs4gXXna9B6HCrirQW827woTpAzmgCmZKglVxAuPsdQFMKsePvreg92k
pwt/tQlrdvgF316yM4xOqQCqmXJyX6yNpqiGrZgLWl71tdiPE8mUfhESDHDlRiGuDGH8cUqc9E0k
s/eA1nyytw5Sol2sU/k6qJN8h9cGYQvuqv9dbzyy+dnD1pNh3IhQ2spStrt8GrXMZpPJGsTRLeiu
czCCBpwwggSEoAMCAQICEEppZFGyE+rrTIZ33R7lI3EwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
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
AAAAAAA=
--===============6388435408427037300==--