Merge branch 'master' into 0.11

This commit is contained in:
Sebastian Dröge 2011-04-16 09:33:44 +02:00
commit 8eceb64b99
3 changed files with 88 additions and 2 deletions

View file

@ -1061,6 +1061,27 @@ gboolean
gst_video_format_is_rgb (GstVideoFormat format) gst_video_format_is_rgb (GstVideoFormat format)
{ {
switch (format) { switch (format) {
case GST_VIDEO_FORMAT_I420:
case GST_VIDEO_FORMAT_YV12:
case GST_VIDEO_FORMAT_YUY2:
case GST_VIDEO_FORMAT_YVYU:
case GST_VIDEO_FORMAT_UYVY:
case GST_VIDEO_FORMAT_AYUV:
case GST_VIDEO_FORMAT_Y41B:
case GST_VIDEO_FORMAT_Y42B:
case GST_VIDEO_FORMAT_Y444:
case GST_VIDEO_FORMAT_v210:
case GST_VIDEO_FORMAT_v216:
case GST_VIDEO_FORMAT_NV12:
case GST_VIDEO_FORMAT_NV21:
case GST_VIDEO_FORMAT_v308:
case GST_VIDEO_FORMAT_UYVP:
case GST_VIDEO_FORMAT_A420:
case GST_VIDEO_FORMAT_YUV9:
case GST_VIDEO_FORMAT_YVU9:
case GST_VIDEO_FORMAT_IYU1:
case GST_VIDEO_FORMAT_AYUV64:
return FALSE;
case GST_VIDEO_FORMAT_RGBx: case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx: case GST_VIDEO_FORMAT_BGRx:
case GST_VIDEO_FORMAT_xRGB: case GST_VIDEO_FORMAT_xRGB:
@ -1121,6 +1142,24 @@ gst_video_format_is_yuv (GstVideoFormat format)
case GST_VIDEO_FORMAT_IYU1: case GST_VIDEO_FORMAT_IYU1:
case GST_VIDEO_FORMAT_AYUV64: case GST_VIDEO_FORMAT_AYUV64:
return TRUE; return TRUE;
case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx:
case GST_VIDEO_FORMAT_xRGB:
case GST_VIDEO_FORMAT_xBGR:
case GST_VIDEO_FORMAT_RGBA:
case GST_VIDEO_FORMAT_BGRA:
case GST_VIDEO_FORMAT_ARGB:
case GST_VIDEO_FORMAT_ABGR:
case GST_VIDEO_FORMAT_RGB:
case GST_VIDEO_FORMAT_BGR:
case GST_VIDEO_FORMAT_RGB16:
case GST_VIDEO_FORMAT_BGR16:
case GST_VIDEO_FORMAT_RGB15:
case GST_VIDEO_FORMAT_BGR15:
case GST_VIDEO_FORMAT_RGB8_PALETTED:
case GST_VIDEO_FORMAT_ARGB64:
case GST_VIDEO_FORMAT_r210:
return FALSE;
default: default:
return FALSE; return FALSE;
} }
@ -1166,6 +1205,26 @@ gboolean
gst_video_format_has_alpha (GstVideoFormat format) gst_video_format_has_alpha (GstVideoFormat format)
{ {
switch (format) { switch (format) {
case GST_VIDEO_FORMAT_I420:
case GST_VIDEO_FORMAT_YV12:
case GST_VIDEO_FORMAT_YUY2:
case GST_VIDEO_FORMAT_YVYU:
case GST_VIDEO_FORMAT_UYVY:
case GST_VIDEO_FORMAT_Y41B:
case GST_VIDEO_FORMAT_Y42B:
case GST_VIDEO_FORMAT_Y444:
case GST_VIDEO_FORMAT_v210:
case GST_VIDEO_FORMAT_v216:
case GST_VIDEO_FORMAT_NV12:
case GST_VIDEO_FORMAT_NV21:
case GST_VIDEO_FORMAT_v308:
case GST_VIDEO_FORMAT_Y800:
case GST_VIDEO_FORMAT_Y16:
case GST_VIDEO_FORMAT_UYVP:
case GST_VIDEO_FORMAT_YUV9:
case GST_VIDEO_FORMAT_YVU9:
case GST_VIDEO_FORMAT_IYU1:
return FALSE;
case GST_VIDEO_FORMAT_AYUV: case GST_VIDEO_FORMAT_AYUV:
case GST_VIDEO_FORMAT_RGBA: case GST_VIDEO_FORMAT_RGBA:
case GST_VIDEO_FORMAT_BGRA: case GST_VIDEO_FORMAT_BGRA:
@ -1176,6 +1235,18 @@ gst_video_format_has_alpha (GstVideoFormat format)
case GST_VIDEO_FORMAT_ARGB64: case GST_VIDEO_FORMAT_ARGB64:
case GST_VIDEO_FORMAT_AYUV64: case GST_VIDEO_FORMAT_AYUV64:
return TRUE; return TRUE;
case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx:
case GST_VIDEO_FORMAT_xRGB:
case GST_VIDEO_FORMAT_xBGR:
case GST_VIDEO_FORMAT_RGB:
case GST_VIDEO_FORMAT_BGR:
case GST_VIDEO_FORMAT_RGB16:
case GST_VIDEO_FORMAT_BGR16:
case GST_VIDEO_FORMAT_RGB15:
case GST_VIDEO_FORMAT_BGR15:
case GST_VIDEO_FORMAT_r210:
return FALSE;
default: default:
return FALSE; return FALSE;
} }

View file

@ -3642,6 +3642,7 @@ gst_play_bin_change_state (GstElement * element, GstStateChange transition)
{ {
GstStateChangeReturn ret; GstStateChangeReturn ret;
GstPlayBin *playbin; GstPlayBin *playbin;
gboolean do_save = FALSE;
playbin = GST_PLAY_BIN (element); playbin = GST_PLAY_BIN (element);
@ -3660,6 +3661,7 @@ gst_play_bin_change_state (GstElement * element, GstStateChange transition)
} }
break; break;
case GST_STATE_CHANGE_PAUSED_TO_READY: case GST_STATE_CHANGE_PAUSED_TO_READY:
async_down:
/* FIXME unlock our waiting groups */ /* FIXME unlock our waiting groups */
GST_LOG_OBJECT (playbin, "setting shutdown flag"); GST_LOG_OBJECT (playbin, "setting shutdown flag");
g_atomic_int_set (&playbin->shutdown, 1); g_atomic_int_set (&playbin->shutdown, 1);
@ -3671,8 +3673,16 @@ gst_play_bin_change_state (GstElement * element, GstStateChange transition)
GST_PLAY_BIN_DYN_LOCK (playbin); GST_PLAY_BIN_DYN_LOCK (playbin);
GST_LOG_OBJECT (playbin, "dynamic lock taken, we can continue shutdown"); GST_LOG_OBJECT (playbin, "dynamic lock taken, we can continue shutdown");
GST_PLAY_BIN_DYN_UNLOCK (playbin); GST_PLAY_BIN_DYN_UNLOCK (playbin);
break; if (!do_save)
break;
case GST_STATE_CHANGE_READY_TO_NULL: case GST_STATE_CHANGE_READY_TO_NULL:
/* we go async to PAUSED, so if that fails, we never make it to PAUSED
* an no state change PAUSED to READY passes here,
* though it is a nice-to-have ... */
if (!g_atomic_int_get (&playbin->shutdown)) {
do_save = TRUE;
goto async_down;
}
memset (&playbin->duration, 0, sizeof (playbin->duration)); memset (&playbin->duration, 0, sizeof (playbin->duration));
/* unlock so that all groups go to NULL */ /* unlock so that all groups go to NULL */
@ -3699,6 +3709,9 @@ gst_play_bin_change_state (GstElement * element, GstStateChange transition)
{ {
guint i; guint i;
/* also do missed state change down to READY */
if (do_save)
save_current_group (playbin);
/* Deactive the groups, set the uridecodebins to NULL /* Deactive the groups, set the uridecodebins to NULL
* and unref them. * and unref them.
*/ */

View file

@ -171,7 +171,9 @@ VALGRIND_TO_FIX = \
noinst_PROGRAMS = $(check_libvisual) noinst_PROGRAMS = $(check_libvisual)
noinst_HEADERS = \ noinst_HEADERS = \
libs/struct_*.h libs/struct_i386.h \
libs/struct_i386_osx.h \
libs/struct_x86_64.h
AM_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \ AM_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
$(GST_CFLAGS) $(GST_CHECK_CFLAGS) \ $(GST_CFLAGS) $(GST_CHECK_CFLAGS) \