Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
GStreamer
gstreamer-vaapi
Commits
74ebee53
Commit
74ebee53
authored
Apr 29, 2016
by
Víctor Manuel Jáquez Leal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tests: inforce gstreamer code-style
parent
018ea8b2
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
8495 additions
and
8595 deletions
+8495
-8595
tests/codec.c
tests/codec.c
+111
-109
tests/decoder.c
tests/decoder.c
+117
-117
tests/image.c
tests/image.c
+287
-371
tests/output.c
tests/output.c
+129
-132
tests/simple-decoder.c
tests/simple-decoder.c
+515
-514
tests/test-decode.c
tests/test-decode.c
+98
-99
tests/test-display.c
tests/test-display.c
+384
-386
tests/test-filter.c
tests/test-filter.c
+333
-334
tests/test-h264.c
tests/test-h264.c
+1017
-1016
tests/test-jpeg.c
tests/test-jpeg.c
+7
-6
tests/test-mpeg2.c
tests/test-mpeg2.c
+1617
-1616
tests/test-mpeg4.c
tests/test-mpeg4.c
+1639
-1638
tests/test-subpicture-data.c
tests/test-subpicture-data.c
+2
-1
tests/test-subpicture.c
tests/test-subpicture.c
+128
-127
tests/test-surfaces.c
tests/test-surfaces.c
+68
-68
tests/test-textures.c
tests/test-textures.c
+140
-155
tests/test-vc1.c
tests/test-vc1.c
+1746
-1745
tests/test-windows.c
tests/test-windows.c
+157
-161
No files found.
tests/codec.c
View file @
74ebee53
...
...
@@ -24,170 +24,172 @@
#include <gst/vaapi/gstvaapidisplay.h>
#include "codec.h"
typedef
struct
{
const
gchar
*
codec_str
;
GstVaapiCodec
codec
;
const
gchar
*
caps_str
;
typedef
struct
{
const
gchar
*
codec_str
;
GstVaapiCodec
codec
;
const
gchar
*
caps_str
;
}
CodecMap
;
static
const
CodecMap
g_codec_map
[]
=
{
{
"h264"
,
GST_VAAPI_CODEC_H264
,
"video/x-h264"
},
{
"jpeg"
,
GST_VAAPI_CODEC_JPEG
,
"image/jpeg"
},
{
"mpeg2"
,
GST_VAAPI_CODEC_MPEG2
,
"video/mpeg, mpegversion=2"
},
{
"mpeg4"
,
GST_VAAPI_CODEC_MPEG4
,
"video/mpeg, mpegversion=4"
},
{
"wmv3"
,
GST_VAAPI_CODEC_VC1
,
"video/x-wmv, wmvversion=3"
},
{
"vc1"
,
GST_VAAPI_CODEC_VC1
,
"video/x-wmv, wmvversion=3, format=(string)WVC1"
},
{
NULL
,
}
{
"h264"
,
GST_VAAPI_CODEC_H264
,
"video/x-h264"
},
{
"jpeg"
,
GST_VAAPI_CODEC_JPEG
,
"image/jpeg"
},
{
"mpeg2"
,
GST_VAAPI_CODEC_MPEG2
,
"video/mpeg, mpegversion=2"
},
{
"mpeg4"
,
GST_VAAPI_CODEC_MPEG4
,
"video/mpeg, mpegversion=4"
},
{
"wmv3"
,
GST_VAAPI_CODEC_VC1
,
"video/x-wmv, wmvversion=3"
},
{
"vc1"
,
GST_VAAPI_CODEC_VC1
,
"video/x-wmv, wmvversion=3, format=(string)WVC1"
},
{
NULL
,}
};
static
const
CodecMap
*
get_codec_map
(
GstVaapiCodec
codec
)
get_codec_map
(
GstVaapiCodec
codec
)
{
const
CodecMap
*
m
;
const
CodecMap
*
m
;
if
(
codec
)
{
for
(
m
=
g_codec_map
;
m
->
codec_str
!=
NULL
;
m
++
)
{
if
(
m
->
codec
==
codec
)
return
m
;
}
if
(
codec
)
{
for
(
m
=
g_codec_map
;
m
->
codec_str
!=
NULL
;
m
++
)
{
if
(
m
->
codec
==
codec
)
return
m
;
}
return
NULL
;
}
return
NULL
;
}
const
gchar
*
string_from_codec
(
GstVaapiCodec
codec
)
string_from_codec
(
GstVaapiCodec
codec
)
{
const
CodecMap
*
const
m
=
get_codec_map
(
codec
);
const
CodecMap
*
const
m
=
get_codec_map
(
codec
);
return
m
?
m
->
codec_str
:
NULL
;
return
m
?
m
->
codec_str
:
NULL
;
}
GstCaps
*
caps_from_codec
(
GstVaapiCodec
codec
)
caps_from_codec
(
GstVaapiCodec
codec
)
{
const
CodecMap
*
const
m
=
get_codec_map
(
codec
);
const
CodecMap
*
const
m
=
get_codec_map
(
codec
);
return
m
?
gst_caps_from_string
(
m
->
caps_str
)
:
NULL
;
return
m
?
gst_caps_from_string
(
m
->
caps_str
)
:
NULL
;
}
GstVaapiCodec
identify_codec_from_string
(
const
gchar
*
codec_str
)
identify_codec_from_string
(
const
gchar
*
codec_str
)
{
const
CodecMap
*
m
;
const
CodecMap
*
m
;
if
(
codec_str
)
{
for
(
m
=
g_codec_map
;
m
->
codec_str
!=
NULL
;
m
++
)
{
if
(
g_ascii_strcasecmp
(
m
->
codec_str
,
codec_str
)
==
0
)
return
m
->
codec
;
}
if
(
codec_str
)
{
for
(
m
=
g_codec_map
;
m
->
codec_str
!=
NULL
;
m
++
)
{
if
(
g_ascii_strcasecmp
(
m
->
codec_str
,
codec_str
)
==
0
)
return
m
->
codec
;
}
return
0
;
}
return
0
;
}
typedef
struct
{
GMappedFile
*
file
;
guint8
*
data
;
guint
size
;
guint
probability
;
GstCaps
*
caps
;
GstTypeFind
type_find
;
typedef
struct
{
GMappedFile
*
file
;
guint8
*
data
;
guint
size
;
guint
probability
;
GstCaps
*
caps
;
GstTypeFind
type_find
;
}
CodecIdentifier
;
static
const
guint8
*
codec_identifier_peek
(
gpointer
data
,
gint64
offset
,
guint
size
)
codec_identifier_peek
(
gpointer
data
,
gint64
offset
,
guint
size
)
{
CodecIdentifier
*
const
cip
=
data
;
CodecIdentifier
*
const
cip
=
data
;
if
(
offset
>=
0
&&
offset
+
size
<=
cip
->
size
)
return
cip
->
data
+
offset
;
if
(
offset
<
0
&&
((
gint
)
cip
->
size
+
offset
)
>=
0
)
return
&
cip
->
data
[
cip
->
size
+
offset
];
return
NULL
;
if
(
offset
>=
0
&&
offset
+
size
<=
cip
->
size
)
return
cip
->
data
+
offset
;
if
(
offset
<
0
&&
((
gint
)
cip
->
size
+
offset
)
>=
0
)
return
&
cip
->
data
[
cip
->
size
+
offset
];
return
NULL
;
}
static
void
codec_identifier_suggest
(
gpointer
data
,
guint
probability
,
GstCaps
*
caps
)
codec_identifier_suggest
(
gpointer
data
,
guint
probability
,
GstCaps
*
caps
)
{
CodecIdentifier
*
const
cip
=
data
;
CodecIdentifier
*
const
cip
=
data
;
if
(
cip
->
probability
<
probability
)
{
cip
->
probability
=
probability
;
gst_caps_replace
(
&
cip
->
caps
,
caps
);
}
if
(
cip
->
probability
<
probability
)
{
cip
->
probability
=
probability
;
gst_caps_replace
(
&
cip
->
caps
,
caps
);
}
}
static
void
codec_identifier_free
(
CodecIdentifier
*
cip
)
codec_identifier_free
(
CodecIdentifier
*
cip
)
{
if
(
!
cip
)
return
;
if
(
cip
->
file
)
{
g_mapped_file_unref
(
cip
->
file
);
cip
->
file
=
NULL
;
}
gst_caps_replace
(
&
cip
->
caps
,
NULL
);
g_slice_free
(
CodecIdentifier
,
cip
);
if
(
!
cip
)
return
;
if
(
cip
->
file
)
{
g_mapped_file_unref
(
cip
->
file
);
cip
->
file
=
NULL
;
}
gst_caps_replace
(
&
cip
->
caps
,
NULL
);
g_slice_free
(
CodecIdentifier
,
cip
);
}
static
CodecIdentifier
*
codec_identifier_new
(
const
gchar
*
filename
)
codec_identifier_new
(
const
gchar
*
filename
)
{
CodecIdentifier
*
cip
;
GstTypeFind
*
tfp
;
CodecIdentifier
*
cip
;
GstTypeFind
*
tfp
;
cip
=
g_slice_new0
(
CodecIdentifier
);
if
(
!
cip
)
return
NULL
;
cip
=
g_slice_new0
(
CodecIdentifier
);
if
(
!
cip
)
return
NULL
;
cip
->
file
=
g_mapped_file_new
(
filename
,
FALSE
,
NULL
);
if
(
!
cip
->
file
)
goto
error
;
cip
->
file
=
g_mapped_file_new
(
filename
,
FALSE
,
NULL
);
if
(
!
cip
->
file
)
goto
error
;
cip
->
size
=
g_mapped_file_get_length
(
cip
->
file
);
cip
->
data
=
(
guint8
*
)
g_mapped_file_get_contents
(
cip
->
file
);
if
(
!
cip
->
data
)
goto
error
;
cip
->
size
=
g_mapped_file_get_length
(
cip
->
file
);
cip
->
data
=
(
guint8
*
)
g_mapped_file_get_contents
(
cip
->
file
);
if
(
!
cip
->
data
)
goto
error
;
tfp
=
&
cip
->
type_find
;
tfp
->
peek
=
codec_identifier_peek
;
tfp
->
suggest
=
codec_identifier_suggest
;
tfp
->
data
=
cip
;
return
cip
;
tfp
=
&
cip
->
type_find
;
tfp
->
peek
=
codec_identifier_peek
;
tfp
->
suggest
=
codec_identifier_suggest
;
tfp
->
data
=
cip
;
return
cip
;
error:
codec_identifier_free
(
cip
);
return
NULL
;
codec_identifier_free
(
cip
);
return
NULL
;
}
GstVaapiCodec
identify_codec
(
const
gchar
*
filename
)
identify_codec
(
const
gchar
*
filename
)
{
CodecIdentifier
*
cip
;
GList
*
type_list
,
*
l
;
guint32
codec
=
0
;
cip
=
codec_identifier_new
(
filename
);
if
(
!
cip
)
return
0
;
type_list
=
gst_type_find_factory_get_list
();
for
(
l
=
type_list
;
l
!=
NULL
;
l
=
l
->
next
)
{
GstTypeFindFactory
*
const
factory
=
GST_TYPE_FIND_FACTORY
(
l
->
data
);
gst_type_find_factory_call_function
(
factory
,
&
cip
->
type_find
);
}
g_list_free
(
type_list
);
CodecIdentifier
*
cip
;
GList
*
type_list
,
*
l
;
guint32
codec
=
0
;
cip
=
codec_identifier_new
(
filename
);
if
(
!
cip
)
return
0
;
type_list
=
gst_type_find_factory_get_list
();
for
(
l
=
type_list
;
l
!=
NULL
;
l
=
l
->
next
)
{
GstTypeFindFactory
*
const
factory
=
GST_TYPE_FIND_FACTORY
(
l
->
data
);
gst_type_find_factory_call_function
(
factory
,
&
cip
->
type_find
);
}
g_list_free
(
type_list
);
if
(
cip
->
probability
>=
GST_TYPE_FIND_LIKELY
)
codec
=
gst_vaapi_profile_get_codec
(
gst_vaapi_profile_from_caps
(
cip
->
caps
));
if
(
cip
->
probability
>=
GST_TYPE_FIND_LIKELY
)
codec
=
gst_vaapi_profile_get_codec
(
gst_vaapi_profile_from_caps
(
cip
->
caps
));
codec_identifier_free
(
cip
);
return
codec
;
codec_identifier_free
(
cip
);
return
codec
;
}
tests/decoder.c
View file @
74ebee53
...
...
@@ -34,169 +34,169 @@
#include "test-h264.h"
#include "test-vc1.h"
typedef
void
(
*
GetVideoInfoFunc
)(
VideoDecodeInfo
*
info
);
typedef
void
(
*
GetVideoInfoFunc
)
(
VideoDecodeInfo
*
info
);
typedef
struct
_CodecDefs
CodecDefs
;
struct
_CodecDefs
{
const
gchar
*
codec_str
;
GetVideoInfoFunc
get_video_info
;
struct
_CodecDefs
{
const
gchar
*
codec_str
;
GetVideoInfoFunc
get_video_info
;
};
static
const
CodecDefs
g_codec_defs
[]
=
{
#define INIT_FUNCS(CODEC) { #CODEC, CODEC##_get_video_info }
INIT_FUNCS
(
jpeg
),
INIT_FUNCS
(
mpeg2
),
INIT_FUNCS
(
mpeg4
),
INIT_FUNCS
(
h264
),
INIT_FUNCS
(
vc1
),
INIT_FUNCS
(
jpeg
),
INIT_FUNCS
(
mpeg2
),
INIT_FUNCS
(
mpeg4
),
INIT_FUNCS
(
h264
),
INIT_FUNCS
(
vc1
),
#undef INIT_FUNCS
{
NULL
,
}
{
NULL
,}
};
static
const
CodecDefs
*
find_codec_defs
(
const
gchar
*
codec_str
)
find_codec_defs
(
const
gchar
*
codec_str
)
{
const
CodecDefs
*
c
;
for
(
c
=
g_codec_defs
;
c
->
codec_str
;
c
++
)
if
(
strcmp
(
codec_str
,
c
->
codec_str
)
==
0
)
return
c
;
return
NULL
;
const
CodecDefs
*
c
;
for
(
c
=
g_codec_defs
;
c
->
codec_str
;
c
++
)
if
(
strcmp
(
codec_str
,
c
->
codec_str
)
==
0
)
return
c
;
return
NULL
;
}
static
inline
const
CodecDefs
*
get_codec_defs
(
GstVaapiDecoder
*
decoder
)
get_codec_defs
(
GstVaapiDecoder
*
decoder
)
{
return
gst_vaapi_decoder_get_user_data
(
decoder
);
return
gst_vaapi_decoder_get_user_data
(
decoder
);
}
static
inline
void
set_codec_defs
(
GstVaapiDecoder
*
decoder
,
const
CodecDefs
*
c
)
set_codec_defs
(
GstVaapiDecoder
*
decoder
,
const
CodecDefs
*
c
)
{
gst_vaapi_decoder_set_user_data
(
decoder
,
(
gpointer
)
c
);
gst_vaapi_decoder_set_user_data
(
decoder
,
(
gpointer
)
c
);
}
GstVaapiDecoder
*
decoder_new
(
GstVaapiDisplay
*
display
,
const
gchar
*
codec_name
)
decoder_new
(
GstVaapiDisplay
*
display
,
const
gchar
*
codec_name
)
{
GstVaapiDecoder
*
decoder
;
const
CodecDefs
*
codec
;
GstCaps
*
caps
;
VideoDecodeInfo
info
;
if
(
!
codec_name
)
codec_name
=
"h264"
;
codec
=
find_codec_defs
(
codec_name
);
if
(
!
codec
)
{
GST_ERROR
(
"failed to find %s codec data"
,
codec_name
);
return
NULL
;
}
codec
->
get_video_info
(
&
info
);
caps
=
gst_vaapi_profile_get_caps
(
info
.
profile
);
if
(
!
caps
)
{
GST_ERROR
(
"failed to create decoder caps"
);
return
NULL
;
}
if
(
info
.
width
>
0
&&
info
.
height
>
0
)
gst_caps_set_simple
(
caps
,
"width"
,
G_TYPE_INT
,
info
.
width
,
"height"
,
G_TYPE_INT
,
info
.
height
,
NULL
);
switch
(
gst_vaapi_profile_get_codec
(
info
.
profile
))
{
GstVaapiDecoder
*
decoder
;
const
CodecDefs
*
codec
;
GstCaps
*
caps
;
VideoDecodeInfo
info
;
if
(
!
codec_name
)
codec_name
=
"h264"
;
codec
=
find_codec_defs
(
codec_name
);
if
(
!
codec
)
{
GST_ERROR
(
"failed to find %s codec data"
,
codec_name
);
return
NULL
;
}
codec
->
get_video_info
(
&
info
);
caps
=
gst_vaapi_profile_get_caps
(
info
.
profile
);
if
(
!
caps
)
{
GST_ERROR
(
"failed to create decoder caps"
);
return
NULL
;
}
if
(
info
.
width
>
0
&&
info
.
height
>
0
)
gst_caps_set_simple
(
caps
,
"width"
,
G_TYPE_INT
,
info
.
width
,
"height"
,
G_TYPE_INT
,
info
.
height
,
NULL
);
switch
(
gst_vaapi_profile_get_codec
(
info
.
profile
))
{
case
GST_VAAPI_CODEC_H264
:
decoder
=
gst_vaapi_decoder_h264_new
(
display
,
caps
);
break
;
decoder
=
gst_vaapi_decoder_h264_new
(
display
,
caps
);
break
;
#if USE_JPEG_DECODER
case
GST_VAAPI_CODEC_JPEG
:
decoder
=
gst_vaapi_decoder_jpeg_new
(
display
,
caps
);
break
;
decoder
=
gst_vaapi_decoder_jpeg_new
(
display
,
caps
);
break
;
#endif
case
GST_VAAPI_CODEC_MPEG2
:
decoder
=
gst_vaapi_decoder_mpeg2_new
(
display
,
caps
);
break
;
decoder
=
gst_vaapi_decoder_mpeg2_new
(
display
,
caps
);
break
;
case
GST_VAAPI_CODEC_MPEG4
:
decoder
=
gst_vaapi_decoder_mpeg4_new
(
display
,
caps
);
break
;
decoder
=
gst_vaapi_decoder_mpeg4_new
(
display
,
caps
);
break
;
case
GST_VAAPI_CODEC_VC1
:
decoder
=
gst_vaapi_decoder_vc1_new
(
display
,
caps
);
break
;
decoder
=
gst_vaapi_decoder_vc1_new
(
display
,
caps
);
break
;
default:
decoder
=
NULL
;
break
;
}
gst_caps_unref
(
caps
);
if
(
!
decoder
)
{
GST_ERROR
(
"failed to create %s decoder"
,
codec
->
codec_str
);
return
NULL
;
}
set_codec_defs
(
decoder
,
codec
);
return
decoder
;
decoder
=
NULL
;
break
;
}
gst_caps_unref
(
caps
);
if
(
!
decoder
)
{
GST_ERROR
(
"failed to create %s decoder"
,
codec
->
codec_str
);
return
NULL
;
}
set_codec_defs
(
decoder
,
codec
);
return
decoder
;
}
gboolean
decoder_put_buffers
(
GstVaapiDecoder
*
decoder
)
decoder_put_buffers
(
GstVaapiDecoder
*
decoder
)
{
const
CodecDefs
*
codec
;
VideoDecodeInfo
info
;
GstBuffer
*
buffer
;
gboolean
success
;
g_return_val_if_fail
(
decoder
!=
NULL
,
FALSE
);
codec
=
get_codec_defs
(
decoder
);
g_return_val_if_fail
(
codec
!=
NULL
,
FALSE
);
codec
->
get_video_info
(
&
info
);
buffer
=
gst_buffer_new_wrapped_full
(
GST_MEMORY_FLAG_READONLY
,
(
guchar
*
)
info
.
data
,
info
.
data_size
,
0
,
info
.
data_size
,
NULL
,
NULL
);
if
(
!
buffer
)
{
GST_ERROR
(
"failed to create encoded data buffer"
);
return
FALSE
;
}
success
=
gst_vaapi_decoder_put_buffer
(
decoder
,
buffer
);
gst_buffer_unref
(
buffer
);
if
(
!
success
)
{
GST_ERROR
(
"failed to send video data to the decoder"
);
return
FALSE
;
}
if
(
!
gst_vaapi_decoder_put_buffer
(
decoder
,
NULL
))
{
GST_ERROR
(
"failed to submit <end-of-stream> to the decoder"
);
return
FALSE
;
}
return
TRUE
;
const
CodecDefs
*
codec
;
VideoDecodeInfo
info
;
GstBuffer
*
buffer
;
gboolean
success
;
g_return_val_if_fail
(
decoder
!=
NULL
,
FALSE
);
codec
=
get_codec_defs
(
decoder
);
g_return_val_if_fail
(
codec
!=
NULL
,
FALSE
);
codec
->
get_video_info
(
&
info
);
buffer
=
gst_buffer_new_wrapped_full
(
GST_MEMORY_FLAG_READONLY
,
(
guchar
*
)
info
.
data
,
info
.
data_size
,
0
,
info
.
data_size
,
NULL
,
NULL
);
if
(
!
buffer
)
{
GST_ERROR
(
"failed to create encoded data buffer"
);
return
FALSE
;
}
success
=
gst_vaapi_decoder_put_buffer
(
decoder
,
buffer
);
gst_buffer_unref
(
buffer
);
if
(
!
success
)
{
GST_ERROR
(
"failed to send video data to the decoder"
);
return
FALSE
;
}
if
(
!
gst_vaapi_decoder_put_buffer
(
decoder
,
NULL
))
{
GST_ERROR
(
"failed to submit <end-of-stream> to the decoder"
);
return
FALSE
;
}
return
TRUE
;
}
GstVaapiSurfaceProxy
*
decoder_get_surface
(
GstVaapiDecoder
*
decoder
)
decoder_get_surface
(
GstVaapiDecoder
*
decoder
)
{
GstVaapiSurfaceProxy
*
proxy
;
GstVaapiDecoderStatus
status
;
GstVaapiSurfaceProxy
*
proxy
;
GstVaapiDecoderStatus
status
;
g_return_val_if_fail
(
decoder
!=
NULL
,
NULL
);
g_return_val_if_fail
(
decoder
!=
NULL
,
NULL
);
status
=
gst_vaapi_decoder_get_surface
(
decoder
,
&
proxy
);
if
(
status
!=
GST_VAAPI_DECODER_STATUS_SUCCESS
)
{
GST_ERROR
(
"failed to get decoded surface (decoder status %d)"
,
status
);
return
NULL
;
}
return
proxy
;
status
=
gst_vaapi_decoder_get_surface
(
decoder
,
&
proxy
);
if
(
status
!=
GST_VAAPI_DECODER_STATUS_SUCCESS
)
{
GST_ERROR
(
"failed to get decoded surface (decoder status %d)"
,
status
);
return
NULL
;
}
return
proxy
;
}
const
gchar
*
decoder_get_codec_name
(
GstVaapiDecoder
*
decoder
)
decoder_get_codec_name
(
GstVaapiDecoder
*
decoder
)
{
const
CodecDefs
*
codec
;
const
CodecDefs
*
codec
;
g_return_val_if_fail
(
decoder
!=
NULL
,
NULL
);
g_return_val_if_fail
(
decoder
!=
NULL
,
NULL
);
codec
=
get_codec_defs
(
decoder
);
g_return_val_if_fail
(
codec
!=
NULL
,
FALSE
);
codec
=
get_codec_defs
(
decoder
);
g_return_val_if_fail
(
codec
!=
NULL
,
FALSE
);
return
codec
->
codec_str
;
return
codec
->
codec_str
;
}
tests/image.c
View file @
74ebee53
This diff is collapsed.
Click to expand it.
tests/output.c
View file @
74ebee53
...
...
@@ -48,34 +48,30 @@
static
const
VideoOutputInfo
*
g_video_output
;
static
const
VideoOutputInfo
g_video_outputs
[]
=
{
/* Video outputs are sorted in test order for automatic characterisation */
/* Video outputs are sorted in test order for automatic characterisation */
#if USE_WAYLAND
{
"wayland"
,
gst_vaapi_display_wayland_new
,
gst_vaapi_window_wayland_new
},
{
"wayland"
,
gst_vaapi_display_wayland_new
,
gst_vaapi_window_wayland_new
},
#endif
#if USE_X11
{
"x11"
,
gst_vaapi_display_x11_new
,
gst_vaapi_window_x11_new
,
gst_vaapi_pixmap_x11_new
},
{
"x11"
,
gst_vaapi_display_x11_new
,
gst_vaapi_window_x11_new
,
gst_vaapi_pixmap_x11_new
},
#endif
#if USE_GLX
{
"glx"
,
gst_vaapi_display_glx_new
,
gst_vaapi_window_glx_new
,
gst_vaapi_pixmap_x11_new
},
{
"glx"
,
gst_vaapi_display_glx_new
,
gst_vaapi_window_glx_new
,
gst_vaapi_pixmap_x11_new
},
#endif
#if USE_DRM
{
"drm"
,
gst_vaapi_display_drm_new
,
gst_vaapi_window_drm_new
},
{
"drm"
,
gst_vaapi_display_drm_new
,
gst_vaapi_window_drm_new
},
#endif
{
NULL
,
}