2007-03-22 Sebastian Dröge <slomo@circular-chaos.org>
+ * ext/wavpack/gstwavpackenc.c: (gst_wavpack_enc_class_init),
+ (gst_wavpack_enc_init), (gst_wavpack_enc_chain),
+ (gst_wavpack_enc_rewrite_first_block):
+ * ext/wavpack/gstwavpackenc.h:
+ Put the write helpers into the GstWavpackEnc struct directly and not
+ as a pointer to save two small, but useless mallocs. This also makes
+ it possible to drop the finalize method.
+ * ext/wavpack/gstwavpackparse.c: (gst_wavpack_parse_push_buffer):
+ For consistency reasons also set GST_BUFFER_OFFSET_END on the outgoing
+ buffers the same way wavpackenc does it.
+
+2007-03-22 Sebastian Dröge <slomo@circular-chaos.org>
+
* ext/wavpack/gstwavpackdec.c: (gst_wavpack_dec_chain):
Don't use gst_pad_alloc_buffer() as we might clip the buffer later and
BaseTransform-based elements will likely break because of wrong
static gboolean gst_wavpack_enc_sink_event (GstPad * pad, GstEvent * event);
static GstStateChangeReturn gst_wavpack_enc_change_state (GstElement * element,
GstStateChange transition);
-static void gst_wavpack_enc_finalize (GObject * object);
static void gst_wavpack_enc_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_wavpack_enc_get_property (GObject * object, guint prop_id,
/* set state change handler */
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_wavpack_enc_change_state);
- gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_wavpack_enc_finalize);
/* set property handlers */
gobject_class->set_property =
enc->md5_context = NULL;
gst_wavpack_enc_reset (enc);
- enc->wv_id = g_new0 (GstWavpackEncWriteID, 1);
- enc->wv_id->correction = FALSE;
- enc->wv_id->wavpack_enc = enc;
- enc->wvc_id = g_new0 (GstWavpackEncWriteID, 1);
- enc->wvc_id->correction = TRUE;
- enc->wvc_id->wavpack_enc = enc;
+ enc->wv_id.correction = FALSE;
+ enc->wv_id.wavpack_enc = enc;
+ enc->wvc_id.correction = TRUE;
+ enc->wvc_id.wavpack_enc = enc;
/* set default values of params */
enc->mode = GST_WAVPACK_ENC_MODE_DEFAULT;
enc->joint_stereo_mode = GST_WAVPACK_JS_MODE_AUTO;
}
-static void
-gst_wavpack_enc_finalize (GObject * object)
-{
- GstWavpackEnc *enc = GST_WAVPACK_ENC (object);
-
- /* free the blockout helpers */
- g_free (enc->wv_id);
- g_free (enc->wvc_id);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
static gboolean
gst_wavpack_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
{
if (!enc->wp_context) {
/* create raw context */
enc->wp_context =
- WavpackOpenFileOutput (gst_wavpack_enc_push_block, enc->wv_id,
- (enc->correction_mode > 0) ? enc->wvc_id : NULL);
+ WavpackOpenFileOutput (gst_wavpack_enc_push_block, &enc->wv_id,
+ (enc->correction_mode > 0) ? &enc->wvc_id : NULL);
if (!enc->wp_context) {
GST_ELEMENT_ERROR (enc, LIBRARY, INIT, (NULL),
("error creating Wavpack context"));
if (ret) {
/* try to rewrite the first block */
GST_DEBUG_OBJECT (enc, "rewriting first block ...");
- ret = gst_wavpack_enc_push_block (enc->wv_id,
+ ret = gst_wavpack_enc_push_block (&enc->wv_id,
enc->first_block, enc->first_block_size);
} else {
GST_WARNING_OBJECT (enc, "rewriting of first block failed. "