<commit_before>#pragma once

#include "videoframe.h"
#include "except.h"
#include "iobserver.h"
#include "macros.h"

namespace gg
{

//!
//! \brief This abstract class provides the API
//! to be implemented by classes that provide
//! functionality to save streamed video e.g.
//! to files
//!
class IVideoTarget : public IObserver
{
public:
    //!
    //! \brief Destructor, doing nothing
    //!
    virtual ~IVideoTarget()
    {
        // nop
    }

public:
    //!
    //! \brief Initialise a file writer
    //! \param filepath
    //! \param framerate how many frames per second
    //! \throw VideoTargetError if writer cannot
    //! be initialised, e.g. for IO reasons
    //!
    virtual void init(const std::string filepath, const float framerate) = 0;
<commit_msg>Issue #44: added default constructor to IVideoTarget<commit_after>#pragma once

#include "videoframe.h"
#include "except.h"
#include "iobserver.h"
#include "macros.h"

namespace gg
{

//!
//! \brief This abstract class provides the API
//! to be implemented by classes that provide
//! functionality to save streamed video e.g.
//! to files
//!
class IVideoTarget : public IObserver
{
protected:
    //!
    //! \brief Default constructor that should
    //! never be called publicly.
    //!
    IVideoTarget()
    {
        // nop
    }

public:
    //!
    //! \brief Destructor, doing nothing
    //!
    virtual ~IVideoTarget()
    {
        // nop
    }

public:
    //!
    //! \brief Initialise a file writer
    //! \param filepath
    //! \param framerate how many frames per second
    //! \throw VideoTargetError if writer cannot
    //! be initialised, e.g. for IO reasons
    //!
    virtual void init(const std::string filepath, const float framerate) = 0;

{'fraction_non_alphanumeric': 0.12628571428571428, 'fraction_numerical': 0.002285714285714286, 'mean_word_length': 2.4, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3270344', 'n_tokens_mistral': 537, 'n_tokens_neox': 514, 'n_words': 182}