fix gstarts. the sound is krappy, but it does make sound -- remember to do osssink sync=false

Original commit message from CVS:
fix gstarts. the sound is krappy, but it does make sound -- remember to do osssink
sync=false
This commit is contained in:
Andy Wingo 2002-06-04 22:22:25 +00:00
parent 986a3eb8c6
commit 79453e9df4
2 changed files with 20 additions and 3 deletions

View file

@ -44,13 +44,13 @@ GST_PAD_TEMPLATE_FACTORY ( sink_temp,
GST_CAPS_NEW (
"arts_sample",
"audio/raw",
"format", GST_PROPS_INT ("int"),
"format", GST_PROPS_STRING ("int"),
"law", GST_PROPS_INT (0),
"depth", GST_PROPS_INT (16),
"width", GST_PROPS_INT (16),
"signed", GST_PROPS_BOOLEAN (TRUE),
"channels", GST_PROPS_INT (2),
"endianness", GST_PROPS_INT (G_LITTLE_ENDIAN)
"endianness", GST_PROPS_INT (G_BYTE_ORDER)
)
)
@ -61,7 +61,7 @@ GST_PAD_TEMPLATE_FACTORY ( src_temp,
GST_CAPS_NEW (
"arts_sample",
"audio/raw",
"format", GST_PROPS_INT ("int"),
"format", GST_PROPS_STRING ("int"),
"law", GST_PROPS_INT (0),
"depth", GST_PROPS_INT (16),
"width", GST_PROPS_INT (16),

View file

@ -17,6 +17,7 @@ class ArtsStereoSink_impl : virtual public ArtsStereoSink_skel,
{
GstPad *sinkpad;
GstPad *srcpad;
unsigned long remainingsamples;
GstBuffer *inbuf;
unsigned char *dataptr;
@ -46,6 +47,17 @@ public:
// start by pulling a buffer from GStreamer
inbuf = gst_pad_pull (sinkpad);
while (GST_IS_EVENT (inbuf)) {
switch (GST_EVENT_TYPE (inbuf)) {
case GST_EVENT_EOS:
gst_element_set_eos (GST_PAD_PARENT (sinkpad));
default:
break;
}
gst_pad_event_default (srcpad, (GstEvent*)inbuf);
inbuf = gst_pad_pull (sinkpad);
}
dataptr = GST_BUFFER_DATA(inbuf);
remainingsamples = GST_BUFFER_SIZE(inbuf) / 4;
//fprintf(stderr,"got a buffer with %d samples\n",remainingsamples);
@ -67,6 +79,10 @@ public:
{
sinkpad = pad;
}
void setSrcPad(GstPad *pad)
{
srcpad = pad;
}
};
@ -114,6 +130,7 @@ public:
ArtsStereoSink_impl *sink_impl = new ArtsStereoSink_impl();
ArtsStereoSrc_impl *source_impl = new ArtsStereoSrc_impl();
sink_impl->setPad(sinkpad);
sink_impl->setSrcPad(sourcepad);
source_impl->setPad(sourcepad);
sink = ArtsStereoSink::_from_base(sink_impl);
source = ArtsStereoSrc::_from_base(source_impl);