summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2013-10-02 12:57:36 +0200
committerSebastian Dröge <slomo@circular-chaos.org>2013-10-04 13:03:49 +0200
commit050e487f0f3c4610d395e72cf9035b7da33f5f48 (patch)
treeff6a67a010b418d2b91bfe7798a02297a5f058f4
parentf070763252d904500107bde86bdf446ef5624f0f (diff)
avcodecmap: Only append values to the video/audio format lists if we don't have them already
-rw-r--r--ext/libav/gstavcodecmap.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c
index 90260c7..5952484 100644
--- a/ext/libav/gstavcodecmap.c
+++ b/ext/libav/gstavcodecmap.c
@@ -191,7 +191,10 @@ gst_ffmpeg_video_set_pix_fmts (GstCaps * caps, const enum AVPixelFormat *fmts)
format = gst_ffmpeg_pixfmt_to_videoformat (*fmts);
if (format != GST_VIDEO_FORMAT_UNKNOWN) {
g_value_set_string (&v, gst_video_format_to_string (format));
- gst_value_list_append_value (&va, &v);
+ /* Only append values we don't have yet */
+ if (gst_value_list_get_size (&va) == 0
+ || !gst_value_can_intersect (&v, &va))
+ gst_value_list_append_value (&va, &v);
}
fmts++;
}
@@ -452,7 +455,10 @@ gst_ffmpeg_audio_set_sample_fmts (GstCaps * caps,
format = gst_ffmpeg_smpfmt_to_audioformat (*fmts);
if (format != GST_AUDIO_FORMAT_UNKNOWN) {
g_value_set_string (&v, gst_audio_format_to_string (format));
- gst_value_list_append_value (&va, &v);
+ /* Only append values we don't have yet */
+ if (gst_value_list_get_size (&va) == 0
+ || !gst_value_can_intersect (&v, &va))
+ gst_value_list_append_value (&va, &v);
}
fmts++;
}