Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.0 / cinelerra / mediadb.h
diff --git a/cinelerra-5.0/cinelerra/mediadb.h b/cinelerra-5.0/cinelerra/mediadb.h
deleted file mode 100644 (file)
index 9bb970e..0000000
+++ /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 <stdint.h>
-#include <stdlib.h>
-#include <math.h>
-#include <semaphore.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-
-
-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) * (y>>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 <media>
-
-class Dele : public ListItem<Dele>
-{
-public:
-        double time;
-       int action;
-
-       Dele(double t, int a) : time(t), action(a) {}
-       ~Dele() {}
-};
-
-class Deletions: public List<Dele>
-{
-       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<Clip> {
-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<Clip> {
-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<double> weights;
-       ArrayList<double> 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