Update the experimental patch for the DVB Teletext.
Changes:
- included the new patch by Martin:
- standard teletext graphics
- toggling between transparent/non-transparent background with "W"- free the processed data packets (sometimes it doesn't work (for me)- see TODO)
- some debug messages can be showed up by starting the frontend with "-v vbi" (Martin: Do you use this as well?)
- bit error detection and correction if possible in page number and line number
- up/down doesn't go wrong when out-of-decimal range
Tj schrieb:
The strings with subtitle texts in page->data[y][0] sometimes starts with @....% (where .... are some unknown chars).. What are these? Control information? Do you have this as well, perhaps its just Australia specific? Or my DVB-T (VisionPlus) specific? Is it always 10 bytes long?
- fixed
This patch modified the 1st for loop in TeletextView::drawPage() to skip @....%, and skip drawing the teletext number if it's 801 (probably this patch only works for Australia)... With this, closed captions worked ok on my system (no 'trash' text other than captions). would be nice if it has a black background, still not sure how that's done yet.. Sorry the patch is kidda scrummy (my MythTV is our TV and I can only squeeze in a quick fix here and there during commercial breaks)...
I changed this a little:
- Every subtitle-page (as defined in the page header) skips the drawing of the teletext number
still TODO: - get some wrong graphics in teletext - sometimes the packets are processed twice (see my last post) (I made a work-around for this, but it's not a good solution) (If somebody has an idea: look at avformatdecoder.cpp, void GetFrame)
Frank
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmyth/mythcontext.h mythtv/libs/libmyth/mythcontext.h
--- mythtv.orig/libs/libmyth/mythcontext.h 2005-03-23 07:56:32.000000000
+0100
+++ mythtv/libs/libmyth/mythcontext.h 2005-03-23 16:19:57.000000000 +0100
@@ -50,6 +50,7 @@
VB_LIBAV = 0x0800,
VB_JOBQUEUE = 0x1000,
VB_SIPARSER = 0x2000,
+ VB_VBI = 0x4000,
VB_NONE = 0x0000,
VB_ALL = 0xffff
};
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmythtv/avformatdecoder.cpp
mythtv/libs/libmythtv/avformatdecoder.cpp
--- mythtv.orig/libs/libmythtv/avformatdecoder.cpp 2005-03-23
17:37:39.864302736 +0100
+++ mythtv/libs/libmythtv/avformatdecoder.cpp 2005-03-22 15:25:38.000000000
+0100
@@ -1478,20 +1477,25 @@
if (context->codec_id == CODEC_ID_MPEG2VBI)
{
ProcessDataPacket(curstream, pkt);
- av_free_packet(pkt);
+ av_free_packet(pkt);
+ continue;
}
if (context->codec_id == CODEC_ID_DATA)
{
ProcessTTDataPacket(curstream,pkt);
- // av_free_packet(pkt);
+ if (ptr[130]!=128)
+ {
+ ptr[130]=128;
+ av_free_packet(pkt);
+ }
+ continue;
}
- continue;
}
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmythtv/osdtypeteletext.cpp
mythtv/libs/libmythtv/osdtypeteletext.cpp
--- mythtv.orig/libs/libmythtv/osdtypeteletext.cpp 2005-03-15
15:53:48.000000000 +0100
+++ mythtv/libs/libmythtv/osdtypeteletext.cpp 2005-03-23 15:14:45.000000000
+0100
@@ -8,6 +8,7 @@
#include <qcolor.h>
#include <qapplication.h>
#include <iostream>
+
using namespace std;
QColor m_color_black;
@@ -125,14 +126,20 @@
y *= m_tt_rowspace;
y += m_displayrect.top();
- int ye = y + m_tt_rowspace;
- int luma_stride = m_surface->width;
- int chroma_stride = m_surface->width >> 1;
+ drawRect(x, y, m_tt_colspace, m_tt_rowspace);
+}
- QRect all(x, y, m_tt_colspace, m_tt_rowspace);
+void OSDTypeTeletext::drawRect(int x, int y, int dx, int dy)
+{
+ // XXX TODO: Move to blend.c or osdsurface.cpp
+
+ QRect all(x, y, dx, dy);
m_surface->AddRect(all);
-
- // Move to blend.c or osdcurface.cpp
+
+ int luma_stride = m_surface->width;
+ int chroma_stride = m_surface->width >> 1;
+ int ye = y + dy;
+
unsigned char *buf_y = m_surface->y + (luma_stride * y) + x;
unsigned char *buf_u = m_surface->u + (chroma_stride * (y>>1)) + (x>>1);
unsigned char *buf_v = m_surface->v + (chroma_stride * (y>>1)) + (x>>1);
@@ -140,7 +147,7 @@
for (; y<ye; ++y)
{
- for (int i=0; i<m_tt_colspace; ++i)
+ for (int i=0; i<dx; ++i)
{
buf_y[i] = m_bgcolor_y;
buf_a[i] = m_bgcolor_a;
@@ -148,7 +155,7 @@
if ((y & 1) == 0)
{
- for (int i=0; i<m_tt_colspace; ++i)
+ for (int i=0; i<dx; ++i)
{
buf_u[i>>1] = m_bgcolor_u;
buf_v[i>>1] = m_bgcolor_v;
@@ -185,6 +192,22 @@
(void)x;
(void)y;
(void)code;
+
+ x *= m_tt_colspace;
+ x += m_displayrect.left();
+
+ y *= m_tt_rowspace;
+ y += m_displayrect.top();
+
+ int dx = (int)round(m_tt_colspace / 2)+1;
+ int dy = (int)round(m_tt_rowspace / 3)+1;
+
+ if (code & 0x10) drawRect(x, y + 2*dy, dx, dy);
+ if (code & 0x40) drawRect(x + dx, y + 2*dy, dx, dy);
+ if (code & 0x01) drawRect(x, y, dx, dy);
+ if (code & 0x02) drawRect(x + dx, y, dx, dy);
+ if (code & 0x04) drawRect(x, y + dy, dx, dy);
+ if (code & 0x08) drawRect(x + dx, y + dy, dx, dy);
}
void OSDTypeTeletext::Reinit(float wchange, float hchange)
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmythtv/osdtypeteletext.h
mythtv/libs/libmythtv/osdtypeteletext.h
--- mythtv.orig/libs/libmythtv/osdtypeteletext.h 2005-03-15
15:53:48.000000000 +0100
+++ mythtv/libs/libmythtv/osdtypeteletext.h 2005-03-06 20:58:34.000000000
+0100
@@ -38,6 +38,7 @@
virtual void setBackgroundColor(int color);
virtual void drawBackground(int x, int y, bool transparent = false);
+ virtual void drawRect(int x, int y, int dx, int dy);
virtual void drawCharacter(int x, int y, QChar ch);
virtual void drawMosaic(int x, int y, int code);
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmythtv/tv_play.cpp mythtv/libs/libmythtv/tv_play.cpp
--- mythtv.orig/libs/libmythtv/tv_play.cpp 2005-03-23 17:37:39.877300760
+0100
+++ mythtv/libs/libmythtv/tv_play.cpp 2005-03-22 23:25:35.000000000 +0100
@@ -1406,6 +1406,8 @@
{
TeletextStop();
}
+ else if (action == "TOGGLEASPECT")
+ TeletextNavigate(-5);
else
handled = false;
}
@@ -3722,7 +3724,10 @@
case -4:
tt->keyPress(TTKey_PrevSubPage);
break;
- case 0 ... 9:
+ case -5:
+ tt->keyPress(TTKey_Transparent);
+ break;
+ case 0 ... 9:
tt->keyPress((TTKey)page);
break;
}
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmythtv/vbidecoder.cpp mythtv/libs/libmythtv/vbidecoder.cpp
--- mythtv.orig/libs/libmythtv/vbidecoder.cpp 2005-03-23 17:38:47.484022976
+0100
+++ mythtv/libs/libmythtv/vbidecoder.cpp 2005-03-23 16:13:56.000000000
+0100
@@ -48,6 +48,7 @@
m_curpage = 0x100;
m_sidebar = 0;
m_visible = false;
+ m_transparent = false;
m_tt_rows = 25;
m_tt_cols = 40;
@@ -101,23 +102,29 @@
if (!m_decoder->findPage(m_curpage, &page))
{
- for (int i=1; i<40; ++i)
- drawBackground(i, 0);
+ if (!m_transparent)
+ for (int i=1; i<40; ++i)
+ drawBackground(i, 0);
setForegroundColor(TTCOLOR_RED);
- char *str = "Teletext page unavailable :(";
+ char *str = "Teletext page unavailable";
for (unsigned int i=0; i<strlen(str); ++i)
{
drawCharacter(i+7, 0, str[i]);
}
goto out;
}
-
- for (int y=0; y < m_tt_rows; ++y)
+ for (int y=m_tt_rows-1; y >= 0 ; --y)
{
//do a redraw check here??
-
+ fgcolor = TTCOLOR_WHITE;
+ newfgcolor = TTCOLOR_WHITE;
+ bgcolor = TTCOLOR_BLACK;
+
+ setForegroundColor(fgcolor);
+ setBackgroundColor(bgcolor);
+
mosaic = false;
seperation = false;
conceal = false;
@@ -126,10 +133,13 @@
blink = false;
hold = false;
seperation = false;
-
- for (int x=0; x < m_tt_cols; ++x)
+
+ for (int x = 0; x < m_tt_cols; ++x)
{
- ch = page->data[y][x];
+ ch = page->data[y][x];
+ setForegroundColor(fgcolor);
+ setBackgroundColor(bgcolor);
+
switch(ch) {
case 0x00 ... 0x07: // alpha + foreground color
fgcolor = ch & 7;
@@ -196,13 +206,7 @@
default: // mapped to selected font
break;
}
-
- if (mosaic)
- {
- //XXX TODO get mosaic chars
- ch=' ';
- }
-
+
newfgcolor = fgcolor;
newbgcolor = bgcolor;
@@ -217,16 +221,26 @@
setForegroundColor(newfgcolor);
setBackgroundColor(newbgcolor);
- // drawBackground(x, y);
- drawCharacter(x, y, ch);
+
+ if (!m_transparent) drawBackground(x, y);
+
+ if ((mosaic) && (ch < 0x40 || ch > 0x5F))
+ {
+ setBackgroundColor(newfgcolor);
+ drawMosaic(x, y, ch);
+ }
+ else drawCharacter(x, y, ch);
+
}
}
out:
- drawCharacter(1, 0, m_pageinput[0]);
- drawCharacter(2, 0, m_pageinput[1]);
- drawCharacter(3, 0, m_pageinput[2]);
+ if (!page->subtitle)
+ {
+ drawCharacter(1, 0, m_pageinput[0]);
+ drawCharacter(2, 0, m_pageinput[1]);
+ drawCharacter(3, 0, m_pageinput[2]);
+ }
}
-
void TeletextView::keyPress(enum TTKey key)
{
bool numeric_input = false;
@@ -258,21 +272,34 @@
break;
case TTKey_NextPage:
- ++m_curpage;
- break;
+ m_curpage++;
+ if (m_curpage % 16 == 10)
+ m_curpage += 6;
+ if (m_curpage % 256 == 160)
+ m_curpage += 96;
+ break;
case TTKey_PrevPage:
- --m_curpage;
+ m_curpage--;
+ if (m_curpage % 16 == 15)
+ m_curpage -= 6;
+ if (m_curpage % 256 == 249)
+ m_curpage -= 96;
break;
case TTKey_NextSubPage:
m_curpage += 16;
+ if (m_curpage % 256 > 159)
+ m_curpage += 96;
break;
case TTKey_PrevSubPage:
m_curpage -= 16;
+ if (m_curpage % 256 > 159)
+ m_curpage -=96;
break;
case TTKey_Hold:
+ break;
case TTKey_Transparent:
- // XXX
+ m_transparent = !m_transparent;
break;
}
@@ -319,18 +346,13 @@
return a & 15;
}
-int hamm84(uint8_t *p)
+int hamm84(uint8_t *p, int *err)
{
- int a = 0;
- if (p[0] & 0x40)
- a += 1;
- if (p[0] & 0x10)
- a += 2;
- if (p[0] & 0x04)
- a += 4;
- if (p[0] & 0x01)
- a += 8;
-
+ int a = hamm84tab[p[0]];
+
+ if (a == 255)
+ *err = 1;
+
return a;
}
int hamm16(uint8_t *p, int *err)
@@ -409,18 +431,18 @@
min = pil & 0x3F;
if (pil == PIL(0, 15, 31, 63))
- printf(" PDC: Timer-control (no PDC)\n");
+ VERBOSE(VB_VBI," PDC: Timer-control (no PDC)");
else if (pil == PIL(0, 15, 30, 63))
- printf(" PDC: Recording inhibit/terminate\n");
+ VERBOSE(VB_VBI," PDC: Recording inhibit/terminate");
else if (pil == PIL(0, 15, 29, 63))
- printf(" PDC: Interruption\n");
+ VERBOSE(VB_VBI," PDC: Interruption");
else if (pil == PIL(0, 15, 28, 63))
- printf(" PDC: Continue\n");
+ VERBOSE(VB_VBI," PDC: Continue");
else if (pil == PIL(31, 15, 31, 63))
- printf(" PDC: No time\n");
+ VERBOSE(VB_VBI," PDC: No time");
else
- printf(" PDC: %05x, 200X-%02d-%02d %02d:%02d\n",
- pil, mon, day, hour, min);
+ VERBOSE(VB_VBI,QString(" PDC: %1, 200X-%2-%3 %4:%5")
+ .arg(pil).arg(mon).arg(day).arg(hour).arg(min));
}
int VbiDecoder::decodeVps(uint8_t *buf)
@@ -432,7 +454,7 @@
int c;
//unsigned char *buf = p;
- fprintf(stderr,"\nVPS:\n");
+ VERBOSE(VB_VBI,"\nVPS:");
c = vbi_bit_reverse[buf[1]];
if ((int8_t) c < 0) {
@@ -443,8 +465,9 @@
c &= 0x7F;
label[l] = printable(c);
l = (l + 1) % 16;
- printf(" 3-10: %02x %02x %02x %02x %02x %02x %02x %02x (\"%s\")\n",
- buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7],
pr_label);
+ VERBOSE(VB_VBI, QString(" 3-10: %1 %2 %3 %4 %5 %6 %7 %8 (\"%9\")")
+ .arg(buf[0]).arg(buf[1]).arg(buf[2]).arg(buf[3]).arg(buf[4])
+ .arg(buf[5]).arg(buf[6]).arg(buf[7]).arg(pr_label));
pcs = buf[2] >> 6;
cni = + ((buf[10] & 3) << 10)
+ ((buf[11] & 0xC0) << 2)
@@ -452,7 +475,7 @@
+ (buf[11] & 0x3F);
pil = ((buf[8] & 0x3F) << 14) + (buf[9] << 6) + (buf[10] >> 2);
pty = buf[12];
- printf(" CNI: %04x PCS: %d PTY: %d ", cni, pcs, pty);
+ VERBOSE(VB_VBI, QString("CNI: %1 PCS: %2 PTY: %3
").arg(cni).arg(pcs).arg(pty));
dumpPil(pil);
return c & 0xf0;
@@ -460,6 +483,7 @@
int VbiDecoder::decodeWss(uint8_t *buf)
{
+ return 1;
static const int wss_bits[8] = {
0, 0, 0, 1, 0, 1, 1, 1 };
unsigned char parity;
@@ -509,7 +533,7 @@
{
char c;
- printf("XDS: %02x %02x: ", buf[0], buf[1]);
+ VERBOSE(VB_VBI,QString("XDS: %1 %2").arg(buf[0]).arg(buf[1]));
c = oddParity(buf[0]) ? buf[0] & 0x7F : '?';
c = printable(c);
putchar(c);
@@ -540,7 +564,7 @@
else {
switch (b1 & 0x07) {
case 0x00: //attribute
- printf("<ATTRIBUTE %d %d>\n",b1,b2);
+ VERBOSE(VB_VBI, QString("<ATTRIBUTE %1
%2").arg(b1).arg(b2));
fflush(stdout);
break;
case 0x01: //midrow or char
@@ -613,7 +637,7 @@
char c = buf[0] & 0x7F;
static char cc[CC_SIZE + 1];
static int cc_idx;
- fprintf(stderr,"decode cc\n");
+ VERBOSE(VB_VBI,"decodeCaption");
if (line >=270) {/* in field 2 */
if (oddParity(buf[0]) && (c >= 0x01 && c <= 0x0F)) {
@@ -639,7 +663,7 @@
ccDecoder(buf[0], buf[1], cc_idx);
if (cc_idx == CC_SIZE) {
- printf("CC: %02x %02x: %s\n", buf[0], buf[1], cc);
+ VERBOSE(VB_VBI,QString("CC: %1 %2
%3").arg(buf[0]).arg(buf[1]).arg(cc));
memset(cc, 0, CC_SIZE);
cc_idx = 0;
@@ -657,8 +681,8 @@
QMutexLocker lock(&m_magazines[i].lock);
m_magazines[i].pages.clear();
m_magazines[i].current_page = NULL;
- fprintf(stderr, "resetting magazine %i, %i pages left\n",
- i, m_magazines[i].pages.size());
+ VERBOSE(VB_VBI, QString("resetting magazine %1, %2 pages left")
+ .arg(i).arg(m_magazines[i].pages.size()));
}
}
void VbiDecoder::charConversion(uint8_t *buf, int n, int lang)
@@ -667,7 +691,7 @@
while (n--)
{
- for (int j = 0; j < 13; j++)
+ for (int j = 0; j < 14; j++)
{
c = *buf & 0x7f;
if ( c == lang_chars[0][j])
@@ -705,7 +729,7 @@
int err = 0;
int latin1 = -1;
uint8_t magazine,packet;
- if (line != 999)
+ if (line < 999)
{
uint8_t header = hamm16(buf, &err);
@@ -714,16 +738,20 @@
magazine = header & 7;
packet = (header >> 3) & 0x1f;
+
+ buf += 2;
}
else
{
- magazine = 0;
+ int zahl1 = hamm84(buf,&err) * 16 + hamm84(buf+1,&err);
+
+ magazine = 0;
if (buf[0] & 0x40)
magazine += 1;
if (buf[0] & 0x10)
magazine += 2;
if (buf[0] & 0x04)
- magazine += 4;
+ magazine += 4;
packet = 0;
if (buf[0] & 0x01)
@@ -736,10 +764,19 @@
packet += 8;
if (buf[1] & 0x01)
packet += 16;
+
+// magazine = (zahl1 & 0x70) >> 4;
+// packet = (zahl1 % 128) / 128 + (zahl1 % 32) * 2;
+
+
+ if (err == 1)
+ {
+ VERBOSE(VB_VBI,"VbiDecoder:Error in magazine or packet number!");
+ return -4;
+ }
+ buf += 2;
}
QMutexLocker lock(&m_magazines[magazine].lock);
-
- buf += 2;
switch (packet) {
case 0:
@@ -748,7 +785,7 @@
TeletextPage *new_page = NULL;
int b1, b2, b3, b4;
- if (line != 999)
+ if (line < 999)
{
b1 = hamm16(buf, &err); // page number
b2 = hamm16(buf+2, &err); // subpage number + flags
@@ -757,12 +794,17 @@
}
else
{
- b1 = hamm84(buf+1)*16+hamm84(buf);
- b2 = hamm84(buf+3)*16+hamm84(buf+2);
- b3 = hamm84(buf+5)*16+hamm84(buf+4);
- b4 = hamm84(buf+7)*16+hamm84(buf+6);
+ b1 = hamm84(buf+1,&err)*16+hamm84(buf,&err);
+ b2 = hamm84(buf+3,&err)*16+hamm84(buf+2,&err);
+ b3 = hamm84(buf+5,&err)*16+hamm84(buf+4,&err);
+ b4 = hamm84(buf+7,&err)*16+hamm84(buf+6,&err);
}
-
+ if (err == 1)
+ {
+ VERBOSE(VB_VBI,"vbidecoder: Error in page number!");
+ return -4;
+ }
+ VERBOSE(VB_VBI,QString("Page Header found: Magazine %1, Page Number
%2").arg(magazine).arg(b1));
m_serialmode = (b2 + b3 * 256) & 0x3f7f;
if (m_serialmode)
for (int i=0; i<8; ++i)
@@ -786,7 +828,14 @@
new_page->lines = 1;
new_page->flof = 0;
+ if (line == 1000)
+ new_page->subtitle = true;
+ else
+ new_page->subtitle = false;
+
//XXX TODO move to text drawing section?
+ for (int j = 0; j<8; j++)
+ buf[j] = 32;
for (int j = 8; j <40; j++)
buf[j]=bitswap[buf[j]] & 0x7F;
@@ -812,7 +861,6 @@
TeletextPage *page = m_magazines[magazine].current_page;
//page->lines |= 1 << packett;
-
//XXX TODO move to text drawing section
for (int j = 0; j < 40; j++)
buf[j]=bitswap[buf[j]] & 0x7F;
@@ -870,7 +918,7 @@
buf += 3;
}
else {
- fprintf(stderr,"VbiDecoder: unknown VBI data stream\n");
+ VERBOSE(VB_VBI,"VbiDecoder: unknown VBI data stream");
return;
}
@@ -901,33 +949,38 @@
return;
}
-void VbiDecoder::processDVBTTData(uint8_t *buf,int len)
+void VbiDecoder::processDVBTTData(uint8_t *buf, int len)
{
uint8_t data[43];
int i,l,id2;
long linemask[2] = { 0,0 };
int count=0;
-
+
while (count<len)
{
- if (buf[0]==16)
+ if (*buf==16)
{
- count++;
- buf++;
+ buf++;
+ count++;
}
- if ((buf[0]==2) || (buf[0]==3))
+ int k = *buf;
+ if ((k==2) || (k==3))
{
// DVB Teletext
- buf += 3;
count += 3;
+ buf += 3;
int err=0;
memcpy(data,buf+1,42);
- err = decodeTeletext(data,999);
- }
- buf += 43;
+ if (k==2)
+ err = decodeTeletext(data,999);
+ else
+ err = decodeTeletext(data,1000);
+
+ }
count += 43;
+ buf += 43;
}
return;
}
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmythtv/vbidecoder.h mythtv/libs/libmythtv/vbidecoder.h
--- mythtv.orig/libs/libmythtv/vbidecoder.h 2005-03-15 15:53:48.000000000
+0100
+++ mythtv/libs/libmythtv/vbidecoder.h 2005-03-22 13:26:34.000000000 +0100
@@ -43,7 +43,8 @@
long lines; // 1 bit for each line received
uint8_t data[25][40]; // page contents
int flof; // page has FastText links
-
+ bool subtitle; // page is subtitle page
+
std::map<int, TeletextPage> subpages;
};
@@ -97,6 +98,7 @@
int m_curpage;
int m_sidebar;
bool m_visible;
+ bool m_transparent;
int m_tt_cols;
int m_tt_rows;
@@ -115,7 +117,7 @@
~VbiDecoder();
void processVbiData(uint8_t *p);
- void processDVBTTData(uint8_t *p,int len);
+ void processDVBTTData(uint8_t *p, int len);
void dumpPil(int pil);
int decodeTeletext(uint8_t *buf, int line);
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/libs/libmythtv/vbilut.h mythtv/libs/libmythtv/vbilut.h
--- mythtv.orig/libs/libmythtv/vbilut.h 2005-03-15 15:53:48.000000000 +0100
+++ mythtv/libs/libmythtv/vbilut.h 2005-03-23 14:52:55.000000000 +0100
@@ -103,6 +103,33 @@
0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x010d, 0x100f,
0x100f, 0x010e, 0x010f, 0x100f, 0x010e, 0x000e, 0x100f, 0x010e,
};
+static uint8_t hamm84tab[256] = {
+ 255,255,255,255,255,255,255,255,255, 0, // 0 - 9
+ 255, 8,255,255,255,255,255,255,255,255, // 10 - 19
+ 255,255,255,255,255,255,255,255, 6,255, // 20 - 29
+ 14,255,255,255,255,255, 12,255, 4,255, // 30 - 39
+ 255,255,255,255,255,255,255,255,255, 10, // 40 - 49
+ 255, 2,255,255,255,255,255,255,255,255, // 50 - 59
+ 255,255,255,255, 1,255, 9,255,255,255, // 60 - 69
+ 255,255,255,255,255,255,255,255,255,255, // 70 - 79
+ 255,255,255,255,255, 7,255, 13,255,255, // 80 - 89
+ 255,255,255,255,255,255,255,255,255,255, // 90 - 99
+ 255,255,255,255,255,255,255,255,255, 13, // 100 - 109
+ 255, 5,255,255,255,255,255,255,255,255, // 110 - 119
+ 11,255, 3,255,255,255,255,255,255,255, // 120 - 129
+ 255,255,255, 12,255, 4,255,255,255,255, // 130 - 139
+ 255,255,255,255, 10,255, 2,255,255,255, // 140 - 149
+ 255,255,255,255,255,255,255,255,255,255, // 150 - 159
+ 255,255,255,255,255,255,255,255, 0,255, // 160 - 169
+ 8,255,255,255,255,255,255,255,255,255, // 170 - 179
+ 255,255,255,255,255,255,255,255,255, 6, // 180 - 189
+ 255, 14,255,255,255,255,255,255,255,255, // 190 - 199
+ 255,255,255,255, 13,255, 5,255,255,255, // 200 - 209
+ 255,255,255,255,255,255,255, 11,255, 3, // 210 - 219
+ 255,255,255,255,255, 1,255, 9,255,255, // 220 - 229
+ 255,255,255,255,255,255,255,255,255,255, // 230 - 239
+ 255,255,255,255, 7,255, 15,255,255,255, // 240 - 249
+ 255,255,255,255,255,255 }; // 250 - 255
static uint8_t unham84tab[256] = {
/*0x*/ 0x01, 0xff, 0x81, 0x01, 0xff, 0x00, 0x01, 0xff, 0xff, 0x02, 0x01, 0xff,
0x0a, 0xff, 0xff, 0x07,
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/programs/mythbackend/main.cpp mythtv/programs/mythbackend/main.cpp
--- mythtv.orig/programs/mythbackend/main.cpp 2005-03-05 01:00:38.000000000
+0100
+++ mythtv/programs/mythbackend/main.cpp 2005-03-23 16:00:49.000000000
+0100
@@ -316,6 +316,11 @@
print_verbose_messages |= VB_SIPARSER;
verboseString += " " + *it;
}
+ else if(!strcmp(*it,"vbi"))
+ {
+ print_verbose_messages |= VB_VBI;
+ verboseString += " " + *it;
+ }
else
{
cerr << "Unknown argument for -v/--verbose: "
diff -u -r --exclude CVS --exclude '*.o' --exclude '*.so'
mythtv.orig/programs/mythfrontend/main.cpp mythtv/programs/mythfrontend/main.cpp
--- mythtv.orig/programs/mythfrontend/main.cpp 2005-03-21 03:21:47.000000000
+0100
+++ mythtv/programs/mythfrontend/main.cpp 2005-03-23 16:20:04.000000000
+0100
@@ -840,6 +840,11 @@
print_verbose_messages |= VB_LIBAV;
verboseString += " " + *it;
}
+ else if (!strcmp(*it,"vbi"))
+ {
+ print_verbose_messages |= VB_VBI;
+ verboseString += " " + *it;
+ }
else
{
cerr << "Unknown argument for -v/--verbose: "
_______________________________________________ mythtv-dev mailing list [email protected] http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
