X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ffilegif.h;h=74cae2a0581e4cb7610d522a9ab0a178fd1cb946;hp=da1db5971d98a40da72be6e27e91667fb764036c;hb=9afc3844e37c6db23435d5d0c33129dcc81061e4;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1 diff --git a/cinelerra-5.1/cinelerra/filegif.h b/cinelerra-5.1/cinelerra/filegif.h index da1db597..74cae2a0 100644 --- a/cinelerra-5.1/cinelerra/filegif.h +++ b/cinelerra-5.1/cinelerra/filegif.h @@ -22,13 +22,16 @@ #ifndef FILEGIF_H #define FILEGIF_H +#include "arraylist.h" #include "file.inc" #include "filelist.h" #include "vframe.inc" +#include "gif_lib.h" + // This header file is representative of any single frame file format. -class FileGIF : public FileList +class FileGIF : public FileBase { public: FileGIF(Asset *asset, File *file); @@ -37,14 +40,57 @@ public: static int get_best_colormodel(Asset *asset, int driver); static int check_sig(Asset *asset); int colormodel_supported(int colormodel); + int open_file(int rd, int wr); + int ropen_path(const char *path); + int wopen_path(const char *path); + int wopen_data(VFrame *frame); + int open_gif(); + int close_file(); + int set_video_position(int64_t pos); int read_frame_header(char *path); - int read_frame(VFrame *output, VFrame *input); + int read_frame(VFrame *output); + int read_next_image(VFrame *output); + int scan_gif(); + int write_frames(VFrame ***frames, int len); + int write_frame(VFrame *frame); - unsigned char *data; - int offset; - int size; + int64_t offset; + int err, eof; + int fd, depth, writes; + int rows, row_size; + FILE *fp; + GifFileType *gif_file; + GifPixelType *bg; + GifRowType *buffer; + ArrayList file_pos; + VFrame *output; }; +class FileGIFList : public FileList +{ +public: + FileGIFList(Asset *asset, File *file); + ~FileGIFList(); + + static int check_sig(Asset *asset); + int colormodel_supported(int colormodel); + int get_best_colormodel(Asset *asset, int driver); + int read_frame_header(char *path); + int use_path() { return 1; } + int read_frame(VFrame *output, char *path); + int write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit); + FrameWriterUnit* new_writer_unit(FrameWriter *writer); +}; + +class GIFUnit : public FrameWriterUnit +{ +public: + GIFUnit(FileGIFList *file, FrameWriter *writer); + ~GIFUnit(); + + FileGIFList *file; + VFrame *temp_frame; +}; #endif