X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fmediadb.h;fp=cinelerra-5.0%2Fcinelerra%2Fmediadb.h;h=0000000000000000000000000000000000000000;hb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;hp=9bb970eed3228878f3bd173b0ad480b2aeae94d8;hpb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/mediadb.h b/cinelerra-5.0/cinelerra/mediadb.h deleted file mode 100644 index 9bb970ee..00000000 --- a/cinelerra-5.0/cinelerra/mediadb.h +++ /dev/null @@ -1,241 +0,0 @@ -#ifndef _MEDIA_DB_H_ -#define _MEDIA_DB_H_ - -#include "arraylist.h" -#include "mediadb.inc" -#include "filexml.inc" -#include "bcwindowbase.inc" -#include "file.inc" -#include "linklist.h" -#include "../db/tdb.h" - -#include -#include -#include -#include -#include -#include - - -void write_pbm(uint8_t *tp, int w, int h, const char *fmt, ...); -void write_pgm(uint8_t *tp, int w, int h, const char *fmt, ...); -void pbm_diff(uint8_t *ap, uint8_t *bp, int w, int h, const char *fmt, ...); - - -class Scale { - int rx, ry, rw, rh, iw, ih; - int ix0, ix1, iy0, iy1, rsh; - double xf0, xf1, yf0, yf1, pw; - uint8_t *idat, *odat; - uint8_t *row(int y) { return idat + (iw<>rsh); } - - inline double scalex(uint8_t *rp, double v, double yw) { - int x = ix0; rp += x; - double vv = xf0 * *rp++; - int iv = 0; while( ++x < ix1 ) iv += *rp++; - vv += iv + xf1 * *rp; - return v += vv * yw; - } - - inline double scalexy() { - double yw, v = 0; - int y = iy0; - if( (yw = pw * yf0) > 0 ) v = scalex(row(y), v, yw); - while( ++y < iy1 ) v = scalex(row(y), v, pw); - if( (yw = pw * yf1) > 0 ) v = scalex(row(y), v, yw); - return v; - } -public: - Scale(uint8_t *idata, int type, int iw, int ih, int rx, int ry, int rw, int rh) { - rsh = type ? 1 : 0; - this->idat = idata + ry*iw + rx; - this->iw = iw; this->ih = ih; - this->rx = rx; this->ry = ry; - this->rw = rw; this->rh = rh; - } - void scale(uint8_t *odata, int ow, int oh, int sx, int sy, int sw, int sh); -}; - - -enum { - DEL_START, // always the first mark - DEL_MARK, // boundary between cur/next media deletion - DEL_SKIP, // skip media in current deletion region - DEL_OOPS, // ignore previous mark -}; - -// definition: -// dele: n. A sign indicating that something is to be removed from - -class Dele : public ListItem -{ -public: - double time; - int action; - - Dele(double t, int a) : time(t), action(a) {} - ~Dele() {} -}; - -class Deletions: public List -{ - int save(FileXML &xml); - int load(FileXML &xml); -public: - int pid; - char filepath[BCTEXTLEN]; - const char *file_path() { return filepath; } - bool empty() { return !first; } - - int write_dels(const char *filename); - static Deletions *read_dels(const char *filename); - - Deletions(int pid, const char *fn); - ~Deletions(); -}; - - -class Clip : public ListItem { -public: - int clip_id; - int votes, index, groups, cycle, muted; - double start, end, best; - - Clip(int clip_id, double start, double end, int index); - ~Clip(); -}; - -class Clips : public List { -public: - int pid, count, cycle; - Clip *current; - Clip *locate(int id, double start, double end); - int get_clip(int idx, int &id, double &start, double &end); - virtual Clip *new_clip(int clip_id, double start, double end, int index); - int check(int clip_id, double start, double end, int group, double err); - int save(FileXML &xml); - int load(FileXML &xml); - Clips(int pid=0); - ~Clips(); -}; - -class Snip : public Clip { -public: - ArrayList weights; - ArrayList positions; - - Snip(int clip_id, double start, double end, int index); - ~Snip(); -}; - -class Snips : public Clips { -public: - Clip *new_clip(int clip_id, double start, double end, int index); - Snips(); - ~Snips(); -}; - - -class MediaDb -{ - theDb *db; - int opened; - - uint8_t frm[SFRM_SZ]; - double position, error_limit; - int lid, nid, distance, group_mask; - double fmean, fsd, fcx, fcy, fmoment; - int64_t lerr, pixlmt; - Db::pgRef clip_id_loc; - - int get_key(Clips *clips, Db::rKey &prev_rkey, Db::rKey &next_rkey); - int64_t key_compare(Clips *clips, Db::ObjectLoc &loc); - static double mean(uint8_t *dat, int n, int stride=1); - static double variance(uint8_t *dat, double mn, int n, int stride=1); - static double std_dev(uint8_t *dat, double mn, int n, int stride=1) { - return sqrt(variance(dat, mn, n, stride)); - } - static double centroid(uint8_t *dat, int n, int stride=1); - static void centroid(uint8_t *dat, int w, int h, double &xx, double &yy); - static void deviation(uint8_t *a, uint8_t *b, int sz, int margin, - double &dev, int &ofs, int stride=1); - static int64_t cmpr(uint8_t *ap, uint8_t *bp, int sz); - static int64_t diff(uint8_t *a, uint8_t *b, int w, int h, int dx, int dy, int bias); - static void fit(int *dat, int n, double &a, double &b); - static void eq(uint8_t *sp, uint8_t *dp, int len); - static void eq(uint8_t *p, int len) { eq(p, p, len); } -public: - int newDb(); - int openDb(int rw=0); - int resetDb(int rw=0); - void closeDb(); - void commitDb(); - void undoDb(); - int attachDb(int rw=0); - int detachDb(); - int is_open(); - int transaction(); - - static void hist_eq(uint8_t *dp, int len); - static void scale(uint8_t *idata,int iw,int ih,int rx,int ry,int rw,int rh, - uint8_t *odata,int ow,int oh,int sx,int sy,int sw,int sh); - int new_clip_set(const char *title, const char *asset_path, double position, - double framerate, int frames, int prefix_size, int suffix_size, - int64_t creation_time, int64_t system_time); - int new_clip_view(int clip_id, int64_t access_time); - int access_clip(int clip_id, int64_t access_time=0); - int del_clip_set(int clip_id); - int new_frame(int clip_id, uint8_t *dat, int no, int group, double offset); - int get_timeline_by_frame_id(int fid); - int get_timelines(int frame_id); - int next_timelines(); - int get_sequences(int clip_id, int seq_no=0); - int next_sequences(); - int get_image(int id, uint8_t *dat, int &w, int &h); - int get_frame_key(uint8_t *dat, int &fid, - Clips *clips=0, double pos=0, int mask=~0); - int get_media_key(uint8_t *key, int &fid, int dist, double errlmt, - Clips *clips=0, double pos=0, int mask=~0); - int add_timelines(Clips *clips, int fid, double err); - // clip_set accessors - int clip_id(int id); - int clip_id(); - int clips_first_id(); - int clips_next_id(); - const char *clip_title(); - const char *clip_path(); - double clip_position(); - double clip_framerate(); - double clip_average_weight(); - void clip_average_weight(double avg_wt); - double clip_length(); - int clip_frames(); - int clip_prefix_size(); - int clip_suffix_size(); - int clip_size(); - double *clip_weights(); - int64_t clip_creation_time(); - int64_t clip_system_time(); - - // timeline accessors - int timeline_id(int id); - int timeline_id(); - int timeline_clip_id(); - int timeline_sequence_no(); - int timeline_frame_id(); - int timeline_group(); - double timeline_offset(); - - // clip_views accessors - int views_id(int id); - int views_id(); - int views_clip_id(int id); - int views_clip_id(); - int64_t views_access_time(); - int views_access_count(); - - MediaDb(); - ~MediaDb(); -}; - -#endif