#define DEFAULT_FADEUP_VOLUME FALSE
#define DEFAULT_AUDIO_MUTE AVSYSAUDIOSINK_AUDIO_UNMUTE
#define DEFAULT_AUDIO_LATENCY AVSYSAUDIOSINK_LATENCY_MID
-
+#define DEFAULT_AUDIO_CLOSE_HANDLE_ON_PREPARE FALSE
//GST_DEBUG_CATEGORY_STATIC (gst_avsystemsink_debug);
PROP_AUDIO_USER_ROUTE,
PROP_AUDIO_LATENCY,
PROP_AUDIO_HANDLE,
- PROP_AUDIO_CALLBACK
+ PROP_AUDIO_CALLBACK,
+ PROP_AUDIO_CLOSE_HANDLE_ON_PREPARE,
};
GType
g_object_class_install_property ( gobject_class, PROP_AUDIO_HANDLE,
g_param_spec_pointer("audio-handle", "Avsystem handle",
- "Avsystem audio handle",
+ "Avsystem audio handle",
G_PARAM_READWRITE));
g_object_class_install_property ( gobject_class, PROP_AUDIO_CALLBACK,
g_param_spec_pointer("audio-callback", "Avsystem callback",
- "Avsystem audio callback",
+ "Avsystem audio callback",
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, PROP_AUDIO_FADEUPVOLUME,
"Audio route policy of system",
GST_AVSYS_AUDIO_SINK_AUDIO_ROUTE, DEFAULT_AUDIO_ROUTE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS ));
-
+
g_object_class_install_property (gobject_class ,PROP_AUDIO_USER_ROUTE,
g_param_spec_enum("user-route", "User Route Policy",
"User route policy",
"Audio backend latency",
GST_AVSYS_AUDIO_SINK_LATENCY_TYPE, DEFAULT_AUDIO_LATENCY,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS ));
+
+ g_object_class_install_property (gobject_class, PROP_AUDIO_CLOSE_HANDLE_ON_PREPARE,
+ g_param_spec_boolean ("close-handle-on-prepare", "Close Handle on Prepare",
+ "Close Handle on Prepare",
+ DEFAULT_AUDIO_CLOSE_HANDLE_ON_PREPARE, G_PARAM_READWRITE));
}
static void
nvalue = g_value_get_enum(value);
sink->latency = nvalue;
break;
+ case PROP_AUDIO_CLOSE_HANDLE_ON_PREPARE:
+ nbool = g_value_get_boolean(value);
+ sink->close_handle_on_prepare = nbool;
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case PROP_AUDIO_LATENCY:
g_value_set_enum(value, sink->latency);
break;
+ case PROP_AUDIO_CLOSE_HANDLE_ON_PREPARE:
+ g_value_set_boolean(value, sink->close_handle_on_prepare);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
avsysaudiosink->latency = DEFAULT_AUDIO_LATENCY;
avsysaudiosink->audio_route_policy = DEFAULT_AUDIO_ROUTE;
avsysaudiosink->bytes_per_sample = 1;
+ avsysaudiosink->close_handle_on_prepare = DEFAULT_AUDIO_CLOSE_HANDLE_ON_PREPARE;
#if defined (LPCM_DUMP_SUPPORT)
avsysaudiosink->dumpFp = NULL;
#endif
avsys_audio = GST_AVSYS_AUDIO_SINK (asink);
+ GST_WARNING("Start");
+
// set avsys audio param
if (!avsysaudiosink_parse_spec (avsys_audio, spec))
goto spec_parse;
spec->latency_time = (guint64)p_time;
spec->buffer_time = (guint64)b_time;
} else {
+ GST_WARNING_OBJECT(avsys_audio, "");
return FALSE;
}
spec->segsize = avsys_audio->avsys_size; /* '/16' see avsys_audio_open */
spec->segtotal = (b_time / p_time) + (((b_time % p_time)/p_time > 0.5) ? 1: 0);
//spec->segtotal+2;
+ if (avsys_audio->close_handle_on_prepare) {
+ if (gst_avsysaudiosink_avsys_close(avsys_audio) == FALSE) {
+ GST_ERROR_OBJECT(avsys_audio, "gst_avsysaudiosink_avsys_close() failed");
+ return FALSE;
+ }
+ }
+
+ GST_WARNING("End");
GST_WARNING_OBJECT (avsys_audio, "latency time %u, buffer time %u, seg total %u\n",
(unsigned int)(spec->latency_time/1000), (unsigned int)(spec->buffer_time/1000), spec->segtotal);
return TRUE;
gboolean result = TRUE;
avsys_audio = GST_AVSYS_AUDIO_SINK (asink);
+ GST_WARNING("Start");
if(!gst_avsysaudiosink_avsys_close(avsys_audio))
{
GST_ERROR_OBJECT(avsys_audio, "gst_avsysaudiosink_avsys_close() failed");
result = FALSE;
}
+ GST_WARNING("End");
return result;
}
GstAvsysAudioSink *avsys_audio = NULL;
int avsys_result = AVSYS_STATE_SUCCESS;
+ GST_WARNING("Start");
GST_AVSYS_AUDIO_SINK_LOCK (asink);
avsys_audio = GST_AVSYS_AUDIO_SINK (asink);
#endif
GST_AVSYS_AUDIO_SINK_UNLOCK (asink);
+ GST_WARNING("End");
return;
}