diff -u -p -a -u -p -r1.9 gstmythtvsrc.c --- gstmythtvsrc.c 22 Jan 2008 09:55:23 -0000 1.9 +++ gstmythtvsrc.c 20 Feb 2008 14:03:43 -0000 @@ -405,10 +405,8 @@ gst_mythtv_src_create (GstPushSrc * psrc *outbuf = gst_buffer_new (); GST_BUFFER_SIZE (*outbuf) = buffer->len; - GST_BUFFER_MALLOCDATA (*outbuf) = g_malloc0 (GST_BUFFER_SIZE (*outbuf)); + GST_BUFFER_MALLOCDATA (*outbuf) = buffer->data; GST_BUFFER_DATA (*outbuf) = GST_BUFFER_MALLOCDATA (*outbuf); - g_memmove (GST_BUFFER_DATA ((*outbuf)), buffer->data, - GST_BUFFER_SIZE (*outbuf)); GST_BUFFER_OFFSET (*outbuf) = src->read_offset; GST_BUFFER_OFFSET_END (*outbuf) = src->read_offset + GST_BUFFER_SIZE (*outbuf); @@ -416,7 +414,7 @@ gst_mythtv_src_create (GstPushSrc * psrc src->read_offset += GST_BUFFER_SIZE (*outbuf); src->bytes_read += GST_BUFFER_SIZE (*outbuf); - g_byte_array_free (buffer, TRUE); + g_byte_array_free (buffer, FALSE); if (result == GMYTH_FILE_READ_NEXT_PROG_CHAIN) { GstPad *peer; @@ -490,7 +488,7 @@ gst_mythtv_src_do_seek (GstBaseSrc * bas segment->start, G_SEEK_SET); else if (IS_GMYTH_FILE_TRANSFER (src->file)) new_offset = gmyth_file_transfer_seek (GMYTH_FILE_TRANSFER (src->file), - segment->start, SEEK_SET); + segment->start, G_SEEK_SET); if (G_UNLIKELY (new_offset < 0)) { ret = FALSE; if (!src->live_tv) @@ -687,6 +685,7 @@ gst_mythtv_src_get_size (GstBaseSrc * bs GstMythtvSrc *src = GST_MYTHTV_SRC (bsrc); gboolean ret = TRUE; +#if 0 GST_LOG_OBJECT (src, "Differs from previous content size: %d (max.: %d)", abs (src->content_size - src->prev_content_size), @@ -706,6 +705,9 @@ gst_mythtv_src_get_size (GstBaseSrc * bs src->update_prog_chain = TRUE; } } +#endif + + src->content_size = gmyth_file_get_filesize (src->file); *size = src->content_size; GST_LOG_OBJECT (src, "Content size = %lld", src->content_size);