From: Dan F. <da...@co...> - 2008-12-15 05:28:56
|
On Sun, Dec 14, 2008 at 06:24:53PM -0800, Benny Smith wrote: > I am a new user of libexif and am trying to apply it to an embedded > application. > > Unfortunately, I am having to tailor the library to the environment (Rabbit > Semiconductor?s Dynamic C) that I have chosen. libexif is quite portable, so you shouldn't have any problem. If you can cross compile from a POSIX environment, then it should happen automagically. > On the main page for libexif (http://libexif.sourceforge.net/internals/ > main.html), it appears that in order to use the library ?libexif?, one need > only insert the statement: #include <libexif/libexif-data.h> . > > Scanning through the code for libexif-data.h, I see lots of #include statements > for other libexif header files, but no #include statements for function files > such as exif-data.c or exif-utils.c. And, the header files that are #included > within exif-data.h seem not to contain any invocation of the function files > (*.c). > > I expected that #including exif-data.h would, directly and indirectly, cause > all files of libexif to be included. > > So, does an application program have to #include the *.c function files from > the libexif library separately? > > What am I missing? It sounds like you're missing the "lib" in "libexif". libexif is designed to be compiled into a library which is then linked to your application. The standard build process creates a libexif.a and/or libexif.so file which contains all the compiled binaries from the .c files. When you add the option "-lexif" to your app's link line (assuming a UNIX-like environment), the code from the libexif library is added to your application. You could compile all the .c files yourself, at the same time as your application, but doing it separately as a library is a cleaner approach. >>> Dan -- http://www.MoveAnnouncer.com The web change of address service Let webmasters know that your web site has moved |
From: Dan F. <da...@co...> - 2008-12-15 05:30:36
|
On Sun, Dec 14, 2008 at 06:24:53PM -0800, Benny Smith wrote: > On the main page for libexif (http://libexif.sourceforge.net/internals/ > main.html), it appears that in order to use the library ?libexif?, one need > only insert the statement: #include <libexif/libexif-data.h> . One other point--if you're just using libexif in your application, you shouldn't care about its internals. The (much simpler) documentation at http://libexif.sourceforge.net/api/ is all you need. >>> Dan -- http://www.MoveAnnouncer.com The web change of address service Let webmasters know that your web site has moved |
From: Hubert F. <hfi...@te...> - 2008-12-15 06:11:41
|
On Sun, 2008-12-14 at 22:01 -0800, Benny Smith wrote: > > Surely I am not the first person to use libexif for an embedded > application > where memory is limited and where ANSI C may not be fully supported? Here, memory limitation are more in the neighborhood of 4 or 8MB of RAM. And that's perfectly doable. I don't even see anything worth doing in 128KB even more when it comes to digital photography. Hub |
From: Benny S. <ich...@pa...> - 2008-12-15 06:01:56
|
Dan, Thanks for the reply. The reason I cannot compile libexif into a library as you instructed is that Rabbit's Dynamic C is not an ANSI C language. For instance, instead of #include, it requires #use. There are other subtle differences that I have to deal with in order for Dynamic C to accept and compile the libexif files. I have turned to the Rabbit embedded modules and Dynamic C because I cannot find an 8-bit microcontroller with 64KB of onboard RAM to allow storage of a complete Exif header, if necessary. The Rabbit RCM2300 has 128K of RAM. I asked about the internals of the libexif/exif-data.h because I am trying to understand exactly which libexif files (in the list of over 30) that I have to convert to Dynamic C in order for the library to compile and work properly. Surely I am not the first person to use libexif for an embedded application where memory is limited and where ANSI C may not be fully supported? Benny -----Original Message----- From: Dan Fandrich [mailto:da...@co...] Sent: Sunday, December 14, 2008 9:29 PM To: lib...@li... Subject: Re: [Libexif-devel] Using libexif On Sun, Dec 14, 2008 at 06:24:53PM -0800, Benny Smith wrote: > I am a new user of libexif and am trying to apply it to an embedded > application. > > Unfortunately, I am having to tailor the library to the environment (Rabbit > Semiconductor?s Dynamic C) that I have chosen. libexif is quite portable, so you shouldn't have any problem. If you can cross compile from a POSIX environment, then it should happen automagically. > On the main page for libexif (http://libexif.sourceforge.net/internals/ > main.html), it appears that in order to use the library ?libexif?, one need > only insert the statement: #include <libexif/libexif-data.h> . > > Scanning through the code for libexif-data.h, I see lots of #include statements > for other libexif header files, but no #include statements for function files > such as exif-data.c or exif-utils.c. And, the header files that are #included > within exif-data.h seem not to contain any invocation of the function files > (*.c). > > I expected that #including exif-data.h would, directly and indirectly, cause > all files of libexif to be included. > > So, does an application program have to #include the *.c function files from > the libexif library separately? > > What am I missing? It sounds like you're missing the "lib" in "libexif". libexif is designed to be compiled into a library which is then linked to your application. The standard build process creates a libexif.a and/or libexif.so file which contains all the compiled binaries from the .c files. When you add the option "-lexif" to your app's link line (assuming a UNIX-like environment), the code from the libexif library is added to your application. You could compile all the .c files yourself, at the same time as your application, but doing it separately as a library is a cleaner approach. >>> Dan -- http://www.MoveAnnouncer.com The web change of address service Let webmasters know that your web site has moved ---------------------------------------------------------------------------- -- SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help pave the way to the Next Web now. Learn more and register at http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/ _______________________________________________ libexif-devel mailing list lib...@li... https://lists.sourceforge.net/lists/listinfo/libexif-devel |
From: Dan F. <da...@co...> - 2008-12-15 06:51:11
|
On Sun, Dec 14, 2008 at 10:01:53PM -0800, Benny Smith wrote: > The reason I cannot compile libexif into a library as you instructed is that > Rabbit's Dynamic C is not an ANSI C language. For instance, instead of > #include, it requires #use. There are other subtle differences that I have > to deal with in order for Dynamic C to accept and compile the libexif files. > > I have turned to the Rabbit embedded modules and Dynamic C because I cannot > find an 8-bit microcontroller with 64KB of onboard RAM to allow storage of a > complete Exif header, if necessary. The Rabbit RCM2300 has 128K of RAM. Hubert is right--it's hard to imagine an application that processes JPEG images that will do anything useful in less than a few MB of memory. The RAM you have left over from the EXIF table isn't enough for holding a FAT table for reading an image from a memory card, or running gphoto2 (or something similar) to retrieve an image from serial/USB/Ethernet. I don't know what your application is, but you'll certainly have plenty of fun cramming it into a Rabbit! > I asked about the internals of the libexif/exif-data.h because I am trying > to understand exactly which libexif files (in the list of over 30) that I > have to convert to Dynamic C in order for the library to compile and work > properly. It all depends on what you're trying to accomplish. You can get away with just compiling exif-loader.c, exif-utils.c and exif-mem.c (there may be one or two more) if you want the minimal functionality of loading EXIF data from an image. If you want to look at individual tags, you'll need just about the whole thing (minus the MakerNote handlers). The entire library (minus the verbose strings) compiles down to a 66 KiB shared library on i386 Linux, which isn't much by Linux standards but is huge for a Commodore 64 :^) > Surely I am not the first person to use libexif for an embedded application > where memory is limited and where ANSI C may not be fully supported? The kinds of embedded applications I'm aware of using libexif are embedded Linux devices with 32 MB of RAM and an ARM processor. >>> Dan -- http://www.MoveAnnouncer.com The web change of address service Let webmasters know that your web site has moved |
From: Benny S. <ich...@pa...> - 2008-12-15 07:15:09
|
Dan, Your answers make me appreciate the cleverness of the camera manufacturers, whose digital cameras write to nearly every tag location in the Exif header. Do you suppose that the controllers in those cameras are Linux-based? Can you point me to a WEB site where I can learn how to tackle my application (specifically, reading and writing to Exif headers in JPG files) from the Linux hardware and software direction? Benny -----Original Message----- From: Dan Fandrich [mailto:da...@co...] Sent: Sunday, December 14, 2008 10:51 PM To: lib...@li... Subject: Re: [Libexif-devel] Using libexif On Sun, Dec 14, 2008 at 10:01:53PM -0800, Benny Smith wrote: > The reason I cannot compile libexif into a library as you instructed is that > Rabbit's Dynamic C is not an ANSI C language. For instance, instead of > #include, it requires #use. There are other subtle differences that I have > to deal with in order for Dynamic C to accept and compile the libexif files. > > I have turned to the Rabbit embedded modules and Dynamic C because I cannot > find an 8-bit microcontroller with 64KB of onboard RAM to allow storage of a > complete Exif header, if necessary. The Rabbit RCM2300 has 128K of RAM. Hubert is right--it's hard to imagine an application that processes JPEG images that will do anything useful in less than a few MB of memory. The RAM you have left over from the EXIF table isn't enough for holding a FAT table for reading an image from a memory card, or running gphoto2 (or something similar) to retrieve an image from serial/USB/Ethernet. I don't know what your application is, but you'll certainly have plenty of fun cramming it into a Rabbit! > I asked about the internals of the libexif/exif-data.h because I am trying > to understand exactly which libexif files (in the list of over 30) that I > have to convert to Dynamic C in order for the library to compile and work > properly. It all depends on what you're trying to accomplish. You can get away with just compiling exif-loader.c, exif-utils.c and exif-mem.c (there may be one or two more) if you want the minimal functionality of loading EXIF data from an image. If you want to look at individual tags, you'll need just about the whole thing (minus the MakerNote handlers). The entire library (minus the verbose strings) compiles down to a 66 KiB shared library on i386 Linux, which isn't much by Linux standards but is huge for a Commodore 64 :^) > Surely I am not the first person to use libexif for an embedded application > where memory is limited and where ANSI C may not be fully supported? The kinds of embedded applications I'm aware of using libexif are embedded Linux devices with 32 MB of RAM and an ARM processor. >>> Dan -- http://www.MoveAnnouncer.com The web change of address service Let webmasters know that your web site has moved ---------------------------------------------------------------------------- -- SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help pave the way to the Next Web now. Learn more and register at http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/ _______________________________________________ libexif-devel mailing list lib...@li... https://lists.sourceforge.net/lists/listinfo/libexif-devel |
From: Dan F. <da...@co...> - 2008-12-15 18:19:53
|
On Sun, Dec 14, 2008 at 11:15:06PM -0800, Benny Smith wrote: > Your answers make me appreciate the cleverness of the camera manufacturers, > whose digital cameras write to nearly every tag location in the Exif header. > > Do you suppose that the controllers in those cameras are Linux-based? Writing EXIF tags is a different problem from reading them, and a much easier one, IMHO. I know some digital cameras are Linux-based, but certainly not the cheaper ones. > Can you point me to a WEB site where I can learn how to tackle my > application (specifically, reading and writing to Exif headers in JPG files) > from the Linux hardware and software direction? The libexif web site contains a few pointers to EXIF specifications and of course the API. libexif makes design decisions that assume a reasonable amount of RAM is available. You could write an EXIF parser that requires much less RAM if you wanted to, but it would have other trade offs. You still haven't said what you're trying to accomplish, so it's hard to give more specific suggestions. >>> Dan -- http://www.MoveAnnouncer.com The web change of address service Let webmasters know that your web site has moved |