// Copyright 2008 Simon Edwards <simon@simonzone.com>

//                 Generated by twine

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as
// published by the Free Software Foundation; either version 2, 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 Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

namespace Phonon
{
namespace Experimental
{

class AbstractVideoDataOutput
{
%TypeHeaderCode
#include <phonon/experimental/abstractvideodataoutput.h>
%End

public:
                            AbstractVideoDataOutput ();
    virtual QSet<Phonon::Experimental::VideoFrame2::Format>  allowedFormats () const;
    void                    setAllowedFormats (const QSet<Phonon::Experimental::VideoFrame2::Format>&);
    bool                    isRunning () const;
    virtual void            frameReady (const Phonon::Experimental::VideoFrame2&) = 0;
    virtual void            endOfMedia () = 0;
    void                    setRunning (bool running);
    void                    start ();
    void                    stop ();

protected:


//mt undefined symbol: AbstractVideoDataOutputPrivate& dd -- need mapped type?
//mt                        AbstractVideoDataOutput (AbstractVideoDataOutputPrivate& dd);


};   // AbstractVideoDataOutput

};   // Experimental

};   // Phonon

%MappedType QSet<Phonon::Experimental::VideoFrame2::Format>
{
%TypeHeaderCode
#include <qset.h>
#include <phonon/experimental/abstractvideodataoutput.h>
%End

%ConvertFromTypeCode
    // Create the list.
    PyObject *l;

    if ((l = PyList_New(sipCpp->size())) == NULL)
        return NULL;

    // Set the list elements.
    QSet<Phonon::Experimental::VideoFrame2::Format> set = *sipCpp;
    int i = 0;
    foreach (Phonon::Experimental::VideoFrame2::Format value, set)
    {
        PyObject *obj = PyInt_FromLong ((long) value);
        if (obj == NULL || PyList_SET_ITEM (l, i, obj) < 0)
        {
            Py_DECREF(l);

            if (obj)
                Py_DECREF(obj);

            return NULL;
        }

        Py_DECREF(obj);
        i++;
    }
   
    return l;
%End

%ConvertToTypeCode
    // Check the type if that is all that is required.
    if (sipIsErr == NULL)
    {
        if (!PyList_Check(sipPy))
            return 0;
    }

    // Check the type if that is all that is required.
    if (sipIsErr == NULL)
    {
        if (!PyList_Check(sipPy))
            return 0;
    }

    QSet<Phonon::Experimental::VideoFrame2::Format> *qs = new QSet<Phonon::Experimental::VideoFrame2::Format>;
 
    for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
    {
        Phonon::Experimental::VideoFrame2::Format t = (Phonon::Experimental::VideoFrame2::Format)PyInt_AS_LONG (PyList_GET_ITEM (sipPy, i));
        *qs << t;

    }
 
    *sipCppPtr = qs;
 
    return sipGetState(sipTransferObj);
%End
};
