redbutton-devel Mailing List for RedButton MHEG Engine (Page 14)
Brought to you by:
skilvington
You can subscribe to this list here.
| 2006 |
Jan
(1) |
Feb
(4) |
Mar
(27) |
Apr
(6) |
May
(46) |
Jun
(45) |
Jul
(7) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(10) |
Dec
(11) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(49) |
Feb
(29) |
Mar
(35) |
Apr
(43) |
May
(23) |
Jun
(4) |
Jul
(1) |
Aug
(58) |
Sep
(66) |
Oct
(27) |
Nov
(15) |
Dec
(1) |
| 2008 |
Jan
(11) |
Feb
|
Mar
(8) |
Apr
|
May
|
Jun
(30) |
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(3) |
Dec
(6) |
| 2009 |
Jan
(6) |
Feb
(1) |
Mar
(2) |
Apr
(5) |
May
(2) |
Jun
(1) |
Jul
(7) |
Aug
|
Sep
(2) |
Oct
(2) |
Nov
|
Dec
(6) |
| 2010 |
Jan
(6) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(6) |
Sep
(4) |
Oct
|
Nov
(11) |
Dec
(4) |
| 2011 |
Jan
|
Feb
(11) |
Mar
(8) |
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
(4) |
Oct
|
Nov
(2) |
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <ski...@us...> - 2007-08-10 16:26:56
|
Revision: 321
http://redbutton.svn.sourceforge.net/redbutton/?rev=321&view=rev
Author: skilvington
Date: 2007-08-10 09:26:50 -0700 (Fri, 10 Aug 2007)
Log Message:
-----------
make sure ffmpeg doesn't read passed the end of our buffer
Modified Paths:
--------------
redbutton-browser/trunk/MHEGDisplay.c
Modified: redbutton-browser/trunk/MHEGDisplay.c
===================================================================
--- redbutton-browser/trunk/MHEGDisplay.c 2007-07-16 16:00:42 UTC (rev 320)
+++ redbutton-browser/trunk/MHEGDisplay.c 2007-08-10 16:26:50 UTC (rev 321)
@@ -852,6 +852,7 @@
AVCodec *codec;
AVFrame *yuv_frame;
AVFrame *rgb_frame;
+ unsigned char *padded;
unsigned char *data;
unsigned int size;
int used;
@@ -880,8 +881,13 @@
if((rgb_frame = avcodec_alloc_frame()) == NULL)
fatal("Out of memory");
+ /* ffmpeg may read passed the end of the buffer, so pad it out */
+ padded = safe_malloc(mpeg->size + FF_INPUT_BUFFER_PADDING_SIZE);
+ memcpy(padded, mpeg->data, mpeg->size);
+ memset(padded + mpeg->size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+
/* decode the YUV frame */
- data = mpeg->data;
+ data = padded;
size = mpeg->size;
do
{
@@ -914,6 +920,7 @@
}
/* clean up */
+ safe_free(padded);
safe_free(rgba);
av_free(yuv_frame);
av_free(rgb_frame);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-07-16 16:00:45
|
Revision: 320
http://svn.sourceforge.net/redbutton/?rev=320&view=rev
Author: skilvington
Date: 2007-07-16 09:00:42 -0700 (Mon, 16 Jul 2007)
Log Message:
-----------
factor out converting MHEG coords to screen coords
Modified Paths:
--------------
redbutton-browser/trunk/MHEGCanvas.c
redbutton-browser/trunk/MHEGDisplay.c
redbutton-browser/trunk/MHEGDisplay.h
redbutton-browser/trunk/MHEGStreamPlayer.c
Modified: redbutton-browser/trunk/MHEGCanvas.c
===================================================================
--- redbutton-browser/trunk/MHEGCanvas.c 2007-06-26 14:30:03 UTC (rev 319)
+++ redbutton-browser/trunk/MHEGCanvas.c 2007-07-16 16:00:42 UTC (rev 320)
@@ -21,8 +21,8 @@
MHEGDisplay *d = MHEGEngine_getDisplay();
/* scale width/height if fullscreen */
- c->width = (width * d->xres) / MHEG_XRES;
- c->height = (height * d->yres) / MHEG_YRES;
+ c->width = MHEGDisplay_scaleX(d, width);
+ c->height = MHEGDisplay_scaleY(d, height);
/* no border set yet */
c->border = 0;
@@ -83,7 +83,7 @@
error("MHEGCanvas_setBorder: LineStyle %d not supported (using a solid line)", style);
/* scale width if fullscreen */
- c->border = (width * d->xres) / MHEG_XRES;
+ c->border = MHEGDisplay_scaleX(d, width);
/* draw the border */
gcvals.foreground = pixel_value(c->pic_format, colour);
@@ -160,11 +160,11 @@
error("MHEGCanvas_drawArc: LineStyle %d not supported (using a solid line)", style);
/* scale up if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
- width = (width * d->xres) / MHEG_XRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
+ width = MHEGDisplay_scaleX(d, width);
/* set up the GC values */
gcvals.foreground = pixel_value(c->pic_format, colour);
@@ -200,11 +200,11 @@
error("MHEGCanvas_drawSector: LineStyle %d not supported (using a solid line)", style);
/* scale up if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
- width = (width * d->xres) / MHEG_XRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
+ width = MHEGDisplay_scaleX(d, width);
/* fill it */
gcvals.foreground = pixel_value(c->pic_format, fill_col);
@@ -265,11 +265,11 @@
error("MHEGCanvas_drawLine: LineStyle %d not supported (using a solid line)", style);
/* scale up if fullscreen */
- x1 = (p1->x_position * d->xres) / MHEG_XRES;
- y1 = (p1->y_position * d->yres) / MHEG_YRES;
- x2 = (p2->x_position * d->xres) / MHEG_XRES;
- y2 = (p2->y_position * d->yres) / MHEG_YRES;
- width = (width * d->xres) / MHEG_XRES;
+ x1 = MHEGDisplay_scaleX(d, p1->x_position);
+ y1 = MHEGDisplay_scaleY(d, p1->y_position);
+ x2 = MHEGDisplay_scaleX(d, p2->x_position);
+ y2 = MHEGDisplay_scaleY(d, p2->y_position);
+ width = MHEGDisplay_scaleX(d, width);
/* set up the GC values */
gcvals.foreground = pixel_value(c->pic_format, colour);
@@ -298,11 +298,11 @@
error("MHEGCanvas_drawOval: LineStyle %d not supported (using a solid line)", style);
/* scale up if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
- width = (width * d->xres) / MHEG_XRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
+ width = MHEGDisplay_scaleX(d, width);
/* fill it */
gcvals.foreground = pixel_value(c->pic_format, fill_col);
@@ -344,7 +344,7 @@
error("MHEGCanvas_drawPolygon: LineStyle %d not supported (using a solid line)", style);
/* scale up if fullscreen */
- width = (width * d->xres) / MHEG_XRES;
+ width = MHEGDisplay_scaleX(d, width);
/* convert the XYPosition list into an array of XPoint's */
nxpts = 0;
@@ -361,8 +361,8 @@
for(i=0; i<nxpts; i++)
{
/* scale up if fullscreen */
- xpts[i].x = (pos->item.x_position * d->xres) / MHEG_XRES;
- xpts[i].y = (pos->item.y_position * d->yres) / MHEG_YRES;
+ xpts[i].x = MHEGDisplay_scaleX(d, pos->item.x_position);
+ xpts[i].y = MHEGDisplay_scaleY(d, pos->item.y_position);
pos = pos->next;
}
@@ -376,8 +376,8 @@
if(width > 0)
{
/* close the polygon */
- xpts[nxpts].x = (xy_list->item.x_position * d->xres) / MHEG_XRES;
- xpts[nxpts].y = (xy_list->item.y_position * d->yres) / MHEG_YRES;
+ xpts[nxpts].x = MHEGDisplay_scaleX(d, xy_list->item.x_position);
+ xpts[nxpts].y = MHEGDisplay_scaleY(d, xy_list->item.y_position);
/* set the line width and colour */
gcvals.foreground = pixel_value(c->pic_format, line_col);
gcvals.line_width = width;
@@ -414,7 +414,7 @@
error("MHEGCanvas_drawPolyline: LineStyle %d not supported (using a solid line)", style);
/* scale up if fullscreen */
- width = (width * d->xres) / MHEG_XRES;
+ width = MHEGDisplay_scaleX(d, width);
/* convert the XYPosition list into an array of XPoint's */
nxpts = 0;
@@ -430,8 +430,8 @@
for(i=0; i<nxpts; i++)
{
/* scale up if fullscreen */
- xpts[i].x = (pos->item.x_position * d->xres) / MHEG_XRES;
- xpts[i].y = (pos->item.y_position * d->yres) / MHEG_YRES;
+ xpts[i].x = MHEGDisplay_scaleX(d, pos->item.x_position);
+ xpts[i].y = MHEGDisplay_scaleY(d, pos->item.y_position);
pos = pos->next;
}
@@ -466,11 +466,11 @@
error("MHEGCanvas_drawRectangle: LineStyle %d not supported (using a solid line)", style);
/* scale up if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
- width = (width * d->xres) / MHEG_XRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
+ width = MHEGDisplay_scaleX(d, width);
/* fill it */
gcvals.foreground = pixel_value(c->pic_format, fill_col);
Modified: redbutton-browser/trunk/MHEGDisplay.c
===================================================================
--- redbutton-browser/trunk/MHEGDisplay.c 2007-06-26 14:30:03 UTC (rev 319)
+++ redbutton-browser/trunk/MHEGDisplay.c 2007-07-16 16:00:42 UTC (rev 320)
@@ -367,10 +367,10 @@
unsigned int w, h;
/* scale if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
/*
* if video is being displayed, the current frame will already be in d->contents
@@ -426,10 +426,10 @@
XRectangle clip;
/* scale if fullscreen */
- clip.x = (pos->x_position * d->xres) / MHEG_XRES;
- clip.y = (pos->y_position * d->yres) / MHEG_YRES;
- clip.width = (box->x_length * d->xres) / MHEG_XRES;
- clip.height = (box->y_length * d->yres) / MHEG_YRES;
+ clip.x = MHEGDisplay_scaleX(d, pos->x_position);
+ clip.y = MHEGDisplay_scaleY(d, pos->y_position);
+ clip.width = MHEGDisplay_scaleX(d, box->x_length);
+ clip.height = MHEGDisplay_scaleY(d, box->y_length);
XRenderSetPictureClipRectangles(d->dpy, d->next_overlay_pic, 0, 0, &clip, 1);
@@ -478,11 +478,11 @@
display_colour(&rcol, col);
/* scale if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (len * d->xres) / MHEG_XRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, len);
/* aspect ratio */
- h = (width * d->yres) / MHEG_YRES;
+ h = MHEGDisplay_scaleY(d, width);
/* TODO */
if(style != LineStyle_solid)
@@ -515,11 +515,11 @@
display_colour(&rcol, col);
/* scale if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- h = (len * d->yres) / MHEG_YRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ h = MHEGDisplay_scaleY(d, len);
/* aspect ratio */
- w = (width * d->xres) / MHEG_XRES;
+ w = MHEGDisplay_scaleX(d, width);
/* TODO */
if(style != LineStyle_solid)
@@ -550,10 +550,10 @@
display_colour(&rcol, col);
/* scale if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
XRenderFillRectangle(d->dpy, PictOpOver, d->next_overlay_pic, &rcol, x, y, w, h);
@@ -574,10 +574,10 @@
unsigned int w, h;
/* scale if fullscreen */
- x = (pos->x_position * d->xres) / MHEG_XRES;
- y = (pos->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
+ x = MHEGDisplay_scaleX(d, pos->x_position);
+ y = MHEGDisplay_scaleY(d, pos->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
XRenderFillRectangle(d->dpy, PictOpSrc, d->next_overlay_pic, &rcol, x, y, w, h);
@@ -603,12 +603,12 @@
* scale up if fullscreen
* the bitmap itself is scaled when it is created in MHEGDisplay_newBitmap()
*/
- src_x = (src->x_position * d->xres) / MHEG_XRES;
- src_y = (src->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
- dst_x = (dst->x_position * d->xres) / MHEG_XRES;
- dst_y = (dst->y_position * d->yres) / MHEG_YRES;
+ src_x = MHEGDisplay_scaleX(d, src->x_position);
+ src_y = MHEGDisplay_scaleY(d, src->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
+ dst_x = MHEGDisplay_scaleX(d, dst->x_position);
+ dst_y = MHEGDisplay_scaleY(d, dst->y_position);
XRenderComposite(d->dpy, PictOpOver, bitmap->image_pic, None, d->next_overlay_pic,
src_x, src_y, src_x, src_y, dst_x, dst_y, w, h);
@@ -631,12 +631,12 @@
* scale up if fullscreen
* the canvas image itself is scaled when it is created
*/
- src_x = (src->x_position * d->xres) / MHEG_XRES;
- src_y = (src->y_position * d->yres) / MHEG_YRES;
- w = (box->x_length * d->xres) / MHEG_XRES;
- h = (box->y_length * d->yres) / MHEG_YRES;
- dst_x = (dst->x_position * d->xres) / MHEG_XRES;
- dst_y = (dst->y_position * d->yres) / MHEG_YRES;
+ src_x = MHEGDisplay_scaleX(d, src->x_position);
+ src_y = MHEGDisplay_scaleY(d, src->y_position);
+ w = MHEGDisplay_scaleX(d, box->x_length);
+ h = MHEGDisplay_scaleY(d, box->y_length);
+ dst_x = MHEGDisplay_scaleX(d, dst->x_position);
+ dst_y = MHEGDisplay_scaleY(d, dst->y_position);
XRenderComposite(d->dpy, PictOpOver, canvas->contents_pic, None, d->next_overlay_pic,
src_x, src_y, src_x, src_y, dst_x, dst_y, w, h);
@@ -679,9 +679,9 @@
display_colour(&rcol, &text->col);
/* scale the x origin if fullscreen */
- orig_x = (pos->x_position * d->xres) / MHEG_XRES;
+ orig_x = MHEGDisplay_scaleX(d, pos->x_position);
/* y coord does not change */
- y = ((pos->y_position + text->y) * d->yres) / MHEG_YRES;
+ y = MHEGDisplay_scaleY(d, pos->y_position + text->y);
/* set the text foreground colour */
XRenderFillRectangle(d->dpy, PictOpSrc, d->textfg_pic, &rcol, 0, 0, 1, 1);
@@ -735,7 +735,7 @@
/* render it */
XftUnlockFace(font->font);
/* round up/down the X coord */
- scrn_x = (x * d->xres) / MHEG_XRES;
+ scrn_x = MHEGDisplay_scaleX(d, x);
scrn_x = (scrn_x + (face->units_per_EM / 2)) / face->units_per_EM;
XftGlyphRender(d->dpy, PictOpOver, d->textfg_pic, font->font, d->next_overlay_pic,
0, 0, orig_x + scrn_x, y,
@@ -1021,6 +1021,7 @@
/* if we are using fullscreen mode, scale the image */
if(d->fullscreen)
{
+printf("TODO: MHEGBitmap_fromRGBA: take aspect ratio into account\n");
/* set up the matrix to scale it */
XTransform xform;
/* X */
Modified: redbutton-browser/trunk/MHEGDisplay.h
===================================================================
--- redbutton-browser/trunk/MHEGDisplay.h 2007-06-26 14:30:03 UTC (rev 319)
+++ redbutton-browser/trunk/MHEGDisplay.h 2007-07-16 16:00:42 UTC (rev 320)
@@ -89,5 +89,9 @@
/* utils */
bool intersects(XYPosition *, OriginalBoxSize *, XYPosition *, OriginalBoxSize *, XYPosition *, OriginalBoxSize *);
+/* convert X/Y coords from MHEG resolution (0->720, 0->576) to output resolution */
+#define MHEGDisplay_scaleX(DPY, X) (((X) * (DPY)->xres) / MHEG_XRES)
+#define MHEGDisplay_scaleY(DPY, Y) (((Y) * (DPY)->yres) / MHEG_YRES)
+
#endif /* __MHEGDISPLAY_H__ */
Modified: redbutton-browser/trunk/MHEGStreamPlayer.c
===================================================================
--- redbutton-browser/trunk/MHEGStreamPlayer.c 2007-06-26 14:30:03 UTC (rev 319)
+++ redbutton-browser/trunk/MHEGStreamPlayer.c 2007-07-16 16:00:42 UTC (rev 320)
@@ -630,11 +630,8 @@
}
pthread_mutex_unlock(&p->video->inst.scaled_lock);
/* scale up if fullscreen */
- if(d->fullscreen)
- {
- out_width = (out_width * d->xres) / MHEG_XRES;
- out_height = (out_height * d->yres) / MHEG_YRES;
- }
+ out_width = MHEGDisplay_scaleX(d, out_width);
+ out_height = MHEGDisplay_scaleY(d, out_height);
MHEGVideoOutput_prepareFrame(&vo, vf, out_width, out_height);
/* remember the PTS for this frame */
last_pts = vf->pts;
@@ -669,15 +666,12 @@
off_y = p->video->inst.VideoDecodeOffset.y_position;
pthread_mutex_unlock(&p->video->inst.bbox_lock);
/* scale if fullscreen */
- if(d->fullscreen)
- {
- out_x = (out_x * d->xres) / MHEG_XRES;
- out_y = (out_y * d->yres) / MHEG_YRES;
- vid_width = (vid_width * d->xres) / MHEG_XRES;
- vid_height = (vid_height * d->yres) / MHEG_YRES;
- off_x = (off_x * d->xres) / MHEG_XRES;
- off_y = (off_y * d->yres) / MHEG_YRES;
- }
+ out_x = MHEGDisplay_scaleX(d, out_x);
+ out_y = MHEGDisplay_scaleY(d, out_y);
+ vid_width = MHEGDisplay_scaleX(d, vid_width);
+ vid_height = MHEGDisplay_scaleY(d, vid_height);
+ off_x = MHEGDisplay_scaleX(d, off_x);
+ off_y = MHEGDisplay_scaleY(d, off_y);
/* if the frame is smaller or larger than the VideoClass, centre it */
out_x += (vid_width - out_width) / 2;
out_y += (vid_height - out_height) / 2;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-06-26 14:30:21
|
Revision: 319
http://svn.sourceforge.net/redbutton/?rev=319&view=rev
Author: skilvington
Date: 2007-06-26 07:30:03 -0700 (Tue, 26 Jun 2007)
Log Message:
-----------
be more verbose about ops on Variables
Modified Paths:
--------------
redbutton-browser/trunk/IntegerVariableClass.c
redbutton-browser/trunk/OctetStringVariableClass.c
redbutton-browser/trunk/VariableClass.c
Modified: redbutton-browser/trunk/IntegerVariableClass.c
===================================================================
--- redbutton-browser/trunk/IntegerVariableClass.c 2007-06-13 09:40:44 UTC (rev 318)
+++ redbutton-browser/trunk/IntegerVariableClass.c 2007-06-26 14:30:03 UTC (rev 319)
@@ -139,6 +139,8 @@
val = GenericInteger_getInteger(¶ms->value, caller_gid);
+ verbose("Add: %d + %d", v->inst.Value.u.integer, val);
+
v->inst.Value.u.integer += val;
return;
@@ -157,6 +159,8 @@
val = GenericInteger_getInteger(¶ms->value, caller_gid);
+ verbose("Subtract: %d - %d", v->inst.Value.u.integer, val);
+
v->inst.Value.u.integer -= val;
return;
@@ -175,6 +179,8 @@
val = GenericInteger_getInteger(¶ms->value, caller_gid);
+ verbose("Multiply: %d * %d", v->inst.Value.u.integer, val);
+
v->inst.Value.u.integer *= val;
return;
@@ -193,6 +199,8 @@
val = GenericInteger_getInteger(¶ms->value, caller_gid);
+ verbose("Divide: %d / %d", v->inst.Value.u.integer, val);
+
v->inst.Value.u.integer /= val;
return;
@@ -211,6 +219,8 @@
val = GenericInteger_getInteger(¶ms->value, caller_gid);
+ verbose("Modulo: %d %% %d", v->inst.Value.u.integer, val);
+
v->inst.Value.u.integer %= val;
return;
Modified: redbutton-browser/trunk/OctetStringVariableClass.c
===================================================================
--- redbutton-browser/trunk/OctetStringVariableClass.c 2007-06-13 09:40:44 UTC (rev 318)
+++ redbutton-browser/trunk/OctetStringVariableClass.c 2007-06-26 14:30:03 UTC (rev 319)
@@ -115,6 +115,8 @@
target = &v->inst.Value.u.octetstring;
append = GenericOctetString_getOctetString(¶ms->append_value, caller_gid);
+ verbose("Append: '%.*s' + '%.*s'", target->size, target->data, append->size, append->data);
+
target->data = safe_realloc(target->data, target->size + append->size);
memcpy(&target->data[target->size], append->data, append->size);
target->size += append->size;
Modified: redbutton-browser/trunk/VariableClass.c
===================================================================
--- redbutton-browser/trunk/VariableClass.c 2007-06-13 09:40:44 UTC (rev 318)
+++ redbutton-browser/trunk/VariableClass.c 2007-06-26 14:30:03 UTC (rev 319)
@@ -4,6 +4,7 @@
#include "MHEGEngine.h"
#include "ISO13522-MHEG-5.h"
+#include "VariableClass.h"
#include "RootClass.h"
#include "GenericBoolean.h"
#include "BooleanVariableClass.h"
@@ -163,6 +164,8 @@
break;
}
+ verbose("SetVariable: %s", VariableClass_stringValue(v));
+
return;
}
@@ -249,7 +252,7 @@
case OriginalValue_octetstring:
oct = &v->inst.Value.u.octetstring;
_value = safe_realloc(_value, oct->size + 128);
- snprintf(_value, oct->size + 128, "OctetString %u %.*s", oct->size, oct->size, oct->data);
+ snprintf(_value, oct->size + 128, "OctetString '%.*s'", oct->size, oct->data);
return _value;
case OriginalValue_object_reference:
@@ -260,7 +263,7 @@
case OriginalValue_content_reference:
oct = &v->inst.Value.u.content_reference;
_value = safe_realloc(_value, oct->size + 128);
- snprintf(_value, oct->size + 128, "ContentReference %u %.*s", oct->size, oct->size, oct->data);
+ snprintf(_value, oct->size + 128, "ContentReference '%.*s'", oct->size, oct->data);
return _value;
default:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Simon K. <s.k...@er...> - 2007-06-18 16:27:36
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, sourceforge have changed the URLs they use for subversion access, so redbutton svn has moved from: https://svn.sourceforge.net/svnroot/redbutton to: https://redbutton.svn.sourceforge.net/svnroot/redbutton the old URL will stop working soon (end of June I think) so if you have a copy of the svn tree, doing "svn update" will probably not work either. to fix this, you could either checkout a new version of the svn code using the new URL, ie: svn co https://redbutton.svn.sourceforge.net/svnroot/redbutton or you can run this command in the top level (ie in the "redbutton" directory) of a tree you have already checked out: svn switch --relocate https://svn.sourceforge.net/svnroot/redbutton https://redbutton.svn.sourceforge.net/svnroot/redbutton - -- Simon Kilvington -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.4 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGdrJemt9ZifioJSwRAqy1AJ9L2eeXDGuWxEXCtC6/FLwteNunBQCfTavC 2mbnb5EmCbB/brWYk8+phLk= =ueeS -----END PGP SIGNATURE----- |
|
From: <ski...@us...> - 2007-06-13 09:40:47
|
Revision: 318
http://svn.sourceforge.net/redbutton/?rev=318&view=rev
Author: skilvington
Date: 2007-06-13 02:40:44 -0700 (Wed, 13 Jun 2007)
Log Message:
-----------
missed another URL
Modified Paths:
--------------
www/index.html
Modified: www/index.html
===================================================================
--- www/index.html 2007-06-13 09:18:34 UTC (rev 317)
+++ www/index.html 2007-06-13 09:40:44 UTC (rev 318)
@@ -19,7 +19,7 @@
Just un-tar them and type 'make'.
<P>
You can browse the latest version of the source
-<A HREF="http://svn.sourceforge.net/redbutton/">here.</A>
+<A HREF="http://redbutton.svn.sourceforge.net/">here.</A>
You can download the latest source code with the following Subversion command:
<PRE>
svn checkout https://redbutton.svn.sourceforge.net/svnroot/redbutton
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-06-13 09:18:40
|
Revision: 317
http://svn.sourceforge.net/redbutton/?rev=317&view=rev
Author: skilvington
Date: 2007-06-13 02:18:34 -0700 (Wed, 13 Jun 2007)
Log Message:
-----------
sourceforge.net has changed its svn URLs
Modified Paths:
--------------
www/index.html
Modified: www/index.html
===================================================================
--- www/index.html 2007-05-29 16:19:45 UTC (rev 316)
+++ www/index.html 2007-06-13 09:18:34 UTC (rev 317)
@@ -22,9 +22,11 @@
<A HREF="http://svn.sourceforge.net/redbutton/">here.</A>
You can download the latest source code with the following Subversion command:
<PRE>
-svn checkout https://svn.sourceforge.net/svnroot/redbutton/
+svn checkout https://redbutton.svn.sourceforge.net/svnroot/redbutton
</PRE>
<P>
+The latest versions will be in the 'trunk' sub-directories.
+<P>
You can subscribe to the development mailing list
<A HREF="http://lists.sourceforge.net/lists/listinfo/redbutton-devel">here.</A>
<H2>rb-download</H2>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-29 16:19:49
|
Revision: 316
http://svn.sourceforge.net/redbutton/?rev=316&view=rev
Author: skilvington
Date: 2007-05-29 09:19:45 -0700 (Tue, 29 May 2007)
Log Message:
-----------
nag me when we need to change the aspect ratio
Modified Paths:
--------------
redbutton-browser/trunk/SceneClass.c
Modified: redbutton-browser/trunk/SceneClass.c
===================================================================
--- redbutton-browser/trunk/SceneClass.c 2007-05-25 15:35:18 UTC (rev 315)
+++ redbutton-browser/trunk/SceneClass.c 2007-05-29 16:19:45 UTC (rev 316)
@@ -86,6 +86,12 @@
RootClass_Preparation(&s->rootClass);
}
+ if(s->have_aspect_ratio)
+ {
+/* TODO */
+printf("TODO: SceneClass: %s; aspect_ratio=%d:%d\n", ExternalReference_name(&s->rootClass.inst.ref), s->aspect_ratio.width, s->aspect_ratio.height);
+ }
+
/* do Activation of the GroupClass */
if(s->have_on_start_up)
ActionClass_execute(&s->on_start_up, &s->rootClass.inst.ref.group_identifier);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Mario R. <mar...@go...> - 2007-05-27 20:43:39
|
Hi, I just would like to report a small issue I've noticed when using redbutton. Page 199 of the teletext of BBC ONE. If I scroll slowly everything works ok. If I scroll faster than the speed of repainting the list on the right, when I stop, the corresponding list (on the right) is displayed and then erased (like it happens when the selection is moved). Good that after the next arrow move, the new list is displayed and stays on. BTW, I've been using redbutton for a while and its stability has improved a lot! Good job! ciao |
|
From: <ski...@us...> - 2007-05-25 15:36:11
|
Revision: 315
http://svn.sourceforge.net/redbutton/?rev=315&view=rev
Author: skilvington
Date: 2007-05-25 08:35:18 -0700 (Fri, 25 May 2007)
Log Message:
-----------
add remaining ElementaryAction's
Modified Paths:
--------------
redbutton-browser/trunk/ElementaryAction.c
redbutton-browser/trunk/HotspotClass.c
redbutton-browser/trunk/HotspotClass.h
redbutton-browser/trunk/PushButtonClass.c
redbutton-browser/trunk/PushButtonClass.h
redbutton-browser/trunk/SwitchButtonClass.c
redbutton-browser/trunk/SwitchButtonClass.h
Modified: redbutton-browser/trunk/ElementaryAction.c
===================================================================
--- redbutton-browser/trunk/ElementaryAction.c 2007-05-24 08:47:46 UTC (rev 314)
+++ redbutton-browser/trunk/ElementaryAction.c 2007-05-25 15:35:18 UTC (rev 315)
@@ -242,8 +242,14 @@
if(((ref = GenericObjectReference_getObjectReference(&e->u.deselect, caller_gid)) != NULL)
&& ((obj = MHEGEngine_findObjectReference(ref, caller_gid)) != NULL))
{
-/* TODO */
-printf("TODO: Deselect: target: %s\n", ExternalReference_name(&obj->inst.ref));
+ if(obj->inst.rtti == RTTI_HotspotClass)
+ HotspotClass_Deselect((HotspotClass *) obj);
+ else if(obj->inst.rtti == RTTI_PushButtonClass)
+ PushButtonClass_Deselect((PushButtonClass *) obj);
+ else if(obj->inst.rtti == RTTI_SwitchButtonClass)
+ SwitchButtonClass_Deselect((SwitchButtonClass *) obj);
+ else
+ error("Deselect: unexpected target: %s", ExternalReference_name(&obj->inst.ref));
}
break;
@@ -525,8 +531,12 @@
if(((ref = GenericObjectReference_getObjectReference(&e->u.get_label.target, caller_gid)) != NULL)
&& ((obj = MHEGEngine_findObjectReference(ref, caller_gid)) != NULL))
{
-/* TODO */
-printf("TODO: GetLabel: target: %s\n", ExternalReference_name(&obj->inst.ref));
+ if(obj->inst.rtti == RTTI_PushButtonClass)
+ PushButtonClass_GetLabel((PushButtonClass *) obj, &e->u.get_label, caller_gid);
+ else if(obj->inst.rtti == RTTI_SwitchButtonClass)
+ SwitchButtonClass_GetLabel((SwitchButtonClass *) obj, &e->u.get_label, caller_gid);
+ else
+ error("GetLabel: unexpected target: %s", ExternalReference_name(&obj->inst.ref));
}
break;
@@ -666,8 +676,10 @@
if(((ref = GenericObjectReference_getObjectReference(&e->u.get_selection_status.target, caller_gid)) != NULL)
&& ((obj = MHEGEngine_findObjectReference(ref, caller_gid)) != NULL))
{
-/* TODO */
-printf("TODO: GetSelectionStatus: target: %s\n", ExternalReference_name(&obj->inst.ref));
+ if(obj->inst.rtti == RTTI_SwitchButtonClass)
+ SwitchButtonClass_GetSelectionStatus((SwitchButtonClass *) obj, &e->u.get_selection_status, caller_gid);
+ else
+ error("GetSelectionStatus: unexpected target: %s", ExternalReference_name(&obj->inst.ref));
}
break;
@@ -1023,8 +1035,14 @@
if(((ref = GenericObjectReference_getObjectReference(&e->u.select, caller_gid)) != NULL)
&& ((obj = MHEGEngine_findObjectReference(ref, caller_gid)) != NULL))
{
-/* TODO */
-printf("TODO: Select: target: %s\n", ExternalReference_name(&obj->inst.ref));
+ if(obj->inst.rtti == RTTI_HotspotClass)
+ HotspotClass_Select((HotspotClass *) obj);
+ else if(obj->inst.rtti == RTTI_PushButtonClass)
+ PushButtonClass_Select((PushButtonClass *) obj);
+ else if(obj->inst.rtti == RTTI_SwitchButtonClass)
+ SwitchButtonClass_Select((SwitchButtonClass *) obj);
+ else
+ error("Select: unexpected target: %s", ExternalReference_name(&obj->inst.ref));
}
break;
@@ -1289,8 +1307,12 @@
if(((ref = GenericObjectReference_getObjectReference(&e->u.set_label.target, caller_gid)) != NULL)
&& ((obj = MHEGEngine_findObjectReference(ref, caller_gid)) != NULL))
{
-/* TODO */
-printf("TODO: SetLabel: target: %s\n", ExternalReference_name(&obj->inst.ref));
+ if(obj->inst.rtti == RTTI_PushButtonClass)
+ PushButtonClass_SetLabel((PushButtonClass *) obj, &e->u.set_label, caller_gid);
+ else if(obj->inst.rtti == RTTI_SwitchButtonClass)
+ SwitchButtonClass_SetLabel((SwitchButtonClass *) obj, &e->u.set_label, caller_gid);
+ else
+ error("SetLabel: unexpected target: %s", ExternalReference_name(&obj->inst.ref));
}
break;
@@ -1592,8 +1614,10 @@
if(((ref = GenericObjectReference_getObjectReference(&e->u.toggle, caller_gid)) != NULL)
&& ((obj = MHEGEngine_findObjectReference(ref, caller_gid)) != NULL))
{
-/* TODO */
-printf("TODO: Toggle: target: %s\n", ExternalReference_name(&obj->inst.ref));
+ if(obj->inst.rtti == RTTI_SwitchButtonClass)
+ SwitchButtonClass_Toggle((SwitchButtonClass *) obj);
+ else
+ error("Toggle: unexpected target: %s", ExternalReference_name(&obj->inst.ref));
}
break;
Modified: redbutton-browser/trunk/HotspotClass.c
===================================================================
--- redbutton-browser/trunk/HotspotClass.c 2007-05-24 08:47:46 UTC (rev 314)
+++ redbutton-browser/trunk/HotspotClass.c 2007-05-25 15:35:18 UTC (rev 315)
@@ -38,3 +38,19 @@
return;
}
+void
+HotspotClass_Select(HotspotClass *t)
+{
+ error("HotspotClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+HotspotClass_Deselect(HotspotClass *t)
+{
+ error("HotspotClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
Modified: redbutton-browser/trunk/HotspotClass.h
===================================================================
--- redbutton-browser/trunk/HotspotClass.h 2007-05-24 08:47:46 UTC (rev 314)
+++ redbutton-browser/trunk/HotspotClass.h 2007-05-25 15:35:18 UTC (rev 315)
@@ -12,5 +12,8 @@
void HotspotClass_Deactivation(HotspotClass *);
void HotspotClass_Destruction(HotspotClass *);
+void HotspotClass_Select(HotspotClass *);
+void HotspotClass_Deselect(HotspotClass *);
+
#endif /* __HOTSPOTCLASS_H__ */
Modified: redbutton-browser/trunk/PushButtonClass.c
===================================================================
--- redbutton-browser/trunk/PushButtonClass.c 2007-05-24 08:47:46 UTC (rev 314)
+++ redbutton-browser/trunk/PushButtonClass.c 2007-05-25 15:35:18 UTC (rev 315)
@@ -38,3 +38,35 @@
return;
}
+void
+PushButtonClass_Select(PushButtonClass *t)
+{
+ error("PushButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+PushButtonClass_Deselect(PushButtonClass *t)
+{
+ error("PushButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+PushButtonClass_GetLabel(PushButtonClass *t, GetLabel *params, OctetString *caller_gid)
+{
+ error("PushButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+PushButtonClass_SetLabel(PushButtonClass *t, SetLabel *params, OctetString *caller_gid)
+{
+ error("PushButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
Modified: redbutton-browser/trunk/PushButtonClass.h
===================================================================
--- redbutton-browser/trunk/PushButtonClass.h 2007-05-24 08:47:46 UTC (rev 314)
+++ redbutton-browser/trunk/PushButtonClass.h 2007-05-25 15:35:18 UTC (rev 315)
@@ -12,5 +12,10 @@
void PushButtonClass_Deactivation(PushButtonClass *);
void PushButtonClass_Destruction(PushButtonClass *);
+void PushButtonClass_Select(PushButtonClass *);
+void PushButtonClass_Deselect(PushButtonClass *);
+void PushButtonClass_GetLabel(PushButtonClass *, GetLabel *, OctetString *);
+void PushButtonClass_SetLabel(PushButtonClass *, SetLabel *, OctetString *);
+
#endif /* __PUSHBUTTONCLASS_H__ */
Modified: redbutton-browser/trunk/SwitchButtonClass.c
===================================================================
--- redbutton-browser/trunk/SwitchButtonClass.c 2007-05-24 08:47:46 UTC (rev 314)
+++ redbutton-browser/trunk/SwitchButtonClass.c 2007-05-25 15:35:18 UTC (rev 315)
@@ -38,3 +38,51 @@
return;
}
+void
+SwitchButtonClass_GetSelectionStatus(SwitchButtonClass *t, GetSelectionStatus *params, OctetString *caller_gid)
+{
+ error("SwitchButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+SwitchButtonClass_Select(SwitchButtonClass *t)
+{
+ error("SwitchButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+SwitchButtonClass_Deselect(SwitchButtonClass *t)
+{
+ error("SwitchButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+SwitchButtonClass_GetLabel(SwitchButtonClass *t, GetLabel *params, OctetString *caller_gid)
+{
+ error("SwitchButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+SwitchButtonClass_SetLabel(SwitchButtonClass *t, SetLabel *params, OctetString *caller_gid)
+{
+ error("SwitchButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
+void
+SwitchButtonClass_Toggle(SwitchButtonClass *t)
+{
+ error("SwitchButtonClass: %s; not supported", ExternalReference_name(&t->rootClass.inst.ref));
+
+ return;
+}
+
Modified: redbutton-browser/trunk/SwitchButtonClass.h
===================================================================
--- redbutton-browser/trunk/SwitchButtonClass.h 2007-05-24 08:47:46 UTC (rev 314)
+++ redbutton-browser/trunk/SwitchButtonClass.h 2007-05-25 15:35:18 UTC (rev 315)
@@ -12,5 +12,12 @@
void SwitchButtonClass_Deactivation(SwitchButtonClass *);
void SwitchButtonClass_Destruction(SwitchButtonClass *);
+void SwitchButtonClass_GetSelectionStatus(SwitchButtonClass *, GetSelectionStatus *, OctetString *);
+void SwitchButtonClass_Select(SwitchButtonClass *);
+void SwitchButtonClass_Deselect(SwitchButtonClass *);
+void SwitchButtonClass_GetLabel(SwitchButtonClass *, GetLabel *, OctetString *);
+void SwitchButtonClass_SetLabel(SwitchButtonClass *, SetLabel *, OctetString *);
+void SwitchButtonClass_Toggle(SwitchButtonClass *);
+
#endif /* __SWITCHBUTTONCLASS_H__ */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-24 08:47:48
|
Revision: 314
http://svn.sourceforge.net/redbutton/?rev=314&view=rev
Author: skilvington
Date: 2007-05-24 01:47:46 -0700 (Thu, 24 May 2007)
Log Message:
-----------
tagged release 20070524
Added Paths:
-----------
redbutton-browser/tags/redbutton-browser-20070524/
Copied: redbutton-browser/tags/redbutton-browser-20070524 (from rev 313, redbutton-browser/trunk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-23 16:09:27
|
Revision: 313
http://svn.sourceforge.net/redbutton/?rev=313&view=rev
Author: skilvington
Date: 2007-05-23 09:09:25 -0700 (Wed, 23 May 2007)
Log Message:
-----------
GCD returns local time, FDa is passed local time
Modified Paths:
--------------
redbutton-browser/trunk/ResidentProgramClass.c
Modified: redbutton-browser/trunk/ResidentProgramClass.c
===================================================================
--- redbutton-browser/trunk/ResidentProgramClass.c 2007-05-23 12:12:49 UTC (rev 312)
+++ redbutton-browser/trunk/ResidentProgramClass.c 2007-05-23 16:09:25 UTC (rev 313)
@@ -369,7 +369,9 @@
GenericInteger *time_par;
unsigned int mheg_date;
unsigned int mheg_time;
- time_t now;
+ unsigned int unix_time;
+ struct timeval now;
+ struct timezone zone;
if(!check_parameters(params, 2, Parameter_new_generic_integer, /* out: date */
Parameter_new_generic_integer)) /* out: time */
@@ -381,14 +383,17 @@
date_par = &(get_parameter(params, 1)->u.new_generic_integer);
time_par = &(get_parameter(params, 2)->u.new_generic_integer);
+ /* need to return local time, so take timezone into account */
+ gettimeofday(&now, &zone);
+ unix_time = now.tv_sec - (zone.tz_minuteswest * 60);
+
/* number of days since 00:00:00 1/1/1970 */
- now = time(NULL);
- mheg_date = now / (60 * 60 * 24);
+ mheg_date = unix_time / (60 * 60 * 24);
/* number of days since 00:00:00 17/11/1858 */
mheg_date += MHEG_EPOCH_OFFSET;
/* number of seconds since 00:00:00 */
- mheg_time = now % (60 * 60 * 24);
+ mheg_time = unix_time % (60 * 60 * 24);
GenericInteger_setInteger(date_par, caller_gid, mheg_date);
GenericInteger_setInteger(time_par, caller_gid, mheg_time);
@@ -446,8 +451,12 @@
/* convert to UNIX time */
unix_time = ((mheg_date - MHEG_EPOCH_OFFSET) * (24 * 60 * 60)) + mheg_time;
- /* let libc do all the hard work of working out the year etc */
- tm = localtime(&unix_time);
+ /*
+ * let libc do all the hard work of working out the year etc
+ * we are passed a date/time as returned by GetCurrentDate, ie local time
+ * as GCD has already taken care of the timezone, use gmtime() not localtime() here
+ */
+ tm = gmtime(&unix_time);
/* write it out */
dateString.size = 0;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-23 12:12:50
|
Revision: 312
http://svn.sourceforge.net/redbutton/?rev=312&view=rev
Author: skilvington
Date: 2007-05-23 05:12:49 -0700 (Wed, 23 May 2007)
Log Message:
-----------
tagged release 20070523
Added Paths:
-----------
redbutton-download/tags/redbutton-download-20070523/
Copied: redbutton-download/tags/redbutton-download-20070523 (from rev 311, redbutton-download/trunk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-23 12:12:14
|
Revision: 311
http://svn.sourceforge.net/redbutton/?rev=311&view=rev
Author: skilvington
Date: 2007-05-23 05:12:13 -0700 (Wed, 23 May 2007)
Log Message:
-----------
tagged release 20070523
Added Paths:
-----------
redbutton-browser/tags/redbutton-browser-20070523/
Copied: redbutton-browser/tags/redbutton-browser-20070523 (from rev 310, redbutton-browser/trunk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-23 10:45:32
|
Revision: 310
http://svn.sourceforge.net/redbutton/?rev=310&view=rev
Author: skilvington
Date: 2007-05-23 03:45:31 -0700 (Wed, 23 May 2007)
Log Message:
-----------
don't try to retune at start up if we can't open the frontend r/w
Modified Paths:
--------------
redbutton-download/trunk/channels.c
Modified: redbutton-download/trunk/channels.c
===================================================================
--- redbutton-download/trunk/channels.c 2007-05-23 10:41:01 UTC (rev 309)
+++ redbutton-download/trunk/channels.c 2007-05-23 10:45:31 UTC (rev 310)
@@ -532,6 +532,8 @@
error("Unable to open '%s' read/write; you will not be able to retune", fe_dev);
if((fe_fd = open(fe_dev, O_RDONLY | O_NONBLOCK)) < 0)
fatal("open '%s': %s", fe_dev, strerror(errno));
+ /* don't try to tune in */
+ first_time = false;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-23 10:41:05
|
Revision: 309
http://svn.sourceforge.net/redbutton/?rev=309&view=rev
Author: skilvington
Date: 2007-05-23 03:41:01 -0700 (Wed, 23 May 2007)
Log Message:
-----------
don't flood verbose log with duplicate messages
Modified Paths:
--------------
redbutton-browser/trunk/MHEGStreamPlayer.c
Modified: redbutton-browser/trunk/MHEGStreamPlayer.c
===================================================================
--- redbutton-browser/trunk/MHEGStreamPlayer.c 2007-05-23 10:38:19 UTC (rev 308)
+++ redbutton-browser/trunk/MHEGStreamPlayer.c 2007-05-23 10:41:01 UTC (rev 309)
@@ -518,6 +518,7 @@
unsigned int vid_height;
VideoFrame *vf;
double buffered;
+ double last_buffered;
double last_pts;
int64_t last_time, this_time, now;
int usecs;
@@ -534,6 +535,7 @@
fatal("video_thread: VideoClass is NULL");
/* wait until we have some frames buffered up */
+ last_buffered = -1.0;
do
{
pthread_mutex_lock(&p->videoq_lock);
@@ -542,7 +544,9 @@
else
buffered = 0.0;
pthread_mutex_unlock(&p->videoq_lock);
- verbose("MHEGStreamPlayer: buffered %f seconds of video", buffered);
+ if(buffered != last_buffered)
+ verbose("MHEGStreamPlayer: buffered %f seconds of video", buffered);
+ last_buffered = buffered;
/* let the decoder have a go */
if(buffered < INIT_VIDEO_BUFFER_WAIT)
pthread_yield();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-23 10:38:20
|
Revision: 308
http://svn.sourceforge.net/redbutton/?rev=308&view=rev
Author: skilvington
Date: 2007-05-23 03:38:19 -0700 (Wed, 23 May 2007)
Log Message:
-----------
stop verbose messages from different threads overlapping
Modified Paths:
--------------
redbutton-browser/trunk/MHEGEngine.c
redbutton-browser/trunk/TODO
Modified: redbutton-browser/trunk/MHEGEngine.c
===================================================================
--- redbutton-browser/trunk/MHEGEngine.c 2007-05-23 10:31:02 UTC (rev 307)
+++ redbutton-browser/trunk/MHEGEngine.c 2007-05-23 10:38:19 UTC (rev 308)
@@ -1600,6 +1600,9 @@
return;
}
+/* stop verbose messages from different threads overlapping */
+pthread_mutex_t stdout_lock = PTHREAD_MUTEX_INITIALIZER;
+
void
verbose(char *message, ...)
{
@@ -1607,10 +1610,12 @@
if(engine.verbose)
{
+ pthread_mutex_lock(&stdout_lock);
va_start(ap, message);
vprintf(message, ap);
printf("\n");
va_end(ap);
+ pthread_mutex_unlock(&stdout_lock);
}
return;
Modified: redbutton-browser/trunk/TODO
===================================================================
--- redbutton-browser/trunk/TODO 2007-05-23 10:31:02 UTC (rev 307)
+++ redbutton-browser/trunk/TODO 2007-05-23 10:38:19 UTC (rev 308)
@@ -1,3 +1,11 @@
+got this once when changing channels:
+X Error of failed request: BadAccess (attempt to access private resource denied)
+ Major opcode of failed request: 146 (MIT-SHM)
+ Minor opcode of failed request: 1 (X_ShmAttach)
+ Serial number of failed request: 4292
+ Current serial number in output stream: 4385
+
+
posix_fadvise() when streaming data from the backend?
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-23 10:31:04
|
Revision: 307
http://svn.sourceforge.net/redbutton/?rev=307&view=rev
Author: skilvington
Date: 2007-05-23 03:31:02 -0700 (Wed, 23 May 2007)
Log Message:
-----------
always retune when we start up
Modified Paths:
--------------
redbutton-download/trunk/channels.c
Modified: redbutton-download/trunk/channels.c
===================================================================
--- redbutton-download/trunk/channels.c 2007-05-22 16:13:24 UTC (rev 306)
+++ redbutton-download/trunk/channels.c 2007-05-23 10:31:02 UTC (rev 307)
@@ -513,10 +513,11 @@
unsigned int sat_no;
bool hi_lo;
struct dvb_frontend_event event;
- fe_status_t status;
+// fe_status_t status;
bool lock;
/* need to keep the frontend device open to stop it untuning itself */
static int fe_fd = -1;
+ static bool first_time = true;
if(fe_fd < 0)
{
@@ -560,18 +561,22 @@
* if no-one was using the frontend when we open it
* FE_GET_FRONTEND may say we are tuned to the frequency we want
* but when we try to read any data, it fails
- * so check if we have a lock
+ * checking if we have a lock doesn't seem to work
+ * so, always retune the first time we are called
*/
+#if 0
if(ioctl(fe_fd, FE_READ_STATUS, &status) < 0)
lock = false;
else
lock = status & FE_HAS_LOCK;
+#endif
/* are we already tuned to the right frequency */
- vverbose("Current frequency %u; needed %u; lock=%d", current_params.frequency, needed_params.frequency, lock);
- if(!lock
+ vverbose("Current frequency %u; needed %u; first_time=%d", current_params.frequency, needed_params.frequency, first_time);
+ if(first_time
|| current_params.frequency != needed_params.frequency)
{
+ first_time = false;
verbose("Retuning to frequency %u", needed_params.frequency);
/* empty event queue */
while(ioctl(fe_fd, FE_GET_EVENT, &event) >= 0)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ski...@us...> - 2007-05-22 16:13:30
|
Revision: 306
http://svn.sourceforge.net/redbutton/?rev=306&view=rev
Author: skilvington
Date: 2007-05-22 09:13:24 -0700 (Tue, 22 May 2007)
Log Message:
-----------
SI_GetServiceIndex should return -1 if the service is unavailable
Modified Paths:
--------------
redbutton-browser/trunk/MHEGBackend.c
redbutton-browser/trunk/MHEGBackend.h
redbutton-browser/trunk/MHEGEngine.c
redbutton-browser/trunk/MHEGEngine.h
redbutton-browser/trunk/si.c
redbutton-download/trunk/channels.c
redbutton-download/trunk/channels.h
redbutton-download/trunk/command.c
Modified: redbutton-browser/trunk/MHEGBackend.c
===================================================================
--- redbutton-browser/trunk/MHEGBackend.c 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-browser/trunk/MHEGBackend.c 2007-05-22 16:13:24 UTC (rev 306)
@@ -9,6 +9,8 @@
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/stat.h>
#include "MHEGEngine.h"
#include "si.h"
@@ -36,16 +38,18 @@
bool local_loadFile(MHEGBackend *, OctetString *, OctetString *);
FILE *local_openFile(MHEGBackend *, OctetString *);
void local_retune(MHEGBackend *, OctetString *);
+bool local_isServiceAvailable(MHEGBackend *, OctetString *);
static struct MHEGBackendFns local_backend_fns =
{
- local_checkContentRef, /* checkContentRef */
- local_loadFile, /* loadFile */
- local_openFile, /* openFile */
- open_stream, /* openStream */
- close_stream, /* closeStream */
- local_retune, /* retune */
- get_service_url, /* getServiceURL */
+ local_checkContentRef, /* checkContentRef */
+ local_loadFile, /* loadFile */
+ local_openFile, /* openFile */
+ open_stream, /* openStream */
+ close_stream, /* closeStream */
+ local_retune, /* retune */
+ get_service_url, /* getServiceURL */
+ local_isServiceAvailable, /* isServiceAvailable */
};
/* remote backend funcs */
@@ -53,16 +57,18 @@
bool remote_loadFile(MHEGBackend *, OctetString *, OctetString *);
FILE *remote_openFile(MHEGBackend *, OctetString *);
void remote_retune(MHEGBackend *, OctetString *);
+bool remote_isServiceAvailable(MHEGBackend *, OctetString *);
static struct MHEGBackendFns remote_backend_fns =
{
- remote_checkContentRef, /* checkContentRef */
- remote_loadFile, /* loadFile */
- remote_openFile, /* openFile */
- open_stream, /* openStream */
- close_stream, /* closeStream */
- remote_retune, /* retune */
- get_service_url, /* getServiceURL */
+ remote_checkContentRef, /* checkContentRef */
+ remote_loadFile, /* loadFile */
+ remote_openFile, /* openFile */
+ open_stream, /* openStream */
+ close_stream, /* closeStream */
+ remote_retune, /* retune */
+ get_service_url, /* getServiceURL */
+ remote_isServiceAvailable, /* isServiceAvailable */
};
/* public interface */
@@ -621,6 +627,52 @@
}
/*
+ * return true if we are able to receive the given service
+ * service should be in the form "dvb://<network_id>..<service_id>", eg "dvb://233a..4C80"
+ */
+
+bool
+local_isServiceAvailable(MHEGBackend *t, OctetString *service)
+{
+ unsigned int service_id;
+ char service_str[64];
+ char *slash;
+ int prefix_len;
+ char service_dir[PATH_MAX];
+ struct stat stats;
+ bool exists;
+
+ /* assert */
+ if(service->size < 6 || strncmp(service->data, "dvb://", 6) != 0)
+ fatal("local_isServiceAvailable: invalid service '%.*s'", service->size, service->data);
+
+ /* extract the service_id */
+ service_id = si_get_service_id(service);
+ snprintf(service_str, sizeof(service_str), "%u", service_id);
+
+ /*
+ * base_dir is: [path/to/services/]<service_id>
+ * so we just need to replace the last filename component with the new service_id
+ */
+ slash = strrchr(t->base_dir, '/');
+ if(slash == NULL)
+ {
+ /* no preceeding path */
+ snprintf(service_dir, sizeof(service_dir), "%s", service_str);
+ }
+ else
+ {
+ prefix_len = (slash - t->base_dir) + 1;
+ snprintf(service_dir, sizeof(service_dir), "%.*s%s", prefix_len, t->base_dir, service_str);
+ }
+
+ /* see if the directory for the service exists */
+ exists = (stat(service_dir, &stats) == 0);
+
+ return exists;
+}
+
+/*
* remote routines
*/
@@ -781,3 +833,29 @@
return;
}
+/*
+ * return true if we are able to receive the given service
+ * service should be in the form "dvb://<network_id>..<service_id>", eg "dvb://233a..4C80"
+ */
+
+bool
+remote_isServiceAvailable(MHEGBackend *t, OctetString *service)
+{
+ char cmd[128];
+ FILE *sock;
+ bool available = true;
+
+ /* assert */
+ if(service->size < 6 || strncmp(service->data, "dvb://", 6) != 0)
+ fatal("remote_isServiceAvailable: invalid service '%.*s'", service->size, service->data);
+
+ snprintf(cmd, sizeof(cmd), "available %u\n", si_get_service_id(service));
+
+ if((sock = remote_command(t, true, cmd)) == NULL
+ || remote_response(sock) != BACKEND_RESPONSE_OK)
+ {
+ available = false;
+ }
+
+ return available;
+}
Modified: redbutton-browser/trunk/MHEGBackend.h
===================================================================
--- redbutton-browser/trunk/MHEGBackend.h 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-browser/trunk/MHEGBackend.h 2007-05-22 16:13:24 UTC (rev 306)
@@ -44,6 +44,8 @@
void (*retune)(struct MHEGBackend *, OctetString *);
/* return a dvb:// URL for the service we are currently downloading the carousel from */
const OctetString *(*getServiceURL)(struct MHEGBackend *);
+ /* return true if the engine is able to receive the given service (dvb:// URL format) */
+ bool (*isServiceAvailable)(struct MHEGBackend *, OctetString *);
} *fns;
} MHEGBackend;
Modified: redbutton-browser/trunk/MHEGEngine.c
===================================================================
--- redbutton-browser/trunk/MHEGEngine.c 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-browser/trunk/MHEGEngine.c 2007-05-22 16:13:24 UTC (rev 306)
@@ -1476,6 +1476,18 @@
}
/*
+ * return true if the engine is able to receive the given service
+ * service should be in the form "dvb://<network_id>..<service_id>", eg "dvb://233a..4C80"
+ */
+
+bool
+MHEGEngine_isServiceAvailable(OctetString *service)
+{
+ /* ask the backend */
+ return (*(engine.backend.fns->isServiceAvailable))(&engine.backend, service);
+}
+
+/*
* returns the absolute group ID, ie it always starts with "~//"
* returns a ptr to static string that will be overwritten by the next call to this routine
* section 8.3.2 of the UK MHEG Profile says the filename prefixes are:
Modified: redbutton-browser/trunk/MHEGEngine.h
===================================================================
--- redbutton-browser/trunk/MHEGEngine.h 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-browser/trunk/MHEGEngine.h 2007-05-22 16:13:24 UTC (rev 306)
@@ -249,6 +249,8 @@
const OctetString *MHEGEngine_getRecSvcDef(void);
const OctetString *MHEGEngine_getRecSvcCur(void);
+bool MHEGEngine_isServiceAvailable(OctetString *);
+
char *MHEGEngine_absoluteFilename(OctetString *);
/* convert PNG to internal format */
Modified: redbutton-browser/trunk/si.c
===================================================================
--- redbutton-browser/trunk/si.c 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-browser/trunk/si.c 2007-05-22 16:13:24 UTC (rev 306)
@@ -21,6 +21,8 @@
* "rec://svc/lcn/X" - use logical channel number X (eg 1 for BBC1, 3 for ITV1, etc)
*
* we resolve whatever we are given to a dvb:// format URL and store that
+ *
+ * returns -1 if the backend says the given service is not available
*/
int
@@ -54,6 +56,10 @@
if(OctetString_cmp(ref, &si_channel[i]) == 0)
return i;
+ /* does the backend say it is available */
+ if(!MHEGEngine_isServiceAvailable(ref))
+ return -1;
+
/* add it to the list */
si_max_index ++;
si_channel = safe_realloc(si_channel, (si_max_index + 1) * sizeof(OctetString));
Modified: redbutton-download/trunk/channels.c
===================================================================
--- redbutton-download/trunk/channels.c 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-download/trunk/channels.c 2007-05-22 16:13:24 UTC (rev 306)
@@ -610,4 +610,30 @@
return true;
}
+/*
+ * returns true if service_id is listed in the channels file
+ */
+bool
+service_available(uint16_t service_id)
+{
+ char line[1024];
+ char *p;
+ unsigned long id;
+
+ rewind(_channels);
+
+ while(!feof(_channels))
+ {
+ /* service_id is the last field for all channels.conf file formats */
+ if(fgets(line, sizeof(line), _channels) == NULL
+ || (p = rindex(line, ':')) == NULL)
+ continue;
+ id = strtoul(p + 1, NULL, 0);
+ if(id == service_id)
+ return true;
+ }
+
+ return false;
+}
+
Modified: redbutton-download/trunk/channels.h
===================================================================
--- redbutton-download/trunk/channels.h 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-download/trunk/channels.h 2007-05-22 16:13:24 UTC (rev 306)
@@ -32,5 +32,7 @@
bool tune_service_id(unsigned int, unsigned int, uint16_t);
+bool service_available(uint16_t);
+
#endif /* __CHANNELS_H__ */
Modified: redbutton-download/trunk/command.c
===================================================================
--- redbutton-download/trunk/command.c 2007-05-01 12:19:57 UTC (rev 305)
+++ redbutton-download/trunk/command.c 2007-05-22 16:13:24 UTC (rev 306)
@@ -18,6 +18,7 @@
#include "assoc.h"
#include "fs.h"
#include "stream.h"
+#include "channels.h"
#include "utils.h"
/* max number of args that can be passed to a command (arbitrary) */
@@ -27,6 +28,7 @@
bool cmd_assoc(struct listen_data *, FILE *, int, char **);
bool cmd_ademux(struct listen_data *, FILE *, int, char **);
bool cmd_astream(struct listen_data *, FILE *, int, char **);
+bool cmd_available(struct listen_data *, FILE *, int, char **);
bool cmd_avdemux(struct listen_data *, FILE *, int, char **);
bool cmd_avstream(struct listen_data *, FILE *, int, char **);
bool cmd_check(struct listen_data *, FILE *, int, char **);
@@ -49,6 +51,7 @@
{ "assoc", "", cmd_assoc, "List component tag to PID mappings" },
{ "ademux", "[<ServiceID>] <ComponentTag>", cmd_ademux, "Demux the given audio component tag" },
{ "astream", "[<ServiceID>] <ComponentTag>", cmd_astream, "Stream the given audio component tag" },
+ { "available", "<ServiceID>", cmd_available, "Return OK if the ServiceID is available" },
{ "avdemux", "[<ServiceID>] <AudioTag> <VideoTag>", cmd_avdemux, "Demux the given audio and video component tags" },
{ "avstream", "[<ServiceID>] <AudioTag> <VideoTag>", cmd_avstream, "Stream the given audio and video component tags" },
{ "check", "<ContentReference>", cmd_check, "Check if the given file exists on the carousel" },
@@ -670,6 +673,28 @@
}
/*
+ * available <ServiceID>
+ * returns 200 OK if ServiceID is listed in the channels.conf file
+ */
+
+bool
+cmd_available(struct listen_data *listen_data, FILE *client, int argc, char *argv[])
+{
+ unsigned int service_id;
+
+ CHECK_USAGE(2, "available <ServiceID>");
+
+ service_id = strtoul(argv[1], NULL, 0);
+
+ if(service_available(service_id))
+ SEND_RESPONSE(200, "OK");
+ else
+ SEND_RESPONSE(404, "Not Found");
+
+ return false;
+}
+
+/*
* check <ContentReference>
* check if the given file is on the carousel
* ContentReference should be absolute, ie start with "~//"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Simon K. <s.k...@er...> - 2007-05-17 16:03:08
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, if you have no hard disc, you can make a ram disc like this: mke2fs /dev/ram0 then mount it somewhere like this: mount -o loop /dev/ram0 /mnt/whatever I haven't tried different file system types to see which is best, but given that the MHEG files are generally quite small, something with a small block size is probably most efficient in terms of memory usage. obviously you'll need ram disc support configured in your kernel - - CONFIG_BLK_DEV_RAM et al. hope this helps! kalyan wrote: > Dear All, > > Its amazing that this group has contributed to the complete MHEG-5 implementation in open source. I am trying to port redbutton to my STB, and had success with porting the redbutton download, but i dont know how to store this contents in the DDR-RAM, Is there any specific file system which needs to be used for DDR-RAM for the successful running of the red button browser in my stb. Hope some one can help me in this regard. > > Thanks & Regs, > Kalyanasundaram.S > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > > > ------------------------------------------------------------------------ > > _______________________________________________ > Redbutton-devel mailing list > Red...@li... > https://lists.sourceforge.net/lists/listinfo/redbutton-devel - -- Simon Kilvington -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.4 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGTHytmt9ZifioJSwRAiBBAJ9J0EhgAnmK4x4O34bV2wr7pojwkQCdFXuc f7MtPVuZVF525XQHn0wJSlE= =47f2 -----END PGP SIGNATURE----- |
|
From: kalyan <kal...@ho...> - 2007-05-17 09:50:29
|
Dear All, Its amazing that this group has contributed to the complete MHEG-5 = implementation in open source. I am trying to port redbutton to my STB, = and had success with porting the redbutton download, but i dont know how = to store this contents in the DDR-RAM, Is there any specific file system = which needs to be used for DDR-RAM for the successful running of the red = button browser in my stb. Hope some one can help me in this regard. Thanks & Regs, Kalyanasundaram.S |
|
From: Simon K. <s.k...@er...> - 2007-05-15 08:46:24
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Mario Rossi wrote: > > Is it possible to leave the rb-download running and choose the channel > from the browser? Or do I have to start them both synchronized? > if you run the browser like this: rb-browser -d instead of like this: rb-browser -d services/XXXX then the browser will start on whatever service rb-download is currently tuned to. at the moment, the only way to manually tell rb-download to tune to a given service is using something like netcat to connect to the network port rb-download listens on, eg: nc 127.0.0.1 10101 then type: retune XXXX (you can type "help" if you want to see what other commands rb-browser can send to rb-download) - -- Simon Kilvington -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.4 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGSXNVmt9ZifioJSwRAj8HAJ4tj+i8+CC54RlYqy/4mHNhFrhpiwCgghhU H1/xMBkkvvF6aXLjVAjP7Vs= =VZZ/ -----END PGP SIGNATURE----- |
|
From: Mario R. <mar...@go...> - 2007-05-14 20:42:06
|
> > 1) It seems that redbutton uses channels.conf now, but if I don't use > > tzap it cannot find anything. Is it able to tune at the beginning? > > > > it should be able to tune at the beginning, you should just be able to > do: > > rb-download 4165 > > to get BBC1 - it uses the same code as tzap to tune, so it should work! > Hi, I think I had an old snapshot or a bad compilation. Now, as you suggested "rb-download XXXX" tunes and download the teletext information for that service and it creates the right directory under services/ > > 2) If there is alreay an application using the dvb-t card it fails > > ERROR: failed opening '/dev/dvb/adapter0/frontend0' (Device or resource busy) > > while i remember I used to be able to use it on the same frequency of > > the already displayed channel. > > > > it tries to open the frontend device read/write first, if this fails it > prints something like "you will not be able to retune", then tries to > open the frontend read-only - that should work, even if another process > is using the frontend (I can use rb-download while mythtv is running on > the same machine - I just can't retune then) > > that error message doesn't look like one from rb-download > you are right again. Basically the only problems that I have is the video. I've seen, with "top" that redbutton uses 100% of the CPU, so I guess that this is the problem. I will be better when you introduce the other video modes. Is it possible to leave the rb-download running and choose the channel from the browser? Or do I have to start them both synchronized? Great job! |
|
From: Simon K. <s.k...@er...> - 2007-05-14 11:33:27
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, Mario Rossi wrote: > Hi, > > I've been using red-button for a while but I'm not sure I'm using it properly. > > Basically this is what I do: > > 1) tzap -x "BBC ONE" && rb-download > 2) I read the channel id of BBC ONE (4164) > 3) tzap -x "BBC ONE" && rb-download 4164 > > in an other window > > 4) rb-browser -d services/9018 > if rb-download and rb-browser are running on the same host, you should just do rb-downlaod 4165 then in the other window: rb-browser -d > Here are my questions? > > 1) It seems that redbutton uses channels.conf now, but if I don't use > tzap it cannot find anything. Is it able to tune at the beginning? > it should be able to tune at the beginning, you should just be able to do: rb-download 4165 to get BBC1 - it uses the same code as tzap to tune, so it should work! > 2) If there is alreay an application using the dvb-t card it fails > ERROR: failed opening '/dev/dvb/adapter0/frontend0' (Device or resource busy) > while i remember I used to be able to use it on the same frequency of > the already displayed channel. > it tries to open the frontend device read/write first, if this fails it prints something like "you will not be able to retune", then tries to open the frontend read-only - that should work, even if another process is using the frontend (I can use rb-download while mythtv is running on the same machine - I just can't retune then) that error message doesn't look like one from rb-download > 3) I MUST use (-d) otherwise it behaves very bad. The video is slow or > not moving at all. And it does not respond always to the key pressed > > Those are some of the warnings: > [mpeg2video @ 0xb7cf0a44]invalid cbp at 33 34 > [mpeg2video @ 0xb7cf0a44]00 motion_type at 15 35 > [mpeg2video @ 0xb7cf0a44]concealing 1218 DC, 1218 AC, 1218 MV errors > [mp3 @ 0xb7cf0a44]incorrect frame size > [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 2 0 > [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 3 1 > [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 8 2 > [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 1 3 > yep, the video output method I use is probably the slowest you can have, but it does work on everything, as long as the processor can keep up! - on my TODO list is adding things like SDL, XVideo, OpenGL, etc video output methods, which use the graphics card more and the CPU less so that should solve these errors > 4) The only directory created under services/ is services/9018. > Reading the documentation it seems that is should have the same number > that is specified in rb-download. > that shouldn't happen - you should get services/4165 if you do rb-download 4165 try doing: make clean make after you do an svn update to make sure everything gets rebuilt and so is consistent. > Would it be possible to know what is the current preferred way of > running rb-download & rb-browser. > use "scan" or whatever to generate a channels.conf file, and store it in ~/.tzap/channels.conf to list services on a given frequency, do either: tzap -x "BBC ONE" && rb-download or dvbtune -f 722166667 -qam whatever etc && rb-download or just grep channels.conf to find the service ID you want to use a given service (eg 4165), do this in one terminal: rb-download 4165 and this in another: rb-browser -d if you want to run rb-broswer on another host, run this on it: rb-browser 10.0.0.1 assuming rb-download is running on IP 10.0.0.1 > I forgot to say that I'm using the latest "trunk" of both applications > and latest SVN ffmpeg. > > Thanks > hope this helps! - -- Simon Kilvington -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.4 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGSEj2mt9ZifioJSwRAvjKAJ9RODjwODe7wUNYZgHHMoeAnsZBSACfayAf HWQf0qvqRRkfL6aysdG5JSA= =Vw1e -----END PGP SIGNATURE----- |
|
From: Mario R. <mar...@go...> - 2007-05-13 22:45:58
|
Hi, I've been using red-button for a while but I'm not sure I'm using it properly. Basically this is what I do: 1) tzap -x "BBC ONE" && rb-download 2) I read the channel id of BBC ONE (4164) 3) tzap -x "BBC ONE" && rb-download 4164 in an other window 4) rb-browser -d services/9018 Here are my questions? 1) It seems that redbutton uses channels.conf now, but if I don't use tzap it cannot find anything. Is it able to tune at the beginning? 2) If there is alreay an application using the dvb-t card it fails ERROR: failed opening '/dev/dvb/adapter0/frontend0' (Device or resource busy) while i remember I used to be able to use it on the same frequency of the already displayed channel. 3) I MUST use (-d) otherwise it behaves very bad. The video is slow or not moving at all. And it does not respond always to the key pressed Those are some of the warnings: [mpeg2video @ 0xb7cf0a44]invalid cbp at 33 34 [mpeg2video @ 0xb7cf0a44]00 motion_type at 15 35 [mpeg2video @ 0xb7cf0a44]concealing 1218 DC, 1218 AC, 1218 MV errors [mp3 @ 0xb7cf0a44]incorrect frame size [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 2 0 [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 3 1 [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 8 2 [mpeg2video @ 0xb7cf0a44]ac-tex damaged at 1 3 4) The only directory created under services/ is services/9018. Reading the documentation it seems that is should have the same number that is specified in rb-download. Would it be possible to know what is the current preferred way of running rb-download & rb-browser. I forgot to say that I'm using the latest "trunk" of both applications and latest SVN ffmpeg. Thanks |
|
From: <ski...@us...> - 2007-05-01 12:19:58
|
Revision: 305
http://svn.sourceforge.net/redbutton/?rev=305&view=rev
Author: skilvington
Date: 2007-05-01 05:19:57 -0700 (Tue, 01 May 2007)
Log Message:
-----------
include ATSC modulation types
Modified Paths:
--------------
redbutton-download/trunk/channels.c
Modified: redbutton-download/trunk/channels.c
===================================================================
--- redbutton-download/trunk/channels.c 2007-05-01 10:19:43 UTC (rev 304)
+++ redbutton-download/trunk/channels.c 2007-05-01 12:19:57 UTC (rev 305)
@@ -223,7 +223,9 @@
{ "QAM_32", QAM_32 },
{ "QAM_64", QAM_64 },
{ "QAM_128", QAM_128 },
- { "QAM_256", QAM_256 }
+ { "QAM_256", QAM_256 },
+ { "8VSB", VSB_8 },
+ { "16VSB", VSB_16 }
};
static const struct param transmissionmode_list[] =
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|