General Asterisk channel definitions for image handling. More...

Go to the source code of this file.
Data Structures | |
| struct | ast_imager |
| structure associated with registering an image format More... | |
Functions | |
| int | ast_image_init (void) |
| Initialize image stuff Initializes all the various image stuff. Basically just registers the cli stuff. | |
| int | ast_image_register (struct ast_imager *imgdrv) |
| Register image format. | |
| void | ast_image_unregister (struct ast_imager *imgdrv) |
| Unregister an image format. | |
| struct ast_frame * | ast_read_image (const char *filename, const char *preflang, int format) |
| Make an image. | |
| int | ast_send_image (struct ast_channel *chan, const char *filename) |
| Sends an image. | |
| int | ast_supports_images (struct ast_channel *chan) |
| Check for image support on a channel. | |
General Asterisk channel definitions for image handling.
Definition in file image.h.
| int ast_image_init | ( | void | ) |
Initialize image stuff Initializes all the various image stuff. Basically just registers the cli stuff.
Definition at line 204 of file image.c.
References ARRAY_LEN, and ast_cli_register_multiple().
Referenced by main().
{
ast_cli_register_multiple(cli_image, ARRAY_LEN(cli_image));
return 0;
}
| int ast_image_register | ( | struct ast_imager * | imgdrv | ) |
Register image format.
| imgdrv | Populated ast_imager structure with info to register Registers an image format |
Definition at line 46 of file image.c.
References AST_RWLIST_INSERT_HEAD, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_verb, ast_imager::desc, and ast_imager::name.
Referenced by load_module().
{
AST_RWLIST_WRLOCK(&imagers);
AST_RWLIST_INSERT_HEAD(&imagers, img, list);
AST_RWLIST_UNLOCK(&imagers);
ast_verb(2, "Registered format '%s' (%s)\n", img->name, img->desc);
return 0;
}
| void ast_image_unregister | ( | struct ast_imager * | imgdrv | ) |
Unregister an image format.
| imgdrv | pointer to the ast_imager structure you wish to unregister Unregisters the image format passed in. Returns nothing |
Definition at line 55 of file image.c.
References AST_RWLIST_REMOVE, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_verb, ast_imager::desc, and ast_imager::name.
Referenced by unload_module().
{
AST_RWLIST_WRLOCK(&imagers);
img = AST_RWLIST_REMOVE(&imagers, img, list);
AST_RWLIST_UNLOCK(&imagers);
if (img)
ast_verb(2, "Unregistered format '%s' (%s)\n", img->name, img->desc);
}
| struct ast_frame* ast_read_image | ( | const char * | filename, |
| const char * | preflang, | ||
| int | format | ||
| ) | [read] |
Make an image.
| filename | filename of image to prepare |
| preflang | preferred language to get the image...? |
| format | the format of the file Make an image from a filename ??? No estoy positivo |
| an | ast_frame on success |
| NULL | on failure |
Definition at line 99 of file image.c.
References ast_copy_string(), ast_log(), AST_RWLIST_RDLOCK, AST_RWLIST_TRAVERSE, AST_RWLIST_UNLOCK, errno, ast_imager::exts, f, file_exists(), ast_imager::format, ast_imager::identify, len(), LOG_WARNING, make_filename(), ast_imager::name, ast_imager::read_image, and strsep().
Referenced by ast_send_image().
{
struct ast_imager *i;
char buf[256];
char tmp[80];
char *e;
struct ast_imager *found = NULL;
int fd;
int len=0;
struct ast_frame *f = NULL;
AST_RWLIST_RDLOCK(&imagers);
AST_RWLIST_TRAVERSE(&imagers, i, list) {
if (i->format & format) {
char *stringp=NULL;
ast_copy_string(tmp, i->exts, sizeof(tmp));
stringp = tmp;
e = strsep(&stringp, "|");
while (e) {
make_filename(buf, sizeof(buf), filename, preflang, e);
if ((len = file_exists(buf))) {
found = i;
break;
}
make_filename(buf, sizeof(buf), filename, NULL, e);
if ((len = file_exists(buf))) {
found = i;
break;
}
e = strsep(&stringp, "|");
}
}
if (found)
break;
}
if (found) {
fd = open(buf, O_RDONLY);
if (fd > -1) {
if (!found->identify || found->identify(fd)) {
/* Reset file pointer */
lseek(fd, 0, SEEK_SET);
f = found->read_image(fd, len);
} else
ast_log(LOG_WARNING, "%s does not appear to be a %s file\n", buf, found->name);
close(fd);
} else
ast_log(LOG_WARNING, "Unable to open '%s': %s\n", buf, strerror(errno));
} else
ast_log(LOG_WARNING, "Image file '%s' not found\n", filename);
AST_RWLIST_UNLOCK(&imagers);
return f;
}
| int ast_send_image | ( | struct ast_channel * | chan, |
| const char * | filename | ||
| ) |
Sends an image.
| chan | channel to send image on |
| filename | filename of image to send (minus extension) Sends an image on the given channel. |
| 0 | on success |
| -1 | on error |
Definition at line 155 of file image.c.
References ast_frfree, ast_read_image(), f, ast_channel::language, ast_channel_tech::send_image, and ast_channel::tech.
Referenced by handle_sendimage(), and sendimage_exec().
{
struct ast_frame *f;
int res = -1;
if (chan->tech->send_image) {
f = ast_read_image(filename, chan->language, -1);
if (f) {
res = chan->tech->send_image(chan, f);
ast_frfree(f);
}
}
return res;
}
| int ast_supports_images | ( | struct ast_channel * | chan | ) |
Check for image support on a channel.
| chan | channel to check Checks the channel to see if it supports the transmission of images |
Definition at line 65 of file image.c.
References ast_channel_tech::send_image, and ast_channel::tech.
Referenced by sendimage_exec().
{
if (!chan || !chan->tech)
return 0;
if (!chan->tech->send_image)
return 0;
return 1;
}