summaryrefslogtreecommitdiff
path: root/common.c
diff options
context:
space:
mode:
authorlordjaxom <lordjaxom>2005-02-10 22:24:26 +0000
committerlordjaxom <lordjaxom>2005-02-10 22:24:26 +0000
commitab8f0c75f39b57cd1e28545259fb08bb7b4925b3 (patch)
tree7b640887ef77c02bc09ffa0156684d76afa2492a /common.c
parentc1cb77c3f8c7c0b3469e1d110f4e9a96bac16178 (diff)
downloadvdr-plugin-streamdev-ab8f0c75f39b57cd1e28545259fb08bb7b4925b3.tar.gz
vdr-plugin-streamdev-ab8f0c75f39b57cd1e28545259fb08bb7b4925b3.tar.bz2
- implemented audio track selection for http
Diffstat (limited to 'common.c')
-rw-r--r--common.c40
1 files changed, 38 insertions, 2 deletions
diff --git a/common.c b/common.c
index b615fec..850623d 100644
--- a/common.c
+++ b/common.c
@@ -1,5 +1,5 @@
/*
- * $Id: common.c,v 1.2 2005/02/08 15:34:38 lordjaxom Exp $
+ * $Id: common.c,v 1.3 2005/02/10 22:24:26 lordjaxom Exp $
*/
#include <vdr/channels.h>
@@ -47,8 +47,16 @@ char *GetNextLine(char *String, uint Length, uint &Offset) {
return NULL;
}
-cChannel *ChannelFromString(char *String) {
+const cChannel *ChannelFromString(char *String, int *Apid) {
cChannel *channel = NULL;
+ char *ptr, *end;
+ int apididx = 0;
+
+ if ((ptr = strrchr(String, '+')) != NULL) {
+ *(ptr++) = '\0';
+ apididx = strtoul(ptr, &end, 10);
+ Dprintf("found apididx: %d\n", apididx);
+ }
if (isnumber(String)) {
int temp = strtol(String, NULL, 10);
@@ -67,6 +75,34 @@ cChannel *ChannelFromString(char *String) {
}
}
}
+
+ if (channel != NULL && apididx > 0) {
+ int apid = 0, index = 1;
+ const int *apids = channel->Apids();
+ const int *dpids = channel->Dpids();
+
+ for (int i = 0; apids[i] != 0; ++i, ++index) {
+ Dprintf("checking apid %d\n", apids[i]);
+ if (index == apididx) {
+ apid = apids[i];
+ break;
+ }
+ }
+
+ if (apid == 0) {
+ for (int i = 0; dpids[i] != 0; ++i, ++index) {
+ Dprintf("checking dpid %d\n", dpids[i]);
+ if (index == apididx) {
+ apid = dpids[i];
+ break;
+ }
+ }
+ }
+
+ if (Apid != NULL)
+ *Apid = apid;
+ }
+
return channel;
}