#ifndef ImageGStreamer_h
#define ImageGStreamer_h
#if ENABLE(VIDEO) && USE(GSTREAMER)
#include "BitmapImage.h"
#include "FloatRect.h"
#include "GStreamerVersioning.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(GstBuffer* buffer, GstCaps* caps)
{
return adoptRef(new ImageGStreamer(buffer, caps));
}
~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(GstBuffer*, GstCaps*);
RefPtr<BitmapImage> m_image;
FloatRect m_cropRect;
#if USE(CAIRO) && defined(GST_API_VERSION_1)
GRefPtr<GstBuffer> m_buffer;
GstMapInfo m_mapInfo;
#endif
};
}
#endif // USE(GSTREAMER)
#endif