From 97a72ecf96b00f18ca13222571389ddce35fce8e Mon Sep 17 00:00:00 2001 From: Mark Spencer <markster@digium.com> Date: Sat, 26 May 2001 20:39:49 +0000 Subject: [PATCH] Version 0.1.9 from FTP git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@326 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- codecs/gsm/src/k6opt.s | 16 ----- formats/format_jpeg.c | 126 ++++++++++++++++++++++++++++++++++++++ images/asterisk-intro.jpg | Bin 0 -> 6143 bytes include/asterisk/image.h | 45 ++++++++++++++ 4 files changed, 171 insertions(+), 16 deletions(-) create mode 100755 formats/format_jpeg.c create mode 100755 images/asterisk-intro.jpg create mode 100755 include/asterisk/image.h diff --git a/codecs/gsm/src/k6opt.s b/codecs/gsm/src/k6opt.s index 3be5c18534..d84d54cbf3 100755 --- a/codecs/gsm/src/k6opt.s +++ b/codecs/gsm/src/k6opt.s @@ -1,19 +1,3 @@ -/* k6opt.s vector functions optimized for MMX extensions to x86 - * - * Copyright (C) 1999 by Stanley J. Brooks <stabro@megsinet.net> - * - * Any use of this software is permitted provided that this notice is not - * removed and that neither the authors nor the Technische Universitaet Berlin - * are deemed to have made any representations as to the suitability of this - * software for any purpose nor are held responsible for any defects of - * this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE; - * not even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. - * - * Chicago, 03.12.1999 - * Stanley J. Brooks - */ - .file "k6opt.s" .version "01.01" /* gcc2_compiled.: */ diff --git a/formats/format_jpeg.c b/formats/format_jpeg.c new file mode 100755 index 0000000000..7e10af8841 --- /dev/null +++ b/formats/format_jpeg.c @@ -0,0 +1,126 @@ +/* + * Asterisk -- A telephony toolkit for Linux. + * + * JPEG File format support. + * + * Copyright (C) 1999, Mark Spencer + * + * Mark Spencer <markster@linux-support.net> + * + * This program is free software, distributed under the terms of + * the GNU General Public License + */ + +#include <asterisk/channel.h> +#include <asterisk/file.h> +#include <asterisk/logger.h> +#include <asterisk/sched.h> +#include <asterisk/module.h> +#include <asterisk/image.h> +#include <arpa/inet.h> +#include <stdlib.h> +#include <sys/time.h> +#include <stdio.h> +#include <unistd.h> +#include <errno.h> +#include <string.h> +#include <pthread.h> +#include <endian.h> + + + +static char *desc = "JPEG (Joint Picture Experts Group) Image Format"; + + +static struct ast_frame *jpeg_read_image(int fd, int len) +{ + struct ast_frame fr; + int res; + char buf[65536]; + if (len > sizeof(buf)) { + ast_log(LOG_WARNING, "JPEG image too large to read\n"); + return NULL; + } + res = read(fd, buf, len); + if (res < len) { + ast_log(LOG_WARNING, "Only read %d of %d bytes: %s\n", res, len, strerror(errno)); + } + memset(&fr, 0, sizeof(fr)); + fr.frametype = AST_FRAME_IMAGE; + fr.subclass = AST_FORMAT_JPEG; + fr.data = buf; + fr.src = "JPEG Read"; + fr.datalen = len; + return ast_frisolate(&fr); +} + +static int jpeg_identify(int fd) +{ + char buf[10]; + int res; + res = read(fd, buf, sizeof(buf)); + if (res < sizeof(buf)) + return 0; + if (memcmp(buf + 6, "JFIF", 4)) + return 0; + return 1; +} + +static int jpeg_write_image(int fd, struct ast_frame *fr) +{ + int res=0; + if (fr->frametype != AST_FRAME_IMAGE) { + ast_log(LOG_WARNING, "Not an image\n"); + return -1; + } + if (fr->subclass != AST_FORMAT_JPEG) { + ast_log(LOG_WARNING, "Not a jpeg image\n"); + return -1; + } + if (fr->datalen) { + res = write(fd, fr->data, fr->datalen); + if (res != fr->datalen) { + ast_log(LOG_WARNING, "Only wrote %d of %d bytes: %s\n", res, fr->datalen); + return -1; + } + } + return res; +} + +static struct ast_imager jpeg_format = { + "jpg", + "JPEG (Joint Picture Experts Group)", + "jpg|jpeg", + AST_FORMAT_JPEG, + jpeg_read_image, + jpeg_identify, + jpeg_write_image, +}; + +int load_module() +{ + return ast_image_register(&jpeg_format); +} + +int unload_module() +{ + ast_image_unregister(&jpeg_format); + return 0; +} + +int usecount() +{ + /* We never really have any users */ + return 0; +} + +char *description() +{ + return desc; +} + + +char *key() +{ + return ASTERISK_GPL_KEY; +} diff --git a/images/asterisk-intro.jpg b/images/asterisk-intro.jpg new file mode 100755 index 0000000000000000000000000000000000000000..278f018ce5a5a66d17fdf12aebde59d707ce623a GIT binary patch literal 6143 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 literal 0 HcmV?d00001 diff --git a/include/asterisk/image.h b/include/asterisk/image.h new file mode 100755 index 0000000000..5e318dc93b --- /dev/null +++ b/include/asterisk/image.h @@ -0,0 +1,45 @@ +/* + * Asterisk -- A telephony toolkit for Linux. + * + * General Asterisk channel definitions. + * + * Copyright (C) 1999, Mark Spencer + * + * Mark Spencer <markster@linux-support.net> + * + * This program is free software, distributed under the terms of + * the GNU General Public License + */ + +#ifndef _ASTERISK_IMAGE_H +#define _ASTERISK_IMAGE_H + +struct ast_imager { + char *name; /* Name */ + char *desc; /* Description */ + char *exts; /* Extension(s) (separated by '|' ) */ + int format; /* Image format */ + struct ast_frame *(*read_image)(int fd, int len); /* Read an image from a file descriptor */ + int (*identify)(int fd); /* Identify if this is that type of file */ + int (*write_image)(int fd, struct ast_frame *frame); /* Returns length written */ + struct ast_imager *next; +}; + +/* Returns non-zero if image transmission is supported */ +extern int ast_supports_images(struct ast_channel *chan); + +/* Sends an image */ +extern int ast_send_image(struct ast_channel *chan, char *filename); + +/* Make an image from a filename */ +extern struct ast_frame *ast_read_image(char *filename, char *preflang, int format); + +/* Register an image format */ +extern int ast_image_register(struct ast_imager *imgdrv); + +extern void ast_image_unregister(struct ast_imager *imgdrv); + +/* Initialize image stuff */ +extern int ast_image_init(void); + +#endif -- GitLab