#ifndef ImageGStreamer_h
#define ImageGStreamer_h
#if ENABLE(VIDEO) && USE(GSTREAMER)
#include "BitmapImage.h"
#include "FloatRect.h"
#include "GRefPtrGStreamer.h"
#include <gst/gst.h>
#include <gst/video/video-frame.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
namespace WebCore {
class IntSize;
class ImageGStreamer : public RefCounted<ImageGStreamer> {
public:
static PassRefPtr<ImageGStreamer> createImage(GstSample* sample)
{
return adoptRef(new ImageGStreamer(sample));
}
~ImageGStreamer();
PassRefPtr<BitmapImage> image()
{
ASSERT(m_image);
return m_image.get();
}
void setCropRect(FloatRect rect) { m_cropRect = rect; }
FloatRect rect()
{
if (!m_cropRect.isEmpty())
return FloatRect(m_cropRect);
ASSERT(m_image);
return FloatRect(0, 0, m_image->size().width(), m_image->size().height());
}
private:
ImageGStreamer(GstSample*);
RefPtr<BitmapImage> m_image;
FloatRect m_cropRect;
#if USE(CAIRO)
GstVideoFrame m_videoFrame;
#endif
};
}
#endif // USE(GSTREAMER)
#endif