* \arg File name extension: jpeg, jpg
* \ingroup formats
*/
+
+/*** MODULEINFO
+ <support_level>extended</support_level>
+ ***/
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
#include "asterisk/mod_format.h"
#include "asterisk/module.h"
#include "asterisk/image.h"
#include "asterisk/endian.h"
+#include "asterisk/format_cache.h"
static struct ast_frame *jpeg_read_image(int fd, int len)
{
}
memset(&fr, 0, sizeof(fr));
fr.frametype = AST_FRAME_IMAGE;
- fr.subclass = AST_FORMAT_JPEG;
- fr.data = buf;
+ fr.subclass.format = ast_format_jpeg;
+ fr.data.ptr = buf;
fr.src = "JPEG Read";
fr.datalen = len;
return ast_frisolate(&fr);
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);
+ res = write(fd, fr->data.ptr, fr->datalen);
if (res != fr->datalen) {
ast_log(LOG_WARNING, "Only wrote %d of %d bytes: %s\n", res, fr->datalen, strerror(errno));
return -1;
}
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,
+ .name = "jpg",
+ .desc = "JPEG (Joint Picture Experts Group)",
+ .exts = "jpg|jpeg",
+ .read_image = jpeg_read_image,
+ .identify = jpeg_identify,
+ .write_image = jpeg_write_image,
};
static int load_module(void)
{
+ jpeg_format.format = ast_format_jpeg;
if (ast_image_register(&jpeg_format))
return AST_MODULE_LOAD_FAILURE;
return AST_MODULE_LOAD_SUCCESS;
ast_image_unregister(&jpeg_format);
return 0;
-}
+}
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "JPEG (Joint Picture Experts Group) Image Format");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "jpeg (joint picture experts group) image format",
+ .support_level = AST_MODULE_SUPPORT_EXTENDED,
+ .load = load_module,
+ .unload = unload_module,
+ .load_pri = AST_MODPRI_APP_DEPEND
+);