summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2016-10-13 11:42:28 +0200
committerEdward Hervey <bilboed@bilboed.com>2016-10-13 11:42:28 +0200
commit8485a8d7860a7be7cd15de6e612917bad6f521e2 (patch)
treef968f64bada32016ccb17dc05aa143cf64346926
parentacc3a9d242b61dc992a8b8e2acb81f9b7654a414 (diff)
downloadgstreamer-plugins-base-8485a8d7860a7be7cd15de6e612917bad6f521e2.tar.gz
playback: GstStreamType is a flag
Therefor don't use equality
-rw-r--r--gst/playback/gstdecodebin3.c41
-rw-r--r--gst/playback/gstplaybin3.c113
2 files changed, 62 insertions, 92 deletions
diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c
index 2f321ea8a..cd6dde621 100644
--- a/gst/playback/gstdecodebin3.c
+++ b/gst/playback/gstdecodebin3.c
@@ -1796,7 +1796,7 @@ reconfigure_output_stream (DecodebinOutputStream * output,
can_reuse_decoder = FALSE;
if (can_reuse_decoder) {
- if (output->type == GST_STREAM_TYPE_VIDEO && output->drop_probe_id == 0) {
+ if (output->type & GST_STREAM_TYPE_VIDEO && output->drop_probe_id == 0) {
GST_DEBUG_OBJECT (dbin, "Adding keyframe-waiter probe");
output->drop_probe_id =
gst_pad_add_probe (slot->src_pad, GST_PAD_PROBE_TYPE_BUFFER,
@@ -1863,7 +1863,7 @@ reconfigure_output_stream (DecodebinOutputStream * output,
}
output->decoder_sink = gst_element_get_static_pad (output->decoder, "sink");
output->decoder_src = gst_element_get_static_pad (output->decoder, "src");
- if (output->type == GST_STREAM_TYPE_VIDEO) {
+ if (output->type & GST_STREAM_TYPE_VIDEO) {
GST_DEBUG_OBJECT (dbin, "Adding keyframe-waiter probe");
output->drop_probe_id =
gst_pad_add_probe (slot->src_pad, GST_PAD_PROBE_TYPE_BUFFER,
@@ -2395,27 +2395,22 @@ create_output_stream (GstDecodebin3 * dbin, GstStreamType type)
res->type = type;
res->dbin = dbin;
- switch (type) {
- case GST_STREAM_TYPE_VIDEO:
- templ = &video_src_template;
- counter = &dbin->vpadcount;
- prefix = "video";
- break;
- case GST_STREAM_TYPE_AUDIO:
- templ = &audio_src_template;
- counter = &dbin->apadcount;
- prefix = "audio";
- break;
- case GST_STREAM_TYPE_TEXT:
- templ = &text_src_template;
- counter = &dbin->tpadcount;
- prefix = "text";
- break;
- default:
- templ = &src_template;
- counter = &dbin->opadcount;
- prefix = "src";
- break;
+ if (type & GST_STREAM_TYPE_VIDEO) {
+ templ = &video_src_template;
+ counter = &dbin->vpadcount;
+ prefix = "video";
+ } else if (type & GST_STREAM_TYPE_AUDIO) {
+ templ = &audio_src_template;
+ counter = &dbin->apadcount;
+ prefix = "audio";
+ } else if (type & GST_STREAM_TYPE_TEXT) {
+ templ = &text_src_template;
+ counter = &dbin->tpadcount;
+ prefix = "text";
+ } else {
+ templ = &src_template;
+ counter = &dbin->opadcount;
+ prefix = "src";
}
pad_name = g_strdup_printf ("%s_%u", prefix, *counter);
diff --git a/gst/playback/gstplaybin3.c b/gst/playback/gstplaybin3.c
index 6c084a40d..faa895b8a 100644
--- a/gst/playback/gstplaybin3.c
+++ b/gst/playback/gstplaybin3.c
@@ -1167,21 +1167,15 @@ update_combiner_info (GstPlayBin3 * playbin)
gst_stream_collection_get_stream (playbin->collection, i);
GstStreamType stype = gst_stream_get_stream_type (stream);
- switch (stype) {
- case GST_STREAM_TYPE_AUDIO:
- g_ptr_array_add (playbin->combiner[PLAYBIN_STREAM_AUDIO].streams,
- gst_object_ref (stream));
- break;
- case GST_STREAM_TYPE_VIDEO:
- g_ptr_array_add (playbin->combiner[PLAYBIN_STREAM_VIDEO].streams,
- gst_object_ref (stream));
- break;
- case GST_STREAM_TYPE_TEXT:
- g_ptr_array_add (playbin->combiner[PLAYBIN_STREAM_TEXT].streams,
- gst_object_ref (stream));
- break;
- default:
- break;
+ if (stype & GST_STREAM_TYPE_AUDIO) {
+ g_ptr_array_add (playbin->combiner[PLAYBIN_STREAM_AUDIO].streams,
+ gst_object_ref (stream));
+ } else if (stype & GST_STREAM_TYPE_VIDEO) {
+ g_ptr_array_add (playbin->combiner[PLAYBIN_STREAM_VIDEO].streams,
+ gst_object_ref (stream));
+ } else if (stype & GST_STREAM_TYPE_TEXT) {
+ g_ptr_array_add (playbin->combiner[PLAYBIN_STREAM_TEXT].streams,
+ gst_object_ref (stream));
}
}
@@ -1198,20 +1192,14 @@ static void
set_selected_stream (GstPlayBin3 * playbin, GstStream * stream)
{
GstSourceCombine *combine = NULL;
+ GstStreamType stype = gst_stream_get_stream_type (stream);
- switch (gst_stream_get_stream_type (stream)) {
- case GST_STREAM_TYPE_AUDIO:
- combine = &playbin->combiner[PLAYBIN_STREAM_AUDIO];
- break;
- case GST_STREAM_TYPE_VIDEO:
- combine = &playbin->combiner[PLAYBIN_STREAM_VIDEO];
- break;
- case GST_STREAM_TYPE_TEXT:
- combine = &playbin->combiner[PLAYBIN_STREAM_TEXT];
- break;
- default:
- break;
- }
+ if (stype & GST_STREAM_TYPE_AUDIO)
+ combine = &playbin->combiner[PLAYBIN_STREAM_AUDIO];
+ else if (stype & GST_STREAM_TYPE_VIDEO)
+ combine = &playbin->combiner[PLAYBIN_STREAM_VIDEO];
+ else if (stype & GST_STREAM_TYPE_TEXT)
+ combine = &playbin->combiner[PLAYBIN_STREAM_TEXT];
if (combine) {
if (combine->combiner == NULL) {
@@ -2460,34 +2448,28 @@ do_stream_selection (GstPlayBin3 * playbin)
gint pb_stream_type = -1;
gboolean select_this = FALSE;
- switch (stream_type) {
- case GST_STREAM_TYPE_AUDIO:
- pb_stream_type = PLAYBIN_STREAM_AUDIO;
- /* Select the stream if it's the current one or if there's a custom selector */
- select_this =
- (nb_audio == playbin->current_audio ||
- (playbin->current_audio == -1 && nb_audio == 0) ||
- playbin->audio_stream_combiner != NULL);
- nb_audio++;
- break;
- case GST_STREAM_TYPE_VIDEO:
- pb_stream_type = PLAYBIN_STREAM_AUDIO;
- select_this =
- (nb_video == playbin->current_video ||
- (playbin->current_video == -1 && nb_video == 0) ||
- playbin->video_stream_combiner != NULL);
- nb_video++;
- break;
- case GST_STREAM_TYPE_TEXT:
- pb_stream_type = PLAYBIN_STREAM_TEXT;
- select_this =
- (nb_text == playbin->current_text ||
- (playbin->current_text == -1 && nb_text == 0) ||
- playbin->text_stream_combiner != NULL);
- nb_text++;
- break;
- default:
- break;
+ if (stream_type & GST_STREAM_TYPE_AUDIO) {
+ pb_stream_type = PLAYBIN_STREAM_AUDIO;
+ /* Select the stream if it's the current one or if there's a custom selector */
+ select_this =
+ (nb_audio == playbin->current_audio ||
+ (playbin->current_audio == -1 && nb_audio == 0) ||
+ playbin->audio_stream_combiner != NULL);
+ nb_audio++;
+ } else if (stream_type & GST_STREAM_TYPE_VIDEO) {
+ pb_stream_type = PLAYBIN_STREAM_AUDIO;
+ select_this =
+ (nb_video == playbin->current_video ||
+ (playbin->current_video == -1 && nb_video == 0) ||
+ playbin->video_stream_combiner != NULL);
+ nb_video++;
+ } else if (stream_type & GST_STREAM_TYPE_TEXT) {
+ pb_stream_type = PLAYBIN_STREAM_TEXT;
+ select_this =
+ (nb_text == playbin->current_text ||
+ (playbin->current_text == -1 && nb_text == 0) ||
+ playbin->text_stream_combiner != NULL);
+ nb_text++;
}
if (pb_stream_type < 0) {
GST_DEBUG_OBJECT (playbin,
@@ -3070,19 +3052,12 @@ select_stream_cb (GstElement * decodebin, GstStreamCollection * collection,
GstStreamType stype = gst_stream_get_stream_type (stream);
GstElement *combiner = NULL;
- switch (stype) {
- case GST_STREAM_TYPE_AUDIO:
- combiner = playbin->audio_stream_combiner;
- break;
- case GST_STREAM_TYPE_VIDEO:
- combiner = playbin->video_stream_combiner;
- break;
- case GST_STREAM_TYPE_TEXT:
- combiner = playbin->text_stream_combiner;
- break;
- default:
- break;
- }
+ if (stype & GST_STREAM_TYPE_AUDIO)
+ combiner = playbin->audio_stream_combiner;
+ else if (stype & GST_STREAM_TYPE_VIDEO)
+ combiner = playbin->video_stream_combiner;
+ else if (stype & GST_STREAM_TYPE_TEXT)
+ combiner = playbin->text_stream_combiner;
if (combiner) {
GST_DEBUG_OBJECT (playbin, "Got a combiner, requesting stream activation");