1 /*
2 * Copyright(c) 2019 Intel Corporation
3 *     Authors: Jun Tian <jun.tian@intel.com> Xavier Hallade <xavier.hallade@intel.com>
4 * SPDX - License - Identifier: LGPL-2.1-or-later
5 */
6 
7 #ifndef _GST_SVTVP9ENC_H_
8 #define _GST_SVTVP9ENC_H_
9 
10 #include <string.h>
11 #include <gst/video/video.h>
12 #include <gst/video/gstvideoencoder.h>
13 
14 #include <EbSvtVp9Enc.h>
15 
16 G_BEGIN_DECLS
17 #define GST_TYPE_SVTVP9ENC \
18   (gst_svtvp9enc_get_type())
19 #define GST_SVTVP9ENC(obj) \
20   (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SVTVP9ENC,GstSvtVp9Enc))
21 #define GST_SVTVP9ENC_CLASS(klass) \
22   (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SVTVP9ENC,GstSvtHevcEncClass))
23 #define GST_IS_SVTVP9ENC(obj) \
24   (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SVTVP9ENC))
25 #define GST_IS_SVTVP9ENC_CLASS(obj) \
26   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SVTVP9ENC))
27 
28 typedef struct _GstSvtVp9Enc
29 {
30   GstVideoEncoder video_encoder;
31 
32   /* SVT-VP9 Encoder Handle */
33   EbComponentType *svt_encoder;
34 
35   /* GStreamer Codec state */
36   GstVideoCodecState *state;
37 
38   /* SVT-VP9 configuration */
39   EbSvtVp9EncConfiguration *svt_config;
40 
41   EbBufferHeaderType *input_buf;
42 
43   long long int frame_count;
44   int dts_offset;
45 } GstSvtVp9Enc;
46 
47 typedef struct _GstSvtVp9EncClass
48 {
49   GstVideoEncoderClass video_encoder_class;
50 } GstSvtVp9EncClass;
51 
52 GType gst_svtvp9enc_get_type (void);
53 
54 G_END_DECLS
55 #endif
56