frameCount);
readbytes = readframes * (src->channels * src->width / 8);
if (readbytes == 0) {
- gst_element_signal_eos (GST_ELEMENT (src));
- return NULL;
+ gst_element_set_eos (GST_ELEMENT (src));
+ return GST_BUFFER (gst_event_new (GST_EVENT_EOS));
}
GST_BUFFER_SIZE (buf) = readbytes;
sdlvideosink = GST_SDLVIDEOSINK (gst_pad_get_parent (pad));
- if (!GST_BUFFER_FLAG_IS_SET(buf, GST_BUFFER_FLUSH)) {
- GST_DEBUG (0,"videosink: clock wait: %llu\n", GST_BUFFER_TIMESTAMP(buf));
+ GST_DEBUG (0,"videosink: clock wait: %llu\n", GST_BUFFER_TIMESTAMP(buf));
- jitter = gst_clock_current_diff(sdlvideosink->clock, GST_BUFFER_TIMESTAMP (buf));
+ jitter = gst_clock_current_diff(sdlvideosink->clock, GST_BUFFER_TIMESTAMP (buf));
- if (jitter > 500000 || jitter < -500000)
- {
- GST_DEBUG (0, "jitter: %lld\n", jitter);
- gst_clock_set (sdlvideosink->clock, GST_BUFFER_TIMESTAMP (buf));
- }
- else {
- gst_clock_wait(sdlvideosink->clock, GST_BUFFER_TIMESTAMP(buf), GST_OBJECT(sdlvideosink));
- }
+ if (jitter > 500000 || jitter < -500000)
+ {
+ GST_DEBUG (0, "jitter: %lld\n", jitter);
+ gst_clock_set (sdlvideosink->clock, GST_BUFFER_TIMESTAMP (buf));
+ }
+ else {
+ gst_clock_wait(sdlvideosink->clock, GST_BUFFER_TIMESTAMP(buf), GST_OBJECT(sdlvideosink));
}
/* Lock SDL/yuv-overlay */
GST_BUFFER_DATA(flxdec->frame),
GST_BUFFER_DATA(flxdec->out));
- //GST_BUFFER_FLAG_SET(flxdec->out, GST_BUFFER_FLUSH);
gst_pad_push(flxdec->srcpad, flxdec->out);
break;
time_stamp = GST_BUFFER_TIMESTAMP(buf);
-
- if (GST_BUFFER_FLAG_IS_SET(buf, GST_BUFFER_FLUSH)) {
+ /* FIXME, handle events here */
+ /*
gst_mp1videoparse_flush(mp1videoparse);
- }
+ */
+
if (mp1videoparse->partialbuf) {
offset = GST_BUFFER_SIZE(mp1videoparse->partialbuf);
GST_BUFFER_TIMESTAMP(outbuf) = mp1videoparse->last_pts;
if (mp1videoparse->in_flush) {
- GST_BUFFER_FLAG_SET(outbuf, GST_BUFFER_FLUSH);
+ /* FIXME, send a flush event here */
mp1videoparse->in_flush = FALSE;
}
last_ts = GST_BUFFER_TIMESTAMP(buf);
- if (GST_BUFFER_FLAG_IS_SET(buf, GST_BUFFER_FLUSH)) {
+ /* FIXME, do flush */
+ /*
if (mp3parse->partialbuf) {
gst_buffer_unref(mp3parse->partialbuf);
mp3parse->partialbuf = NULL;
}
mp3parse->in_flush = TRUE;
- }
+ */
// if we have something left from the previous frame
if (mp3parse->partialbuf) {
if (mp3parse->skip == 0) {
GST_DEBUG (0,"mp3parse: pushing buffer of %d bytes\n",GST_BUFFER_SIZE(outbuf));
if (mp3parse->in_flush) {
- GST_BUFFER_FLAG_SET(outbuf, GST_BUFFER_FLUSH);
+ /* FIXME do some sort of flush event */
mp3parse->in_flush = FALSE;
}
- else {
- GST_BUFFER_FLAG_UNSET(outbuf, GST_BUFFER_FLUSH);
- }
GST_BUFFER_TIMESTAMP(outbuf) = last_ts;
gst_pad_push(mp3parse->srcpad,outbuf);
}
while (GST_IS_EVENT(in)) {
switch (GST_EVENT_TYPE(in)) {
case GST_EVENT_EOS:
- gst_element_set_state((GstElement*)filter, GST_STATE_PAUSED);
+ gst_element_set_eos((GstElement*)filter);
gst_pad_push(filter->srcpad, in);
return;
default:
goto read_sector;
}
-/* if (readbytes == 0) { */
-/* gst_src_signal_eos(GST_SRC(vcdsrc)); */
-/* gst_element_set_state(GST_ELEMENT(vcdsrc),~GST_STATE_PLAYING); */
-/* gst_element_set_state(GST_ELEMENT(vcdsrc),~GST_STATE_RUNNING); */
-/* return; */
-/* } */
GST_BUFFER_OFFSET(buf) = vcdsrc->curoffset;
GST_BUFFER_SIZE(buf) = vcdsrc->bytes_per_read;