Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

VideoReader.h

00001 
00002 /*
00003  *  Copyright (c) 2000, University of Amsterdam, The Netherlands.
00004  *  All rights reserved.
00005  *
00006  *  Author(s):
00007  *  Marc Navarro            (mnavarro@wins.uva.nl)
00008  */
00009 
00010 #include <streams.h>
00011 #include "atlbase.h"
00012 
00013 #include "IGetFrame.h"
00014 
00016 class VideoReader : public IGetFrameController
00017 {
00018 public:
00019                                 VideoReader(const char *name, int cacheSize = 20);
00020     virtual                     ~VideoReader();
00021     int                         isNull();
00022 
00023     int                         getLength();
00024     BYTE*                       getFrame(int n); //dont call delete on result
00025     int                         getFrameWidth();
00026     int                         getFrameHeight();
00027 
00028     //IGetFrameController:
00029     STDMETHODIMP                NextData(BYTE *data);
00030     STDMETHODIMP                SetDataSizes(int width, int height,
00031                                              REFERENCE_TIME timePerFrame);
00032 
00033     //IUnknown:
00034     STDMETHODIMP                QueryInterface(const IID & riid, void **ppv);
00035     STDMETHODIMP_(ULONG)        AddRef();
00036     STDMETHODIMP_(ULONG)        Release();
00037 
00038 
00039 private:
00040 
00041     HRESULT                     buildGraph(const char* filename);
00042     HRESULT                     showError(const char* msg, HRESULT hr);
00043     HRESULT                     init(const char *filename, int cacheSize);
00044 
00046     void                        readFrames(int first);
00047 
00048     CComPtr<IGraphBuilder>      _iBuilder;
00049     CComPtr<IMediaControl>      _imCtrl;
00050     CComPtr<IMediaSeeking>      _imSeek;
00051     CComPtr<IMediaEvent>        _imEvent;
00052 
00053     BYTE**                      _data;
00054     int                         _dataSize;
00055     int                         _dataOffset; //number of first frame in _data
00056     int                         _dataFree;   //first free position in _data
00057     int                         _usingMediaTime;
00058 
00059     int                         _width;
00060     int                         _height;
00061     REFERENCE_TIME              _timePerFrame;
00062     int                         _length;
00063     int                         _empty; //initial empty frames
00064 
00065     int                         _testingEnd;
00066 };
00067 
00068 

Generated on Tue Feb 3 14:18:44 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001