vtenc: Fix class hierarchy in an attempt to fix property docs
authorNirbheek Chauhan <nirbheek@centricular.com>
Mon, 9 Dec 2024 18:35:53 +0000 (00:05 +0530)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 16 Dec 2024 18:52:21 +0000 (18:52 +0000)
Also fix some convention-nits in the process.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

subprojects/gst-docs/symbols/symbol_index.json
subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json
subprojects/gst-plugins-bad/sys/applemedia/vtenc.c
subprojects/gst-plugins-bad/sys/applemedia/vtenc.h

index f270ac02e800ff4f4b5f024cf026de964399b86f..034f47ea5606872dddde297088e4a40bc9c83d25 100644 (file)
   "GstVtdec!src",
   "GstVtdecHw!sink",
   "GstVtdecHw!src",
+  "GstVTEnc",
   "GstVulkanBarrierBufferInfo",
   "GstVulkanBarrierBufferInfo.offset",
   "GstVulkanBarrierBufferInfo.parent",
index 3b82ef040e4260f7350e6913cf06b36ac2e9df9c..af0d32e02642f2aeeb51662c7d02d93d6b6f5050 100644 (file)
                 "description": "H.264 encoder",
                 "hierarchy": [
                     "vtenc_h264",
+                    "GstVTEnc",
                     "GstVideoEncoder",
                     "GstElement",
                     "GstObject",
                 "description": "H.264 (HW only) encoder",
                 "hierarchy": [
                     "vtenc_h264_hw",
+                    "GstVTEnc",
                     "GstVideoEncoder",
                     "GstElement",
                     "GstObject",
                 "description": "H.265/HEVC encoder",
                 "hierarchy": [
                     "vtenc_h265",
+                    "GstVTEnc",
                     "GstVideoEncoder",
                     "GstElement",
                     "GstObject",
                 "description": "H.265/HEVC (HW only) encoder",
                 "hierarchy": [
                     "vtenc_h265_hw",
+                    "GstVTEnc",
                     "GstVideoEncoder",
                     "GstElement",
                     "GstObject",
                 "description": "H.265/HEVC with alpha encoder",
                 "hierarchy": [
                     "vtenc_h265a",
+                    "GstVTEnc",
                     "GstVideoEncoder",
                     "GstElement",
                     "GstObject",
                 "description": "H.265/HEVC with alpha (HW only) encoder",
                 "hierarchy": [
                     "vtenc_h265a_hw",
+                    "GstVTEnc",
                     "GstVideoEncoder",
                     "GstElement",
                     "GstObject",
                 "description": "Apple ProRes encoder",
                 "hierarchy": [
                     "vtenc_prores",
+                    "GstVTEnc",
                     "GstVideoEncoder",
                     "GstElement",
                     "GstObject",
                     }
                 ]
             },
+            "GstVTEnc": {
+                "hierarchy": [
+                    "GstVTEnc",
+                    "GstVideoEncoder",
+                    "GstElement",
+                    "GstObject",
+                    "GInitiallyUnowned",
+                    "GObject"
+                ],
+                "interfaces": [
+                    "GstPreset"
+                ],
+                "kind": "object"
+            },
             "GstVtencRateControl": {
                 "kind": "enum",
                 "values": [
index ecdaa8d07b4cb55d843e37ca4af49eaeaad82db3..ae753fa45aabd897c5e0e7f6ce9c98df7e532a53 100644 (file)
 #include "vtenc.h"
 
 #include "coremediabuffer.h"
+#ifdef HAVE_IOS
 #include "corevideobuffer.h"
+#endif
 #include "vtutil.h"
 #include "helpers.h"
 #include <gst/pbutils/codec-utils.h>
@@ -205,7 +207,8 @@ struct _GstVTEncFrame
   GstVideoFrame videoframe;
 };
 
-static GstElementClass *parent_class = NULL;
+#define parent_class gst_vtenc_parent_class
+G_DEFINE_TYPE (GstVTEnc, gst_vtenc, GST_TYPE_VIDEO_ENCODER);
 
 static void gst_vtenc_get_property (GObject * obj, guint prop_id,
     GValue * value, GParamSpec * pspec);
@@ -422,15 +425,9 @@ gst_vtenc_base_init (GstVTEncClass * klass)
 static void
 gst_vtenc_class_init (GstVTEncClass * klass)
 {
-  GObjectClass *gobject_class;
-  GstElementClass *element_class;
-  GstVideoEncoderClass *gstvideoencoder_class;
-
-  gobject_class = (GObjectClass *) klass;
-  element_class = (GstElementClass *) klass;
-  gstvideoencoder_class = (GstVideoEncoderClass *) klass;
-
-  parent_class = g_type_class_peek_parent (klass);
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstVideoEncoderClass *gstvideoencoder_class = GST_VIDEO_ENCODER_CLASS (klass);
 
   gobject_class->get_property = gst_vtenc_get_property;
   gobject_class->set_property = gst_vtenc_set_property;
@@ -438,13 +435,14 @@ gst_vtenc_class_init (GstVTEncClass * klass)
 
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_vtenc_change_state);
 
-  gstvideoencoder_class->start = gst_vtenc_start;
-  gstvideoencoder_class->stop = gst_vtenc_stop;
-  gstvideoencoder_class->set_format = gst_vtenc_set_format;
-  gstvideoencoder_class->handle_frame = gst_vtenc_handle_frame;
-  gstvideoencoder_class->finish = gst_vtenc_finish;
-  gstvideoencoder_class->flush = gst_vtenc_flush;
-  gstvideoencoder_class->sink_event = gst_vtenc_sink_event;
+  gstvideoencoder_class->start = GST_DEBUG_FUNCPTR (gst_vtenc_start);
+  gstvideoencoder_class->stop = GST_DEBUG_FUNCPTR (gst_vtenc_stop);
+  gstvideoencoder_class->set_format = GST_DEBUG_FUNCPTR (gst_vtenc_set_format);
+  gstvideoencoder_class->handle_frame =
+      GST_DEBUG_FUNCPTR (gst_vtenc_handle_frame);
+  gstvideoencoder_class->finish = GST_DEBUG_FUNCPTR (gst_vtenc_finish);
+  gstvideoencoder_class->flush = GST_DEBUG_FUNCPTR (gst_vtenc_flush);
+  gstvideoencoder_class->sink_event = GST_DEBUG_FUNCPTR (gst_vtenc_sink_event);
 
   g_object_class_install_property (gobject_class, PROP_BITRATE,
       g_param_spec_uint ("bitrate", "Bitrate",
@@ -580,6 +578,7 @@ gst_vtenc_class_init (GstVTEncClass * klass)
             G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
   }
 
+  gst_type_mark_as_plugin_api (GST_TYPE_VTENC, 0);
   gst_type_mark_as_plugin_api (GST_TYPE_VTENC_RATE_CONTROL, 0);
 }
 
@@ -2558,8 +2557,7 @@ gst_vtenc_register (GstPlugin * plugin,
 
   type_name = g_strdup_printf ("vtenc_%s", codec_details->element_name);
 
-  type =
-      g_type_register_static (GST_TYPE_VIDEO_ENCODER, type_name, &type_info, 0);
+  type = g_type_register_static (GST_TYPE_VTENC, type_name, &type_info, 0);
 
   g_type_set_qdata (type, GST_VTENC_CODEC_DETAILS_QDATA,
       (gpointer) codec_details);
index 6afac55b7b619a069e9f9575401ce994d8a38398..58e3bc9c4cbd7a2967e6b432f54ae5068d3ba42b 100644 (file)
 
 G_BEGIN_DECLS
 
-#define GST_VTENC_CAST(obj) \
-  ((GstVTEnc *) (obj))
+#define GST_TYPE_VTENC            (gst_vtenc_get_type())
+#define GST_VTENC(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_VTENC, GstVTEnc))
+#define GST_VTENC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_VTENC, GstVTEncClass))
+#define GST_IS_VTENC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_VTENC))
+#define GST_IS_VTENC_CLASS(obj)   (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_VTENC))
+#define GST_VTENC_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), GST_TYPE_VTENC, GstVTEncClass))
+#define GST_VTENC_CAST(obj)       ((GstVTEnc *)obj)
+typedef struct _GstVTEnc GstVTEnc;
+typedef struct _GstVTEncClass GstVTEncClass;
+
 #define GST_VTENC_CLASS_GET_CODEC_DETAILS(klass) \
   ((const GstVTEncoderDetails *) g_type_get_qdata (G_OBJECT_CLASS_TYPE (klass), \
       GST_VTENC_CODEC_DETAILS_QDATA))
@@ -49,10 +57,6 @@ typedef enum
 
 typedef struct _GstVTEncoderDetails GstVTEncoderDetails;
 
-typedef struct _GstVTEncClassParams GstVTEncClassParams;
-typedef struct _GstVTEncClass GstVTEncClass;
-typedef struct _GstVTEnc GstVTEnc;
-
 struct _GstVTEncoderDetails
 {
   const gchar * name;
@@ -119,6 +123,8 @@ struct _GstVTEnc
   gboolean require_restart;
 };
 
+GType gst_vtenc_get_type (void);
+
 void gst_vtenc_register_elements (GstPlugin * plugin);
 
 G_END_DECLS