|
| 1 | +diff --git a/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c b/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c |
| 2 | +index 2ea84982fad2..65e940d43d98 100644 |
| 3 | +--- a/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c |
| 4 | ++++ b/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c |
| 5 | +@@ -75,7 +75,11 @@ typedef struct _GstSvtAv1Enc |
| 6 | + guint maximum_buffer_size; |
| 7 | + gint intra_period_length; |
| 8 | + gint intra_refresh_type; |
| 9 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 10 | ++ gint level_of_parallelism; |
| 11 | ++#else |
| 12 | + gint logical_processors; |
| 13 | ++#endif |
| 14 | + gint target_socket; |
| 15 | + gchar *parameters_string; |
| 16 | + |
| 17 | +@@ -127,9 +131,10 @@ enum |
| 18 | + PROP_MAXIMUM_BUFFER_SIZE, |
| 19 | + PROP_INTRA_PERIOD_LENGTH, |
| 20 | + PROP_INTRA_REFRESH_TYPE, |
| 21 | +- PROP_LOGICAL_PROCESSORS, |
| 22 | ++ PROP_LOGICAL_PROCESSORS, /// DEPRECATED: should be removed once the minimum version is 3.0.0 |
| 23 | + PROP_TARGET_SOCKET, |
| 24 | + PROP_PARAMETERS_STRING, |
| 25 | ++ PROP_LEVEL_OF_PARALLELISM, |
| 26 | + }; |
| 27 | + |
| 28 | + #define PROP_PRESET_DEFAULT 10 |
| 29 | +@@ -142,7 +147,8 @@ enum |
| 30 | + #define PROP_MAXIMUM_BUFFER_SIZE_DEFAULT 1000 |
| 31 | + #define PROP_INTRA_PERIOD_LENGTH_DEFAULT -2 |
| 32 | + #define PROP_INTRA_REFRESH_TYPE_DEFAULT SVT_AV1_KF_REFRESH |
| 33 | +-#define PROP_LOGICAL_PROCESSORS_DEFAULT 0 |
| 34 | ++#define PROP_LEVEL_OF_PARALLELISM_DEFAULT 0 |
| 35 | ++#define PROP_LOGICAL_PROCESSORS_DEFAULT 0 /// DEPRECATED: should be removed once the minimum version is 3.0.0 |
| 36 | + #define PROP_TARGET_SOCKET_DEFAULT -1 |
| 37 | + #define PROP_PARAMETERS_STRING_DEFAULT NULL |
| 38 | + |
| 39 | +@@ -307,15 +313,30 @@ gst_svtav1enc_class_init (GstSvtAv1EncClass * klass) |
| 40 | + PROP_INTRA_REFRESH_TYPE_DEFAULT, |
| 41 | + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); |
| 42 | + |
| 43 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 44 | ++ g_object_class_install_property (gobject_class, |
| 45 | ++ PROP_LEVEL_OF_PARALLELISM, |
| 46 | ++ g_param_spec_uint ("level-of-parallelism", |
| 47 | ++ "Level of Parallelism", |
| 48 | ++ "Controls the number of threads and buffers to allocate. 0: auto", |
| 49 | ++ 0, |
| 50 | ++ 6, |
| 51 | ++ PROP_LEVEL_OF_PARALLELISM_DEFAULT, |
| 52 | ++ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); |
| 53 | ++#endif |
| 54 | ++ |
| 55 | + g_object_class_install_property (gobject_class, |
| 56 | + PROP_LOGICAL_PROCESSORS, |
| 57 | +- g_param_spec_uint ("logical-processors", |
| 58 | +- "Logical Processors", |
| 59 | +- "Number of logical CPU cores to be used. 0: auto", |
| 60 | ++ g_param_spec_uint ("logical-processors", "Logical Processors", |
| 61 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 62 | ++ "Deprecated. Use level-of-parallelism instead. 0: auto", |
| 63 | ++#else |
| 64 | ++ "Number of logical CPU cores to be used. Deprecated and replaced with level-of-parallelism in SVT-AV1 3.0.0. 0: auto", |
| 65 | ++#endif |
| 66 | + 0, |
| 67 | + G_MAXUINT, |
| 68 | + PROP_LOGICAL_PROCESSORS_DEFAULT, |
| 69 | +- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); |
| 70 | ++ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_DEPRECATED)); |
| 71 | + |
| 72 | + g_object_class_install_property (gobject_class, |
| 73 | + PROP_TARGET_SOCKET, |
| 74 | +@@ -352,7 +373,11 @@ gst_svtav1enc_init (GstSvtAv1Enc * svtav1enc) |
| 75 | + svtav1enc->maximum_buffer_size = PROP_MAXIMUM_BUFFER_SIZE_DEFAULT; |
| 76 | + svtav1enc->intra_period_length = PROP_INTRA_PERIOD_LENGTH_DEFAULT; |
| 77 | + svtav1enc->intra_refresh_type = PROP_INTRA_REFRESH_TYPE_DEFAULT; |
| 78 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 79 | ++ svtav1enc->level_of_parallelism = PROP_LEVEL_OF_PARALLELISM_DEFAULT; |
| 80 | ++#else |
| 81 | + svtav1enc->logical_processors = PROP_LOGICAL_PROCESSORS_DEFAULT; |
| 82 | ++#endif |
| 83 | + svtav1enc->target_socket = PROP_TARGET_SOCKET_DEFAULT; |
| 84 | + svtav1enc->parameters_string = PROP_PARAMETERS_STRING_DEFAULT; |
| 85 | + } |
| 86 | +@@ -403,8 +428,15 @@ gst_svtav1enc_set_property (GObject * object, guint property_id, |
| 87 | + case PROP_INTRA_REFRESH_TYPE: |
| 88 | + svtav1enc->intra_refresh_type = g_value_get_enum (value); |
| 89 | + break; |
| 90 | ++ case PROP_LEVEL_OF_PARALLELISM: |
| 91 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 92 | ++ svtav1enc->level_of_parallelism = g_value_get_int (value); |
| 93 | ++#endif |
| 94 | ++ break; |
| 95 | + case PROP_LOGICAL_PROCESSORS: |
| 96 | ++#if !SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 97 | + svtav1enc->logical_processors = g_value_get_uint (value); |
| 98 | ++#endif |
| 99 | + break; |
| 100 | + case PROP_TARGET_SOCKET: |
| 101 | + svtav1enc->target_socket = g_value_get_int (value); |
| 102 | +@@ -459,8 +491,13 @@ gst_svtav1enc_get_property (GObject * object, guint property_id, GValue * value, |
| 103 | + case PROP_INTRA_REFRESH_TYPE: |
| 104 | + g_value_set_enum (value, svtav1enc->intra_refresh_type); |
| 105 | + break; |
| 106 | ++ case PROP_LEVEL_OF_PARALLELISM: |
| 107 | + case PROP_LOGICAL_PROCESSORS: |
| 108 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 109 | ++ g_value_set_int (value, svtav1enc->level_of_parallelism); |
| 110 | ++#else |
| 111 | + g_value_set_uint (value, svtav1enc->logical_processors); |
| 112 | ++#endif |
| 113 | + break; |
| 114 | + case PROP_TARGET_SOCKET: |
| 115 | + g_value_set_int (value, svtav1enc->target_socket); |
| 116 | +@@ -556,7 +593,11 @@ gst_svtav1enc_configure_svt (GstSvtAv1Enc * svtav1enc) |
| 117 | + } |
| 118 | + svtav1enc->svt_config->intra_period_length = svtav1enc->intra_period_length; |
| 119 | + svtav1enc->svt_config->intra_refresh_type = svtav1enc->intra_refresh_type; |
| 120 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 121 | ++ svtav1enc->svt_config->level_of_parallelism = svtav1enc->level_of_parallelism; |
| 122 | ++#else |
| 123 | + svtav1enc->svt_config->logical_processors = svtav1enc->logical_processors; |
| 124 | ++#endif |
| 125 | + svtav1enc->svt_config->target_socket = svtav1enc->target_socket; |
| 126 | + gst_svtav1enc_parse_parameters_string (svtav1enc); |
| 127 | + |
| 128 | +@@ -725,11 +766,9 @@ gst_svtav1enc_configure_svt (GstSvtAv1Enc * svtav1enc) |
| 129 | + master_display_info.max_display_mastering_luminance; |
| 130 | + svtav1enc->svt_config->mastering_display.min_luma = |
| 131 | + master_display_info.min_display_mastering_luminance; |
| 132 | +- svtav1enc->svt_config->high_dynamic_range_input = TRUE; |
| 133 | + } else { |
| 134 | + memset (&svtav1enc->svt_config->mastering_display, |
| 135 | + 0, sizeof (svtav1enc->svt_config->mastering_display)); |
| 136 | +- svtav1enc->svt_config->high_dynamic_range_input = FALSE; |
| 137 | + } |
| 138 | + |
| 139 | + GstVideoContentLightLevel content_light_level; |
| 140 | +@@ -938,8 +977,13 @@ gst_svtav1enc_open (GstVideoEncoder * encoder) |
| 141 | + |
| 142 | + GST_DEBUG_OBJECT (svtav1enc, "open"); |
| 143 | + |
| 144 | ++#if SVT_AV1_CHECK_VERSION(3, 0, 0) |
| 145 | ++ EbErrorType res = svt_av1_enc_init_handle (&svtav1enc->svt_encoder, |
| 146 | ++ svtav1enc->svt_config); |
| 147 | ++#else |
| 148 | + EbErrorType res = svt_av1_enc_init_handle (&svtav1enc->svt_encoder, NULL, |
| 149 | + svtav1enc->svt_config); |
| 150 | ++#endif |
| 151 | + if (res != EB_ErrorNone) { |
| 152 | + GST_ELEMENT_ERROR (svtav1enc, |
| 153 | + LIBRARY, |
0 commit comments