return (GstEncodingProfile *) prof;
}
+static GstEncodingProfile *
+create_vorbis_only_profile (void)
+{
+ GstEncodingProfile *prof;
+ GstCaps *vorbis;
+
+ vorbis = gst_caps_new_simple ("audio/x-vorbis", NULL);
+ prof =
+ (GstEncodingProfile *) gst_encoding_audio_profile_new (vorbis, NULL, NULL,
+ 0);
+ gst_caps_unref (vorbis);
+
+ return prof;
+}
+
GST_START_TEST (test_encodebin_states)
{
GstElement *ebin;
GST_END_TEST;
+GST_START_TEST (test_encodebin_render_audio_only_static)
+{
+ GstElement *ebin, *pipeline, *audiotestsrc, *fakesink;
+ GstEncodingProfile *prof;
+ GstBus *bus;
+ gboolean done = FALSE;
+ GstPad *sinkpad;
+ GstCaps *sinkcaps;
+
+ /* Create an encodebin and render 5s of vorbis only */
+
+ pipeline = gst_pipeline_new ("encodebin-pipeline");
+ bus = gst_pipeline_get_bus ((GstPipeline *) pipeline);
+ audiotestsrc = gst_element_factory_make ("audiotestsrc", NULL);
+ g_object_set (audiotestsrc, "num-buffers", 10, NULL);
+ fakesink = gst_element_factory_make ("fakesink", NULL);
+
+ ebin = gst_element_factory_make ("encodebin", NULL);
+
+ prof = create_vorbis_only_profile ();
+ g_object_set (ebin, "profile", prof, NULL);
+ gst_encoding_profile_unref (prof);
+
+ gst_bin_add_many ((GstBin *) pipeline, audiotestsrc, ebin, fakesink, NULL);
+
+ fail_unless (gst_element_link_many (audiotestsrc, ebin, fakesink, NULL));
+
+ /* Requesting a new pad should fail */
+ fail_if (gst_element_get_request_pad (ebin, "audio_0") != NULL);
+ sinkcaps = gst_caps_new_simple ("audio/x-raw-int", NULL);
+ g_signal_emit_by_name (ebin, "request-pad", sinkcaps, &sinkpad);
+ gst_caps_unref (sinkcaps);
+ fail_if (sinkpad != NULL);
+
+ fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_PLAYING),
+ GST_STATE_CHANGE_ASYNC);
+
+ while (!done) {
+ GstMessage *msg;
+
+ /* poll the bus until we get EOS without any errors */
+ msg = gst_bus_timed_pop (bus, GST_SECOND / 10);
+ if (msg) {
+ switch (GST_MESSAGE_TYPE (msg)) {
+ case GST_MESSAGE_ERROR:
+ fail ("GST_MESSAGE_ERROR");
+ break;
+ case GST_MESSAGE_EOS:
+ done = TRUE;
+ break;
+ default:
+ break;
+ }
+ gst_message_unref (msg);
+ }
+ }
+
+ /* Set back to NULL */
+ fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
+ GST_STATE_CHANGE_SUCCESS);
+
+ g_object_unref (bus);
+
+ gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
GST_START_TEST (test_encodebin_render_audio_dynamic)
{
GstElement *ebin, *pipeline, *audiotestsrc, *fakesink;
tcase_add_test (tc_chain, test_encodebin_sink_pads_multiple_dynamic);
tcase_add_test (tc_chain, test_encodebin_sink_pads_dynamic_encoder);
tcase_add_test (tc_chain, test_encodebin_render_audio_static);
+ tcase_add_test (tc_chain, test_encodebin_render_audio_only_static);
tcase_add_test (tc_chain, test_encodebin_render_audio_dynamic);
tcase_add_test (tc_chain, test_encodebin_render_audio_video_static);
tcase_add_test (tc_chain, test_encodebin_render_audio_video_dynamic);
GST_END_TEST;
-GST_START_TEST (test_containerless_profile)
-{
- GstEncodingProfile *encprof;
- GstEncodingAudioProfile *audioprof;
- GstCaps *container = NULL, *vorbis;
- GstCaps *test1, *test2;
-
- vorbis = gst_caps_new_simple ("audio/x-vorbis", NULL);
-
- GST_DEBUG ("Creating container profile without any caps");
- encprof = (GstEncodingProfile *) gst_encoding_container_profile_new ((gchar *)
- "container-vorbis", "dumb-profile", container, (gchar *) "dumb-preset");
- CHECK_PROFILE (encprof, "container-vorbis", "dumb-profile", NULL,
- "dumb-preset", 0, 0);
-
- GST_DEBUG ("Creating audio profile");
- audioprof = gst_encoding_audio_profile_new (vorbis, (gchar *) "HQ", NULL, 0);
- CHECK_PROFILE ((GstEncodingProfile *) audioprof, NULL, NULL, vorbis, "HQ", 0,
- 0);
-
- GST_DEBUG ("Adding audio profile to container");
- /* We can add one stream profile to container-less profiles.. */
- fail_unless (gst_encoding_container_profile_add_profile (
- (GstEncodingContainerProfile *) encprof,
- (GstEncodingProfile *) audioprof));
- GST_DEBUG ("Adding audio profile to container a second time (should fail)");
- /* .. but not two */
- fail_if (gst_encoding_container_profile_add_profile (
- (GstEncodingContainerProfile *) encprof,
- (GstEncodingProfile *) audioprof));
-
- GST_DEBUG ("Checking caps");
- /* Test caps */
- test1 = gst_caps_from_string ("audio/x-vorbis");
- test2 = gst_encoding_profile_get_output_caps (encprof);
- fail_unless (gst_caps_is_equal (test1, test2));
- gst_caps_unref (test1);
- gst_caps_unref (test2);
-
- gst_encoding_profile_unref (encprof);
- gst_caps_unref (vorbis);
-}
-
-GST_END_TEST;
-
static GstEncodingTarget *
create_saveload_target (void)
{
tcase_add_test (tc_chain, test_profile_creation);
tcase_add_test (tc_chain, test_profile_output_caps);
- tcase_add_test (tc_chain, test_containerless_profile);
if (can_write) {
tcase_add_test (tc_chain, test_loading_profile);
tcase_add_test (tc_chain, test_saving_profile);