From c39633b6fa53fadde73b1c3183db76c456492b96 Mon Sep 17 00:00:00 2001 From: phintuka Date: Thu, 3 Jan 2008 20:06:27 +0000 Subject: Change MRL syntax from xvdr[:proto]:// to xvdr[+proto]:// --- README | 8 ++++---- xine_frontend.c | 4 ++-- xine_frontend_main.c | 41 +++++++++++++++++++++++++---------------- xine_input_vdr.c | 20 +++++++++++--------- 4 files changed, 42 insertions(+), 31 deletions(-) diff --git a/README b/README index 73e89b28..c4dc3ecd 100644 --- a/README +++ b/README @@ -155,10 +155,10 @@ Using remote frontends vdr-fbfe xvdr://192.168.1.3 Connect to 192.168.2.100, port 12550 and use TCP transport - vdr-fbfe xvdr:tcp://192.168.2.100:12550 + vdr-fbfe xvdr+tcp://192.168.2.100:12550 Automatically search for VDR server and use UDP transport - vdr-fbfe xvdr:udp: + vdr-fbfe xvdr+udp: or vdr-fbfe --udp @@ -213,8 +213,8 @@ Using with xine-ui (xine, fbxine, gxine, ...) Examples: xine "xvdr://127.0.0.1#nocache;demux:mpeg_block" - xine "xvdr:tcp://127.0.0.1:37890#nocache;demux:mpeg_block" - xine "xvdr:udp://127.0.0.1:37890#nocache;demux:mpeg_block" + xine "xvdr+tcp://127.0.0.1:37890#nocache;demux:mpeg_block" + xine "xvdr+udp://127.0.0.1:37890#nocache;demux:mpeg_block" "#nocache;demux:mpeg_block" should always be appended to end of mrl. diff --git a/xine_frontend.c b/xine_frontend.c index 5912380e..ff6b7ea4 100644 --- a/xine_frontend.c +++ b/xine_frontend.c @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: xine_frontend.c,v 1.46 2008-01-03 13:04:53 phintuka Exp $ + * $Id: xine_frontend.c,v 1.47 2008-01-03 20:06:27 phintuka Exp $ * */ @@ -1330,7 +1330,7 @@ static void *fe_control(void *fe_handle, const char *cmd) this->video_port); LOGMSG(" PIP %d: %dx%d @ (%d,%d)", pid & 0x0f, w, h, x, y); LOGMSG("create pip stream done"); - sprintf(mrl, "xvdr:slave://0x%lx#nocache;demux:mpeg_block", + sprintf(mrl, "xvdr+slave://0x%lx#nocache;demux:mpeg_block", (unsigned long int)this); if(!xine_open(posts->pip_stream, mrl) || !xine_play(posts->pip_stream, 0, 0)) { diff --git a/xine_frontend_main.c b/xine_frontend_main.c index 86409f94..bc3c5b14 100644 --- a/xine_frontend_main.c +++ b/xine_frontend_main.c @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: xine_frontend_main.c,v 1.33 2007-06-18 06:01:28 phintuka Exp $ + * $Id: xine_frontend_main.c,v 1.34 2008-01-03 20:06:27 phintuka Exp $ * */ @@ -408,7 +408,7 @@ int main(int argc, char *argv[]) while ((c = getopt_long(argc, argv, "HL:A:V:d:a:fw:h:P:vslkbtur", long_options, NULL)) != -1) { switch (c) { default: - case 'H': printf("\nUsage: %s [options] [xvdr:[udp:|tcp:|rtp:][//host[:port]]] \n" + case 'H': printf("\nUsage: %s [options] [xvdr[+udp|+tcp|+rtp]:[//host[:port]]] \n" "\nAvailable options:\n", exec_name); printf("%s", help_str); list_plugins(NULL, verbose_xine_log); @@ -530,13 +530,22 @@ int main(int argc, char *argv[]) return -1; } +#if 1 + /* backward compability */ + if(mrl && ( !strncmp(mrl, "xvdr:tcp:", 9) || + !strncmp(mrl, "xvdr:udp:", 9) || + !strncmp(mrl, "xvdr:rtp:", 9) || + !strncmp(mrl, "xvdr:pipe:", 10))) + mrl[5] = '+'; +#endif + /* If server address not given, try to find server automatically */ if(!mrl || !strcmp(mrl, "xvdr:") || - !strcmp(mrl, "xvdr:tcp:") || - !strcmp(mrl, "xvdr:udp:") || - !strcmp(mrl, "xvdr:rtp:") || - !strcmp(mrl, "xvdr:pipe:")) { + !strcmp(mrl, "xvdr+tcp:") || + !strcmp(mrl, "xvdr+udp:") || + !strcmp(mrl, "xvdr+rtp:") || + !strcmp(mrl, "xvdr+pipe:")) { char address[1024] = ""; int port = -1; PRINTF("VDR server not given, searching ...\n"); @@ -558,27 +567,27 @@ int main(int argc, char *argv[]) } } + if(mrl && strncmp(mrl, "xvdr:", 5) && strncmp(mrl, "xvdr+", 5)) { + char *mrl2 = mrl; + PRINTF("WARNING: MRL does not start with \'xvdr:\' (%s)", mrl); + asprintf(&mrl, "xvdr://%s", mrl); + free(mrl2); + } + { char *tmp = NULL, *mrl2 = mrl; if(frtp && !strstr(mrl, "rtp:")) - tmp = strdup("xvdr:rtp:"); + tmp = strdup("xvdr+rtp:"); else if(fudp && !strstr(mrl, "udp:")) - tmp = strdup("xvdr:udp:"); + tmp = strdup("xvdr+udp:"); else if(ftcp && !strstr(mrl, "tcp:")) - tmp = strdup("xvdr:tcp:"); + tmp = strdup("xvdr+tcp:"); if(tmp) { mrl = strcatrealloc(tmp, strchr(mrl, '/')); free(mrl2); } } - if(mrl && strncmp(mrl, "xvdr:", 5)) { - char *mrl2 = mrl; - PRINTF("WARNING: MRL does not start with \'xvdr:\' (%s)", mrl); - asprintf(&mrl, "xvdr://%s", mrl); - free(mrl2); - } - if(daemon_mode) { PRINTF("Entering daemon mode\n\n"); if (daemon(1, 0) == -1) { diff --git a/xine_input_vdr.c b/xine_input_vdr.c index 6e57d7ad..0af61a59 100644 --- a/xine_input_vdr.c +++ b/xine_input_vdr.c @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: xine_input_vdr.c,v 1.106 2008-01-03 19:05:07 phintuka Exp $ + * $Id: xine_input_vdr.c,v 1.107 2008-01-03 20:06:27 phintuka Exp $ * */ @@ -1655,7 +1655,7 @@ static const char* fifo_get_mrl (input_plugin_t *this_gen) #else static char* fifo_get_mrl (input_plugin_t *this_gen) #endif -{ return "xvdr:slave:"; } +{ return "xvdr+slave:"; } #if XINE_VERSION_CODE < 10190 static off_t fifo_read (input_plugin_t *this_gen, char *buf, off_t len) @@ -5997,11 +5997,13 @@ static int vdr_plugin_open_net (input_plugin_t *this_gen) if(strchr(this->mrl, '#')) *strchr(this->mrl, '#') = 0; - - if((!strncasecmp(this->mrl, "xvdr:tcp://", 11) && (this->tcp=1)) || - (!strncasecmp(this->mrl, "xvdr:udp://", 11) && (this->udp=1)) || - (!strncasecmp(this->mrl, "xvdr:rtp://", 11) && (this->rtp=1)) || - (!strncasecmp(this->mrl, "xvdr://", 7))) { + if((!strncasecmp(this->mrl, "xvdr+tcp://", 11) && (this->tcp=1)) || + (!strncasecmp(this->mrl, "xvdr+udp://", 11) && (this->udp=1)) || + (!strncasecmp(this->mrl, "xvdr+rtp://", 11) && (this->rtp=1)) || + (!strncasecmp(this->mrl, "xvdr:tcp://", 11) && (this->tcp=1)) || + (!strncasecmp(this->mrl, "xvdr:udp://", 11) && (this->udp=1)) || + (!strncasecmp(this->mrl, "xvdr:rtp://", 11) && (this->rtp=1)) || + (!strncasecmp(this->mrl, "xvdr://", 7))) { char *phost = strdup(strstr(this->mrl, "//") + 2); char host[256]; @@ -6156,10 +6158,10 @@ static input_plugin_t *vdr_class_get_instance (input_class_t *class_gen, LOGDBG("vdr_class_get_instance"); - if (strncasecmp (mrl, "xvdr:",5)) + if (strncasecmp (mrl, "xvdr:",5) && strncasecmp (mrl, "xvdr+",5)) return NULL; - if(!strncasecmp(mrl, "xvdr:slave://0x", 15)) { + if(!strncasecmp(mrl, "xvdr+slave://0x", 15)) { LOGMSG("vdr_class_get_instance: slave stream requested"); return fifo_class_get_instance(class_gen, stream, data); } -- cgit v1.2.3