content/media/gstreamer/GStreamerMozVideoBuffer.h

Fri, 16 Jan 2015 04:50:19 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 04:50:19 +0100
branch
TOR_BUG_9701
changeset 13
44a2da4a2ab2
permissions
-rw-r--r--

Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     3  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #ifndef __GST_MOZ_VIDEO_BUFFER_H__
     6 #define __GST_MOZ_VIDEO_BUFFER_H__
     8 #include <gst/gst.h>
     9 #include "GStreamerLoader.h"
    10 #include "MediaDecoderReader.h"
    12 namespace mozilla {
    14 #define GST_TYPE_MOZ_VIDEO_BUFFER_DATA            (gst_moz_video_buffer_data_get_type())
    15 #define GST_IS_MOZ_VIDEO_BUFFER_DATA(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_VIDEO_BUFFER_DATA))
    17 #define GST_TYPE_MOZ_VIDEO_BUFFER            (gst_moz_video_buffer_get_type())
    18 #define GST_IS_MOZ_VIDEO_BUFFER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_VIDEO_BUFFER))
    19 #define GST_IS_MOZ_VIDEO_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MOZ_VIDEO_BUFFER))
    20 #define GST_MOZ_VIDEO_BUFFER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MOZ_VIDEO_BUFFER, GstMozVideoBuffer))
    22 typedef struct _GstMozVideoBuffer GstMozVideoBuffer;
    23 typedef struct _GstMozVideoBufferClass GstMozVideoBufferClass;
    25 class GstMozVideoBufferData;
    27 struct _GstMozVideoBuffer {
    28   GstBuffer buffer;
    29   GstMozVideoBufferData* data;
    30 };
    32 struct _GstMozVideoBufferClass {
    33   GstBufferClass  buffer_class;
    34 };
    36 GType gst_moz_video_buffer_get_type(void);
    37 GstMozVideoBuffer* gst_moz_video_buffer_new(void);
    38 void gst_moz_video_buffer_set_data(GstMozVideoBuffer* buf, GstMozVideoBufferData* data);
    39 GstMozVideoBufferData* gst_moz_video_buffer_get_data(const GstMozVideoBuffer* buf);
    41 class GstMozVideoBufferData {
    42   public:
    43     GstMozVideoBufferData(layers::PlanarYCbCrImage* aImage) : mImage(aImage) {}
    45     static void* Copy(void* aData) {
    46       return new GstMozVideoBufferData(reinterpret_cast<GstMozVideoBufferData*>(aData)->mImage);
    47     }
    49     static void Free(void* aData) {
    50       delete reinterpret_cast<GstMozVideoBufferData*>(aData);
    51     }
    53     nsRefPtr<layers::PlanarYCbCrImage> mImage;
    54 };
    56 GType gst_moz_video_buffer_data_get_type (void);
    58 } // namespace mozilla
    60 #endif /* __GST_MOZ_VIDEO_BUFFER_H__ */

mercurial