mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-09-01 01:41:23 +02:00
pic max10<max_10@gmx.de> code from commit f480ad018c72d40a9d2d2fb4006cfca1c262234d
This commit is contained in:
@@ -2375,7 +2375,13 @@ void CRadioText::run()
|
|||||||
uint current_pid = 0;
|
uint current_pid = 0;
|
||||||
|
|
||||||
printf("CRadioText::run: ###################### Starting thread ######################\n");
|
printf("CRadioText::run: ###################### Starting thread ######################\n");
|
||||||
|
#if HAVE_SPARK_HARDWARE || HAVE_DUCKBOX_HARDWARE || HAVE_GENERIC_HARDWARE
|
||||||
|
int buflen = 0;
|
||||||
|
unsigned char *buf = NULL;
|
||||||
|
audioDemux = new cDemux(0); // live demux
|
||||||
|
#else
|
||||||
audioDemux = new cDemux(1);
|
audioDemux = new cDemux(1);
|
||||||
|
#endif
|
||||||
audioDemux->Open(DMX_PES_CHANNEL,0,128*1024);
|
audioDemux->Open(DMX_PES_CHANNEL,0,128*1024);
|
||||||
|
|
||||||
while(running) {
|
while(running) {
|
||||||
@@ -2400,11 +2406,41 @@ void CRadioText::run()
|
|||||||
}
|
}
|
||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
if (pid) {
|
if (pid) {
|
||||||
|
#if HAVE_SPARK_HARDWARE || HAVE_DUCKBOX_HARDWARE || HAVE_GENERIC_HARDWARE
|
||||||
|
int n;
|
||||||
|
unsigned char tmp[6];
|
||||||
|
|
||||||
|
n = audioDemux->Read(tmp, 6, 500);
|
||||||
|
if (n != 6) {
|
||||||
|
usleep(10000); /* save CPU if nothing read */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (memcmp(tmp, "\000\000\001\300", 4))
|
||||||
|
continue;
|
||||||
|
int packlen = ((tmp[4] << 8) | tmp[5]) + 6;
|
||||||
|
|
||||||
|
if (buflen < packlen) {
|
||||||
|
if (buf)
|
||||||
|
free(buf);
|
||||||
|
buf = (unsigned char *) calloc(1, packlen);
|
||||||
|
buflen = packlen;
|
||||||
|
}
|
||||||
|
if (!buf)
|
||||||
|
break;
|
||||||
|
memcpy(buf, tmp, 6);
|
||||||
|
|
||||||
|
while ((n < packlen) && running) {
|
||||||
|
int len = audioDemux->Read(buf + n, packlen - n, 500);
|
||||||
|
if (len < 0)
|
||||||
|
break;
|
||||||
|
n += len;
|
||||||
|
}
|
||||||
|
#else
|
||||||
int n;
|
int n;
|
||||||
unsigned char buf[0x1FFFF];
|
unsigned char buf[0x1FFFF];
|
||||||
|
|
||||||
n = audioDemux->Read(buf, sizeof(buf), 500 /*5000*/);
|
n = audioDemux->Read(buf, sizeof(buf), 500 /*5000*/);
|
||||||
|
#endif
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
//printf("."); fflush(stdout);
|
//printf("."); fflush(stdout);
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
@@ -2413,6 +2449,10 @@ void CRadioText::run()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if HAVE_SPARK_HARDWARE || HAVE_DUCKBOX_HARDWARE || HAVE_GENERIC_HARDWARE
|
||||||
|
if (buf)
|
||||||
|
free(buf);
|
||||||
|
#endif
|
||||||
delete audioDemux;
|
delete audioDemux;
|
||||||
audioDemux = NULL;
|
audioDemux = NULL;
|
||||||
printf("CRadioText::run: ###################### exit ######################\n");
|
printf("CRadioText::run: ###################### exit ######################\n");
|
||||||
|
Reference in New Issue
Block a user