X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fprocessor.h;h=1ba396f2f5decc945e339ba0a633ff4751bf3ef9;hb=b468ccabdb13fca86ae8a324239d83490ef5832e;hp=f7785c34683db74144d9d7b9fd173e8acd28e825;hpb=05c37b9bb09f7bfa4c2ec8ea6b3fa4a83d0fec20;p=dcpomatic.git diff --git a/src/lib/processor.h b/src/lib/processor.h index f7785c346..1ba396f2f 100644 --- a/src/lib/processor.h +++ b/src/lib/processor.h @@ -1,3 +1,26 @@ +/* + Copyright (C) 2012 Carl Hetherington + + 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +/** @file src/processor.h + * @brief Parent class for classes which accept and then emit video or audio data. + */ + #ifndef DVDOMATIC_PROCESSOR_H #define DVDOMATIC_PROCESSOR_H @@ -8,40 +31,66 @@ class Log; +/** @class Processor + * @brief Base class for processors. + */ class Processor { public: - Processor (Log* log) + /** Construct a Processor. + * @param log Log to use. + */ + Processor (boost::shared_ptr log) : _log (log) {} - - virtual void process_begin () {} + + virtual ~Processor() {} + + /** Will be called at the end of a processing run */ virtual void process_end () {} protected: - Log* _log; + boost::shared_ptr _log; ///< log to write to }; +/** @class AudioVideoProcessor + * @brief A processor which handles both video and audio data. + */ class AudioVideoProcessor : public Processor, public VideoSource, public VideoSink, public AudioSource, public AudioSink { public: - AudioVideoProcessor (Log* log) + /** Construct an AudioVideoProcessor. + * @param log Log to write to. + */ + AudioVideoProcessor (boost::shared_ptr log) : Processor (log) {} }; +/** @class AudioProcessor + * @brief A processor which handles just audio data. + */ class AudioProcessor : public Processor, public AudioSource, public AudioSink { public: - AudioProcessor (Log* log) + /** Construct an AudioProcessor. + * @param log Log to write to. + */ + AudioProcessor (boost::shared_ptr log) : Processor (log) {} }; +/** @class VideoProcessor + * @brief A processor which handles just video data. + */ class VideoProcessor : public Processor, public VideoSource, public VideoSink { public: - VideoProcessor (Log* log) + /** Construct an VideoProcessor. + * @param log Log to write to. + */ + VideoProcessor (boost::shared_ptr log) : Processor (log) {} };