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. | |
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. |
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, ast_cli_register_multiple(), and cli_image.
Referenced by main().
00205 { 00206 ast_cli_register_multiple(cli_image, ARRAY_LEN(cli_image)); 00207 return 0; 00208 }
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().
00047 { 00048 AST_RWLIST_WRLOCK(&imagers); 00049 AST_RWLIST_INSERT_HEAD(&imagers, img, list); 00050 AST_RWLIST_UNLOCK(&imagers); 00051 ast_verb(2, "Registered format '%s' (%s)\n", img->name, img->desc); 00052 return 0; 00053 }
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().
00056 { 00057 AST_RWLIST_WRLOCK(&imagers); 00058 img = AST_RWLIST_REMOVE(&imagers, img, list); 00059 AST_RWLIST_UNLOCK(&imagers); 00060 00061 if (img) 00062 ast_verb(2, "Unregistered format '%s' (%s)\n", img->name, img->desc); 00063 }
struct ast_frame* ast_read_image | ( | const char * | filename, | |
const char * | preflang, | |||
int | format | |||
) |
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().
00100 { 00101 struct ast_imager *i; 00102 char buf[256]; 00103 char tmp[80]; 00104 char *e; 00105 struct ast_imager *found = NULL; 00106 int fd; 00107 int len=0; 00108 struct ast_frame *f = NULL; 00109 00110 AST_RWLIST_RDLOCK(&imagers); 00111 AST_RWLIST_TRAVERSE(&imagers, i, list) { 00112 if (i->format & format) { 00113 char *stringp=NULL; 00114 ast_copy_string(tmp, i->exts, sizeof(tmp)); 00115 stringp = tmp; 00116 e = strsep(&stringp, "|"); 00117 while (e) { 00118 make_filename(buf, sizeof(buf), filename, preflang, e); 00119 if ((len = file_exists(buf))) { 00120 found = i; 00121 break; 00122 } 00123 make_filename(buf, sizeof(buf), filename, NULL, e); 00124 if ((len = file_exists(buf))) { 00125 found = i; 00126 break; 00127 } 00128 e = strsep(&stringp, "|"); 00129 } 00130 } 00131 if (found) 00132 break; 00133 } 00134 00135 if (found) { 00136 fd = open(buf, O_RDONLY); 00137 if (fd > -1) { 00138 if (!found->identify || found->identify(fd)) { 00139 /* Reset file pointer */ 00140 lseek(fd, 0, SEEK_SET); 00141 f = found->read_image(fd, len); 00142 } else 00143 ast_log(LOG_WARNING, "%s does not appear to be a %s file\n", buf, found->name); 00144 close(fd); 00145 } else 00146 ast_log(LOG_WARNING, "Unable to open '%s': %s\n", buf, strerror(errno)); 00147 } else 00148 ast_log(LOG_WARNING, "Image file '%s' not found\n", filename); 00149 00150 AST_RWLIST_UNLOCK(&imagers); 00151 00152 return f; 00153 }
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().
00156 { 00157 struct ast_frame *f; 00158 int res = -1; 00159 if (chan->tech->send_image) { 00160 f = ast_read_image(filename, chan->language, -1); 00161 if (f) { 00162 res = chan->tech->send_image(chan, f); 00163 ast_frfree(f); 00164 } 00165 } 00166 return res; 00167 }
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().
00066 { 00067 if (!chan || !chan->tech) 00068 return 0; 00069 if (!chan->tech->send_image) 00070 return 0; 00071 return 1; 00072 }