mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 16:08:51 +00:00
commit
36d5e870f7
3 changed files with 1224 additions and 0 deletions
1113
subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c
Normal file
1113
subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c
Normal file
File diff suppressed because it is too large
Load diff
57
subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.h
Normal file
57
subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.h
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright(c) 2019 Intel Corporation
|
||||||
|
* Authors: Jun Tian <jun.tian@intel.com> Xavier Hallade <xavier.hallade@intel.com>
|
||||||
|
* SPDX - License - Identifier: LGPL-2.1-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GST_SVTAV1ENC_H_
|
||||||
|
#define _GST_SVTAV1ENC_H_
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <gst/video/video.h>
|
||||||
|
#include <gst/video/gstvideoencoder.h>
|
||||||
|
|
||||||
|
#include <EbSvtAv1.h>
|
||||||
|
#include <EbSvtAv1Enc.h>
|
||||||
|
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
#define GST_TYPE_SVTAV1ENC \
|
||||||
|
(gst_svtav1enc_get_type())
|
||||||
|
#define GST_SVTAV1ENC(obj) \
|
||||||
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SVTAV1ENC,GstSvtAv1Enc))
|
||||||
|
#define GST_SVTAV1ENC_CLASS(klass) \
|
||||||
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SVTAV1ENC,GstSvtHevcEncClass))
|
||||||
|
#define GST_IS_SVTAV1ENC(obj) \
|
||||||
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SVTAV1ENC))
|
||||||
|
#define GST_IS_SVTAV1ENC_CLASS(obj) \
|
||||||
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SVTAV1ENC))
|
||||||
|
|
||||||
|
typedef struct _GstSvtAv1Enc
|
||||||
|
{
|
||||||
|
GstVideoEncoder video_encoder;
|
||||||
|
|
||||||
|
/* SVT-AV1 Encoder Handle */
|
||||||
|
EbComponentType *svt_encoder;
|
||||||
|
|
||||||
|
/* GStreamer Codec state */
|
||||||
|
GstVideoCodecState *state;
|
||||||
|
|
||||||
|
/* SVT-AV1 configuration */
|
||||||
|
EbSvtAv1EncConfiguration *svt_config;
|
||||||
|
|
||||||
|
EbBufferHeaderType *input_buf;
|
||||||
|
|
||||||
|
long long int frame_count;
|
||||||
|
int dts_offset;
|
||||||
|
} GstSvtAv1Enc;
|
||||||
|
|
||||||
|
typedef struct _GstSvtAv1EncClass
|
||||||
|
{
|
||||||
|
GstVideoEncoderClass video_encoder_class;
|
||||||
|
} GstSvtAv1EncClass;
|
||||||
|
|
||||||
|
GType gst_svtav1enc_get_type (void);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
#endif
|
54
subprojects/gst-plugins-bad/ext/svtav1/meson.build
Normal file
54
subprojects/gst-plugins-bad/ext/svtav1/meson.build
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# standalone plugin meson configuration
|
||||||
|
project('gst-svt-av1', 'c',
|
||||||
|
version : '0.1',
|
||||||
|
meson_version : '>= 0.29',
|
||||||
|
default_options : [ 'buildtype=debugoptimized' ])
|
||||||
|
|
||||||
|
# standard gst-plugins-bad dependencies and configuration
|
||||||
|
gst_req = '>= 1.15.1'
|
||||||
|
gst_dep = dependency('gstreamer-1.0', version : gst_req,
|
||||||
|
fallback : ['gstreamer', 'gst_dep'])
|
||||||
|
gstbase_dep = dependency('gstreamer-base-1.0', version : gst_req,
|
||||||
|
fallback : ['gstreamer', 'gstbase_dep'])
|
||||||
|
gstvideo_dep = dependency('gstreamer-video-1.0', version : gst_req,
|
||||||
|
fallback : ['gstreamer', 'gstvideo_dep'])
|
||||||
|
plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir'))
|
||||||
|
|
||||||
|
# common meson configuration
|
||||||
|
svtav1enc_dep = dependency('SvtAv1Enc')
|
||||||
|
|
||||||
|
cc = meson.get_compiler('c')
|
||||||
|
cc_flags = [
|
||||||
|
'-O2',
|
||||||
|
'-D_FORTIFY_SOURCE=2',
|
||||||
|
'-Wformat',
|
||||||
|
'-Wformat-security',
|
||||||
|
'-fPIE',
|
||||||
|
'-fPIC',
|
||||||
|
'-fstack-protector-strong',
|
||||||
|
]
|
||||||
|
foreach flag: cc_flags
|
||||||
|
if cc.has_argument(flag)
|
||||||
|
add_global_arguments(flag, language: 'c')
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
'-Wl,-z,now',
|
||||||
|
'-Wl,-z,relro',
|
||||||
|
'-Wl,-z,noexecstack',
|
||||||
|
]
|
||||||
|
foreach lflag : ldflags
|
||||||
|
add_global_link_arguments(lflag, language : 'c')
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
|
||||||
|
if svtav1enc_dep.found()
|
||||||
|
gstsvtav1enc = library('gstsvtav1enc',
|
||||||
|
'gstsvtav1enc.c',
|
||||||
|
dependencies: [gstbase_dep, gstvideo_dep, svtav1enc_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: plugins_install_dir,
|
||||||
|
)
|
||||||
|
endif
|
Loading…
Reference in a new issue