File: gstdwriteoverlayobject.h

package info (click to toggle)
gst-plugins-bad1.0 1.28.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 72,252 kB
  • sloc: ansic: 744,658; cpp: 300,297; objc: 3,559; xml: 3,351; sh: 1,095; python: 565; makefile: 181; java: 75
file content (110 lines) | stat: -rw-r--r-- 4,242 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* GStreamer
 * Copyright (C) 2023 Seungha Yang <seungha@centricular.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

#pragma once

#include <gst/d3d11/gstd3d11.h>
#include <gst/video/video.h>
#include <gst/base/base.h>
#include "gstdwrite-utils.h"
#include "gstdwrite-enums.h"

G_BEGIN_DECLS

#if 0
enum class GstDWriteBlendMode
{
  NOT_SUPPORTED,

  /* attach meta with d3d11 texture buffer. */
  ATTACH_TEXTURE,

  /* attach meta with bitmap buffer */
  ATTACH_BITMAP,

  /* software blending */
  SW_BLEND,

  /* 1) renders text on BGRA
   * 2) blends */
  BLEND,

  /* 1) convert texture to BGRA
   * 2) render text on another BGRA texture
   * 3) blends two textures
   * 3) converts back to original format */
  CONVERT,

  /* 1) converts texture to RGBA64_LE
   * 2) renders text on BGRA texture
   * 3) blends two textures
   * 3) converts back original format */
  CONVERT_64,
};
#endif

#define GST_TYPE_DWRITE_OVERLAY_OBJECT (gst_dwrite_overlay_object_get_type())
G_DECLARE_FINAL_TYPE (GstDWriteOverlayObject,
    gst_dwrite_overlay_object, GST, DWRITE_OVERLAY_OBJECT, GstObject);

GstDWriteOverlayObject * gst_dwrite_overlay_object_new (void);

gboolean  gst_dwrite_overlay_object_start (GstDWriteOverlayObject * object,
                                           IDWriteFactory * dwrite_factory);

gboolean  gst_dwrite_overlay_object_stop  (GstDWriteOverlayObject * object);

void      gst_dwrite_overlay_object_set_context (GstDWriteOverlayObject * object,
                                                 GstElement * elem,
                                                 GstContext * context);

gboolean  gst_dwrite_overlay_object_handle_query (GstDWriteOverlayObject * object,
                                                  GstElement * elem,
                                                  GstQuery * query);

gboolean  gst_dwrite_overlay_object_decide_allocation (GstDWriteOverlayObject * object,
                                                       GstElement * elem,
                                                       GstQuery * query);

gboolean  gst_dwrite_overlay_object_propose_allocation (GstDWriteOverlayObject * object,
                                                        GstElement * elem,
                                                        GstQuery * query);

gboolean  gst_dwrite_overlay_object_set_caps (GstDWriteOverlayObject * object,
                                              GstElement * elem,
                                              GstCaps * in_caps,
                                              GstCaps * out_caps,
                                              GstVideoInfo * info);

gboolean  gst_dwrite_overlay_object_update_device (GstDWriteOverlayObject * object,
                                                   GstBuffer * buffer);

GstFlowReturn gst_dwrite_overlay_object_prepare_output (GstDWriteOverlayObject * object,
                                                        GstBaseTransform * trans,
                                                        gpointer trans_class,
                                                        GstBuffer * inbuf,
                                                        GstBuffer ** outbuf);

gboolean  gst_dwrite_overlay_object_draw (GstDWriteOverlayObject * object,
                                          GstBuffer * buffer,
                                          IDWriteTextLayout * layout,
                                          gint x,
                                          gint y);

G_END_DECLS