2004-05-20 Thomas Vander Stichele <thomas at apestaart dot org>
+ * ext/vorbis/vorbisenc.c: (vorbis_granule_time_copy),
+ (gst_vorbisenc_buffer_from_packet), (gst_vorbisenc_push_buffer),
+ (gst_vorbisenc_push_packet), (gst_vorbisenc_chain):
+ split up push_packet into two functions
+
+2004-05-20 Thomas Vander Stichele <thomas at apestaart dot org>
+
* gst/tcp/.cvsignore:
ignore enums
* gst/tcp/Makefile.am:
return TRUE;
}
-static void
-gst_vorbisenc_push_packet (VorbisEnc * vorbisenc, ogg_packet * packet)
+/* prepare a buffer for transmission by passing data through libvorbis */
+static GstBuffer *
+gst_vorbisenc_buffer_from_packet (VorbisEnc * vorbisenc, ogg_packet * packet)
{
GstBuffer *outbuf;
vorbis_granule_time_copy (&vorbisenc->vd,
packet->granulepos) * GST_SECOND;
- GST_DEBUG ("vorbisenc: encoded buffer of %d bytes", GST_BUFFER_SIZE (outbuf));
+ GST_DEBUG ("encoded buffer of %d bytes", GST_BUFFER_SIZE (outbuf));
+ return outbuf;
+}
- vorbisenc->bytes_out += GST_BUFFER_SIZE (outbuf);
+/* push out the buffer and do internal bookkeeping */
+static void
+gst_vorbisenc_push_buffer (VorbisEnc * vorbisenc, GstBuffer * buffer)
+{
+ vorbisenc->bytes_out += GST_BUFFER_SIZE (buffer);
if (GST_PAD_IS_USABLE (vorbisenc->srcpad)) {
- gst_pad_push (vorbisenc->srcpad, GST_DATA (outbuf));
+ gst_pad_push (vorbisenc->srcpad, GST_DATA (buffer));
} else {
- gst_buffer_unref (outbuf);
+ gst_buffer_unref (buffer);
}
}
static void
+gst_vorbisenc_push_packet (VorbisEnc * vorbisenc, ogg_packet * packet)
+{
+ GstBuffer *outbuf;
+
+ outbuf = gst_vorbisenc_buffer_from_packet (vorbisenc, packet);
+ gst_vorbisenc_push_buffer (vorbisenc, outbuf);
+}
+
+static void
gst_vorbisenc_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
ogg_packet header;
ogg_packet header_comm;
ogg_packet header_code;
+ GstBuffer *buf;
gst_vorbisenc_set_metadata (vorbisenc);
vorbis_analysis_headerout (&vorbisenc->vd, &vorbisenc->vc, &header,
&header_comm, &header_code);
- gst_vorbisenc_push_packet (vorbisenc, &header);
- gst_vorbisenc_push_packet (vorbisenc, &header_comm);
- gst_vorbisenc_push_packet (vorbisenc, &header_code);
+ buf = gst_vorbisenc_buffer_from_packet (vorbisenc, &header);
+ gst_vorbisenc_push_buffer (vorbisenc, buf);
+ buf = gst_vorbisenc_buffer_from_packet (vorbisenc, &header_comm);
+ gst_vorbisenc_push_buffer (vorbisenc, buf);
+ buf = gst_vorbisenc_buffer_from_packet (vorbisenc, &header_code);
+ gst_vorbisenc_push_buffer (vorbisenc, buf);
vorbisenc->header_sent = TRUE;
}