fail_unless (segment.stop == -1);
fail_unless (update == TRUE);
-#if 0
- /* configure segment to stop relative, should not do anything since
- * size is unknown. */
- gst_segment_do_seek (&segment, 1.0,
- GST_FORMAT_BYTES,
- GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_NONE, 200, GST_SEEK_TYPE_CUR, -100, &update);
- fail_unless (segment.start == 100);
- fail_unless (segment.stop == -1);
- fail_unless (update == FALSE);
-#endif
-
/* do some clipping on the open range */
/* completely outside */
res = gst_segment_clip (&segment, GST_FORMAT_BYTES, 0, 50, &cstart, &cstop);
fail_unless (segment.rate == 2.0);
fail_unless (update == FALSE);
-#if 0
- /* 0 is the same in all formats and should not fail */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_NONE, -1, &update);
- fail_unless (segment.format == GST_FORMAT_BYTES);
-
- /* set to -1 means start from 0 */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_SET, -1, GST_SEEK_TYPE_NONE, -1, &update);
- fail_unless (segment.format == GST_FORMAT_BYTES);
- fail_unless (segment.start == 0);
-
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_CUR, 0, GST_SEEK_TYPE_NONE, -1, &update);
-
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_END, 0, GST_SEEK_TYPE_NONE, -1, &update);
-
- /* -1 for end is fine too in all formats */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_SET, -1, &update);
-
- /* 0 as relative end is fine too */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_CUR, 0, &update);
-
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_END, 0, &update);
-#endif
-
/* set a real stop position, this must happen in bytes */
gst_segment_do_seek (&segment, 3.0,
GST_FORMAT_BYTES,
* playback mode.*/
fail_unless (update == FALSE);
-#if 0
- /* 0 as relative end is fine too */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_CUR, 0, &update);
- fail_unless (segment.stop == 100);
-
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_END, 0, &update);
- fail_unless (segment.stop == 100);
-
- /* -1 for end is fine too in all formats */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_TIME, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_SET, -1, &update);
- fail_unless (segment.stop == -1);
-#endif
-
/* set some duration, stop -1 END seeks will now work with the
* duration, if the formats match */
segment.duration = 200;
GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_END, 100, &update);
fail_unless (segment.stop == 200);
fail_unless (segment.duration == 200);
-
-#if 0
- /* add 300 to the start, this should be clamped to the duration */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_BYTES, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_CUR, 300, GST_SEEK_TYPE_END, 0, &update);
- fail_unless (segment.start == 200);
- fail_unless (segment.stop == 200);
- fail_unless (segment.duration == 200);
-
- /* subtract 300 from the start, this should be clamped to 0 */
- gst_segment_do_seek (&segment, 2.0,
- GST_FORMAT_BYTES, GST_SEEK_FLAG_NONE,
- GST_SEEK_TYPE_CUR, -300, GST_SEEK_TYPE_END, 0, &update);
- GST_DEBUG ("%" G_GINT64_FORMAT, segment.start);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.duration == 200);
-#endif
-}
-
-GST_END_TEST;
-
-#if 0
-/* mess with the segment structure in the bytes format */
-GST_START_TEST (segment_newsegment_open)
-{
- GstSegment segment;
-
- gst_segment_init (&segment, GST_FORMAT_BYTES);
-
- /* time should also work for starting from 0 */
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0, GST_FORMAT_TIME, 0, -1,
- 0);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_BYTES);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == -1);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* we set stop but in the wrong format, stop stays open. */
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0, GST_FORMAT_TIME, 0,
- 200, 0);
-
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == -1);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
-
- /* update, nothing changes */
- gst_segment_set_newsegment (&segment, TRUE, 1.0, 1.0, GST_FORMAT_BYTES, 0, -1,
- 0);
-
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == -1);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
-
- /* update */
- gst_segment_set_newsegment (&segment, TRUE, 1.0, 1.0,
- GST_FORMAT_BYTES, 100, -1, 100);
-
- fail_unless (segment.start == 100);
- fail_unless (segment.stop == -1);
- fail_unless (segment.time == 100);
- fail_unless (segment.base == 100);
- fail_unless (segment.position == 100);
-
- /* last_stop 0, base does not change */
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0, GST_FORMAT_BYTES, 0,
- -1, 0);
-
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == -1);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 100);
-
- gst_segment_set_last_stop (&segment, GST_FORMAT_BYTES, 200);
-
- fail_unless (segment.position == 200);
-
- /* last_stop 200, base changes */
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0, GST_FORMAT_BYTES, 0,
- -1, 0);
-
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == -1);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 300);
- fail_unless (segment.position == 0);
-}
-
-GST_END_TEST;
-
-
-/* mess with the segment structure in the bytes format */
-GST_START_TEST (segment_newsegment_closed)
-{
- GstSegment segment;
-
- gst_segment_init (&segment, GST_FORMAT_BYTES);
-
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_BYTES, 0, 200, 0);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_BYTES);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* assume we advanced to position 40 */
- gst_segment_set_last_stop (&segment, GST_FORMAT_BYTES, 40);
- fail_unless (segment.position == 40);
-
- /* do an update to the start, last_stop is unchanged because it's bigger */
- gst_segment_set_newsegment (&segment, TRUE, 1.0, 1.0, GST_FORMAT_BYTES, 20,
- 200, 20);
-
- fail_unless (segment.start == 20);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 20);
- fail_unless (segment.base == 20);
- fail_unless (segment.position == 40);
-
- /* do an update past our last_stop, it should be updated now */
- gst_segment_set_newsegment (&segment, TRUE, 1.0, 1.0, GST_FORMAT_BYTES, 50,
- 300, 50);
-
- fail_unless (segment.start == 50);
- fail_unless (segment.stop == 300);
- fail_unless (segment.time == 50);
- fail_unless (segment.base == 50);
- fail_unless (segment.position == 50);
-
- /* and a new accumulated one */
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_BYTES, 100, 400, 300);
-
- fail_unless (segment.start == 100);
- fail_unless (segment.stop == 400);
- fail_unless (segment.time == 300);
- fail_unless (segment.base == 300);
-
- /* and a new updated one */
- gst_segment_set_newsegment (&segment, TRUE, 1.0, 1.0,
- GST_FORMAT_BYTES, 100, 500, 300);
-
- fail_unless (segment.start == 100);
- fail_unless (segment.stop == 500);
- fail_unless (segment.time == 300);
- fail_unless (segment.base == 300);
-
- /* and a new partially updated one */
- gst_segment_set_newsegment (&segment, TRUE, 1.0, 1.0,
- GST_FORMAT_BYTES, 200, 500, 400);
-
- fail_unless (segment.start == 200);
- fail_unless (segment.stop == 500);
- fail_unless (segment.time == 400);
- fail_unless (segment.base == 400);
-}
-
-GST_END_TEST;
-
-/* mess with the segment structure in the time format */
-GST_START_TEST (segment_newsegment_streamtime)
-{
- GstSegment segment;
- guint64 result;
-
- gst_segment_init (&segment, GST_FORMAT_TIME);
-
- /***************************
- * Normal segment
- ***************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 200);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /*********************
- * time shifted by 500
- *********************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_TIME, 0, 200, 500);
-
- fail_unless (segment.base == 200);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 500);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 600);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 500);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /*********************
- * time offset by 500
- *********************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_TIME, 500, 700, 0);
-
- fail_unless (segment.base == 400);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* before segment is invalid */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 500);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 600);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 700);
- fail_unless (result == 200);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 800);
- fail_unless (result == -1);
-
- /*************************************
- * time offset by 500, shifted by 200
- *************************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_TIME, 500, 700, 200);
-
- fail_unless (segment.base == 600);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* before segment is invalid */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 500);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 600);
- fail_unless (result == 300);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 700);
- fail_unless (result == 400);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 800);
- fail_unless (result == -1);
-}
-
-GST_END_TEST;
-
-/* mess with the segment structure in the time format */
-GST_START_TEST (segment_newsegment_streamtime_rate)
-{
- GstSegment segment;
- guint64 result;
-
- gst_segment_init (&segment, GST_FORMAT_TIME);
-
- /***************************
- * Normal segment rate 2.0
- ***************************/
- gst_segment_set_newsegment (&segment, FALSE, 2.0, 1.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == 2.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 150);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 200);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***************************************
- * Normal segment rate 2.0, offset
- ***************************************/
- gst_segment_set_newsegment (&segment, FALSE, 2.0, 1.0,
- GST_FORMAT_TIME, 100, 300, 0);
-
- fail_unless (segment.base == 100);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 250);
- fail_unless (result == 150);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == 200);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
-
- /***************************************
- * Normal segment rate -1.0, offset
- ***************************************/
-
- /* buffers will arrive from 300 to 100 in a sink, stream time
- * calculation is unaffected by the rate */
- gst_segment_set_newsegment (&segment, FALSE, -1.0, 1.0,
- GST_FORMAT_TIME, 100, 300, 0);
-
- fail_unless (segment.base == 200);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 100);
-
- /***********************************************
- * Normal segment rate -1.0, offset, time = 200
- ***********************************************/
- gst_segment_set_newsegment (&segment, FALSE, -1.0, 1.0,
- GST_FORMAT_TIME, 100, 300, 200);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 300);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == 400);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
-}
-
-GST_END_TEST;
-
-/* mess with the segment structure in the time format */
-GST_START_TEST (segment_newsegment_streamtime_applied_rate)
-{
- GstSegment segment;
- guint64 result;
-
- gst_segment_init (&segment, GST_FORMAT_TIME);
-
- /***********************************************************
- * Normal segment rate 1.0, applied rate -1.0
- * This means the timestamps represents a stream going backwards
- * starting from @time to 0.
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, -1.0,
- GST_FORMAT_TIME, 0, 200, 200);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == -1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 200);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* we count backwards from 200 */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 50);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 0);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***********************************************************
- * Normal segment rate 1.0, applied rate 2.0
- * This means the timestamps represents a stream at twice the
- * normal rate
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 2.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == 2.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 200);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 0);
-
- /* the stream prepresents a stream going twice as fast, the position
- * in the segment is therefore scaled by the applied rate */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 300);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 400);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***********************************************************
- * Normal segment rate 1.0, applied rate -2.0
- * This means the timestamps represents a stream at twice the
- * reverse rate
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, -2.0,
- GST_FORMAT_TIME, 0, 200, 400);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == -2.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 400);
- /* previous segment lasted 200, rate of 2.0 was already applied */
- fail_unless (segment.base == 400);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* we count backwards from 400 */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 400);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 0);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***********************************************************
- * Normal segment rate 1.0, applied rate -2.0
- * This means the timestamps represents a stream at twice the
- * reverse rate, start time cannot compensate the complete
- * duration of the segment so we stop at 0
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, -2.0,
- GST_FORMAT_TIME, 0, 200, 200);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == -2.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 200);
- fail_unless (segment.base == 600);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* we count backwards from 200 */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 0);
-
- /* clamp at 0 */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 0);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-}
-
-GST_END_TEST;
-
-/* mess with the segment structure in the time format */
-GST_START_TEST (segment_newsegment_streamtime_applied_rate_rate)
-{
- GstSegment segment;
- guint64 result;
-
- gst_segment_init (&segment, GST_FORMAT_TIME);
-
- /***********************************************************
- * Segment rate 2.0, applied rate 2.0
- * this means we have a double speed stream that we should
- * speed up by a factor of 2.0 some more. the resulting
- * stream will be played at four times the speed.
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, 2.0, 2.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == 2.0);
- fail_unless (segment.applied_rate == 2.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* only applied rate affects our calculation of the stream time */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 300);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 400);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***********************************************************
- * Segment rate 2.0, applied rate -1.0
- * this means we have a reverse stream that we should
- * speed up by a factor of 2.0
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, 2.0, -1.0,
- GST_FORMAT_TIME, 0, 200, 200);
-
- fail_unless (segment.rate == 2.0);
- fail_unless (segment.applied_rate == -1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 200);
- /* previous segment lasted 100 */
- fail_unless (segment.base == 100);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* only applied rate affects our calculation of the stream time */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 50);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 0);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***********************************************************
- * Segment rate -1.0, applied rate -1.0
- * this means we have a reverse stream that we should
- * reverse to get the normal stream again.
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, -1.0, -1.0,
- GST_FORMAT_TIME, 0, 200, 200);
-
- fail_unless (segment.rate == -1.0);
- fail_unless (segment.applied_rate == -1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 200);
- /* accumulated 100 of previous segment to make 200 */
- fail_unless (segment.base == 200);
- fail_unless (segment.position == 200);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* only applied rate affects our calculation of the stream time */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 100);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 50);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 0);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***********************************************************
- * Segment rate -1.0, applied rate -1.0
- * this means we have a reverse stream that we should
- * reverse to get the normal stream again.
- ************************************************************/
- gst_segment_set_newsegment (&segment, FALSE, -1.0, 2.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == -1.0);
- fail_unless (segment.applied_rate == 2.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 400);
- fail_unless (segment.position == 200);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* only applied rate affects our calculation of the stream time */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 0);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 200);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 300);
-
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 400);
-
- /* outside of the segment */
- result = gst_segment_to_stream_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-}
-
-GST_END_TEST;
-
-/* mess with the segment structure in the time format */
-GST_START_TEST (segment_newsegment_runningtime)
-{
- GstSegment segment;
- guint64 result;
-
- gst_segment_init (&segment, GST_FORMAT_TIME);
-
- /***************************
- * Normal segment
- ***************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 0);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 0);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 0);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 100);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 100);
-
- /* at edge is exactly the segment duration */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 200);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 200);
-
- /* outside of the segment */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 300);
- fail_unless (result == -1);
-
- /***********************************************************
- * time shifted by 500, check if accumulation worked.
- * Rate convert to twice the speed which means scaling down
- * all positions by 2.0 in this segment.
- * Then time argument is not used at all here.
- ***********************************************************/
- gst_segment_set_newsegment (&segment, FALSE, 2.0, 1.0,
- GST_FORMAT_TIME, 0, 200, 500);
-
- /* normal speed gives elapsed of 200 */
- fail_unless (segment.base == 200);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 0);
- fail_unless (result == 200);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 0);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 250);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 100);
-
- /* outside of the segment */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 500);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 310);
- fail_unless (result == -1);
-
- /********************************************
- * time offset by 500
- * applied rate is not used for running time
- ********************************************/
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 2.0,
- GST_FORMAT_TIME, 500, 700, 0);
-
- /* previous segment played at double speed gives elapsed time of
- * 100 added to previous accum of 200 gives 300. */
- fail_unless (segment.base == 300);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* before segment is invalid */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 500);
- fail_unless (result == 300);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 500);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 600);
- fail_unless (result == 400);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 600);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 700);
- fail_unless (result == 500);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 700);
-
- /* outside of the segment */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 800);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 600);
- fail_unless (result == -1);
-
- /**********************************************************
- * time offset by 500, shifted by 200
- * Negative rate makes the running time go backwards
- * relative to the segment stop position. again time
- * is ignored.
- **********************************************************/
- gst_segment_set_newsegment (&segment, FALSE, -1.0, 1.0,
- GST_FORMAT_TIME, 500, 700, 200);
-
- fail_unless (segment.base == 500);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* before segment is invalid */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 500);
- fail_unless (result == 700);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 500);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 600);
- fail_unless (result == 600);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 600);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 700);
- fail_unless (result == 500);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 700);
-
- /* outside of the segment */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 800);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 800);
- fail_unless (result == -1);
-
- /**********************************************************
- * time offset by 500, shifted by 200
- * Negative rate makes the running time go backwards at
- * twice speed relative to the segment stop position. again
- * time is ignored.
- **********************************************************/
- gst_segment_set_newsegment (&segment, FALSE, -2.0, -2.0,
- GST_FORMAT_TIME, 500, 700, 200);
-
- fail_unless (segment.base == 700);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- /* before segment is invalid */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 400);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 600);
- fail_unless (result == -1);
-
- /* total scaled segment time is 100, accum is 700, so we get 800 */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 500);
- fail_unless (result == 800);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 500);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 600);
- fail_unless (result == 750);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 600);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 700);
- fail_unless (result == 700);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 700);
-
- /* outside of the segment */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 800);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 900);
- fail_unless (result == -1);
-
- /* see if negative rate closed segment correctly */
- gst_segment_set_newsegment (&segment, FALSE, -2.0, -1.0,
- GST_FORMAT_TIME, 500, 700, 200);
-
- /* previous segment lasted 100, and was at 700 so we should get 800 */
- fail_unless (segment.base == 800);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, 800);
- fail_unless (result == 700);
-}
-
-GST_END_TEST;
-
-/* mess with the segment structure in the time format */
-GST_START_TEST (segment_newsegment_accum)
-{
- GstSegment segment;
- guint64 result;
-
- gst_segment_init (&segment, GST_FORMAT_TIME);
-
- /***************************
- * Normal reverse segment
- ***************************/
- gst_segment_set_newsegment (&segment, FALSE, -1.0, 1.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == -1.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 200);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 0);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 200);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 50);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 150);
-
- /* update segment, this accumulates 50 from the previous segment. */
- gst_segment_set_newsegment (&segment, TRUE, -2.0, 1.0,
- GST_FORMAT_TIME, 0, 150, 0);
-
- fail_unless (segment.rate == -2.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 150);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 50);
- fail_unless (segment.position == 150);
- fail_unless (segment.duration == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 50);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 150);
-
- /* 50 accumulated + 50 / 2 */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 75);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 100);
-
- /* update segment, this does not accumulate anything. */
- gst_segment_set_newsegment (&segment, TRUE, 1.0, 1.0,
- GST_FORMAT_TIME, 100, 200, 100);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 100);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 100);
- fail_unless (segment.base == 50);
- fail_unless (segment.position == 150);
- fail_unless (segment.duration == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 100);
- fail_unless (result == 50);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 100);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 100);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 150);
-}
-
-GST_END_TEST;
-
-/* mess with the segment structure in the time format */
-GST_START_TEST (segment_newsegment_accum2)
-{
- GstSegment segment;
- guint64 result;
-
- gst_segment_init (&segment, GST_FORMAT_TIME);
-
- /***************************
- * Normal reverse segment
- ***************************/
- gst_segment_set_newsegment (&segment, FALSE, -1.0, 1.0,
- GST_FORMAT_TIME, 0, 200, 0);
-
- fail_unless (segment.rate == -1.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 0);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 200);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 0);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 200);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 50);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 150);
-
- /* close segment, this accumulates nothing. */
- gst_segment_set_newsegment (&segment, TRUE, -1.0, 1.0,
- GST_FORMAT_TIME, 150, 200, 0);
-
- fail_unless (segment.rate == -1.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 150);
- fail_unless (segment.stop == 200);
- fail_unless (segment.time == 0);
- fail_unless (segment.base == 0);
- fail_unless (segment.position == 200);
- fail_unless (segment.duration == -1);
-
- /* new segment, this accumulates 50. */
- gst_segment_set_newsegment (&segment, FALSE, 1.0, 1.0,
- GST_FORMAT_TIME, 150, 300, 150);
-
- fail_unless (segment.rate == 1.0);
- fail_unless (segment.applied_rate == 1.0);
- fail_unless (segment.format == GST_FORMAT_TIME);
- fail_unless (segment.flags == 0);
- fail_unless (segment.start == 150);
- fail_unless (segment.stop == 300);
- fail_unless (segment.time == 150);
- fail_unless (segment.base == 50);
- fail_unless (segment.position == 150);
- fail_unless (segment.duration == -1);
-
- /* invalid time gives invalid result */
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, -1);
- fail_unless (result == -1);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 150);
- fail_unless (result == 50);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 150);
-
- result = gst_segment_to_running_time (&segment, GST_FORMAT_TIME, 200);
- fail_unless (result == 100);
- result = gst_segment_to_position (&segment, GST_FORMAT_TIME, result);
- fail_unless (result == 200);
}
GST_END_TEST;
-#endif
GST_START_TEST (segment_copy)
{
tcase_add_test (tc_chain, segment_seek_size);
tcase_add_test (tc_chain, segment_seek_reverse);
tcase_add_test (tc_chain, segment_seek_rate);
-#if 0
- tcase_add_test (tc_chain, segment_newsegment_open);
- tcase_add_test (tc_chain, segment_newsegment_closed);
- tcase_add_test (tc_chain, segment_newsegment_streamtime);
- tcase_add_test (tc_chain, segment_newsegment_streamtime_rate);
- tcase_add_test (tc_chain, segment_newsegment_streamtime_applied_rate);
- tcase_add_test (tc_chain, segment_newsegment_streamtime_applied_rate_rate);
- tcase_add_test (tc_chain, segment_newsegment_runningtime);
- tcase_add_test (tc_chain, segment_newsegment_accum);
- tcase_add_test (tc_chain, segment_newsegment_accum2);
-#endif
tcase_add_test (tc_chain, segment_copy);
return s;