⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gstsegment.c

📁 GStreamer是一个开源的多媒体框架库。利用它
💻 C
📖 第 1 页 / 共 4 页
字号:
  res = gst_segment_clip (&segment, GST_FORMAT_BYTES,      100, 150, &cstart, &cstop);  fail_unless (res == TRUE);  fail_unless (cstart == 100);  fail_unless (cstop == 150);  /* completely inside */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES,      150, 170, &cstart, &cstop);  fail_unless (res == TRUE);  fail_unless (cstart == 150);  fail_unless (cstop == 170);  /* partially inside */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES,      150, 250, &cstart, &cstop);  fail_unless (res == TRUE);  fail_unless (cstart == 150);  fail_unless (cstop == 180);  /* invalid start */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES, -1, 100, &cstart, &cstop);  fail_unless (res == FALSE);  /* start outside */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES, 50, -1, &cstart, &cstop);  fail_unless (res == TRUE);  fail_unless (cstart == 100);  fail_unless (cstop == 180);  /* start on lower bound */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES, 100, -1, &cstart, &cstop);  fail_unless (res == TRUE);  fail_unless (cstart == 100);  fail_unless (cstop == 180);  /* start inside */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES, 150, -1, &cstart, &cstop);  fail_unless (res == TRUE);  fail_unless (cstart == 150);  fail_unless (cstop == 180);  /* start outside on boundary */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES, 180, -1, &cstart, &cstop);  fail_unless (res == FALSE);  /* start completely outside */  res = gst_segment_clip (&segment, GST_FORMAT_BYTES, 250, -1, &cstart, &cstop);  fail_unless (res == FALSE);}GST_END_TEST;GST_START_TEST (segment_seek_reverse){  GstSegment segment;  gboolean update;  gst_segment_init (&segment, GST_FORMAT_BYTES);  gst_segment_set_duration (&segment, GST_FORMAT_BYTES, 200);  /* configure segment to stop 100 */  gst_segment_set_seek (&segment, -1.0,      GST_FORMAT_BYTES,      GST_SEEK_FLAG_NONE,      GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_SET, 100, &update);  fail_unless (segment.start == 0);  fail_unless (segment.stop == 100);  fail_unless (segment.time == 0);  fail_unless (segment.last_stop == 100);  fail_unless (update == TRUE);  /* update */  gst_segment_set_seek (&segment, -1.0,      GST_FORMAT_BYTES,      GST_SEEK_FLAG_NONE,      GST_SEEK_TYPE_SET, 10, GST_SEEK_TYPE_CUR, -20, &update);  fail_unless (segment.start == 10);  fail_unless (segment.stop == 80);  fail_unless (segment.time == 10);  fail_unless (segment.last_stop == 80);  fail_unless (update == TRUE);  gst_segment_set_seek (&segment, -1.0,      GST_FORMAT_BYTES,      GST_SEEK_FLAG_NONE,      GST_SEEK_TYPE_SET, 20, GST_SEEK_TYPE_NONE, 0, &update);  fail_unless (segment.start == 20);  fail_unless (segment.stop == 80);  fail_unless (segment.time == 20);  fail_unless (segment.last_stop == 80);  fail_unless (update == FALSE);}GST_END_TEST;/* 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, 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.accum == 0);  fail_unless (segment.last_stop == 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, GST_FORMAT_TIME, 0, 200, 0);  fail_unless (segment.start == 0);  fail_unless (segment.stop == -1);  fail_unless (segment.time == 0);  fail_unless (segment.accum == 0);  /* update, nothing changes */  gst_segment_set_newsegment (&segment, TRUE, 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.accum == 0);  /* update */  gst_segment_set_newsegment (&segment, TRUE, 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.accum == 100);  /* last_stop 0, accum does not change */  gst_segment_set_newsegment (&segment, FALSE, 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.accum == 100);  gst_segment_set_last_stop (&segment, GST_FORMAT_BYTES, 200);  /* last_stop 200, accum changes */  gst_segment_set_newsegment (&segment, FALSE, 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.accum == 300);}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,      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.accum == 0);  fail_unless (segment.last_stop == 0);  fail_unless (segment.duration == -1);  /* do an update */  gst_segment_set_newsegment (&segment, TRUE, 1.0, GST_FORMAT_BYTES, 0, 300, 0);  fail_unless (segment.start == 0);  fail_unless (segment.stop == 300);  fail_unless (segment.time == 0);  fail_unless (segment.accum == 0);  /* and a new accumulated one */  gst_segment_set_newsegment (&segment, FALSE, 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.accum == 300);  /* and a new updated one */  gst_segment_set_newsegment (&segment, TRUE, 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.accum == 300);  /* and a new partially updated one */  gst_segment_set_newsegment (&segment, TRUE, 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.accum == 400);}GST_END_TEST;/* mess with the segment structure in the time format */GST_START_TEST (segment_newsegment_streamtime){  GstSegment segment;  gint64 result;  gst_segment_init (&segment, GST_FORMAT_TIME);  /***************************   * Normal segment   ***************************/  gst_segment_set_newsegment_full (&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.accum == 0);  fail_unless (segment.last_stop == 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_full (&segment, FALSE, 1.0, 1.0,      GST_FORMAT_TIME, 0, 200, 500);  fail_unless (segment.accum == 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_full (&segment, FALSE, 1.0, 1.0,      GST_FORMAT_TIME, 500, 700, 0);  fail_unless (segment.accum == 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_full (&segment, FALSE, 1.0, 1.0,      GST_FORMAT_TIME, 500, 700, 200);  fail_unless (segment.accum == 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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -