diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2005-01-09 20:01:59 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2005-01-09 20:01:59 +0000 |
commit | 3fc57b4be5321aede77c15800ba332a8a0c2a6cc (patch) | |
tree | 7d10793691dac98bf4165fe0d7dfdf0e6a98910f | |
parent | b7e606f7a0c1387184553f937d6c2786102b55c6 (diff) |
Update for API change in flac-1.1.1. Update requirement in configure.ac. Fixes #162974.
Original commit message from CVS:
* configure.ac:
* ext/flac/gstflacenc.c: (gst_flacenc_init),
(gst_flacenc_seek_callback), (gst_flacenc_write_callback),
(gst_flacenc_tell_callback), (gst_flacenc_chain),
(gst_flacenc_change_state):
* ext/flac/gstflacenc.h:
Update for API change in flac-1.1.1. Update requirement in
configure.ac. Fixes #162974.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | ext/flac/gstflacenc.c | 20 | ||||
-rw-r--r-- | ext/flac/gstflacenc.h | 1 |
4 files changed, 38 insertions, 1 deletions
@@ -1,5 +1,16 @@ 2005-01-09 Ronald S. Bultje <rbultje@ronald.bitfreak.net> + * configure.ac: + * ext/flac/gstflacenc.c: (gst_flacenc_init), + (gst_flacenc_seek_callback), (gst_flacenc_write_callback), + (gst_flacenc_tell_callback), (gst_flacenc_chain), + (gst_flacenc_change_state): + * ext/flac/gstflacenc.h: + Update for API change in flac-1.1.1. Update requirement in + configure.ac. Fixes #162974. + +2005-01-09 Ronald S. Bultje <rbultje@ronald.bitfreak.net> + * gst/playback/gstplaybasebin.c: (group_destroy): Remove hack to get rid of assert and get rid of unlinked signals properly. diff --git a/configure.ac b/configure.ac index 73333ffe..4fa04b0a 100644 --- a/configure.ac +++ b/configure.ac @@ -1064,6 +1064,13 @@ dnl *** FLAC *** translit(dnm, m, l) AM_CONDITIONAL(USE_FLAC, true) GST_CHECK_FEATURE(FLAC, [FLAC lossless audio], flacenc flacdec, [ GST_CHECK_LIBHEADER(FLAC, FLAC, FLAC__seekable_stream_encoder_new, -lm, FLAC/all.h, FLAC_LIBS="-lFLAC") + dnl API change in FLAC 1.1.1, so require that... + if test x$HAVE_FLAC = xyes; then + AC_CHECK_DECL(FLAC__SEEKABLE_STREAM_ENCODER_TELL_ERROR, + HAVE_FLAC="yes", HAVE_FLAC="no", [ +#include <FLAC/seekable_stream_encoder.h> + ]) + fi AC_SUBST(FLAC_LIBS) ]) diff --git a/ext/flac/gstflacenc.c b/ext/flac/gstflacenc.c index 4d3af6cb..3a6e809b 100644 --- a/ext/flac/gstflacenc.c +++ b/ext/flac/gstflacenc.c @@ -329,6 +329,7 @@ gst_flacenc_init (FlacEnc * flacenc) flacenc->encoder = FLAC__seekable_stream_encoder_new (); flacenc->negotiated = FALSE; + flacenc->offset = 0; flacenc->first = TRUE; flacenc->first_buf = NULL; flacenc->data = NULL; @@ -442,8 +443,10 @@ gst_flacenc_seek_callback (const FLAC__SeekableStreamEncoder * encoder, gst_event_new_seek ((GstSeekType) (int) (GST_FORMAT_BYTES | GST_SEEK_METHOD_SET), absolute_byte_offset); - if (event) + if (event) { gst_pad_push (flacenc->srcpad, GST_DATA (event)); + flacenc->offset = absolute_byte_offset; + } return FLAC__STREAM_ENCODER_OK; } @@ -472,6 +475,18 @@ gst_flacenc_write_callback (const FLAC__SeekableStreamEncoder * encoder, } gst_pad_push (flacenc->srcpad, GST_DATA (outbuf)); + flacenc->offset += bytes; + + return FLAC__STREAM_ENCODER_OK; +} + +static FLAC__SeekableStreamEncoderTellStatus +gst_flacenc_tell_callback (const FLAC__SeekableStreamEncoder * encoder, + FLAC__uint64 * absolute_byte_offset, void *client_data) +{ + FlacEnc *flacenc = GST_FLACENC (client_data); + + *absolute_byte_offset = flacenc->offset; return FLAC__STREAM_ENCODER_OK; } @@ -579,6 +594,8 @@ gst_flacenc_chain (GstPad * pad, GstData * _data) gst_flacenc_write_callback); FLAC__seekable_stream_encoder_set_seek_callback (flacenc->encoder, gst_flacenc_seek_callback); + FLAC__seekable_stream_encoder_set_tell_callback (flacenc->encoder, + gst_flacenc_tell_callback); FLAC__seekable_stream_encoder_set_client_data (flacenc->encoder, flacenc); @@ -782,6 +799,7 @@ gst_flacenc_change_state (GstElement * element) FLAC__seekable_stream_encoder_finish (flacenc->encoder); } flacenc->negotiated = FALSE; + flacenc->offset = 0; if (flacenc->first_buf) gst_buffer_unref (flacenc->first_buf); flacenc->first_buf = NULL; diff --git a/ext/flac/gstflacenc.h b/ext/flac/gstflacenc.h index 27dbb3b0..f005f200 100644 --- a/ext/flac/gstflacenc.h +++ b/ext/flac/gstflacenc.h @@ -46,6 +46,7 @@ struct _FlacEnc { gboolean first; GstBuffer *first_buf; + guint64 offset; gboolean eos; gint channels; gint depth; |