Re: [Patch] New utility program atsc_epg added to dvb-apps utility suite.

2009-06-22 Thread Yufei Yuan
I sent out a new patch yesterday under a different subject line, but it 
looks like it did not make through it. Is this list a moderated one?
 
Anyway, please ignore yesterday's patch if you have not had a chance to 
look at it. Please use this following patch, which is against 1283. It 
contains: 

1. atsc_epg bug fix: when ETM message gets longer than 256 characters, 
the last character was chopped, due to incorrect calling to snprintf(). 
2. atsc_epg code cleanup:
  - error report function re-factored.
  - white space added after keywords;
  - hard wrap around column 80 removed;
  - one-line conditional statement now w/o brackets.
3. scan Makefile workaround for building in gcc4.4/kernel 2.6.30 was not 
picked up yet, include again.

Regards,

Signed-off-by: Yufei Yuan yfy...@gmail.com

diff -upr dvb-apps/util/atsc_epg/atsc_epg.c 
dvb-apps_local/util/atsc_epg/atsc_epg.c
--- dvb-apps/util/atsc_epg/atsc_epg.c   2009-06-22 12:13:04.136925772 -0500
+++ dvb-apps_local/util/atsc_epg/atsc_epg.c 2009-06-22 13:17:15.287986505 
-0500
@@ -20,6 +20,7 @@
 
 #include stdio.h
 #include stdlib.h
+#include stdarg.h
 #include unistd.h
 #include string.h
 #include time.h
@@ -46,6 +47,18 @@
 #define MAX_NUM_CHANNELS   16
 #define MAX_NUM_EVENTS_PER_CHANNEL (4 * 24 * 7)
 
+static inline void print_error(const char *s, const char *f, ...)
+{
+   va_list ap;
+
+   va_start(ap, f);
+   fprintf(stderr, %s(): , s);
+   vfprintf(stderr, f, ap);
+   fprintf(stderr, \n);
+}
+
+#define error_msg(format, ...) print_error(__FUNCTION__, format, ## 
__VA_ARGS__)
+
 static int atsc_scan_table(int dmxfd, uint16_t pid, enum atsc_section_tag tag,
void **table_section);
 
