More hacks about subtitles...

git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@189 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
focus
2010-01-20 14:10:54 +00:00
parent 9a54710d40
commit 2444fc5f58
8 changed files with 117 additions and 58 deletions

View File

@@ -73,10 +73,10 @@ int dvbsub_init() {
int dvbsub_pause()
{
if(reader_running) {
dvbsub_paused = true;
if(dvbSubtitleConverter) {
dvbSubtitleConverter->Pause(true);
}
dvbsub_paused = true;
printf("[dvb-sub] paused\n");
}
@@ -89,7 +89,6 @@ int dvbsub_start(int pid)
return 0;
}
if(pid) {
if(pid != dvbsub_pid)
dvbsub_pause();
@@ -108,7 +107,7 @@ int dvbsub_start(int pid)
printf("[dvb-sub] started with pid 0x%x\n", pid);
}
return 0;
return 1;
}
int dvbsub_stop()
@@ -290,7 +289,6 @@ static void* dvbsub_thread(void* /*arg*/)
while(dvbsub_running) {
uint8_t* packet;
int64_t pts;
int pts_dts_flag;
int dataoffset;
int packlen;

View File

@@ -1,6 +1,7 @@
INCLUDES = \
-I$(top_srcdir)/src/zapit/include \
-I$(top_srcdir)/lib/libcoolstream
-I$(top_srcdir)/lib/libcoolstream \
-I$(top_srcdir)/src
AM_CPPFLAGS = -fno-rtti -fno-exceptions

View File

@@ -5,8 +5,9 @@ extern int tuxtxt_init();
extern void tuxtxt_close();
extern void tuxtxt_start(int tpid); // Start caching
extern int tuxtxt_stop(); // Stop caching
extern int tuxtx_main(int _rc, void * _fb, int pid, int x, int y, int w, int h, int page = 0);
extern int tuxtx_main(int _rc, int pid, int page = 0);
void tuxtx_stop_subtitle();
int tuxtx_subtitle_running(int pid, int page);
int tuxtx_subtitle_running(int pid, int page, int *running);
void tuxtx_pause_subtitle(bool pause = 1);
#endif

View File

@@ -15,6 +15,7 @@
#include "tuxtxt.h"
#include <dmx_cs.h>
#include "driver/framebuffer.h"
void FillRect(int x, int y, int w, int h, int color)
{
@@ -1477,20 +1478,45 @@ void eval_l25()
* main loop *
******************************************************************************/
static int subtitle_mode;
static pthread_t ttx_sub_thread;
static int reader_running;
static int ttx_paused;
static int ttx_req_pause;
static void* reader_thread(void * /*arg*/)
{
printf("TuxTxt subtitle thread started\n");
reader_running = 1;
ttx_paused = 0;
while(reader_running) {
RenderPage();
if(ttx_paused)
usleep(10);
else
RenderPage();
if(ttx_req_pause) {
ttx_req_pause = 0;
ttx_paused = 1;
}
}
CleanUp();
tuxtxt_close();
printf("TuxTxt subtitle thread stopped\n");
pthread_exit(NULL);
}
void tuxtx_pause_subtitle(bool pause)
{
if(!reader_running)
return;
if(!pause)
ttx_paused = 0;
else {
ttx_req_pause = 1;
while(!ttx_paused)
sleep(10);
printf("TuxTxt subtitle paused\n");
}
}
void tuxtx_stop_subtitle()
@@ -1502,8 +1528,11 @@ void tuxtx_stop_subtitle()
ttx_sub_thread = NULL;
}
int tuxtx_subtitle_running(int pid, int page)
int tuxtx_subtitle_running(int pid, int page, int *running)
{
if(running)
*running = reader_running;
if(reader_running && (tuxtxt_cache.vtxtpid == pid) && (tuxtxt_cache.page == page))
{
return 1;
@@ -1511,11 +1540,11 @@ int tuxtx_subtitle_running(int pid, int page)
return 0;
}
int tuxtx_main(int _rc, void * _fb, int pid, int x, int y, int w, int h, int page)
int tuxtx_main(int _rc, int pid, int page)
{
char cvs_revision[] = "$Revision: 1.95 $";
subtitle_mode = 0;
bool use_gui = 1;
//printf("to init tuxtxt\n");fflush(stdout);
#if !TUXTXT_CFG_STANDALONE
int initialized = tuxtxt_init();
@@ -1523,7 +1552,7 @@ int tuxtx_main(int _rc, void * _fb, int pid, int x, int y, int w, int h, int pag
tuxtxt_cache.page = 0x100;
if(page) {
tuxtxt_cache.page = page;
subtitle_mode = 1;
use_gui = 1;
}
#endif
@@ -1539,7 +1568,12 @@ int tuxtx_main(int _rc, void * _fb, int pid, int x, int y, int w, int h, int pag
}
rc = _rc;
lfb = (unsigned char *) _fb;
lfb = (unsigned char *) CFrameBuffer::getInstance()->getFrameBufferPointer();
int x = CFrameBuffer::getInstance()->getScreenX();
int y = CFrameBuffer::getInstance()->getScreenY();
int w = CFrameBuffer::getInstance()->getScreenWidth();
int h = CFrameBuffer::getInstance()->getScreenHeight();
tuxtxt_cache.vtxtpid = pid;
@@ -1582,7 +1616,7 @@ int tuxtx_main(int _rc, void * _fb, int pid, int x, int y, int w, int h, int pag
if (Init() == 0)
return 0;
if(subtitle_mode) {
if(!use_gui) {
pthread_create(&ttx_sub_thread, 0, reader_thread, (void *) NULL);
return 1;
}