mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-18 07:47:17 +00:00
Merge branch 'master' into 0.11
This commit is contained in:
commit
d96a8c1aa7
5 changed files with 226 additions and 3 deletions
|
@ -843,6 +843,10 @@ gst_base_audio_sink_drain (GstBaseAudioSink * sink)
|
|||
if (!sink->ringbuffer->spec.rate)
|
||||
return TRUE;
|
||||
|
||||
/* if PLAYING is interrupted,
|
||||
* arrange to have clock running when going to PLAYING again */
|
||||
g_atomic_int_set (&sink->abidata.ABI.eos_rendering, 1);
|
||||
|
||||
/* need to start playback before we can drain, but only when
|
||||
* we have successfully negotiated a format and thus acquired the
|
||||
* ringbuffer. */
|
||||
|
@ -860,6 +864,7 @@ gst_base_audio_sink_drain (GstBaseAudioSink * sink)
|
|||
|
||||
GST_DEBUG_OBJECT (sink, "drained audio");
|
||||
}
|
||||
g_atomic_int_set (&sink->abidata.ABI.eos_rendering, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -1921,7 +1926,8 @@ gst_base_audio_sink_change_state (GstElement * element,
|
|||
GST_OBJECT_UNLOCK (sink);
|
||||
|
||||
gst_ring_buffer_may_start (sink->ringbuffer, TRUE);
|
||||
if (GST_BASE_SINK_CAST (sink)->pad_mode == GST_ACTIVATE_PULL || eos) {
|
||||
if (GST_BASE_SINK_CAST (sink)->pad_mode == GST_ACTIVATE_PULL ||
|
||||
g_atomic_int_get (&sink->abidata.ABI.eos_rendering) || eos) {
|
||||
/* we always start the ringbuffer in pull mode immediatly */
|
||||
/* sync rendering on eos needs running clock,
|
||||
* and others need running clock when finished rendering eos */
|
||||
|
|
|
@ -127,7 +127,14 @@ struct _GstBaseAudioSink {
|
|||
/*< private >*/
|
||||
GstBaseAudioSinkPrivate *priv;
|
||||
|
||||
gpointer _gst_reserved[GST_PADDING - 1];
|
||||
union {
|
||||
struct {
|
||||
/*< protected >*/
|
||||
/* with g_atomic_; currently rendering eos */
|
||||
gboolean eos_rendering;
|
||||
} ABI;
|
||||
gpointer _gst_reserved[GST_PADDING - 1];
|
||||
} abidata;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -80,13 +80,23 @@
|
|||
*/
|
||||
|
||||
#ifdef HAVE_CPU_I386
|
||||
#include "struct_i386.h"
|
||||
# ifdef __APPLE__
|
||||
# include "struct_i386_osx.h"
|
||||
# define HAVE_ABI_SIZES TRUE
|
||||
# else
|
||||
# include "struct_i386.h"
|
||||
# define HAVE_ABI_SIZES TRUE
|
||||
# endif
|
||||
#else
|
||||
#ifdef HAVE_CPU_X86_64
|
||||
#include "struct_x86_64.h"
|
||||
#define HAVE_ABI_SIZES TRUE
|
||||
#else
|
||||
/* in case someone wants to generate a new arch */
|
||||
#include "struct_i386.h"
|
||||
#define HAVE_ABI_SIZES FALSE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
GST_START_TEST (test_ABI)
|
||||
{
|
||||
|
|
100
tests/check/libs/struct_i386_osx.h
Normal file
100
tests/check/libs/struct_i386_osx.h
Normal file
|
@ -0,0 +1,100 @@
|
|||
|
||||
GstCheckABIStruct list[] = {
|
||||
{"GstAppBufferClass", sizeof (GstAppBufferClass), 16},
|
||||
{"GstAppBuffer", sizeof (GstAppBuffer), 88},
|
||||
{"GstAppSinkCallbacks", sizeof (GstAppSinkCallbacks), 28},
|
||||
{"GstAppSinkClass", sizeof (GstAppSinkClass), 404},
|
||||
{"GstAppSink", sizeof (GstAppSink), 404},
|
||||
{"GstAppSrcCallbacks", sizeof (GstAppSrcCallbacks), 28},
|
||||
{"GstAppSrcClass", sizeof (GstAppSrcClass), 412},
|
||||
{"GstAppSrc", sizeof (GstAppSrc), 396},
|
||||
{"GstAudioClockClass", sizeof (GstAudioClockClass), 192},
|
||||
{"GstAudioClock", sizeof (GstAudioClock), 228},
|
||||
{"GstAudioFilterClass", sizeof (GstAudioFilterClass), 396},
|
||||
{"GstAudioFilter", sizeof (GstAudioFilter), 480},
|
||||
{"GstAudioSinkClass", sizeof (GstAudioSinkClass), 432},
|
||||
{"GstAudioSink", sizeof (GstAudioSink), 456},
|
||||
{"GstAudioSrcClass", sizeof (GstAudioSrcClass), 460},
|
||||
{"GstAudioSrc", sizeof (GstAudioSrc), 460},
|
||||
{"GstBaseAudioSinkClass", sizeof (GstBaseAudioSinkClass), 388},
|
||||
{"GstBaseAudioSink", sizeof (GstBaseAudioSink), 436},
|
||||
{"GstBaseAudioSrcClass", sizeof (GstBaseAudioSrcClass), 416},
|
||||
{"GstBaseAudioSrc", sizeof (GstBaseAudioSrc), 440},
|
||||
{"GstBaseRTPAudioPayloadClass", sizeof (GstBaseRTPAudioPayloadClass), 288},
|
||||
{"GstBaseRTPAudioPayload", sizeof (GstBaseRTPAudioPayload), 364},
|
||||
{"GstBaseRTPDepayloadClass", sizeof (GstBaseRTPDepayloadClass), 280},
|
||||
{"GstBaseRTPDepayload", sizeof (GstBaseRTPDepayload), 324},
|
||||
{"GstBaseRTPPayloadClass", sizeof (GstBaseRTPPayloadClass), 272},
|
||||
{"GstBaseRTPPayload", sizeof (GstBaseRTPPayload), 324},
|
||||
{"GstCddaBaseSrcClass", sizeof (GstCddaBaseSrcClass), 432},
|
||||
{"GstCddaBaseSrc", sizeof (GstCddaBaseSrc), 508},
|
||||
{"GstCddaBaseSrcTrack", sizeof (GstCddaBaseSrcTrack), 36},
|
||||
{"GstColorBalanceChannelClass", sizeof (GstColorBalanceChannelClass), 88},
|
||||
{"GstColorBalanceChannel", sizeof (GstColorBalanceChannel), 24},
|
||||
{"GstColorBalanceClass", sizeof (GstColorBalanceClass), 44},
|
||||
{"GstDiscovererClass", sizeof (GstDiscovererClass), 96},
|
||||
{"GstDiscoverer", sizeof (GstDiscoverer), 32},
|
||||
{"GstFFTF32Complex", sizeof (GstFFTF32Complex), 8},
|
||||
{"GstFFTF32", sizeof (GstFFTF32), 28},
|
||||
{"GstFFTF64Complex", sizeof (GstFFTF64Complex), 16},
|
||||
{"GstFFTF64", sizeof (GstFFTF64), 28},
|
||||
{"GstFFTS16Complex", sizeof (GstFFTS16Complex), 4},
|
||||
{"GstFFTS16", sizeof (GstFFTS16), 28},
|
||||
{"GstFFTS32Complex", sizeof (GstFFTS32Complex), 8},
|
||||
{"GstFFTS32", sizeof (GstFFTS32), 28},
|
||||
{"GstMixerClass", sizeof (GstMixerClass), 72},
|
||||
{"GstMixerOptionsClass", sizeof (GstMixerOptionsClass), 100},
|
||||
{"GstMixerOptions", sizeof (GstMixerOptions), 52},
|
||||
{"GstMixerTrackClass", sizeof (GstMixerTrackClass), 84},
|
||||
{"GstMixerTrack", sizeof (GstMixerTrack), 32},
|
||||
{"GstNavigationInterface", sizeof (GstNavigationInterface), 28},
|
||||
{"GstNetAddress", sizeof (GstNetAddress), 40},
|
||||
{"GstNetBufferClass", sizeof (GstNetBufferClass), 32},
|
||||
{"GstNetBuffer", sizeof (GstNetBuffer), 176},
|
||||
{"GstPropertyProbeInterface", sizeof (GstPropertyProbeInterface), 44},
|
||||
{"gst_riff_acid", sizeof (gst_riff_acid), 24},
|
||||
{"gst_riff_dmlh", sizeof (gst_riff_dmlh), 4},
|
||||
{"gst_riff_index_entry", sizeof (gst_riff_index_entry), 16},
|
||||
{"gst_riff_strf_auds", sizeof (gst_riff_strf_auds), 16},
|
||||
{"gst_riff_strf_iavs", sizeof (gst_riff_strf_iavs), 32},
|
||||
{"gst_riff_strf_vids", sizeof (gst_riff_strf_vids), 40},
|
||||
{"gst_riff_strh", sizeof (gst_riff_strh), 48},
|
||||
{"GstRingBufferClass", sizeof (GstRingBufferClass), 172},
|
||||
{"GstRingBuffer", sizeof (GstRingBuffer), 220},
|
||||
{"GstRingBufferSpec", sizeof (GstRingBufferSpec), 112},
|
||||
{"GstRTCPPacket", sizeof (GstRTCPPacket), 36},
|
||||
{"GstRTPPayloadInfo", sizeof (GstRTPPayloadInfo), 24},
|
||||
{"GstRTSPExtensionInterface", sizeof (GstRTSPExtensionInterface), 60},
|
||||
{"GstRTSPMessage", sizeof (GstRTSPMessage), 28},
|
||||
{"GstRTSPRange", sizeof (GstRTSPRange), 8},
|
||||
{"GstRTSPTime", sizeof (GstRTSPTime), 12},
|
||||
{"GstRTSPTimeRange", sizeof (GstRTSPTimeRange), 28},
|
||||
{"GstRTSPTransport", sizeof (GstRTSPTransport), 76},
|
||||
{"GstRTSPUrl", sizeof (GstRTSPUrl), 32},
|
||||
{"GstRTSPWatchFuncs", sizeof (GstRTSPWatchFuncs), 40},
|
||||
{"GstSDPAttribute", sizeof (GstSDPAttribute), 8},
|
||||
{"GstSDPBandwidth", sizeof (GstSDPBandwidth), 8},
|
||||
{"GstSDPConnection", sizeof (GstSDPConnection), 20},
|
||||
{"GstSDPKey", sizeof (GstSDPKey), 8},
|
||||
{"GstSDPMedia", sizeof (GstSDPMedia), 44},
|
||||
{"GstSDPMessage", sizeof (GstSDPMessage), 96},
|
||||
{"GstSDPOrigin", sizeof (GstSDPOrigin), 24},
|
||||
{"GstSDPTime", sizeof (GstSDPTime), 12},
|
||||
{"GstSDPZone", sizeof (GstSDPZone), 8},
|
||||
{"GstStreamVolumeInterface", sizeof (GstStreamVolumeInterface), 24},
|
||||
{"GstTagDemuxClass", sizeof (GstTagDemuxClass), 284},
|
||||
{"GstTagDemux", sizeof (GstTagDemux), 148},
|
||||
{"GstTunerChannelClass", sizeof (GstTunerChannelClass), 92},
|
||||
{"GstTunerChannel", sizeof (GstTunerChannel), 40},
|
||||
{"GstTunerClass", sizeof (GstTunerClass), 76},
|
||||
{"GstTunerNormClass", sizeof (GstTunerNormClass), 84},
|
||||
{"GstTunerNorm", sizeof (GstTunerNorm), 36},
|
||||
{"GstVideoFilterClass", sizeof (GstVideoFilterClass), 376},
|
||||
{"GstVideoFilter", sizeof (GstVideoFilter), 356},
|
||||
{"GstVideoOrientationInterface", sizeof (GstVideoOrientationInterface), 56},
|
||||
{"GstVideoRectangle", sizeof (GstVideoRectangle), 16},
|
||||
{"GstVideoSinkClass", sizeof (GstVideoSinkClass), 384},
|
||||
{"GstVideoSink", sizeof (GstVideoSink), 408},
|
||||
{"GstXOverlayClass", sizeof (GstXOverlayClass), 32},
|
||||
{NULL, 0, 0}
|
||||
};
|
100
tests/check/libs/struct_x86_64.h
Normal file
100
tests/check/libs/struct_x86_64.h
Normal file
|
@ -0,0 +1,100 @@
|
|||
|
||||
GstCheckABIStruct list[] = {
|
||||
{"GstAppBufferClass", sizeof (GstAppBufferClass), 32},
|
||||
{"GstAppBuffer", sizeof (GstAppBuffer), 136},
|
||||
{"GstAppSinkCallbacks", sizeof (GstAppSinkCallbacks), 56},
|
||||
{"GstAppSinkClass", sizeof (GstAppSinkClass), 800},
|
||||
{"GstAppSink", sizeof (GstAppSink), 640},
|
||||
{"GstAppSrcCallbacks", sizeof (GstAppSrcCallbacks), 56},
|
||||
{"GstAppSrcClass", sizeof (GstAppSrcClass), 816},
|
||||
{"GstAppSrc", sizeof (GstAppSrc), 640},
|
||||
{"GstAudioClockClass", sizeof (GstAudioClockClass), 384},
|
||||
{"GstAudioClock", sizeof (GstAudioClock), 344},
|
||||
{"GstAudioFilterClass", sizeof (GstAudioFilterClass), 784},
|
||||
{"GstAudioFilter", sizeof (GstAudioFilter), 744},
|
||||
{"GstAudioSinkClass", sizeof (GstAudioSinkClass), 856},
|
||||
{"GstAudioSink", sizeof (GstAudioSink), 720},
|
||||
{"GstAudioSrcClass", sizeof (GstAudioSrcClass), 912},
|
||||
{"GstAudioSrc", sizeof (GstAudioSrc), 744},
|
||||
{"GstBaseAudioSinkClass", sizeof (GstBaseAudioSinkClass), 768},
|
||||
{"GstBaseAudioSink", sizeof (GstBaseAudioSink), 680},
|
||||
{"GstBaseAudioSrcClass", sizeof (GstBaseAudioSrcClass), 824},
|
||||
{"GstBaseAudioSrc", sizeof (GstBaseAudioSrc), 704},
|
||||
{"GstBaseRTPAudioPayloadClass", sizeof (GstBaseRTPAudioPayloadClass), 568},
|
||||
{"GstBaseRTPAudioPayload", sizeof (GstBaseRTPAudioPayload), 544},
|
||||
{"GstBaseRTPDepayloadClass", sizeof (GstBaseRTPDepayloadClass), 552},
|
||||
{"GstBaseRTPDepayload", sizeof (GstBaseRTPDepayload), 488},
|
||||
{"GstBaseRTPPayloadClass", sizeof (GstBaseRTPPayloadClass), 536},
|
||||
{"GstBaseRTPPayload", sizeof (GstBaseRTPPayload), 480},
|
||||
{"GstCddaBaseSrcClass", sizeof (GstCddaBaseSrcClass), 856},
|
||||
{"GstCddaBaseSrc", sizeof (GstCddaBaseSrc), 792},
|
||||
{"GstCddaBaseSrcTrack", sizeof (GstCddaBaseSrcTrack), 48},
|
||||
{"GstColorBalanceChannelClass", sizeof (GstColorBalanceChannelClass), 176},
|
||||
{"GstColorBalanceChannel", sizeof (GstColorBalanceChannel), 40},
|
||||
{"GstColorBalanceClass", sizeof (GstColorBalanceClass), 88},
|
||||
{"GstDiscovererClass", sizeof (GstDiscovererClass), 192},
|
||||
{"GstDiscoverer", sizeof (GstDiscoverer), 64},
|
||||
{"GstFFTF32Complex", sizeof (GstFFTF32Complex), 8},
|
||||
{"GstFFTF32", sizeof (GstFFTF32), 48},
|
||||
{"GstFFTF64Complex", sizeof (GstFFTF64Complex), 16},
|
||||
{"GstFFTF64", sizeof (GstFFTF64), 48},
|
||||
{"GstFFTS16Complex", sizeof (GstFFTS16Complex), 4},
|
||||
{"GstFFTS16", sizeof (GstFFTS16), 48},
|
||||
{"GstFFTS32Complex", sizeof (GstFFTS32Complex), 8},
|
||||
{"GstFFTS32", sizeof (GstFFTS32), 48},
|
||||
{"GstMixerClass", sizeof (GstMixerClass), 144},
|
||||
{"GstMixerOptionsClass", sizeof (GstMixerOptionsClass), 200},
|
||||
{"GstMixerOptions", sizeof (GstMixerOptions), 88},
|
||||
{"GstMixerTrackClass", sizeof (GstMixerTrackClass), 168},
|
||||
{"GstMixerTrack", sizeof (GstMixerTrack), 48},
|
||||
{"GstNavigationInterface", sizeof (GstNavigationInterface), 56},
|
||||
{"GstNetAddress", sizeof (GstNetAddress), 56},
|
||||
{"GstNetBufferClass", sizeof (GstNetBufferClass), 64},
|
||||
{"GstNetBuffer", sizeof (GstNetBuffer), 264},
|
||||
{"GstPropertyProbeInterface", sizeof (GstPropertyProbeInterface), 88},
|
||||
{"gst_riff_acid", sizeof (gst_riff_acid), 24},
|
||||
{"gst_riff_dmlh", sizeof (gst_riff_dmlh), 4},
|
||||
{"gst_riff_index_entry", sizeof (gst_riff_index_entry), 16},
|
||||
{"gst_riff_strf_auds", sizeof (gst_riff_strf_auds), 16},
|
||||
{"gst_riff_strf_iavs", sizeof (gst_riff_strf_iavs), 32},
|
||||
{"gst_riff_strf_vids", sizeof (gst_riff_strf_vids), 40},
|
||||
{"gst_riff_strh", sizeof (gst_riff_strh), 48},
|
||||
{"GstRingBufferClass", sizeof (GstRingBufferClass), 344},
|
||||
{"GstRingBuffer", sizeof (GstRingBuffer), 328},
|
||||
{"GstRingBufferSpec", sizeof (GstRingBufferSpec), 136},
|
||||
{"GstRTCPPacket", sizeof (GstRTCPPacket), 40},
|
||||
{"GstRTPPayloadInfo", sizeof (GstRTPPayloadInfo), 48},
|
||||
{"GstRTSPExtensionInterface", sizeof (GstRTSPExtensionInterface), 120},
|
||||
{"GstRTSPMessage", sizeof (GstRTSPMessage), 56},
|
||||
{"GstRTSPRange", sizeof (GstRTSPRange), 8},
|
||||
{"GstRTSPTime", sizeof (GstRTSPTime), 16},
|
||||
{"GstRTSPTimeRange", sizeof (GstRTSPTimeRange), 40},
|
||||
{"GstRTSPTransport", sizeof (GstRTSPTransport), 88},
|
||||
{"GstRTSPUrl", sizeof (GstRTSPUrl), 56},
|
||||
{"GstRTSPWatchFuncs", sizeof (GstRTSPWatchFuncs), 80},
|
||||
{"GstSDPAttribute", sizeof (GstSDPAttribute), 16},
|
||||
{"GstSDPBandwidth", sizeof (GstSDPBandwidth), 16},
|
||||
{"GstSDPConnection", sizeof (GstSDPConnection), 32},
|
||||
{"GstSDPKey", sizeof (GstSDPKey), 16},
|
||||
{"GstSDPMedia", sizeof (GstSDPMedia), 80},
|
||||
{"GstSDPMessage", sizeof (GstSDPMessage), 184},
|
||||
{"GstSDPOrigin", sizeof (GstSDPOrigin), 48},
|
||||
{"GstSDPTime", sizeof (GstSDPTime), 24},
|
||||
{"GstSDPZone", sizeof (GstSDPZone), 16},
|
||||
{"GstStreamVolumeInterface", sizeof (GstStreamVolumeInterface), 48},
|
||||
{"GstTagDemuxClass", sizeof (GstTagDemuxClass), 552},
|
||||
{"GstTagDemux", sizeof (GstTagDemux), 272},
|
||||
{"GstTunerChannelClass", sizeof (GstTunerChannelClass), 184},
|
||||
{"GstTunerChannel", sizeof (GstTunerChannel), 64},
|
||||
{"GstTunerClass", sizeof (GstTunerClass), 152},
|
||||
{"GstTunerNormClass", sizeof (GstTunerNormClass), 168},
|
||||
{"GstTunerNorm", sizeof (GstTunerNorm), 56},
|
||||
{"GstVideoFilterClass", sizeof (GstVideoFilterClass), 744},
|
||||
{"GstVideoFilter", sizeof (GstVideoFilter), 584},
|
||||
{"GstVideoOrientationInterface", sizeof (GstVideoOrientationInterface), 112},
|
||||
{"GstVideoRectangle", sizeof (GstVideoRectangle), 16},
|
||||
{"GstVideoSinkClass", sizeof (GstVideoSinkClass), 760},
|
||||
{"GstVideoSink", sizeof (GstVideoSink), 640},
|
||||
{"GstXOverlayClass", sizeof (GstXOverlayClass), 64},
|
||||
{NULL, 0, 0}
|
||||
};
|
Loading…
Reference in a new issue