The changes for trunk are less extensive, but include
[asterisk/asterisk.git] / formats / format_h263.c
index 08891c8..a2537f0 100644 (file)
@@ -49,7 +49,13 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 /* Portions of the conversion code are by guido@sienanet.it */
 
-#define        BUF_SIZE        4096    /* Two Real h263 Frames */
+/* According to:
+ * http://lists.mpegif.org/pipermail/mp4-tech/2005-July/005741.html
+ * the maximum actual frame size is not 2048, but 8192.  Since the maximum
+ * theoretical limit is not much larger (32k = 15bits), we'll go for that
+ * size to ensure we don't corrupt frames sent to us (unless they're
+ * ridiculously large). */
+#define        BUF_SIZE        32768   /* Four real h.263 Frames */
 
 struct h263_desc {
        unsigned int lastts;
@@ -84,7 +90,7 @@ static struct ast_frame *h263_read(struct ast_filestream *s, int *whennext)
        len &= 0x7fff;
        if (len > BUF_SIZE) {
                ast_log(LOG_WARNING, "Length %d is too long\n", len);
-               len = BUF_SIZE; /* XXX truncate ? */
+               return NULL;
        }
        s->fr.frametype = AST_FRAME_VIDEO;
        s->fr.subclass = AST_FORMAT_H263;
@@ -176,27 +182,16 @@ static const struct ast_format h263_f = {
        .read = h263_read,
        .buf_size = BUF_SIZE + AST_FRIENDLY_OFFSET,
        .desc_size = sizeof(struct h263_desc),
-       .module = &mod_data,    /* XXX */
 };
 
-static int load_module(void *mod)
+static int load_module(void)
 {
        return ast_format_register(&h263_f);
 }
 
-static int unload_module(void *mod)
+static int unload_module(void)
 {
        return ast_format_unregister(h263_f.name);
 }      
 
-static const char *description(void)
-{
-       return "Raw h263 data";
-}
-
-static const char *key(void)
-{
-       return ASTERISK_GPL_KEY;
-}
-
-STD_MOD1;
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw H.263 data");