00001 #ifndef vidl_vil1_clip_h
00002 #define vidl_vil1_clip_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <vbl/vbl_ref_count.h>
00015 #include <vidl_vil1/vidl_vil1_clip_sptr.h>
00016 #include <vidl_vil1/vidl_vil1_frame_sptr.h>
00017 #include <vidl_vil1/vidl_vil1_codec_sptr.h>
00018 #include <vil1/vil1_image.h>
00019
00020 #include <vcl_vector.h>
00021 #include <vcl_list.h>
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 class vidl_vil1_clip : public vbl_ref_count
00033 {
00034
00035 public:
00036
00037
00038 vidl_vil1_clip(vidl_vil1_codec_sptr codec,
00039 int start = 0,
00040 int end = 0,
00041 int increment = 1);
00042
00043 vidl_vil1_clip(vcl_list<vil1_image> &images,
00044 int start = 0,
00045 int end = 0,
00046 int increment = 1);
00047
00048 vidl_vil1_clip(vcl_vector<vil1_image> &images,
00049 int start = 0,
00050 int end = 0,
00051 int increment = 1);
00052
00053
00054 vidl_vil1_clip(vidl_vil1_clip const& x)
00055 : vbl_ref_count(), frames_(x.frames_),
00056 startframe_(x.startframe_), endframe_(x.endframe_),
00057 increment_(x.increment_), frame_rate_(x.frame_rate_), coder_(x.coder_) {}
00058
00059
00060 ~vidl_vil1_clip() {}
00061
00062
00063 vidl_vil1_frame_sptr get_frame(int n);
00064
00065
00066 int length() const { return (endframe_-startframe_)/increment_ + 1; }
00067
00068
00069 int width() const;
00070 int height() const;
00071
00072
00073 vidl_vil1_codec_sptr get_codec() { return coder_; }
00074
00075 protected:
00076 void init(int start, int end, int increment);
00077
00078
00079 vcl_vector<vidl_vil1_frame_sptr> frames_;
00080 int startframe_;
00081 int endframe_;
00082 int increment_;
00083 double frame_rate_;
00084 vidl_vil1_codec_sptr coder_;
00085 };
00086
00087 #endif // vidl_vil1_clip_h