gboolean gst_amc_buffer_set_position_and_limit (GstAmcBuffer * buffer, GError ** err,
gint position, gint limit);
-GstAmcCodec * gst_amc_codec_new (const gchar *name, GError **err);
+GstAmcCodec * gst_amc_codec_new (const gchar *name, gboolean is_encoder, GError **err);
void gst_amc_codec_free (GstAmcCodec * codec);
-gboolean gst_amc_codec_configure (GstAmcCodec * codec, GstAmcFormat * format, GstAmcSurfaceTexture * surface_texture, gint flags, GError **err);
+gboolean gst_amc_codec_configure (GstAmcCodec * codec, GstAmcFormat * format, GstAmcSurfaceTexture * surface_texture, GError **err);
GstAmcFormat * gst_amc_codec_get_output_format (GstAmcCodec * codec, GError **err);
gboolean gst_amc_codec_start (GstAmcCodec * codec, GError **err);
GST_DEBUG_OBJECT (self, "Opening decoder");
- self->codec = gst_amc_codec_new (klass->codec_info->name, &err);
+ self->codec = gst_amc_codec_new (klass->codec_info->name, FALSE, &err);
if (!self->codec) {
GST_ELEMENT_ERROR_FROM_ERROR (self, err);
return FALSE;
GST_STR_NULL (format_string));
g_free (format_string);
- if (!gst_amc_codec_configure (self->codec, format, NULL, 0, &err)) {
+ if (!gst_amc_codec_configure (self->codec, format, NULL, &err)) {
GST_ERROR_OBJECT (self, "Failed to configure codec");
GST_ELEMENT_ERROR_FROM_ERROR (self, err);
return FALSE;
GST_DEBUG_OBJECT (self, "Opening decoder");
- self->codec = gst_amc_codec_new (klass->codec_info->name, &err);
+ self->codec = gst_amc_codec_new (klass->codec_info->name, FALSE, &err);
if (!self->codec) {
GST_ELEMENT_ERROR_FROM_ERROR (self, err);
return FALSE;
GST_STR_NULL (format_string));
g_free (format_string);
- if (!gst_amc_codec_configure (self->codec, format, self->surface, 0, &err)) {
+ if (!gst_amc_codec_configure (self->codec, format, self->surface, &err)) {
GST_ERROR_OBJECT (self, "Failed to configure codec");
GST_ELEMENT_ERROR_FROM_ERROR (self, err);
return FALSE;
GST_DEBUG_OBJECT (self, "Opening encoder");
- self->codec = gst_amc_codec_new (klass->codec_info->name, &err);
+ self->codec = gst_amc_codec_new (klass->codec_info->name, TRUE, &err);
if (!self->codec) {
GST_ELEMENT_ERROR_FROM_ERROR (self, err);
return FALSE;
GST_STR_NULL (format_string));
g_free (format_string);
- if (!gst_amc_codec_configure (self->codec, format, NULL, 1, &err)) {
+ if (!gst_amc_codec_configure (self->codec, format, NULL, &err)) {
GST_ERROR_OBJECT (self, "Failed to configure codec");
GST_ELEMENT_ERROR_FROM_ERROR (self, err);
goto quit;
RealBuffer *input_buffers, *output_buffers;
gsize n_input_buffers, n_output_buffers;
GstAmcSurface *surface;
+ gboolean is_encoder;
};
static struct
}
GstAmcCodec *
-gst_amc_codec_new (const gchar * name, GError ** err)
+gst_amc_codec_new (const gchar * name, gboolean is_encoder, GError ** err)
{
JNIEnv *env;
GstAmcCodec *codec = NULL;
}
codec = g_slice_new0 (GstAmcCodec);
+ codec->is_encoder = is_encoder;
if (!gst_amc_jni_call_static_object_method (env, err, media_codec.klass,
media_codec.create_by_codec_name, &object, name_str))
gboolean
gst_amc_codec_configure (GstAmcCodec * codec, GstAmcFormat * format,
- GstAmcSurfaceTexture * surface, gint flags, GError ** err)
+ GstAmcSurfaceTexture * surface, GError ** err)
{
JNIEnv *env;
+ gint flags = 0;
g_return_val_if_fail (codec != NULL, FALSE);
g_return_val_if_fail (format != NULL, FALSE);
return FALSE;
}
+ if (codec->is_encoder)
+ flags = 1;
+
return gst_amc_jni_call_void_method (env, err, codec->object,
media_codec.configure, format->object, codec->surface, NULL, flags);
}