X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fprocessor.h;h=603239f8ff7094ebadb0a09d22304654d88cb427;hb=37258f4ee74582feaac8b311baaeb27bf5f17ac9;hp=e99ff2d4dd2cde6c45421dccfb0f8fe7b1b023b5;hpb=ac0a9000d5d6a62c4ef3e4902611b180501e09e1;p=dcpomatic.git diff --git a/src/lib/processor.h b/src/lib/processor.h index e99ff2d4d..603239f8f 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,34 +31,85 @@ 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 TimedAudioVideoProcessor : public Processor, public TimedVideoSource, public TimedVideoSink, public TimedAudioSource, public TimedAudioSink +{ +public: + TimedAudioVideoProcessor (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: + /** Construct an VideoProcessor. + * @param log Log to write to. + */ + VideoProcessor (boost::shared_ptr log) : Processor (log) {} }; +class TimedVideoProcessor : public Processor, public TimedVideoSource, public TimedVideoSink +{ +public: + TimedVideoProcessor (boost::shared_ptr log) + : Processor (log) + {} +}; + #endif