content/media/gstreamer/GStreamerMozVideoBuffer.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/media/gstreamer/GStreamerMozVideoBuffer.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,61 @@
     1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     1.6 + * You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.7 +
     1.8 +#ifndef __GST_MOZ_VIDEO_BUFFER_H__
     1.9 +#define __GST_MOZ_VIDEO_BUFFER_H__
    1.10 +
    1.11 +#include <gst/gst.h>
    1.12 +#include "GStreamerLoader.h"
    1.13 +#include "MediaDecoderReader.h"
    1.14 +
    1.15 +namespace mozilla {
    1.16 +
    1.17 +#define GST_TYPE_MOZ_VIDEO_BUFFER_DATA            (gst_moz_video_buffer_data_get_type())
    1.18 +#define GST_IS_MOZ_VIDEO_BUFFER_DATA(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_VIDEO_BUFFER_DATA))
    1.19 +
    1.20 +#define GST_TYPE_MOZ_VIDEO_BUFFER            (gst_moz_video_buffer_get_type())
    1.21 +#define GST_IS_MOZ_VIDEO_BUFFER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_VIDEO_BUFFER))
    1.22 +#define GST_IS_MOZ_VIDEO_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MOZ_VIDEO_BUFFER))
    1.23 +#define GST_MOZ_VIDEO_BUFFER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MOZ_VIDEO_BUFFER, GstMozVideoBuffer))
    1.24 +
    1.25 +typedef struct _GstMozVideoBuffer GstMozVideoBuffer;
    1.26 +typedef struct _GstMozVideoBufferClass GstMozVideoBufferClass;
    1.27 +
    1.28 +class GstMozVideoBufferData;
    1.29 +
    1.30 +struct _GstMozVideoBuffer {
    1.31 +  GstBuffer buffer;
    1.32 +  GstMozVideoBufferData* data;
    1.33 +};
    1.34 +
    1.35 +struct _GstMozVideoBufferClass {
    1.36 +  GstBufferClass  buffer_class;
    1.37 +};
    1.38 +
    1.39 +GType gst_moz_video_buffer_get_type(void);
    1.40 +GstMozVideoBuffer* gst_moz_video_buffer_new(void);
    1.41 +void gst_moz_video_buffer_set_data(GstMozVideoBuffer* buf, GstMozVideoBufferData* data);
    1.42 +GstMozVideoBufferData* gst_moz_video_buffer_get_data(const GstMozVideoBuffer* buf);
    1.43 +
    1.44 +class GstMozVideoBufferData {
    1.45 +  public:
    1.46 +    GstMozVideoBufferData(layers::PlanarYCbCrImage* aImage) : mImage(aImage) {}
    1.47 +
    1.48 +    static void* Copy(void* aData) {
    1.49 +      return new GstMozVideoBufferData(reinterpret_cast<GstMozVideoBufferData*>(aData)->mImage);
    1.50 +    }
    1.51 +
    1.52 +    static void Free(void* aData) {
    1.53 +      delete reinterpret_cast<GstMozVideoBufferData*>(aData);
    1.54 +    }
    1.55 +
    1.56 +    nsRefPtr<layers::PlanarYCbCrImage> mImage;
    1.57 +};
    1.58 +
    1.59 +GType gst_moz_video_buffer_data_get_type (void);
    1.60 +
    1.61 +} // namespace mozilla
    1.62 +
    1.63 +#endif /* __GST_MOZ_VIDEO_BUFFER_H__ */
    1.64 +

mercurial