@@ -168,9 +181,8 @@ void *(*table_callback[16])(struct atsc_
 
 static void int_handler(int sig_num)
 {
-   if(SIGINT != sig_num) {
+   if (SIGINT != sig_num)
return;
-   }
ctrl_c = 1;
 }
 
@@ -219,8 +231,9 @@ static void help(void)
 
 static int close_frontend(struct dvbfe_handle *fe)
 {
-   if(NULL == fe) {
-   fprintf(stderr, %s(): NULL pointer detected\n, __FUNCTION__);
+   if (NULL == fe) {
+   error_msg(NULL pointer detected);
+   return -1;
}
 
dvbfe_close(fe);
@@ -232,24 +245,21 @@ static int open_frontend(struct dvbfe_ha
 {
struct dvbfe_info fe_info;
 
-   if(NULL == (*fe = dvbfe_open(adapter, 0, 0))) {
-   fprintf(stderr, %s(): error calling dvbfe_open()\n,
-   __FUNCTION__);
+   if (NULL == (*fe = dvbfe_open(adapter, 0, 0))) {
+   error_msg(error calling dvbfe_open());
return -1;
}
dvbfe_get_info(*fe, 0, fe_info, DVBFE_INFO_QUERYTYPE_IMMEDIATE, 0);
-   if(DVBFE_TYPE_ATSC != fe_info.type) {
-   fprintf(stderr, %s(): only ATSC frontend supported 
currently\n,
-   __FUNCTION__);
+   if (DVBFE_TYPE_ATSC != fe_info.type) {
+   error_msg(only ATSC frontend supported currently);
return -1;
}
fe_info.feparams.frequency = frequency;
fe_info.feparams.inversion = DVBFE_INVERSION_AUTO;
fe_info.feparams.u.atsc.modulation = DVBFE_ATSC_MOD_VSB_8;
fprintf(stdout, tuning to %d Hz, please wait...\n, frequency);
-   if(dvbfe_set(*fe, fe_info.feparams, TIMEOUT * 1000)) {
-   fprintf(stderr, %s(): cannot lock to %d Hz in %d seconds\n,
-   __FUNCTION__, frequency, TIMEOUT);
+   if (dvbfe_set(*fe, fe_info.feparams, TIMEOUT * 1000)) {
+   error_msg(cannot lock to %d Hz in %d seconds, frequency, 
TIMEOUT);
return -1;
}
fprintf(stdout, tuner locked.\n);
@@ -257,7 +267,7 @@ static int open_frontend(struct dvbfe_ha
return 0;
 }
 
-#if ENABLE_RRT
+#ifdef ENABLE_RRT
 /* this is untested as since this part of the library is broken */
 static int parse_rrt(int dmxfd)
 {
@@ -270,20 +280,18 @@ static int parse_rrt(int dmxfd)
i = 0;
fprintf(stdout, waiting for RRT: );
fflush(stdout);
-   while(i  RRT_TIMEOUT) {
+   while (i  RRT_TIMEOUT) {
ret = atsc_scan_table(dmxfd, ATSC_BASE_PID, tag, (void **)rrt);
-   if(0  ret) {
-   fprintf(stderr, %s(): error calling 
atsc_scan_table()\n,
-   __FUNCTION__);
+   if (0  ret) {
+   error_msg(error calling atsc_scan_table());
return -1;
}
-   if(0 == ret) {
-   if(RRT_TIMEOUT  i) {
+   if (0 == ret) {
+   if (RRT_TIMEOUT  i) {
fprintf(stdout, .);
fflush(stdout);
} else {
-   fprintf(stdout, \nno RRT in %d seconds\n,
-   RRT_TIMEOUT

Re: [Patch] New utility program atsc_epg added to dvb-apps utility suite.

2009-06-20 Thread Yufei Yuan
Thanks for the feedback. Will fix the coding style, and send in a new one 
against the tip.

Regards,

On Sat, 2009-06-20 at 11:30 +0400, Manu Abraham wrote:
 On Fri, Jun 19, 2009 at 5:55 AM, Yufei Yuanyfy...@gmail.com wrote:
  Not sure how to make it look right in gmail, but the inline patch does
  not look right to my eyes. I have the patch attached behind as a
  backup.
 
 You can attach the patch, no worries.
 
 I have applied the patch, but the CodingStyle is not very nice, mostly
 the wrapping to 80 cols is done in a bad way. It makes the code not
 easy to read.
 
 Also have made some comments inline from your patch. Please do fix the
 mentioned ones against the dvb-apps head
 
 
 
 
 diff -uprN dvb-apps/util/atsc_epg/atsc_epg.c
 dvb-apps_new/util/atsc_epg/atsc_epg.c
 --- dvb-apps/util/atsc_epg/atsc_epg.c 1969-12-31 18:00:00.0 -0600
 +++ dvb-apps_new/util/atsc_epg/atsc_epg.c 2009-06-18 20:17:24.527925142 
 -0500
 @@ -0,0 +1,1249 @@
 +/*
 + * atsc_epg utility
 + *
 + * Copyright (C) 2009 Yufei Yuan yfy...@gmail.com
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation; either version 2 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + *
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 + */
 +
 +#include stdio.h
 +#include stdlib.h
 +#include unistd.h
 +#include string.h
 +#include time.h
 +#include signal.h
 +#include sys/types.h
 +#include sys/stat.h
 +#include fcntl.h
 +#include sys/ioctl.h
 +#include sys/poll.h
 +#include errno.h
 +#include getopt.h
 +#include stdarg.h
 +#include libdvbapi/dvbfe.h
 +#include libdvbapi/dvbdemux.h
 +#include libucsi/dvb/section.h
 +#include libucsi/atsc/section.h
 +#include libucsi/atsc/types.h
 +
 +#define TIMEOUT  60
 +#define RRT_TIMEOUT  60
 +#define MAX_NUM_EVENT_TABLES 128
 +#define TITLE_BUFFER_LEN 4096
 +#define MESSAGE_BUFFER_LEN   (16 * 1024)
 +#define MAX_NUM_CHANNELS 16
 +#define MAX_NUM_EVENTS_PER_CHANNEL   (4 * 24 * 7)
 +
 +static int atsc_scan_table(int dmxfd, uint16_t pid, enum atsc_section_tag 
 tag,
 + void **table_section);
 +
 +static const char *program;
 +static int adapter = 0;
 +static int period = 12; /* hours */
 +static int frequency;
 +static int enable_ett = 0;
 +static int ctrl_c = 0;
 +static const char *modulation = NULL;
 +static char separator[80];
 +void (*old_handler)(int);
 +
 +struct atsc_string_buffer {
 + int buf_len;
 + int buf_pos;
 + char *string;
 +};
 +
 +struct atsc_event_info {
 + uint16_t id;
 + struct tm start;
 + struct tm end;
 + int title_pos;
 + int title_len;
 + int msg_pos;
 + int msg_len;
 +};
 +
 +struct atsc_eit_section_info {
 + uint8_t section_num;
 + uint8_t num_events;
 + uint8_t num_etms;
 + uint8_t num_received_etms;
 + struct atsc_event_info **events;
 +};
 +
 +struct atsc_eit_info {
 + int num_eit_sections;
 + struct atsc_eit_section_info *section;
 +};
 +
 +struct atsc_channel_info {
 + uint8_t num_eits;
 + uint8_t service_type;
 + char short_name[8];
 + uint16_t major_num;
 + uint16_t minor_num;
 + uint16_t tsid;
 + uint16_t prog_num;
 + uint16_t src_id;
 + struct atsc_eit_info *eit;
 + struct atsc_event_info *last_event;
 + int event_info_index;
 + struct atsc_event_info e[MAX_NUM_EVENTS_PER_CHANNEL];
 + struct atsc_string_buffer title_buf;
 + struct atsc_string_buffer msg_buf;
 +};
 +
 +struct atsc_virtual_channels_info {
 + int num_channels;
 + uint16_t eit_pid[MAX_NUM_EVENT_TABLES];
 + uint16_t ett_pid[MAX_NUM_EVENT_TABLES];
 + struct atsc_channel_info ch[MAX_NUM_CHANNELS];
 +} guide;
 +
 +struct mgt_table_name {
 + uint16_t range;
 + const char *string;
 +};
 +
 +struct mgt_table_name mgt_tab_name_array[] = {
 + {0x, terrestrial VCT with current_next_indictor=1},
 + {0x0001, terrestrial VCT with current_next_indictor=0},
 + {0x0002, cable VCT with current_next_indictor=1},
 + {0x0003, cable VCT with current_next_indictor=0},
 + {0x0004, channel ETT},
 + {0x0005, DCCSCT},
 + {0x00FF, reserved for future ATSC use},
 + {0x017F, EIT},
 + {0x01FF, reserved for future ATSC use},
 + {0x027F, event ETT},
 + {0x02FF, reserved for future ATSC use}, /* FIXME */
 + {0x03FF, RRT with rating region},
 + {0x0FFF, user private},
 + {0x13FF, reserved for future

[Patch] dvb-apps: code cleanup and bug fix.

2009-06-20 Thread Yufei Yuan
This patch is against dvb-apps 1281. Following is what has been done:

1. atsc_epg bug fix: when ETM message gets longer than 256 characters, the last
character was chopped, due to incorrect calling to snprintf().
2. atsc_epg code cleanup:
  - white space added after keywords;
  - hard wrap around column 80 removed;
  - one-line conditional statement now w/o brackets.
3. scan Makefile workaround for building in gcc4.4/kernel 2.6.30 was not picked 
up in 1279, include again.

Regards,

Signed-off-by: Yufei Yuan yfy...@gmail.com

diff -upr dvb-apps/util/atsc_epg/atsc_epg.c 
dvb-apps_local/util/atsc_epg/atsc_epg.c
--- dvb-apps/util/atsc_epg/atsc_epg.c   2009-06-20 11:54:20.393986790 -0500
+++ dvb-apps_local/util/atsc_epg/atsc_epg.c 2009-06-20 12:09:08.0 
-0500
@@ -168,9 +168,8 @@ void *(*table_callback[16])(struct atsc_
 
 static void int_handler(int sig_num)
 {
-   if(SIGINT != sig_num) {
+   if (SIGINT != sig_num)
return;
-   }
ctrl_c = 1;
 }
 
@@ -219,8 +218,9 @@ static void help(void)
 
 static int close_frontend(struct dvbfe_handle *fe)
 {
-   if(NULL == fe) {
+   if (NULL == fe) {
fprintf(stderr, %s(): NULL pointer detected\n, __FUNCTION__);
+   return -1;
}
 
dvbfe_close(fe);
@@ -232,22 +232,20 @@ static int open_frontend(struct dvbfe_ha
 {
struct dvbfe_info fe_info;
 
-   if(NULL == (*fe = dvbfe_open(adapter, 0, 0))) {
-   fprintf(stderr, %s(): error calling dvbfe_open()\n,
-   __FUNCTION__);
+   if (NULL == (*fe = dvbfe_open(adapter, 0, 0))) {
+   fprintf(stderr, %s(): error calling dvbfe_open()\n, 
__FUNCTION__);
return -1;
}
dvbfe_get_info(*fe, 0, fe_info, DVBFE_INFO_QUERYTYPE_IMMEDIATE, 0);
-   if(DVBFE_TYPE_ATSC != fe_info.type) {
-   fprintf(stderr, %s(): only ATSC frontend supported 
currently\n,
-   __FUNCTION__);
+   if (DVBFE_TYPE_ATSC != fe_info.type) {
+   fprintf(stderr, %s(): only ATSC frontend supported 
currently\n, __FUNCTION__);
return -1;
}
fe_info.feparams.frequency = frequency;
fe_info.feparams.inversion = DVBFE_INVERSION_AUTO;
fe_info.feparams.u.atsc.modulation = DVBFE_ATSC_MOD_VSB_8;
fprintf(stdout, tuning to %d Hz, please wait...\n, frequency);
-   if(dvbfe_set(*fe, fe_info.feparams, TIMEOUT * 1000)) {
+   if (dvbfe_set(*fe, fe_info.feparams, TIMEOUT * 1000)) {
fprintf(stderr, %s(): cannot lock to %d Hz in %d seconds\n,
__FUNCTION__, frequency, TIMEOUT);
return -1;
@@ -257,7 +255,7 @@ static int open_frontend(struct dvbfe_ha
return 0;
 }
 
-#if ENABLE_RRT
+#ifdef ENABLE_RRT
 /* this is untested as since this part of the library is broken */
 static int parse_rrt(int dmxfd)
 {
@@ -270,20 +268,18 @@ static int parse_rrt(int dmxfd)
i = 0;
fprintf(stdout, waiting for RRT: );
fflush(stdout);
-   while(i  RRT_TIMEOUT) {
+   while (i  RRT_TIMEOUT) {
ret = atsc_scan_table(dmxfd, ATSC_BASE_PID, tag, (void **)rrt);
-   if(0  ret) {
-   fprintf(stderr, %s(): error calling 
atsc_scan_table()\n,
-   __FUNCTION__);
+   if (0  ret) {
+   fprintf(stderr, %s(): error calling 
atsc_scan_table()\n, __FUNCTION__);
return -1;
}
-   if(0 == ret) {
-   if(RRT_TIMEOUT  i) {
+   if (0 == ret) {
+   if (RRT_TIMEOUT  i) {
fprintf(stdout, .);
fflush(stdout);
} else {
-   fprintf(stdout, \nno RRT in %d seconds\n,
-   RRT_TIMEOUT);
+   fprintf(stdout, \nno RRT in %d seconds\n, 
RRT_TIMEOUT);
return 0;
}
i += TIMEOUT;
@@ -301,14 +297,13 @@ static int parse_rrt(int dmxfd)
atsc_text_string_segments_for_each(atsc_str, seg, j) {
const char *c;
int k;
-   if(seg-mode  0x3E) {
-   fprintf(stderr, %s(): text mode of 0x%02X 
-   not supported yet\n,
-   __FUNCTION__, seg-mode);
+
+   if (seg-mode  0x3E) {
+   fprintf(stderr, %s(): text mode of 0x%02X not 
supported yet\n, __FUNCTION__, seg-mode);
return -1;
}
c = (const char *)atsc_text_string_segment_bytes(seg);
-   for(k = 0; k  seg-number_bytes; k

Re: [Patch] dvb-apps: code cleanup and bug fix.

2009-06-20 Thread Yufei Yuan
The Makefile part of the last patch was not correct. Please use this one, sorry.

--- dvb-apps/util/scan/Makefile 2009-06-20 12:28:52.544986677 -0500
+++ dvb-apps_local/util/scan/Makefile   2009-06-20 12:27:08.597924784 -0500
@@ -14,7 +14,7 @@ inst_bin = $(binaries)
 
 removing = atsc_psip_section.c atsc_psip_section.h
 
-CPPFLAGS += -DDATADIR=\$(prefix)/share\
+CPPFLAGS += -Wno-packed-bitfield-compat -D__KERNEL_STRICT_NAMES 
-DDATADIR=\$(prefix)/share\
 
 .PHONY: all
 

On Sat, 2009-06-20 at 12:16 -0500, Yufei Yuan wrote:
 This patch is against dvb-apps 1281. Following is what has been done:
 
 1. atsc_epg bug fix: when ETM message gets longer than 256 characters, the 
 last
 character was chopped, due to incorrect calling to snprintf().
 2. atsc_epg code cleanup:
   - white space added after keywords;
   - hard wrap around column 80 removed;
   - one-line conditional statement now w/o brackets.
 3. scan Makefile workaround for building in gcc4.4/kernel 2.6.30 was not 
 picked up in 1279, include again.
 
 Regards,
 
 Signed-off-by: Yufei Yuan yfy...@gmail.com
 


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Patch] New utility program atsc_epg added to dvb-apps utility suite.

2009-06-19 Thread Yufei Yuan
Thanks for your time. It's my first time to do this, so I have been
trying to follow literally on the wiki page to do it right. If you can
elaborate a bit about what is broken? Is it the patch created
incorrectly, or it is pasted incorrectly, or the style is still
problematic?

I noticed that cutting and pasting from my console to the gmail
compose window does not seem working alright. How do you normally do
the inlining?

I have a full weekend to do this, and I do realize from the wiki page
that it does not appear to be simple, :)

I now simply disable the footer, don't worry.

Regards,

On Fri, Jun 19, 2009 at 7:41 PM, hermann pittonhermann-pit...@arcor.de wrote:

 Am Donnerstag, den 18.06.2009, 20:39 -0500 schrieb Yufei Yuan:
 This one is about the utility itself. I do apologize for the length
 here as inline patch is preferred according to the guide and I don't
 have any public online storage. Please let me know if this causes any
 inconvenience.

 Signed-off-by: Yufei Yuan yfy...@gmail.com

 diff -uprN dvb-apps/util/atsc_epg/atsc_epg.c
 dvb-apps_new/util/atsc_epg/atsc_epg.c
 --- dvb-apps/util/atsc_epg/atsc_epg.c   1969-12-31 18:00:00.0
 -0600
 +++ dvb-apps_new/util/atsc_epg/atsc_epg.c       2009-06-18
 20:17:24.527925142 -0500
 @@ -0,0 +1,1249 @@
 +/*
 + * atsc_epg utility
 + *
 + * Copyright (C) 2009 Yufei Yuan yfy...@gmail.com
 + * This program is free software; you can redistribute it and/or
 modify
 + * it under the terms of the GNU General Public License as published
 by
 + * the Free Software Foundation; either version 2 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + *
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 + */
 +
 +#include stdio.h
 +#include stdlib.h
 +#include unistd.h
 +#include string.h
 +#include time.h
 +#include signal.h
 +#include sys/types.h
 +#include sys/stat.h
 +#include fcntl.h
 +#include sys/ioctl.h
 +#include sys/poll.h
 +#include errno.h
 +#include getopt.h
 +#include stdarg.h
 +#include libdvbapi/dvbfe.h
 +#include libdvbapi/dvbdemux.h
 +#include libucsi/dvb/section.h
 +#include libucsi/atsc/section.h
 +#include libucsi/atsc/types.h
 +
 +#define TIMEOUT                                60
 +#define RRT_TIMEOUT                    60
 +#define MAX_NUM_EVENT_TABLES           128
 +#define TITLE_BUFFER_LEN               4096
 +#define MESSAGE_BUFFER_LEN             (16 * 1024)
 +#define MAX_NUM_CHANNELS               16
 +#define MAX_NUM_EVENTS_PER_CHANNEL     (4 * 24 * 7)
 +
 +static int atsc_scan_table(int dmxfd, uint16_t pid, enum
 atsc_section_tag tag,
 +       void **table_section);
 +
 +static const char *program;
 +static int adapter = 0;
 +static int period = 12; /* hours */
 +static int frequency;
 +static int enable_ett = 0;
 +static int ctrl_c = 0;
 +static const char *modulation = NULL;
 +static char separator[80];
 +void (*old_handler)(int);
 +
 +struct atsc_string_buffer {
 +       int buf_len;
 +       int buf_pos;
 +       char *string;
 +};
 +
 +struct atsc_event_info {
 +       uint16_t id;
 +       struct tm start;
 +       struct tm end;
 +       int title_pos;
 +       int title_len;
 +       int msg_pos;
 +       int msg_len;
 +};
 +
 +struct atsc_eit_section_info {
 +       uint8_t section_num;
 +       uint8_t num_events;
 +       uint8_t num_etms;
 +       uint8_t num_received_etms;
 +       struct atsc_event_info **events;
 +};
 +
 +struct atsc_eit_info {
 +       int num_eit_sections;
 +       struct atsc_eit_section_info *section;
 +};
 +
 +struct atsc_channel_info {
 +       uint8_t num_eits;
 +       uint8_t service_type;
 +       char short_name[8];
 +       uint16_t major_num;
 +       uint16_t minor_num;
 +       uint16_t tsid;
 +       uint16_t prog_num;
 +       uint16_t src_id;
 +       struct atsc_eit_info *eit;
 +       struct atsc_event_info *last_event;
 +       int event_info_index;
 +       struct atsc_event_info e[MAX_NUM_EVENTS_PER_CHANNEL];
 +       struct atsc_string_buffer title_buf;
 +       struct atsc_string_buffer msg_buf;
 +};
 +
 +struct atsc_virtual_channels_info {
 +       int num_channels;
 +       uint16_t eit_pid[MAX_NUM_EVENT_TABLES];
 +       uint16_t ett_pid[MAX_NUM_EVENT_TABLES];
 +       struct atsc_channel_info ch[MAX_NUM_CHANNELS];
 +} guide;
 +
 +struct mgt_table_name {
 +       uint16_t range;
 +       const char *string;
 +};
 +
 +struct mgt_table_name mgt_tab_name_array[] = {
 +       {0x, terrestrial VCT with current_next_indictor=1},
 +       {0x0001, terrestrial VCT with current_next_indictor=0},
 +       {0x0002, cable VCT with current_next_indictor=1

Re: [Patch] New utility program atsc_epg added to dvb-apps utility suite.

2009-06-19 Thread Yufei Yuan
Ok, let me first summarize what I have done in order not to waste your time 
again. I used Evolution client, 
used preformatted option, sent it to my other email box, forwarded it back and 
saved it as text file, then
patched the original tree, so far everything looks okay. Hopefully you guys can 
do start to do next step.

I do apologize for your wasted time.

Signed-off-by: Yufei Yuan yfy...@gmail.com

diff -uprN dvb-apps/util/atsc_epg/atsc_epg.c 
dvb-apps_new/util/atsc_epg/atsc_epg.c
--- dvb-apps/util/atsc_epg/atsc_epg.c   1969-12-31 18:00:00.0 -0600
+++ dvb-apps_new/util/atsc_epg/atsc_epg.c   2009-06-19 20:31:17.710924970 
-0500
@@ -0,0 +1,1249 @@
+/*
+ * atsc_epg utility
+ *
+ * Copyright (C) 2009 Yufei Yuan yfy...@gmail.com
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include stdio.h
+#include stdlib.h
+#include unistd.h
+#include string.h
+#include time.h
+#include signal.h
+#include sys/types.h
+#include sys/stat.h
+#include fcntl.h
+#include sys/ioctl.h
+#include sys/poll.h
+#include errno.h
+#include getopt.h
+#include stdarg.h
+#include libdvbapi/dvbfe.h
+#include libdvbapi/dvbdemux.h
+#include libucsi/dvb/section.h
+#include libucsi/atsc/section.h
+#include libucsi/atsc/types.h
+
+#define TIMEOUT60
+#define RRT_TIMEOUT60
+#define MAX_NUM_EVENT_TABLES   128
+#define TITLE_BUFFER_LEN   4096
+#define MESSAGE_BUFFER_LEN (16 * 1024)
+#define MAX_NUM_CHANNELS   16
+#define MAX_NUM_EVENTS_PER_CHANNEL (4 * 24 * 7)
+
+static int atsc_scan_table(int dmxfd, uint16_t pid, enum atsc_section_tag tag,
+   void **table_section);
+
+static const char *program;
+static int adapter = 0;
+static int period = 12; /* hours */
+static int frequency;
+static int enable_ett = 0;
+static int ctrl_c = 0;
+static const char *modulation = NULL;
+static char separator[80];
+void (*old_handler)(int);
+
+struct atsc_string_buffer {
+   int buf_len;
+   int buf_pos;
+   char *string;
+};
+
+struct atsc_event_info {
+   uint16_t id;
+   struct tm start;
+   struct tm end;
+   int title_pos;
+   int title_len;
+   int msg_pos;
+   int msg_len;
+};
+
+struct atsc_eit_section_info {
+   uint8_t section_num;
+   uint8_t num_events;
+   uint8_t num_etms;
+   uint8_t num_received_etms;
+   struct atsc_event_info **events;
+};
+
+struct atsc_eit_info {
+   int num_eit_sections;
+   struct atsc_eit_section_info *section;
+};
+
+struct atsc_channel_info {
+   uint8_t num_eits;
+   uint8_t service_type;
+   char short_name[8];
+   uint16_t major_num;
+   uint16_t minor_num;
+   uint16_t tsid;
+   uint16_t prog_num;
+   uint16_t src_id;
+   struct atsc_eit_info *eit;
+   struct atsc_event_info *last_event;
+   int event_info_index;
+   struct atsc_event_info e[MAX_NUM_EVENTS_PER_CHANNEL];
+   struct atsc_string_buffer title_buf;
+   struct atsc_string_buffer msg_buf;
+};
+
+struct atsc_virtual_channels_info {
+   int num_channels;
+   uint16_t eit_pid[MAX_NUM_EVENT_TABLES];
+   uint16_t ett_pid[MAX_NUM_EVENT_TABLES];
+   struct atsc_channel_info ch[MAX_NUM_CHANNELS];
+} guide;
+
+struct mgt_table_name {
+   uint16_t range;
+   const char *string;
+};
+
+struct mgt_table_name mgt_tab_name_array[] = {
+   {0x, terrestrial VCT with current_next_indictor=1},
+   {0x0001, terrestrial VCT with current_next_indictor=0},
+   {0x0002, cable VCT with current_next_indictor=1},
+   {0x0003, cable VCT with current_next_indictor=0},
+   {0x0004, channel ETT},
+   {0x0005, DCCSCT},
+   {0x00FF, reserved for future ATSC use},
+   {0x017F, EIT},
+   {0x01FF, reserved for future ATSC use},
+   {0x027F, event ETT},
+   {0x02FF, reserved for future ATSC use}, /* FIXME */
+   {0x03FF, RRT with rating region},
+   {0x0FFF, user private},
+   {0x13FF, reserved for future ATSC use},
+   {0x14FF, DCCT with dcc_id},
+   {0x, reserved for future ATSC use}
+};
+
+const char *channel_modulation_mode[] = {
+   ,
+   analog,
+   SCTE mode 1,
+   SCTE mode 2,
+   ATSC 8VSB,
+   ATSC 16VSB
+};
+
+const char *channel_service_type

Re: [Patch] New utility program atsc_epg added to dvb-apps utility suite.

2009-06-18 Thread Yufei Yuan
Ok, I guess I violated at least coding style rule No.1, :) Will peruse
the coding style page tonight and redo the submission.

Regards,
Yufei

On Thu, Jun 18, 2009 at 3:48 AM, Manu Abrahamabraham.m...@gmail.com wrote:
 On Thu, Jun 18, 2009 at 12:32 PM, Manu Abrahamabraham.m...@gmail.com wrote:
 2009/6/18 Yufei Yuan yfy...@gmail.com:
 Hi,

 I am not sure if this is the correct mailing list to send this patch.
 From the LinuxTV website, it seems that currently dvb-apps project has
 no owner.

 A new utility atsc_epg is added into the dvb-apps utility suite. It
 parses PSIP information carried in OTA ATSC channels, and constructs a
 basic EPG in a terminal window. Changes were also made to files to
 please GCC4.4.

 The patch is against latest revision 1278 from the dvb-apps repository.


 Please do send the patch with tabs instead of spaces for indentation.

 Also:

 * please cleanup the white spaces in the patch, if any.
 * please use the unified format, diff -u option.

 Regards,
 Manu




-- 
好学近乎智,力行近乎仁,知耻近乎勇。
Eagerness in learning is close to intelligence.
Commitment in doing is close to nobleness.
Realization of shamefulness is close to courageousness.
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Patch] New utility program atsc_epg added to dvb-apps utility suite.

2009-06-18 Thread Yufei Yuan
Okay, this one serves as a test as well. It's a trivial one to fix the
broken dvb-apps building process with gcc4.4 on kernel 2.6.30, another
way to eliminate the packed bitfield warning is to split the field,
but that is unwanted.

previous build error:

make[2]: Entering directory `/home/alex/source/dvb-apps/util/scan'
perl section_generate.pl atsc_psip_section.pl
CC scan.o
In file included from scan.c:48:
atsc_psip_section.h:57: note: Offset of packed bit-field ‘reserved2’
has changed in GCC 4.4
CC atsc_psip_section.o
In file included from atsc_psip_section.c:2:
atsc_psip_section.h:57: note: Offset of packed bit-field ‘reserved2’
has changed in GCC 4.4
CC diseqc.o
In file included from diseqc.c:4:
/usr/include/time.h:104: error: conflicting types for ‘timer_t’
/usr/include/linux/types.h:22: note: previous declaration of ‘timer_t’ was here
make[2]: *** [diseqc.o] Error 1
make[2]: Leaving directory `/home/alex/source/dvb-apps/util/scan'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/alex/source/dvb-apps/util'
make: *** [all] Error 2

--- dvb-apps/util/scan/Makefile.orig2009-06-18 19:43:52.397924757 -0500
+++ dvb-apps/util/scan/Makefile 2009-06-18 19:44:34.764925070 -0500
@@ -14,7 +14,7 @@ inst_bin = $(binaries)

 removing = atsc_psip_section.c atsc_psip_section.h

-CPPFLAGS += -DDATADIR=\$(prefix)/share\
+CPPFLAGS += -Wno-packed-bitfield-compat -D__KERNEL_STRICT_NAMES
-DDATADIR=\$(prefix)/share\

 .PHONY: all




-- 
Even uttering HI or HAO is offensive, sometime, somewhere. Reader
discretion is advised.
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Patch] New utility program atsc_epg added to dvb-apps utility suite.

2009-06-18 Thread Yufei Yuan
This one is about the utility itself. I do apologize for the length
here as inline patch is preferred according to the guide and I don't
have any public online storage. Please let me know if this causes any
inconvenience.

Signed-off-by: Yufei Yuan yfy...@gmail.com

diff -uprN dvb-apps/util/atsc_epg/atsc_epg.c
dvb-apps_new/util/atsc_epg/atsc_epg.c
--- dvb-apps/util/atsc_epg/atsc_epg.c   1969-12-31 18:00:00.0
-0600
+++ dvb-apps_new/util/atsc_epg/atsc_epg.c   2009-06-18
20:17:24.527925142 -0500
@@ -0,0 +1,1249 @@
+/*
+ * atsc_epg utility
+ *
+ * Copyright (C) 2009 Yufei Yuan yfy...@gmail.com
+ * This program is free software; you can redistribute it and/or
modify
+ * it under the terms of the GNU General Public License as published
by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include stdio.h
+#include stdlib.h
+#include unistd.h
+#include string.h
+#include time.h
+#include signal.h
+#include sys/types.h
+#include sys/stat.h
+#include fcntl.h
+#include sys/ioctl.h
+#include sys/poll.h
+#include errno.h
+#include getopt.h
+#include stdarg.h
+#include libdvbapi/dvbfe.h
+#include libdvbapi/dvbdemux.h
+#include libucsi/dvb/section.h
+#include libucsi/atsc/section.h
+#include libucsi/atsc/types.h
+
+#define TIMEOUT60
+#define RRT_TIMEOUT60
+#define MAX_NUM_EVENT_TABLES   128
+#define TITLE_BUFFER_LEN   4096
+#define MESSAGE_BUFFER_LEN (16 * 1024)
+#define MAX_NUM_CHANNELS   16
+#define MAX_NUM_EVENTS_PER_CHANNEL (4 * 24 * 7)
+
+static int atsc_scan_table(int dmxfd, uint16_t pid, enum
atsc_section_tag tag,
+   void **table_section);
+
+static const char *program;
+static int adapter = 0;
+static int period = 12; /* hours */
+static int frequency;
+static int enable_ett = 0;
+static int ctrl_c = 0;
+static const char *modulation = NULL;
+static char separator[80];
+void (*old_handler)(int);
+
+struct atsc_string_buffer {
+   int buf_len;
+   int buf_pos;
+   char *string;
+};
+
+struct atsc_event_info {
+   uint16_t id;
+   struct tm start;
+   struct tm end;
+   int title_pos;
+   int title_len;
+   int msg_pos;
+   int msg_len;
+};
+
+struct atsc_eit_section_info {
+   uint8_t section_num;
+   uint8_t num_events;
+   uint8_t num_etms;
+   uint8_t num_received_etms;
+   struct atsc_event_info **events;
+};
+
+struct atsc_eit_info {
+   int num_eit_sections;
+   struct atsc_eit_section_info *section;
+};
+
+struct atsc_channel_info {
+   uint8_t num_eits;
+   uint8_t service_type;
+   char short_name[8];
+   uint16_t major_num;
+   uint16_t minor_num;
+   uint16_t tsid;
+   uint16_t prog_num;
+   uint16_t src_id;
+   struct atsc_eit_info *eit;
+   struct atsc_event_info *last_event;
+   int event_info_index;
+   struct atsc_event_info e[MAX_NUM_EVENTS_PER_CHANNEL];
+   struct atsc_string_buffer title_buf;
+   struct atsc_string_buffer msg_buf;
+};
+
+struct atsc_virtual_channels_info {
+   int num_channels;
+   uint16_t eit_pid[MAX_NUM_EVENT_TABLES];
+   uint16_t ett_pid[MAX_NUM_EVENT_TABLES];
+   struct atsc_channel_info ch[MAX_NUM_CHANNELS];
+} guide;
+
+struct mgt_table_name {
+   uint16_t range;
+   const char *string;
+};
+
+struct mgt_table_name mgt_tab_name_array[] = {
+   {0x, terrestrial VCT with current_next_indictor=1},
+   {0x0001, terrestrial VCT with current_next_indictor=0},
+   {0x0002, cable VCT with current_next_indictor=1},
+   {0x0003, cable VCT with current_next_indictor=0},
+   {0x0004, channel ETT},
+   {0x0005, DCCSCT},
+   {0x00FF, reserved for future ATSC use},
+   {0x017F, EIT},
+   {0x01FF, reserved for future ATSC use},
+   {0x027F, event ETT},
+   {0x02FF, reserved for future ATSC use}, /* FIXME */
+   {0x03FF, RRT with rating region},
+   {0x0FFF, user private},
+   {0x13FF, reserved for future ATSC use},
+   {0x14FF, DCCT with dcc_id},
+   {0x, reserved for future ATSC use}
+};
+
+const char *channel_modulation_mode[] = {
+   ,
+   analog,
+   SCTE mode 1,
+   SCTE mode 2,
+   ATSC 8VSB,
+   ATSC 16VSB
+};
+
+const char *channel_service_type[] = {
+   ,
+   analog TV,
+   ATSC digital TV,
+   ATSC audio,
+   ATSC data-only
+};
+
+void *(*table_callback[16])(struct atsc_section_psip