- Jan 13, 2006
-
-
Thomas Vander Stichele authored
Original commit message from CVS: releasing 0.10.1
-
- Jan 11, 2006
-
-
Thomas Vander Stichele authored
Original commit message from CVS: prerelease
-
- Jan 10, 2006
-
-
Tim-Philipp Müller authored
Original commit message from CVS: * ext/amrnb/amrnbparse.c: (gst_amrnbparse_query): * ext/mad/gstid3tag.c: (gst_id3_tag_src_query): * ext/mad/gstmad.c: (gst_mad_src_query): * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_src_query): * ext/sidplay/gstsiddec.cc: * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_query): * gst/realmedia/rmdemux.c: (gst_rmdemux_src_query): Pass unhandled queries upstream (useful e.g. for SEEKING query) (fixes #325652; based on patch by: Philippe); make rmdemux return FALSE for position queries, instead of setting -1 as value and returning TRUE.
-
- Jan 05, 2006
-
-
Martin Soto authored
Original commit message from CVS: 2006-01-05 Martin Soto <martinsoto@users.sourceforge.net> * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts) (gst_mpeg_parse_process_event, gst_mpeg_parse_pad_added): Don't rewrite timestamps in the case segments are being set from upstream, but use timestamps unmodified. Also send proper position values. This allows for correct time display and makes queries work in sink elements. * gst/mpegstream/gstdvddemux.h: * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init) (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer): Rename flush_filter to segment_filter, which is better represents what the arreibute does. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event): Activate segment filtering when a timestamp discontinuity is seen.
-
- Jan 04, 2006
-
-
Tim-Philipp Müller authored
ext/mad/gstmad.c: Don't forget that we need to send out a newsegment event after a restart even if we don't have enou... Original commit message from CVS: * ext/mad/gstmad.c: (gst_mad_chain): Don't forget that we need to send out a newsegment event after a restart even if we don't have enough data to decode a frame right now.
-
- Dec 30, 2005
-
-
Martin Soto authored
gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event): Use the new "audio-shutdown" and "audio-restart" DVD e... Original commit message from CVS: 2005-12-31 Martin Soto <martinsoto@users.sourceforge.net> * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event): Use the new "audio-shutdown" and "audio-restart" DVD events instead of the "spu-still-frame" event to shutdown and restart the audio pipeline. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts): Check for cases where the segment-based adjustment calculation would produce negative values (which result in an overflow) and return GST_CLOCK_TIME_NONE instead. * gst/mpegstream/gstdvddemux.h: * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init) (gst_dvd_demux_process_event, gst_dvd_demux_send_subbuffer): Add a mechanism to discard audio buffers with timestamps outside the currently set segment. This was causing (sometimes serious) synchronization problems after seeking in DVDs with LPCM audio, since VOBUs usually contain audio material that lies outside the timestamp range specified by the header.
-
Jan Schmidt authored
Original commit message from CVS: * ext/mad/gstid3tag.c: (gst_id3_tag_get_type): Remove lingering reference to GstID3Demux * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_pes): Don't output debug saying padding streams are unknown type, because they're not
-
- Dec 27, 2005
-
-
Martin Soto authored
Original commit message from CVS: 2005-12-27 Martin Soto <martinsoto@users.sourceforge.net> * gst/mpegstream/gstdvddemux.c (AUDIO_CAPS) (gst_dvd_demux_get_audio_stream): Use audio/x-lpcm as mimetype for LPCM. * gstmpegdemux.h: * gstmpegdemux.c (gst_mpeg_demux_get_video_stream) (gst_mpeg_demux_get_audio_stream): * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_get_video_stream) (gst_dvd_demux_get_audio_stream) (gst_dvd_demux_get_subpicture_stream) (gst_dvd_demux_send_subbuffer): Send current* pad buffers with appropriate caps.
-
- Dec 26, 2005
-
-
Martin Soto authored
Original commit message from CVS: 2005-12-26 Martin Soto <martinsoto@users.sourceforge.net> * gst/iec958/ac3iec.h: * gst/iec958/ac3iec.c: (NORMAL_CAPS_DEF, RAW_AUDIO_CAPS_DEF, ac3iec_class_init) (ac3iec_init, ac3iec_set_property, ac3iec_get_property): Add a raw-audio property to ac3iec958 that allows setting the source pad caps to raw audio instead of audio/x-iec958. This makes it possible to use ac3iec958 together with the normal alsasink element to drive an external receiver that autodetects AC3 content.
-
- Dec 23, 2005
-
-
Michael Smith authored
Original commit message from CVS: * gst/iec958/ac3iec.c: (ac3iec_init), (ac3iec_setcaps), (ac3iec_chain_dvd): * gst/iec958/ac3iec.h: Accept audio/x-ac3 and audio/ac3 to ac3iec958 element.
-
- Dec 21, 2005
-
-
Tim-Philipp Müller authored
ext/mpeg2dec/gstmpeg2dec.c: When getting a seek event, first check if the upstream element can handle it and only do ... Original commit message from CVS: * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_src_event): When getting a seek event, first check if the upstream element can handle it and only do our own seek stuff when it can't (should fix #322856).
-
Tim-Philipp Müller authored
ext/mpeg2dec/gstmpeg2dec.c: Really convert to BYTES format when we want to convert to bytes (use right variable; fixe... Original commit message from CVS: Reviewed by: Tim-Philipp Müller <tim at centricular dot net> * ext/mpeg2dec/gstmpeg2dec.c: (normal_seek): Really convert to BYTES format when we want to convert to bytes (use right variable; fixes #322856).
-
- Dec 19, 2005
-
-
Martin Soto authored
Original commit message from CVS: 2005-12-19 Martin Soto <martinsoto@users.sourceforge.net> Big mpegparse clean up, second round: * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event): Send and EOS event down the audio pipeline when an still frame event arrives. This prevents the pipeline from locking when a still menu comes directly after a flush. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset): Don't send a newsegment in reset. (gst_mpeg_parse_adjust_ts): Check for invalid timestamps. (gst_mpeg_parse_handle_newsegment, gst_mpeg_parse_process_event): Move the code of handle_newsegment to process_event. Send a NEWSEGMENT after FLUSH_STOP. (gst_mpeg_parse_change_state): Send a NEWSEGMENT right after moving to PAUSED. * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event) (gst_mpeg_demux_class_init): Don't override send_event. * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_init) (gst_mpeg_demux_send_event, gst_mpeg_demux_send_subbuffer) (gst_mpeg_demux_reset): * gst/mpegstream/gstmpegdemux.h: Get rid of just_flushed attribute. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event): Reset the mpegparse element after a flush. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment): Don't forward events. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event): * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): handle_newsegment is not a virtual method anymore. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_send_newsegment) (gst_mpeg_parse_reset, gst_mpeg_parse_class_init): * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): Get rid of send_newsegment virtual method. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event): Only handle DVD events and call the superclass method for other event types. * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event): Don't override process_event anymore. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_event) (gst_mpeg_parse_process_event): Move actual event processing to process event so that subclasses can properly override or extend it. * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): Eliminate time parameter in process event. * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_init) (gst_mpeg_demux_parse_packet, gst_mpeg_demux_parse_pes) (gst_mpeg_demux_send_subbuffer): * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init) (gst_mpeg_parse_parse_packhead, gst_mpeg_parse_event) (gst_mpeg_parse_chain): Use the new adjust_ts method instead of adding the value of the adjust attribute. * gst/mpegstream/gstmpegdemux.h (struct _GstMPEGVideoStream): Get rid of the adjust attribute. Now all timestamp adjustments are performed by mpegparse using the current segment. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts) (gst_mpeg_parse_class_init): Implement the adjust_ts method based on the adjust attribute for SCR values and the current segment. * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): New adjust_ts virtual method to adjust timestamps for outgoing buffers. * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_newsegment) (gst_mpeg_demux_parse_packet): Don't override send_newsegment. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init) (gst_dvd_demux_handle_newsegment): Don't override handle_newsegment. (gst_dvd_demux_process_event, gst_dvd_demux_handle_dvd_event): Check for DVD events in process_event instead of handle_dvd_event. * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment) (gst_mpeg_parse_send_newsegment, gst_mpeg_parse_send_event): * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_process_event) (gst_mpeg_demux_send_event): * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event) (gst_dvd_demux_handle_dvd_event): Eliminate the time parameter in send_event.
-
- Dec 18, 2005
-
-
Jan Schmidt authored
ext/mad/gstid3tag.c: Fix typefinding in id3demux, and then remove it in favour of the new LGPL id3demux in gst-plugin... Original commit message from CVS: * ext/mad/gstid3tag.c: (gst_id3_tag_do_typefind), (gst_id3_tag_do_caps_nego), (gst_id3_tag_chain), (plugin_init): Fix typefinding in id3demux, and then remove it in favour of the new LGPL id3demux in gst-plugins-good * ext/mad/gstmad.c: (gst_mad_dispose): dispose can run more than once.
-
- Dec 16, 2005
-
-
Stefan Kost authored
Original commit message from CVS: * gst/asfdemux/gstasfmux.c: (gst_asfmux_file_start): change some char* into char[]
-
- Dec 15, 2005
-
-
Edward Hervey authored
Original commit message from CVS: * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream): Remove memleak from unused GstRMDemuxStream
-
- Dec 12, 2005
-
-
Michael Smith authored
Original commit message from CVS: * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list), (gst_id3_tag_do_typefind): Use the correct function to free typefind factory list.
-
- Dec 09, 2005
-
-
Tim-Philipp Müller authored
ext/mad/gstmad.c: For position and duration queries in TIME format, try the peer first (might be a demuxer). Original commit message from CVS: * ext/mad/gstmad.c: (gst_mad_src_query): For position and duration queries in TIME format, try the peer first (might be a demuxer).
-
- Dec 08, 2005
-
-
Martin Soto authored
gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_newsegment): Properly handle non contiguous VOBUs by adding the se... Original commit message from CVS: 2005-12-08 Martin Soto <martinsoto@users.sourceforge.net> * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_newsegment): Properly handle non contiguous VOBUs by adding the segment accum field to the adjust value. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init) (gst_dvd_demux_init, gst_dvd_demux_handle_newsegment): Extend handle_newsegment to prevent sending actual newsegment events and use tiemstamp rewriting instead. (gst_dvd_demux_handle_dvd_event): Don't send a newsegment after dvd-lang-codes. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment) (gst_mpeg_parse_event): * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): Add a new parameter to handle_newsegment to allow controlling whether newsegment events are forwarded or not. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init) (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer) (gst_dvd_demux_reset): last_end_ptm and discont_time aren't necessary anymore, since timestamp adjustment is now replaced by newsegment events. (gst_dvd_demux_init): Prevent MPEGParse from adjusting timestamps. * gst/mpegstream/gstdvddemux.h: * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event): Don't handle dvd-nav-packet events anymore, since the are now replaced by standard newsegment events. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init) (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer) (gst_dvd_demux_change_state): * gst/mpegstream/gstdvddemux.h: Get rid of the ignore_next_newmedia_discont hack. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init) (gst_dvd_demux_handle_newsegment): * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_class_init) (gst_mpeg_demux_handle_newsegment): Don't override handle_newsegment anymore. It was only necessary to handle NEWMEDIA events. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event) (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_set_cur_audio) (gst_dvd_demux_set_cur_subpicture): Reactivate handling of DVD events. * gst/mpegstream/gstmpegparse.c (normal_seek) (gst_mpeg_parse_handle_src_event) (gst_mpeg_parse_handle_src_query): First attempt at reenabling seek. * gst/mpegstream/gstmpegparse.h: * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init) (gst_mpeg_parse_update_streaminfo) (gst_mpeg_parse_get_rate) (gst_mpeg_parse_convert, gst_mpeg_parse_get_src_query_types) (gst_mpeg_parse_handle_src_query): * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_new_output_pad): Make queries work again. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset) (gst_mpeg_parse_handle_newsegment) (gst_mpeg_parse_send_newsegment, gst_mpeg_parse_pad_added) (gst_mpeg_parse_chain, gst_mpeg_parse_handle_src_event): * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse): Get rid of the newsegment_pending attribute, and rely instead on proper timestamp adjustment. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_get_src_event_masks): Erase. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init): Initialize fields before creating pads to prevent the pad creation callback from failing. (gst_mpeg_parse_reset): Initialize new fields, and change initialization order to match the order in the structure. (gst_mpeg_parse_handle_newsegment): Forward new segment events whenever possible, and update the current segment. (gst_mpeg_parse_send_newsegment): Update the current segment and pending_newsegment. (gst_mpeg_parse_pad_added): Use the current segment to send newsegment events to new pads. (gst_mpeg_parse_chain): Properly add adjust time to sent buffers and events. Properly update newsegment_pending. * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse): New fields do_adjust and current_segment. * gst/mpegstream/gstmpegdemux.c: * gst/mpegstream/gstdvddemux.c: * gst/mpegstream/gstmpegparse.h: Rename handle_discont virtual method to handle_newsegment. Erase some (already commented out support) for old NEW_MEDIA events. * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse): * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init) (gst_mpeg_parse_reset, gst_mpeg_parse_handle_discont) (gst_mpeg_parse_pad_added, gst_mpeg_parse_parse_packhead) (gst_mpeg_parse_event, gst_mpeg_parse_chain): Erase the "pending_scr" field, and replace it by a slightly different handling of the current SCR. Document code blocks in parse_packhead and chain.
-
- Dec 07, 2005
-
-
Edward Hervey authored
ext/mad/gstid3tag.c: g_warning() are only for really fatal warnings. If we can't decode a tag, just ignore that tag a... Original commit message from CVS: * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list): g_warning() are only for really fatal warnings. If we can't decode a tag, just ignore that tag and do a GST_WARNING.
-
- Dec 06, 2005
-
-
Thomas Vander Stichele authored
Original commit message from CVS: expand tabs
-
- Dec 05, 2005
-
-
Thomas Vander Stichele authored
Original commit message from CVS: back to HEAD
-
Thomas Vander Stichele authored
Original commit message from CVS: releasing 0.10.0
-
Andy Wingo Wingo authored
Original commit message from CVS: 2005-12-05 Andy Wingo <wingo@pobox.com> * ext/a52dec/gsta52dec.c: (gst_a52dec_push): * ext/mad/gstmad.c: (gst_mad_chain): * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_alloc_buffer): * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_chain_raw): * gst/iec958/ac3iec.c: (ac3iec_chain_raw): * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream), (gst_rmdemux_parse_packet): Update for alloc_buffer changes.
-
Andy Wingo Wingo authored
ext/mad/gstid3tag.c (plugin_init): Remove id3tag -- there's just id3demux and id3mux now. Fixes #323199. Original commit message from CVS: 2005-12-05 Andy Wingo <wingo@pobox.com> * ext/mad/gstid3tag.c (plugin_init): Remove id3tag -- there's just id3demux and id3mux now. Fixes #323199.
-
- Dec 04, 2005
-
-
Christian Schaller authored
Original commit message from CVS: update spec file for latest changes
-
- Dec 02, 2005
-
-
Thomas Vander Stichele authored
Original commit message from CVS: * ext/amrnb/Makefile.am: * gst/realmedia/Makefile.am: fix silly Makefile.am bug so they link correctly again
-
- Dec 01, 2005
-
-
Thomas Vander Stichele authored
Original commit message from CVS: back to HEAD
-
Thomas Vander Stichele authored
Original commit message from CVS: releasing 0.9.7
-
Thomas Vander Stichele authored
Original commit message from CVS: Don't know how these escaped my eye before. Fix link flags.
-
- Nov 30, 2005
-
-
Thomas Vander Stichele authored
Original commit message from CVS: no examples
-
- Nov 29, 2005
-
-
Tim-Philipp Müller authored
gst/mpegstream/: Ref events before sending them to multiple pads, after all gst_pad_send_event() takes ownership of e... Original commit message from CVS: Reviewed by: Tim-Philipp Müller <tim at centricular dot net> * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_event): * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_newsegment), (gst_mpeg_parse_send_event): Ref events before sending them to multiple pads, after all gst_pad_send_event() takes ownership of events. Don't leak events that have not been handled (fixes #322745).
-
- Nov 28, 2005
-
-
Martin Soto authored
Original commit message from CVS: 2005-11-28 Martin Soto <martinsoto@users.sourceforge.net> * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event) (gst_dvd_demux_handle_dvd_event): Erase code to prevent mpegparse from making timestamp adjustments. This will have to be re-added in some form in the near future, but in order to do that, some nav packet parsing will be necessary in mpegdemux. * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse): * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init) (g_value_set_int, gst_mpeg_parse_set_property) Get rid of do_adjust and use_adjust. Rename max_discont to max_src_gap. (gst_mpeg_parse_parse_packhead): When max_scr_gap has a value of -1, no adjustment is made. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init): Rename max_discont property to max_scr_gap. Erase "adjust" property. * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_send_event): Don't override send_event anymore, base class does the job. * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event): Base class now does most of the work. * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_send_event): Generalize to forwarding the event to all source pads in the element. * gst/mpegstream/gstmpegparse.h: * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init) (gst_mpeg_parse_init, gst_mpeg_parse_set_clock) (gst_mpeg_parse_chain, gst_mpeg_parse_get_property) (gst_mpeg_parse_set_property): Clock synchronization doesn't make sense anymore for a demultiplexer.
-
Michael Smith authored
Original commit message from CVS: * gst/realmedia/rmdemux.c: (gst_rmdemux_loop): Don't treat normal EOS as a fatal error.
-
Edward Hervey authored
Original commit message from CVS: * ext/mad/gstmad.c: (gst_mad_chain): Proper warning statements, Don't error if the src pad isn't linked when pushing. * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_change_state): Proper state_change, avoids borkage when going to READY
-
- Nov 27, 2005
-
-
Thomas Vander Stichele authored
Original commit message from CVS: no need for an AS_LIBTOOL call
-
Thomas Vander Stichele authored
Original commit message from CVS: add ACLOCAL_AMFLAGS; remove old stuff from spec changelog
-
- Nov 25, 2005
-
-
Jan Schmidt authored
ext/mpeg2dec/gstmpeg2dec.c: Prime libmpeg2's pumps with some null custom buffers to ensure it doesn't ask us to disca... Original commit message from CVS: * ext/mpeg2dec/gstmpeg2dec.c: (handle_sequence): Prime libmpeg2's pumps with some null custom buffers to ensure it doesn't ask us to discard garbage later yay.
-
Jan Schmidt authored
ext/mpeg2dec/gstmpeg2dec.c: Prime libmpeg2's pumps with some null custom buffers to ensure it ask us to discard garba... Original commit message from CVS: * ext/mpeg2dec/gstmpeg2dec.c: (handle_sequence): Prime libmpeg2's pumps with some null custom buffers to ensure it ask us to discard garbage later yay.
-
Michael Smith authored
Original commit message from CVS: * ext/a52dec/gsta52dec.c: (gst_a52dec_init), (gst_a52dec_sink_setcaps), (gst_a52dec_chain), (gst_a52dec_chain_raw): * ext/a52dec/gsta52dec.h: Accept AC3 in audio/x-private1-ac3 format, which includes DVD-specific headers, as well as raw AC3, for compatibility with some demuxers.
-