2
2
This source code is licensed under the license found in the
3
3
LICENSE file in the root directory of this source tree. */
4
4
5
+ #include " GstAVPipelineD3D11.h"
5
6
#include " DebugLog.h"
6
- #include " GstAVPipeline.h"
7
7
8
8
#include < d3d11_1.h>
9
9
#include < d3d11sdklayers.h>
@@ -17,7 +17,7 @@ using namespace Microsoft::WRL;
17
17
// Creates the underlying D3D11 texture using the provided unity device.
18
18
// This texture can then be turned into a proper Unity texture on the
19
19
// managed side using Texture2D.CreateExternalTexture()
20
- ID3D11Texture2D* GstAVPipeline ::CreateTexture (unsigned int width, unsigned int height, bool left)
20
+ ID3D11Texture2D* GstAVPipelineD3D11 ::CreateTexture (unsigned int width, unsigned int height, bool left)
21
21
{
22
22
auto device = _s_UnityInterfaces->Get <IUnityGraphicsD3D11>()->GetDevice ();
23
23
HRESULT hr = S_OK;
@@ -96,7 +96,7 @@ ID3D11Texture2D* GstAVPipeline::CreateTexture(unsigned int width, unsigned int h
96
96
return texture.Get ();
97
97
}
98
98
99
- GstFlowReturn GstAVPipeline ::on_new_sample (GstAppSink* appsink, gpointer user_data)
99
+ GstFlowReturn GstAVPipelineD3D11 ::on_new_sample (GstAppSink* appsink, gpointer user_data)
100
100
{
101
101
AppData* data = static_cast <AppData*>(user_data);
102
102
GstSample* sample = gst_app_sink_pull_sample (appsink);
@@ -139,7 +139,7 @@ GstFlowReturn GstAVPipeline::on_new_sample(GstAppSink* appsink, gpointer user_da
139
139
return GST_FLOW_OK;
140
140
}
141
141
142
- void GstAVPipeline ::Draw (bool left)
142
+ void GstAVPipelineD3D11 ::Draw (bool left)
143
143
{
144
144
AppData* data;
145
145
if (left)
@@ -179,7 +179,7 @@ void GstAVPipeline::Draw(bool left)
179
179
gst_sample_unref (sample);
180
180
}
181
181
182
- GstElement* GstAVPipeline ::add_rtph264depay (GstElement* pipeline)
182
+ GstElement* GstAVPipelineD3D11 ::add_rtph264depay (GstElement* pipeline)
183
183
{
184
184
GstElement* rtph264depay = gst_element_factory_make (" rtph264depay" , nullptr );
185
185
if (!rtph264depay)
@@ -191,7 +191,7 @@ GstElement* GstAVPipeline::add_rtph264depay(GstElement* pipeline)
191
191
return rtph264depay;
192
192
}
193
193
194
- GstElement* GstAVPipeline ::add_h264parse (GstElement* pipeline)
194
+ GstElement* GstAVPipelineD3D11 ::add_h264parse (GstElement* pipeline)
195
195
{
196
196
GstElement* h264parse = gst_element_factory_make (" h264parse" , nullptr );
197
197
if (!h264parse)
@@ -203,7 +203,7 @@ GstElement* GstAVPipeline::add_h264parse(GstElement* pipeline)
203
203
return h264parse;
204
204
}
205
205
206
- GstElement* GstAVPipeline ::add_d3d11h264dec (GstElement* pipeline)
206
+ GstElement* GstAVPipelineD3D11 ::add_d3d11h264dec (GstElement* pipeline)
207
207
{
208
208
GstElement* d3d11h264dec = gst_element_factory_make (" d3d11h264dec" , nullptr );
209
209
if (!d3d11h264dec)
@@ -215,7 +215,7 @@ GstElement* GstAVPipeline::add_d3d11h264dec(GstElement* pipeline)
215
215
return d3d11h264dec;
216
216
}
217
217
218
- GstElement* GstAVPipeline ::add_d3d11convert (GstElement* pipeline)
218
+ GstElement* GstAVPipelineD3D11 ::add_d3d11convert (GstElement* pipeline)
219
219
{
220
220
GstElement* d3d11convert = gst_element_factory_make (" d3d11convert" , nullptr );
221
221
if (!d3d11convert)
@@ -227,7 +227,7 @@ GstElement* GstAVPipeline::add_d3d11convert(GstElement* pipeline)
227
227
return d3d11convert;
228
228
}
229
229
230
- GstElement* GstAVPipeline ::add_appsink (GstElement* pipeline)
230
+ GstElement* GstAVPipelineD3D11 ::add_appsink (GstElement* pipeline)
231
231
{
232
232
GstElement* appsink = gst_element_factory_make (" appsink" , nullptr );
233
233
if (!appsink)
@@ -244,7 +244,7 @@ GstElement* GstAVPipeline::add_appsink(GstElement* pipeline)
244
244
return appsink;
245
245
}
246
246
247
- GstElement* GstAVPipeline ::add_rtpopusdepay (GstElement* pipeline)
247
+ GstElement* GstAVPipelineD3D11 ::add_rtpopusdepay (GstElement* pipeline)
248
248
{
249
249
GstElement* rtpopusdepay = gst_element_factory_make (" rtpopusdepay" , nullptr );
250
250
if (!rtpopusdepay)
@@ -257,7 +257,7 @@ GstElement* GstAVPipeline::add_rtpopusdepay(GstElement* pipeline)
257
257
return rtpopusdepay;
258
258
}
259
259
260
- GstElement* GstAVPipeline ::add_opusdec (GstElement* pipeline)
260
+ GstElement* GstAVPipelineD3D11 ::add_opusdec (GstElement* pipeline)
261
261
{
262
262
GstElement* opusdec = gst_element_factory_make (" opusdec" , nullptr );
263
263
if (!opusdec)
@@ -270,7 +270,7 @@ GstElement* GstAVPipeline::add_opusdec(GstElement* pipeline)
270
270
return opusdec;
271
271
}
272
272
273
- GstElement* GstAVPipeline ::add_audioconvert (GstElement* pipeline)
273
+ GstElement* GstAVPipelineD3D11 ::add_audioconvert (GstElement* pipeline)
274
274
{
275
275
GstElement* audioconvert = gst_element_factory_make (" audioconvert" , nullptr );
276
276
if (!audioconvert)
@@ -283,7 +283,7 @@ GstElement* GstAVPipeline::add_audioconvert(GstElement* pipeline)
283
283
return audioconvert;
284
284
}
285
285
286
- GstElement* GstAVPipeline ::add_audioresample (GstElement* pipeline)
286
+ GstElement* GstAVPipelineD3D11 ::add_audioresample (GstElement* pipeline)
287
287
{
288
288
GstElement* audioresample = gst_element_factory_make (" audioresample" , nullptr );
289
289
if (!audioresample)
@@ -296,7 +296,7 @@ GstElement* GstAVPipeline::add_audioresample(GstElement* pipeline)
296
296
return audioresample;
297
297
}
298
298
299
- GstElement* GstAVPipeline ::add_wasapi2sink (GstElement* pipeline)
299
+ GstElement* GstAVPipelineD3D11 ::add_wasapi2sink (GstElement* pipeline)
300
300
{
301
301
GstElement* wasapi2sink = gst_element_factory_make (" wasapi2sink" , nullptr );
302
302
if (!wasapi2sink)
@@ -310,8 +310,8 @@ GstElement* GstAVPipeline::add_wasapi2sink(GstElement* pipeline)
310
310
return wasapi2sink;
311
311
}
312
312
313
- GstElement* GstAVPipeline ::add_webrtcsrc (GstElement* pipeline, const std::string& remote_peer_id, const std::string& uri,
314
- GstAVPipeline * self)
313
+ GstElement* GstAVPipelineD3D11 ::add_webrtcsrc (GstElement* pipeline, const std::string& remote_peer_id, const std::string& uri,
314
+ GstAVPipelineD3D11 * self)
315
315
{
316
316
GstElement* webrtcsrc = gst_element_factory_make (" webrtcsrc" , nullptr );
317
317
if (!webrtcsrc)
@@ -341,9 +341,9 @@ GstElement* GstAVPipeline::add_webrtcsrc(GstElement* pipeline, const std::string
341
341
return webrtcsrc;
342
342
}
343
343
344
- void GstAVPipeline ::on_pad_added (GstElement* src, GstPad* new_pad, gpointer data)
344
+ void GstAVPipelineD3D11 ::on_pad_added (GstElement* src, GstPad* new_pad, gpointer data)
345
345
{
346
- GstAVPipeline * avpipeline = static_cast <GstAVPipeline *>(data);
346
+ GstAVPipelineD3D11 * avpipeline = static_cast <GstAVPipelineD3D11 *>(data);
347
347
348
348
gchar* pad_name = gst_pad_get_name (new_pad);
349
349
Debug::Log (" Adding pad " );
@@ -419,13 +419,13 @@ void GstAVPipeline::on_pad_added(GstElement* src, GstPad* new_pad, gpointer data
419
419
g_free (pad_name);
420
420
}
421
421
422
- void GstAVPipeline ::webrtcbin_ready (GstElement* self, gchararray peer_id, GstElement* webrtcbin, gpointer udata)
422
+ void GstAVPipelineD3D11 ::webrtcbin_ready (GstElement* self, gchararray peer_id, GstElement* webrtcbin, gpointer udata)
423
423
{
424
424
Debug::Log (" Configure webrtcbin" , Level::Info);
425
425
g_object_set (webrtcbin, " latency" , 1 , nullptr );
426
426
}
427
427
428
- void GstAVPipeline ::ReleaseTexture (ID3D11Texture2D* texture)
428
+ void GstAVPipelineD3D11 ::ReleaseTexture (ID3D11Texture2D* texture)
429
429
{
430
430
if (texture != nullptr )
431
431
{
@@ -434,7 +434,7 @@ void GstAVPipeline::ReleaseTexture(ID3D11Texture2D* texture)
434
434
}
435
435
}
436
436
437
- GstAVPipeline::GstAVPipeline (IUnityInterfaces* s_UnityInterfaces)
437
+ GstAVPipelineD3D11::GstAVPipelineD3D11 (IUnityInterfaces* s_UnityInterfaces)
438
438
: GstBasePipeline(" AVPipeline" ), _s_UnityInterfaces(s_UnityInterfaces)
439
439
{
440
440
// preload plugins before Unity XR plugin
@@ -487,7 +487,7 @@ GstAVPipeline::GstAVPipeline(IUnityInterfaces* s_UnityInterfaces)
487
487
_render_info = GstVideoInfo ();
488
488
}
489
489
490
- GstAVPipeline ::~GstAVPipeline ()
490
+ GstAVPipelineD3D11 ::~GstAVPipelineD3D11 ()
491
491
{
492
492
gst_clear_object (&_device);
493
493
gst_object_unref (_device);
@@ -499,9 +499,9 @@ GstAVPipeline::~GstAVPipeline()
499
499
preloaded_plugins.clear ();
500
500
}
501
501
502
- void GstAVPipeline ::CreatePipeline (const char * uri, const char * remote_peer_id)
502
+ void GstAVPipelineD3D11 ::CreatePipeline (const char * uri, const char * remote_peer_id)
503
503
{
504
- Debug::Log (" GstAVPipeline create pipeline" , Level::Info);
504
+ Debug::Log (" GstAVPipelineD3D11 create pipeline" , Level::Info);
505
505
Debug::Log (uri, Level::Info);
506
506
Debug::Log (remote_peer_id, Level::Info);
507
507
@@ -512,7 +512,7 @@ void GstAVPipeline::CreatePipeline(const char* uri, const char* remote_peer_id)
512
512
CreateBusThread ();
513
513
}
514
514
515
- void GstAVPipeline ::CreateDevice ()
515
+ void GstAVPipelineD3D11 ::CreateDevice ()
516
516
{
517
517
if (_device == nullptr )
518
518
{
@@ -543,7 +543,7 @@ void GstAVPipeline::CreateDevice()
543
543
}
544
544
}
545
545
546
- void GstAVPipeline ::DestroyPipeline ()
546
+ void GstAVPipelineD3D11 ::DestroyPipeline ()
547
547
{
548
548
GstBasePipeline::DestroyPipeline ();
549
549
@@ -564,9 +564,9 @@ void GstAVPipeline::DestroyPipeline()
564
564
// pDebug = nullptr;
565
565
}
566
566
567
- GstBusSyncReply GstAVPipeline ::busSyncHandler (GstBus* bus, GstMessage* msg, gpointer user_data)
567
+ GstBusSyncReply GstAVPipelineD3D11 ::busSyncHandler (GstBus* bus, GstMessage* msg, gpointer user_data)
568
568
{
569
- auto self = (GstAVPipeline *)user_data;
569
+ auto self = (GstAVPipelineD3D11 *)user_data;
570
570
571
571
switch (GST_MESSAGE_TYPE (msg))
572
572
{
0 commit comments