+++ /dev/null
-
-/*
- * CINELERRA
- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#ifndef FILELIST_H
-#define FILELIST_H
-
-#include "file.inc"
-#include "filebase.h"
-#include "filelist.inc"
-#include "loadbalance.h"
-#include "mutex.inc"
-#include "vframe.inc"
-
-// Any file which is a list of frames.
-// FileList handles both frame files and indexes of frame files.
-
-
-
-
-
-
-class FileList : public FileBase
-{
-public:
- FileList(Asset *asset,
- File *file,
- const char *list_prefix,
- const char *file_extension,
- int frame_type,
- int list_type);
- virtual ~FileList();
-
-// basic commands for every file interpreter
- int open_file(int rd, int wr);
- int close_file();
-
- char* calculate_path(int number, char *string);
- char* create_path(int number_override);
- void add_return_value(int amount);
-
- int read_list_header();
- virtual int read_frame_header(char *path) { return 1; };
- int read_frame(VFrame *frame);
-
-// subclass returns whether the asset format is a list or single file
- virtual int read_frame(VFrame *frame, VFrame *data) { return 0; };
- virtual int read_frame(VFrame *frame, char *path) { return 0; };
- virtual int write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit) { return 0; };
-// Return 1 if read frame should use the path instead of the compressed data
- virtual int use_path();
-
- int write_list_header();
- int write_frames(VFrame ***frames, int len);
- VFrame* read_frame(int use_alpha, int use_float);
- virtual int64_t get_memory_usage();
-// Get the total writer units for calculating memory usage
- int get_units();
-// Get a writer unit for retrieving temporary usage.
- FrameWriterUnit* get_unit(int number);
-
- virtual FrameWriterUnit* new_writer_unit(FrameWriter *writer);
-
-// Temp storage for compressed data
- VFrame *data;
-// Storage for single frame
- VFrame *temp;
-
-private:
- int read_raw(VFrame *frame,
- float in_x1, float in_y1, float in_x2, float in_y2,
- float out_x1, float out_y1, float out_x2, float out_y2,
- int alpha, int use_alpha, int use_float, int interpolate);
- int reset_parameters_derived();
- ArrayList<char*> path_list; // List of files
- const char *list_prefix;
- const char *file_extension;
- int frame_type;
- int list_type;
- Mutex *table_lock;
- FrameWriter *writer;
- int return_value;
- int first_number;
- int number_start;
- int number_digits;
-};
-
-
-
-
-class FrameWriterPackage : public LoadPackage
-{
-public:
- FrameWriterPackage();
- ~FrameWriterPackage();
-
-
- VFrame *input;
-
- char *path;
-};
-
-
-
-
-class FrameWriterUnit : public LoadClient
-{
-public:
- FrameWriterUnit(FrameWriter *server);
- virtual ~FrameWriterUnit();
-
- void process_package(LoadPackage *package);
-
- FrameWriter *server;
- VFrame *output;
-};
-
-
-
-
-
-class FrameWriter : public LoadServer
-{
-public:
- FrameWriter(FileList *file, int cpus);
- ~FrameWriter();
-
- void write_frames(VFrame ***frames, int len);
- void init_packages();
- LoadClient* new_client();
- LoadPackage* new_package();
-
- FileList *file;
- VFrame ***frames;
- int len;
-};
-
-
-
-
-
-
-
-
-#endif