From: <sl...@ke...> - 2008-06-03 08:48:41
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: slomo Date: Tue Jun 03 2008 08:48:47 UTC Log message: * docs/libs/gst-plugins-base-libs-sections.txt: * gst-libs/gst/audio/multichannel.c: (gst_audio_check_channel_positions): * gst-libs/gst/audio/multichannel.h: API: Make gst_audio_check_channel_positions() public. * tests/check/libs/audio.c: (GST_START_TEST): Add some simple checks for gst_audio_check_channel_positions(). Modified files: . : ChangeLog docs/libs : gst-plugins-base-libs-sections.txt gst-libs/gst/audio: multichannel.c multichannel.h tests/check/libs: audio.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3991&r2=1.3992 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/docs/libs/gst-plugins-base-libs-sections.txt.diff?r1=1.57&r2=1.58 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/audio/multichannel.c.diff?r1=1.13&r2=1.14 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst-libs/gst/audio/multichannel.h.diff?r1=1.4&r2=1.5 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/tests/check/libs/audio.c.diff?r1=1.5&r2=1.6 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3991 retrieving revision 1.3992 diff -u -d -r1.3991 -r1.3992 --- ChangeLog 2 Jun 2008 20:09:07 -0000 1.3991 +++ ChangeLog 3 Jun 2008 08:48:28 -0000 1.3992 @@ -1,3 +1,14 @@ +2008-06-03 Sebastian Dröge <sl...@ci...> + + * docs/libs/gst-plugins-base-libs-sections.txt: + * gst-libs/gst/audio/multichannel.c: + (gst_audio_check_channel_positions): + * gst-libs/gst/audio/multichannel.h: + API: Make gst_audio_check_channel_positions() public. + * tests/check/libs/audio.c: (GST_START_TEST): + Add some simple checks for gst_audio_check_channel_positions(). 2008-06-02 Tim-Philipp Müller <tim.muller at collabora co uk> * sys/v4l/v4l_calls.c: (gst_v4l_get_chan_names): Index: gst-plugins-base-libs-sections.txt RCS file: /cvs/gstreamer/gst-plugins-base/docs/libs/gst-plugins-base-libs-sections.txt,v retrieving revision 1.57 retrieving revision 1.58 diff -u -d -r1.57 -r1.58 --- gst-plugins-base-libs-sections.txt 9 May 2008 21:42:25 -0000 1.57 +++ gst-plugins-base-libs-sections.txt 3 Jun 2008 08:48:31 -0000 1.58 @@ -143,6 +143,7 @@ gst_audio_set_caps_channel_positions_list gst_audio_set_channel_positions gst_audio_set_structure_channel_positions_list +gst_audio_check_channel_positions <SUBSECTION Standard> GST_TYPE_AUDIO_CHANNEL_POSITION gst_audio_channel_position_get_type Index: multichannel.c RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/audio/multichannel.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- multichannel.c 29 May 2008 11:34:09 -0000 1.13 +++ multichannel.c 3 Jun 2008 08:48:31 -0000 1.14 @@ -25,20 +25,33 @@ #define GST_AUDIO_CHANNEL_POSITIONS_FIELD_NAME "channel-positions" -/* - * This function checks if basic assumptions apply: - * - does each position occur at most once? - * - invalid positions? - * - do conflicting positions occur? - * + front_mono vs. front_left/right - * + none vs not-none +/** + * gst_audio_check_channel_positions: + * @pos: An array of #GstAudioChannelPosition. + * @channels: The number of elements in @pos. + * + * This functions checks if the given channel positions are valid. Channel + * positions are valid if: + * <itemizedlist> + * <listitem><para>No channel positions appears twice or all positions are %GST_AUDIO_CHANNEL_POSITION_NONE. + * </para></listitem> + * <listitem><para>Either all or none of the channel positions are %GST_AUDIO_CHANNEL_POSITION_NONE. + * <listitem><para>%GST_AUDIO_CHANNEL_POSITION_FRONT_MONO and %GST_AUDIO_CHANNEL_POSITION_LEFT or %GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT don't appear together in the given positions. + * </itemizedlist> + * Since: 0.10.20 + * Returns: %TRUE if the given channel positions are valid + * and %FALSE otherwise. */ - -static gboolean +gboolean gst_audio_check_channel_positions (const GstAudioChannelPosition * pos, - gint channels) + guint channels) { gint i, n; const struct { const GstAudioChannelPosition pos1[2]; @@ -52,13 +65,14 @@ GST_AUDIO_CHANNEL_POSITION_INVALID}} }; - g_assert (pos != NULL && channels > 0); + g_return_val_if_fail (pos != NULL, FALSE); + g_return_val_if_fail (channels > 0, FALSE); /* check for invalid channel positions */ for (n = 0; n < channels; n++) { if (pos[n] <= GST_AUDIO_CHANNEL_POSITION_INVALID || pos[n] >= GST_AUDIO_CHANNEL_POSITION_NUM) { - g_warning ("Channel position %d for channel %d is invalid", pos[n], n); + GST_WARNING ("Channel position %d for channel %d is invalid", pos[n], n); return FALSE; } } @@ -69,7 +83,7 @@ if (pos[0] == GST_AUDIO_CHANNEL_POSITION_NONE) { for (n = 1; n < channels; ++n) { if (pos[n] != GST_AUDIO_CHANNEL_POSITION_NONE) { - g_warning ("Either all channel positions must be defined, or all " + GST_WARNING ("Either all channel positions must be defined, or all " "be set to NONE, having only some defined is not allowed"); return FALSE; } @@ -90,13 +104,13 @@ /* NONE may not occur mixed with other channel positions */ if (i == GST_AUDIO_CHANNEL_POSITION_NONE && count > 0) { - g_warning ("Either all channel positions must be defined, or all " + GST_WARNING ("Either all channel positions must be defined, or all " "be set to NONE, having only some defined is not allowed"); if (count > 1) { - g_warning ("Channel position %d occurred %d times, not allowed", + GST_WARNING ("Channel position %d occurred %d times, not allowed", i, count); @@ -114,7 +128,7 @@ if (found1 && found2) { - g_warning ("Found conflicting channel positions %d/%d and %d", + GST_WARNING ("Found conflicting channel positions %d/%d and %d", conf[i].pos1[0], conf[i].pos1[1], conf[i].pos2[0]); @@ -210,9 +224,13 @@ gst_audio_get_channel_positions (GstStructure * str) GstAudioChannelPosition *pos; gint channels, n; const GValue *pos_val_arr, *pos_val_entry; gboolean res; GType t; /* get number of channels, general type checkups */ @@ -286,6 +304,7 @@ GValue pos_val_arr = { 0 }, pos_val_entry = { 0}; /* get number of channels, checkups */ @@ -378,6 +397,7 @@ const GstAudioChannelPosition * pos, gint num_positions) GstCaps *caps = gst_caps_new_empty (); const GValue *chan_val; chan_val = gst_structure_get_value (str, "channels"); @@ -385,6 +405,7 @@ gst_audio_set_structure_channel_positions_list (str, pos, num_positions); } else if (G_VALUE_TYPE (chan_val) == GST_TYPE_LIST) { gint size; const GValue *sub_val; size = gst_value_list_get_size (chan_val); @@ -479,9 +500,13 @@ gst_audio_fixate_channel_positions (GstStructure * str) gint channels, n, num_unfixed = 0, i, c; const GValue *pos_val_arr, *pos_val_entry, *pos_val; gboolean res, is_stereo = TRUE; /* Index: multichannel.h RCS file: /cvs/gstreamer/gst-plugins-base/gst-libs/gst/audio/multichannel.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- multichannel.h 3 Aug 2006 14:16:06 -0000 1.4 +++ multichannel.h 3 Jun 2008 08:48:32 -0000 1.5 @@ -90,6 +90,8 @@ GstAudioChannelPosition * gst_audio_fixate_channel_positions (GstStructure *str); +gboolean gst_audio_check_channel_positions (const GstAudioChannelPosition * pos, guint channels); G_END_DECLS #endif /* __GST_AUDIO_MULTICHANNEL_H__ */ Index: audio.c RCS file: /cvs/gstreamer/gst-plugins-base/tests/check/libs/audio.c,v retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- audio.c 31 Oct 2007 12:30:28 -0000 1.5 +++ audio.c 3 Jun 2008 08:48:32 -0000 1.6 @@ -73,6 +73,12 @@ s = gst_structure_new ("audio/x-raw-int", "channels", G_TYPE_INT, 2, NULL); + /* check if the audio channel position checks work */ + fail_if (gst_audio_check_channel_positions (pos_2_mixed, 2)); + fail_unless (gst_audio_check_channel_positions (pos_2_none, 2)); + fail_unless (gst_audio_check_channel_positions (pos_2_flr, 2)); + fail_if (gst_audio_check_channel_positions (pos_2_frr, 2)); /* this should not work and issue a warning: FRONT_MONO + NONE */ _gst_check_expecting_log = TRUE; gst_audio_set_channel_positions (s, pos_2_mixed); @@ -121,8 +127,11 @@ GST_START_TEST (test_buffer_clipping_time) GstSegment s; GstBuffer *buf; GstBuffer *ret; guint8 *data; /* Clip start and end */ @@ -302,8 +311,11 @@ GST_START_TEST (test_buffer_clipping_samples) @@ -516,6 +528,7 @@ audio_suite (void) Suite *s = suite_create ("audio support library"); TCase *tc_chain = tcase_create ("general"); suite_add_tcase (s, tc_chain); @@ -533,6 +546,7 @@ int nf; Suite *s = audio_suite (); SRunner *sr = srunner_create (s); gst_check_init (&argc, &argv); |